From e3eb8c9f31e065997cdfe534b4ee5529e20ca2ff Mon Sep 17 00:00:00 2001 From: N2614 Date: Thu, 2 Jun 2011 06:58:24 +0000 Subject: [PATCH] =?UTF-8?q?NUP=E3=82=92=E5=AE=9F=E8=A1=8C=E3=81=97?= =?UTF-8?q?=E3=81=AA=E3=81=840th=20NUP=E7=89=88=E3=81=AE=E3=81=9F=E3=82=81?= =?UTF-8?q?=E3=81=AE=E3=83=96=E3=83=A9=E3=83=B3=E3=83=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@305 385bec56-5757-e545-9c3a-d8741f4650f1 --- branches/0thNUP_No_NUP/CardCup/CardCup.bsf | Bin 0 -> 2302 bytes branches/0thNUP_No_NUP/CardCup/CardCup.rsf | 22 + branches/0thNUP_No_NUP/CardCup/OMakefile | 46 + branches/0thNUP_No_NUP/CardCup/OMakeroot | 73 + .../0thNUP_No_NUP/CardCup/banner/model.cbmd | Bin 0 -> 198785 bytes .../0thNUP_No_NUP/CardCup/banner/sound.cbsd | Bin 0 -> 198785 bytes .../CardCup/banner/unknown24x24.ctpk | 1 + .../CardCup/banner/unknown48x48.ctpk | 1 + branches/0thNUP_No_NUP/CardCup/main.cpp | 269 +++ .../0thNUP_No_NUP/CardCup/scrollBuffer.cpp | 89 + branches/0thNUP_No_NUP/CardCup/scrollBuffer.h | 55 + .../CardSaveDataMover/Imp/Imp.rsf | 16 + .../CardSaveDataMover/Imp/OMakefile | 65 + .../CardSaveDataMover/Imp/banner.bsf | Bin 0 -> 2362 bytes .../banner/BannerModel_imp/COMMON/COMMON.cmdl | 274 +++ .../COMMON/Textures/banner_imp.ctex | 17 + .../Imp/banner/banner_dummy.bcwav | Bin 0 -> 73288 bytes .../Imp/banner/banner_imp.cbmd | Bin 0 -> 16575 bytes .../Imp/banner/icon2_24.ctpk | Bin 0 -> 1152 bytes .../Imp/banner/icon2_48.ctpk | Bin 0 -> 4608 bytes .../Imp/romfiles/importee.cia | Bin 0 -> 320960 bytes .../romfiles/nnfont_RectDrawerShader.shbin | Bin 0 -> 964 bytes .../CardSaveDataMover/Imp/source/main.cpp | 223 +++ .../Imp/source/test_data.cpp | 673 +++++++ .../CardSaveDataMover/Imp/source/test_data.h | 6 + .../0thNUP_No_NUP/CardSaveDataMover/OMakefile | 30 + .../0thNUP_No_NUP/CardSaveDataMover/OMakeroot | 73 + .../CardSaveDataMover/body/OMakefile | 63 + .../CardSaveDataMover/body/banner.bsf | Bin 0 -> 1954 bytes .../BannerModel_test/COMMON/COMMON.cmdl | 274 +++ .../COMMON/Textures/banner.ctex | 17 + .../CardSaveDataMover/body/banner/banner.cbmd | Bin 0 -> 9198 bytes .../body/banner/banner_dummy.bcwav | Bin 0 -> 73288 bytes .../body/banner/icon_24.ctpk | 1 + .../body/banner/icon_48.ctpk | 2 + .../CardSaveDataMover/body/body.rsf | 28 + .../body/romfiles/banner.icn | Bin 0 -> 14016 bytes .../romfiles/nnfont_RectDrawerShader.shbin | Bin 0 -> 964 bytes .../CardSaveDataMover/body/source/gui/gui.cpp | 636 +++++++ .../CardSaveDataMover/body/source/gui/gui.h | 96 + .../body/source/gui/shfnt.cpp | 350 ++++ .../CardSaveDataMover/body/source/gui/shfnt.h | 29 + .../CardSaveDataMover/body/source/main.cpp | 1455 ++++++++++++++++ .../CardSaveDataMover/body/source/my_defs.h | 92 + .../body/source/savefile/exsave.cpp | 301 ++++ .../body/source/savefile/exsave.h | 70 + .../body/source/savefile/membak.cpp | 228 +++ .../body/source/savefile/membak.h | 189 ++ .../body/source/savefile/savedata.cpp | 445 +++++ .../body/source/savefile/savedata.h | 66 + .../body/source/savefile/savefile.cpp | 18 + .../body/source/savefile/savefile.h | 35 + .../body/source/screen/screen.cpp | 759 ++++++++ .../body/source/screen/screen.h | 115 ++ .../body/source/screen/screen_0.cpp | 791 +++++++++ .../CardSaveDataMover/common/common.cpp | 187 ++ .../CardSaveDataMover/common/common.h | 11 + .../CardSaveDataMover/common/shfnt.cpp | 368 ++++ .../CardSaveDataMover/common/shfnt.h | 30 + .../CardSaveDataMover/common/sleep.cpp | 110 ++ .../CardSaveDataMover/common/sleep.h | 46 + .../CardSaveDataMover/common/ver.h | 22 + .../CardSaveDataMover/docs/Error_code.txt | 37 + .../CardSaveDataMover/docs/HowToビルド.txt | 24 + .../CardSaveDataMover/docs/release.txt | 55 + .../CardSaveDataMover/docs/マスタリング.txt | 9 + .../CardSaveDataMover/docs/操作説明.txt | 41 + .../ConsoleBackup/ConsoleBackup.bsf | Bin 0 -> 2302 bytes .../ConsoleBackup/ConsoleBackup.cpp | 449 +++++ .../ConsoleBackup/ConsoleBackup.h | 42 + .../ConsoleBackup/ConsoleBackup.rsf | 52 + .../ConsoleBackup/Controller.cpp | 313 ++++ .../ConsoleBackup/Controller.h | 34 + .../ConsoleBackup/Exporter.cpp | 564 ++++++ .../ConsoleBackup/Exporter.h | 36 + .../ConsoleBackup/OMakefile | 84 + .../ConsoleBackup/banner/model.cbmd | Bin 0 -> 198785 bytes .../ConsoleBackup/banner/sound.cbsd | Bin 0 -> 198785 bytes .../ConsoleBackup/banner/unknown24x24.ctpk | 1 + .../ConsoleBackup/banner/unknown48x48.ctpk | 1 + .../ConsoleBackup/genversion.sh | 4 + .../ConsoleRestore/ConsoleRestore.bsf | Bin 0 -> 2302 bytes .../ConsoleRestore/ConsoleRestore.cpp | 469 +++++ .../ConsoleRestore/ConsoleRestore.h | 54 + .../ConsoleRestore/ConsoleRestore.rsf | 52 + .../ConsoleRestore/Controller.cpp | 940 ++++++++++ .../ConsoleRestore/Controller.h | 46 + .../ConsoleRestore/Importer.cpp | 1551 +++++++++++++++++ .../ConsoleRestore/Importer.h | 95 + .../ConsoleRestore/NtpClient.cpp | 376 ++++ .../ConsoleRestore/NtpClient.h | 28 + .../ConsoleRestore/OMakefile | 89 + .../ConsoleRestore/Updater.cpp | 249 +++ .../ConsoleRestore/Updater.h | 32 + .../ConsoleRestore/banner/model.cbmd | Bin 0 -> 198785 bytes .../ConsoleRestore/banner/sound.cbsd | Bin 0 -> 198785 bytes .../ConsoleRestore/banner/unknown24x24.ctpk | 1 + .../ConsoleRestore/banner/unknown48x48.ctpk | 1 + .../ConsoleRestore/genversion.sh | 4 + .../ConsoleDataMigration/OMakefile | 24 + .../ConsoleDataMigration/OMakeroot | 73 + .../ConsoleDataMigration/Readme.txt | 10 + .../ConsoleDataMigration/common/Aes_define.h | 70 + .../common/CommonLogger.cpp | 117 ++ .../common/CommonLogger.h | 84 + .../common/DrawSystemState.cpp | 120 ++ .../common/DrawSystemState.h | 70 + .../common/FileChecker.cpp | 128 ++ .../ConsoleDataMigration/common/FileChecker.h | 69 + .../ConsoleDataMigration/common/FileName.h | 92 + .../common/FileTransfer.cpp | 534 ++++++ .../common/FileTransfer.h | 33 + .../common/HardwareInfo.cpp | 69 + .../common/HardwareInfo.h | 33 + .../common/HeapManager.cpp | 39 + .../ConsoleDataMigration/common/HeapManager.h | 40 + .../common/LogConsole.cpp | 171 ++ .../ConsoleDataMigration/common/LogConsole.h | 68 + .../common/LogConsole_Private.h | 28 + .../ConsoleDataMigration/common/OMakefile | 18 + .../common/PlayHistoryManager.cpp | 224 +++ .../common/PlayHistoryManager.h | 45 + .../ConsoleDataMigration/common/ProgramId.h | 28 + .../ConsoleDataMigration/common/SdLogger.cpp | 267 +++ .../ConsoleDataMigration/common/SdLogger.h | 57 + .../common/SdMountManager.cpp | 67 + .../common/SdMountManager.h | 42 + .../common/SdReaderWriter.cpp | 249 +++ .../common/SdReaderWriter.h | 80 + .../common/SimplePlayer.cpp | 240 +++ .../common/SimplePlayer.h | 37 + .../common/VersionDetect.cpp | 120 ++ .../common/VersionDetect.h | 30 + .../common/common_Types.h | 92 + .../common/configLoader.cpp | 181 ++ .../common/configLoader.h | 78 + .../common/romfiles/annotation.wav | Bin 0 -> 28636 bytes .../common/romfiles/cursor.wav | Bin 0 -> 29996 bytes .../common/romfiles/ng.wav | Bin 0 -> 141180 bytes .../common/romfiles/ok.wav | Bin 0 -> 158700 bytes .../ConsoleDataMigration/common/wave.cpp | 150 ++ .../ConsoleDataMigration/common/wave.h | 148 ++ 142 files changed, 18525 insertions(+) create mode 100644 branches/0thNUP_No_NUP/CardCup/CardCup.bsf create mode 100644 branches/0thNUP_No_NUP/CardCup/CardCup.rsf create mode 100644 branches/0thNUP_No_NUP/CardCup/OMakefile create mode 100644 branches/0thNUP_No_NUP/CardCup/OMakeroot create mode 100644 branches/0thNUP_No_NUP/CardCup/banner/model.cbmd create mode 100644 branches/0thNUP_No_NUP/CardCup/banner/sound.cbsd create mode 100644 branches/0thNUP_No_NUP/CardCup/banner/unknown24x24.ctpk create mode 100644 branches/0thNUP_No_NUP/CardCup/banner/unknown48x48.ctpk create mode 100644 branches/0thNUP_No_NUP/CardCup/main.cpp create mode 100644 branches/0thNUP_No_NUP/CardCup/scrollBuffer.cpp create mode 100644 branches/0thNUP_No_NUP/CardCup/scrollBuffer.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/Imp.rsf create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/OMakefile create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner.bsf create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/banner_dummy.bcwav create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/banner_imp.cbmd create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/icon2_24.ctpk create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/icon2_48.ctpk create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/romfiles/importee.cia create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/romfiles/nnfont_RectDrawerShader.shbin create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/main.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/test_data.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/test_data.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/OMakefile create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/OMakeroot create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/OMakefile create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/banner.bsf create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/BannerModel_test/COMMON/COMMON.cmdl create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/BannerModel_test/COMMON/Textures/banner.ctex create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/banner.cbmd create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/banner_dummy.bcwav create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/icon_24.ctpk create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/icon_48.ctpk create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/body.rsf create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/romfiles/banner.icn create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/romfiles/nnfont_RectDrawerShader.shbin create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/gui.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/gui.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/shfnt.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/shfnt.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/main.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/my_defs.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/exsave.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/exsave.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/membak.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/membak.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savedata.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savedata.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savefile.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savefile.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen_0.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/common/common.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/common/common.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/common/shfnt.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/common/shfnt.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/common/sleep.cpp create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/common/sleep.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/common/ver.h create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/docs/Error_code.txt create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/docs/HowToビルド.txt create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/docs/release.txt create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/docs/マスタリング.txt create mode 100644 branches/0thNUP_No_NUP/CardSaveDataMover/docs/操作説明.txt create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.bsf create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.rsf create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Controller.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Controller.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Exporter.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Exporter.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/OMakefile create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/banner/model.cbmd create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/banner/sound.cbsd create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/banner/unknown24x24.ctpk create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/banner/unknown48x48.ctpk create mode 100755 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/genversion.sh create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.bsf create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.rsf create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Controller.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Controller.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/NtpClient.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/NtpClient.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/OMakefile create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Updater.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Updater.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/banner/model.cbmd create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/banner/sound.cbsd create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/banner/unknown24x24.ctpk create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/banner/unknown48x48.ctpk create mode 100755 branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/genversion.sh create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/OMakefile create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/OMakeroot create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/Readme.txt create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/Aes_define.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/CommonLogger.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/CommonLogger.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/DrawSystemState.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/DrawSystemState.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileChecker.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileChecker.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileName.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileTransfer.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileTransfer.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/HardwareInfo.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/HardwareInfo.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/HeapManager.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/HeapManager.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole_Private.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/OMakefile create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/PlayHistoryManager.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/PlayHistoryManager.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/ProgramId.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdLogger.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdLogger.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdMountManager.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdMountManager.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdReaderWriter.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdReaderWriter.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/SimplePlayer.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/SimplePlayer.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/VersionDetect.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/VersionDetect.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/common_Types.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/configLoader.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/configLoader.h create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/annotation.wav create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/cursor.wav create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/ng.wav create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/ok.wav create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/wave.cpp create mode 100644 branches/0thNUP_No_NUP/ConsoleDataMigration/common/wave.h diff --git a/branches/0thNUP_No_NUP/CardCup/CardCup.bsf b/branches/0thNUP_No_NUP/CardCup/CardCup.bsf new file mode 100644 index 0000000000000000000000000000000000000000..104a94da96cd5d963d349ca5c6fcce26ae7e3cbb GIT binary patch literal 2302 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 MDvwobWH +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "demo.h" +#include "scrollBuffer.h" + +namespace +{ + const int s_GxHeapSize=0x800000; + nn::fnd::ExpHeap s_appHeap; + uptr s_GxHeap; + + demo::RenderSystemDrawing s_RenderSystem; + ScrollBuffer s_scrollBufferInstance; + ScrollBuffer *s_scrollBuffer; + + char s_updaterBuffer[1<<20] NN_ATTRIBUTE_ALIGN(4096); + + // デモの初期化 + void Initialize() + { + // os の初期化 + nn::os::Initialize(); + + // NuiShellの初期化 (CUPに必須) + NN_UTIL_PANIC_IF_FAILED(nn::ns::CTR::InitializeForShell()); + + // fsの初期化 (カード確認用) + nn::fs::Initialize(); + + // appletの初期化 + //nn::applet::InitializeForSystem( nn::applet::PHOME_MENU_APPLET_ID, nn::applet::TYPE_SYS ); + //nn::applet::Initialize( nn::applet::TEST2_APPLET_ID); + //nn::applet::SetAppletMode(); + nn::applet::Enable(); + + // デバイスメモリの設定 + const int DEVICE_MEMORY_SIZE = 12*1024 * 1024; + NN_UTIL_PANIC_IF_FAILED(nn::os::SetDeviceMemorySize(DEVICE_MEMORY_SIZE)); + + // ヒープの初期化 + s_appHeap.Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR); + + // 描画インスタンスの初期化 + s_GxHeap = reinterpret_cast(s_appHeap.Allocate(s_GxHeapSize)); + s_RenderSystem.Initialize(s_GxHeap, s_GxHeapSize); + + // hidの初期化 + NN_UTIL_PANIC_IF_FAILED(nn::hid::Initialize()); + + // 描画インスタンスの初期化 + s_scrollBufferInstance.Initialize(&s_RenderSystem); + s_scrollBuffer=&s_scrollBufferInstance; + + // GPU利用宣言 + nn::applet::AssignGpuRight(); + } + + // 消費時間取得用関数群 + s64 s_StartTick; + void SetTick() + { + s_StartTick=nn::os::Tick::GetSystemCurrent(); + } + s64 GetConsumedMillisec() + { + s64 endTick=nn::os::Tick::GetSystemCurrent(); + nn::os::Tick consumed(endTick-s_StartTick); + return ((nn::fnd::TimeSpan)consumed).GetMilliSeconds(); + } + + // 動いていることを知らせるための、くるくる画面表示取得用メソッド + const char s_progress[]="-\\|/"; + int s_progressIndex=0; + char GetProgressChar() + { + s_progressIndex=(s_progressIndex+1)%(sizeof(s_progress)-1); + return s_progress[s_progressIndex]; + } + + nn::Result UpdateCore() + { + nn::Result result; + nn::cup::ProgressInfo info; + + /********************** アップデート*******************/ + SetTick(); + s_scrollBuffer->AppendText("Start Card Update")->Render(); + NN_UTIL_RETURN_IF_FAILED(nn::cup::CTR::DoUpdate()); + + // ステータスがStartedになるまで、プログレスは取得できない + s_scrollBuffer->AppendText(""); + do{ + s_scrollBuffer->ReplaceText(" %c Initializing", GetProgressChar())->Render(); + result = nn::cup::CTR::GetProgressInfo(&info); + NN_UTIL_RETURN_IF_FAILED(result); + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(40)); + }while(info.state==nn::cup::CTR::UPDATE_STATE_INITIALIZING); + + // 抜けた際のstateがFAILEDかどうか確認 + if(info.state==nn::cup::CTR::UPDATE_STATE_FAILED){ + NN_UTIL_RETURN_IF_FAILED(info.lastResult); + } + s_scrollBuffer->ReplaceText(" - Initialized (%lldmsec)", GetConsumedMillisec()); + + /********************* アップデート中 ******************/ + SetTick(); + s_scrollBuffer->AppendText("")->Render(); + do{ + result = nn::cup::CTR::GetProgressInfo(&info); + NN_UTIL_RETURN_IF_FAILED(result); + s_scrollBuffer->ReplaceText(" %c Title %d/%d, size %lld/%lld", + GetProgressChar(), + info.numImportedTitles, info.numTotalTitles, + info.importedSize, info.totalSize)->Render(); + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(40)); + + }while(info.state==nn::cup::CTR::UPDATE_STATE_STARTED); + // 抜けた際のstateがFAILEDかどうか確認 + if(info.state==nn::cup::CTR::UPDATE_STATE_FAILED){ + NN_UTIL_RETURN_IF_FAILED(info.lastResult); + } + s_scrollBuffer->AppendText(" - Imported (%lldmsec)", GetConsumedMillisec())->Render(); + + /***************** アップデート終了中 ******************/ + SetTick(); + s_scrollBuffer->AppendText("")->Render(); + do{ + result = nn::cup::CTR::GetProgressInfo(&info); + NN_UTIL_RETURN_IF_FAILED(result); + s_scrollBuffer->ReplaceText(" %c Update Finalizing", GetProgressChar())->Render(); + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(40)); + }while(info.state==nn::cup::CTR::UPDATE_STATE_FINALIZING); + // 抜けた際のstateがFAILEDかどうか確認 + if(info.state==nn::cup::CTR::UPDATE_STATE_FAILED){ + NN_UTIL_RETURN_IF_FAILED(info.lastResult); + } + + /******************* アップデート終了 *******************/ + s_scrollBuffer->AppendText(" - Finalized (%lldmsec)", GetConsumedMillisec())->Render(); + s_scrollBuffer->AppendText(""); + + return nn::ResultSuccess(); + } + + nn::Result UpdateSequence(bool *isHandledError) + { + nn::Result result; + nn::Result lastResult=nn::ResultSuccess(); + nn::hid::PadReader padReader; + + /********************* CUPの初期化 *******************/ + s_scrollBuffer->AppendText("Initializing Cup Library")->Render(); + SetTick(); // 初期化開始前の時間をセット + result=nn::cup::CTR::Initialize(s_updaterBuffer,sizeof(s_updaterBuffer)); + if(result==nn::cup::CTR::ResultUpdatePartitionNotFound()){ + s_scrollBuffer->AppendText(" - Update Partition Not Found (%lldmsec)", GetConsumedMillisec())->Render(); + s_scrollBuffer->AppendText("")->Render(); + *isHandledError=true; + return result; + } + if(result==nn::cup::CTR::ResultUpdateNotRequired()){ + s_scrollBuffer->AppendText(" - Already Updated (%lldmsec)", GetConsumedMillisec())->Render(); + s_scrollBuffer->AppendText("")->Render(); + *isHandledError=true; + return result; + } + if(result==nn::cup::CTR::ResultInvalidUpdatePartitionFormat()){ + s_scrollBuffer->AppendText(" - Invalid Update Partition (%lldmsec)", GetConsumedMillisec())->Render(); + s_scrollBuffer->AppendText("")->Render(); + *isHandledError=true; + return result; + } + NN_UTIL_RETURN_IF_FAILED(result); + + s_scrollBuffer->AppendText(" - Need Update (%lldmsec)", GetConsumedMillisec())->Render(); + s_scrollBuffer->AppendText("")->Render(); + + lastResult=UpdateCore(); + + // Initializeに成功した場合のみ、再びInitializeするためにFinalizeが必要 + SetTick(); + s_scrollBuffer->AppendText("Finalizing Cup Library")->Render(); + NN_UTIL_RETURN_IF_FAILED(nn::cup::CTR::Finalize()); + s_scrollBuffer->AppendText(" - Complete (%lldmsec)", GetConsumedMillisec())->Render(); + s_scrollBuffer->AppendText("")->Render(); + + return lastResult; + } +} + +extern "C" void nnMain() +{ + NN_LOG("Start cup demo\n"); + nn::Result result; + Initialize(); + + /******************** CUPの実行 *******************/ + bool isHandledError = false; + result = UpdateSequence(&isHandledError); + if (isHandledError == false && result.IsFailure()) + { + { + // それ以外の場合は、Resultを表示 + s_scrollBuffer->AppendText(" - Unhandled Error: 0x%08x", result.GetPrintableBits()); + s_scrollBuffer->AppendText("")->Render(); + } + } + + s_scrollBuffer->AppendText("")->Render(); + + for(;;) + { + s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0); + if(result.IsSuccess() || result == nn::cup::CTR::ResultUpdateNotRequired()) + { + s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 0, 1, 0, 1); + } + else + { + s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 1, 0, 0, 1); + } + s_RenderSystem.Clear(); + s_RenderSystem.SwapBuffers(); + s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY1); + if(result.IsSuccess() || result == nn::cup::CTR::ResultUpdateNotRequired()) + { + s_RenderSystem.SetClearColor(NN_GX_DISPLAY1, 0, 1, 0, 1); + } + else + { + s_RenderSystem.SetClearColor(NN_GX_DISPLAY1, 1, 0, 0, 1); + } + s_scrollBuffer->ReplaceText("%c Finished", GetProgressChar())->Render(); + + if ( nn::applet::IsExpectedToCloseApplication() ) + { + nn::applet::PrepareToCloseApplication(); + nn::applet::CloseApplication(); + } + + } +} diff --git a/branches/0thNUP_No_NUP/CardCup/scrollBuffer.cpp b/branches/0thNUP_No_NUP/CardCup/scrollBuffer.cpp new file mode 100644 index 0000000..54de11e --- /dev/null +++ b/branches/0thNUP_No_NUP/CardCup/scrollBuffer.cpp @@ -0,0 +1,89 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: scrollBuffer.cpp + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include "scrollBuffer.h" + +using namespace std; + +char ScrollBuffer::s_buffers[MAX_BUFFER_LINE][MAX_BUFFER_CHARS]; + +char *ScrollBuffer::GetFormattedString(const char *fmt, va_list arg) +{ + static char formattedBuffer[MAX_BUFFER_CHARS]; + vsnprintf(formattedBuffer, MAX_BUFFER_CHARS, fmt, arg); + return formattedBuffer; +} + +ScrollBuffer *ScrollBuffer::Update() +{ + return this; +} + +ScrollBuffer *ScrollBuffer::AppendText(const char *fmt, ...) +{ + va_list vlist; + va_start(vlist, fmt); + + int nextPosition=(m_tail+1)%MAX_BUFFER_LINE; + if(nextPosition==m_head){ + // ヘッドとビューの移動 + if(m_head==m_currentView){ + m_currentView=(m_head+1)%MAX_BUFFER_LINE; + } + m_head=(m_head+1)%MAX_BUFFER_LINE; + + } + strlcpy(s_buffers[m_tail], GetFormattedString(fmt, vlist), MAX_BUFFER_CHARS); + m_tail=nextPosition; + NN_LOG("cup: %s\n", GetFormattedString(fmt, vlist)); + + // ビューの移動 + if((m_currentView+MAX_DISPLAY_LINES)%MAX_BUFFER_LINE==m_tail){ + m_currentView=(m_currentView+1)%MAX_BUFFER_LINE; + } + + return this; +} +ScrollBuffer *ScrollBuffer::ReplaceText(const char *fmt, ...) +{ + va_list vlist; + va_start(vlist, fmt); + + NN_ASSERT(m_tail!=m_head); + strlcpy(s_buffers[(m_tail-1)%MAX_BUFFER_LINE], GetFormattedString(fmt, vlist), MAX_BUFFER_CHARS); + + return this; +} + +void ScrollBuffer::Render() +{ + // 描画前処理 + m_render->SetRenderTarget(NN_GX_DISPLAY1); + m_render->Clear(); + m_render->SetColor(1.0f, 1.0f, 1.0f, 1.0f); + + // リングバッファなので、終端条件を調整 + int tail=(m_tailDrawText(0, (i-m_currentView)*FONT_SIZE, s_buffers[i%MAX_BUFFER_LINE]); + } + } + + // 描画転送 + m_render->SwapBuffers(); +} diff --git a/branches/0thNUP_No_NUP/CardCup/scrollBuffer.h b/branches/0thNUP_No_NUP/CardCup/scrollBuffer.h new file mode 100644 index 0000000..1d3563a --- /dev/null +++ b/branches/0thNUP_No_NUP/CardCup/scrollBuffer.h @@ -0,0 +1,55 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: scrollBuffer.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef SCROLL_BUFFER_H_ +#define SCROLL_BUFFER_H_ + +#include "demo.h" +class ScrollBuffer +{ +private: + enum + { + MAX_BUFFER_LINE=128, + MAX_BUFFER_CHARS=80, + MAX_DISPLAY_LINES=20, + FONT_SIZE=12 + }; + // 表示文字のバッファ (リングバッファ) + static char s_buffers[MAX_BUFFER_LINE][MAX_BUFFER_CHARS]; + int m_head; + int m_tail; + int m_currentView; + + demo::RenderSystemDrawing *m_render; + + char *GetFormattedString(const char *fmt, va_list arg); + +public: + ScrollBuffer() : + m_head(0), m_tail(0), m_currentView(0) + {} + void Initialize(demo::RenderSystemDrawing *render) + { + m_render=render; + } + + ScrollBuffer *Update(); // キー入力を参照して、スクロールする + ScrollBuffer *AppendText(const char *fmt, ...); // 文字列を追加する + ScrollBuffer *ReplaceText(const char *fmt, ...); // 最新の文字列を置換する + void Render(); // レンダリング +}; + +#endif // SCROLL_BUFFER_H diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/Imp.rsf b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/Imp.rsf new file mode 100644 index 0000000..d16189f --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/Imp.rsf @@ -0,0 +1,16 @@ +BasicInfo: + Title : $(TITLE) + BackupMemoryType: None + Logo : Nintendo +# Companycode: "00" + ProductCode : "CTR-N-22MA" +# MediaSize: 2GB + +Rom: + HostRoot : $(ROMFS_ROOT) + + +TitleInfo: +# UniqueId: 0xffff6 + UniqueId: 0xf8015 + Version: 0 diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/OMakefile b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/OMakefile new file mode 100644 index 0000000..b794b2d --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/OMakefile @@ -0,0 +1,65 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakefile +# +# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Rev: 31765 $ +#---------------------------------------------------------------------------- +SUPPORTED_TARGETS = CTR-*.Process.MPCore.* + +#demoライブラリ位置指定 +#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include) +#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../CTR_SDK/sampledemos/common/include) +#INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR) + + +SOURCES[] = + ./source/main.cpp + ./source/test_data.cpp + ../common/sleep.cpp + ../common/common.cpp + ../common/shfnt.cpp + +TARGET_PROGRAM = CtrSaveDataMover_imp + +TITLE = CSM_imp + +#LIBS += libnn_am + +IMPORTEE_CIA = importee.cia + +#SRC_IMPORTEE_PATH = ../body/images/$(BUILD_TARGET_DIR)/$(BUILD_TYPE_DIR)/CtrSaveDataMover.cia +#とりあえず、マスタリング時は直おき、配置時に改名 +SRC_IMPORTEE_PATH = CtrSaveDataMover_master.cia + +# ビルドタイプ別に romfs を作る +#ROMFS_ROOT = $`(TARGET.getObjectDirectory)/romfsroot +ROMFS_ROOT = ./romfiles +DEST_IMPORTEE_PATH = $(ROMFS_ROOT)/$(IMPORTEE_CIA) +foreach(TARGET, $(BUILDER.getTargets $(SUPPORTED_TARGETS))) + $(DEST_IMPORTEE_PATH): $(SRC_IMPORTEE_PATH) $(makeDirectory $(ROMFS_ROOT)) + cp $< $@ +ROMFS_DEPENDENCIES = $(DEST_IMPORTEE_PATH) + +# プログラムから参照するためのROMFSのパスとプログラムIDを定義する +ROMFS_IMPORTEE_PATH = L\"rom:/$(IMPORTEE_CIA)\" +CCFLAGS += -DROMFS_IMPORTEE_PATH=$(ROMFS_IMPORTEE_PATH) + +ROM_SPEC_FILE = Imp.rsf +DESCRIPTOR = $(CTRSDK_ROOT)/resources/specfiles/repairtool.desc + +# バナー、アイコン +CTR_BANNER_SPEC = banner.bsf + +include $(ROOT_OMAKE)/modulerules + +build: $(DEFAULT_TARGETS) + \ No newline at end of file diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner.bsf b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner.bsf new file mode 100644 index 0000000000000000000000000000000000000000..a18d99e892c0d16bedb6a58da53b5bf30ea9b6b2 GIT binary patch literal 2362 zcmbVNO;5r=6r8Ij{s$7zeuQu^+ytya1qp>Sp_G)yB8XMvpI2uVONtP)k8B8Ac4pqZ z?d0+Ob&3W;1gPN5tqPyVc;=d7#a}}#xtnkoAVtRg36Al=ea@xlHcuDC7w2^xAu4HH z5W7ZHF+vqJobx%S?vvAM@H{c9)Nu7jr9%%f-DLmxD7zZ5>YN_rCE_l2UP7w8v6t9e zB_@8(^+~0OS|9BE-D&Bb`gD}AlJ2L@JKSB@beuW-klzzl-j5SApmv7W-*<4$$~l!o zS8=+Bw~a4wE#h;2cI#~82bj6uB6=UQ2i@$7yE*HxxtFCrrI`|$xSn6gOo^Uu`q|dj z-4wYg{OIkdH)-#p@6coFbdL$TB^OQh-yx$-UrU~^=tId>g&QKRoPhqVoLg41a@rV} zIpG0!&^+J{?(t~$*22)t=^ap~e?T2&LHP-p=ygIY39_@4Av;Scva^&UJ4;Ejvy>$} zOKGyRlqWk&iL$elDLbo3RgbeS;&eSSv{K=ZRvP@#N`XK62kf$c{{R30 literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl new file mode 100644 index 0000000..3e85377 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/COMMON.cmdl @@ -0,0 +1,274 @@ + + + + + + MetaData + + + + + + + + + ContentSummaries + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModelDccToolInfo + + + OptimizationLogs + + + + + + + + + + + + Skeleton.Bones["*"].AnimatedTransform + + + + + + + IsVisible + + + Meshes["*"].IsVisible + + + IsBranchVisible + + + + + + + Materials["*"].MaterialColor.Emission + + + Materials["*"].MaterialColor.Ambient + + + Materials["*"].MaterialColor.Diffuse + + + Materials["*"].MaterialColor.Specular0 + + + Materials["*"].MaterialColor.Specular1 + + + Materials["*"].MaterialColor.Constant0 + + + Materials["*"].MaterialColor.Constant1 + + + Materials["*"].MaterialColor.Constant2 + + + Materials["*"].MaterialColor.Constant3 + + + Materials["*"].MaterialColor.Constant4 + + + Materials["*"].MaterialColor.Constant5 + + + Materials["*"].TextureMappers["*"].Sampler.BorderColor + + + Materials["*"].TextureMappers["*"].Texture + + + Materials["*"].FragmentOperation.BlendOperation.BlendColor + + + Materials["*"].TextureCoordinators["*"].Scale + + + Materials["*"].TextureCoordinators["*"].Rotate + + + Materials["*"].TextureCoordinators["*"].Translate + + + + + + + + + + + + + + + + + + + + 0 + + + + 0 1 2 1 3 2 + + + + + + + +-12 -6 6.5 +12 -6 6.5 +-12 6 6.5 +12 6 6.5 + + 0 0 1 + +0 0 +1 0 +0 1 +1 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + Textures["banner_imp"]@file:Textures/banner_imp.ctex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DccToolSourceNode + + BONE_00 + + + + Shapes[0] + Materials["MT_00"] + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex new file mode 100644 index 0000000..83e936f --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/BannerModel_imp/COMMON/Textures/banner_imp.ctex @@ -0,0 +1,17 @@ + + + + + + + + + + + + F5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QnlBeUJ5QXlBeUF5QXlBeUJ5QnlCeUF5QnlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlSeVJ5UnlCeVJ5QnlSeVJ6UnlSelJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlSeUJ5UnlCeVJ5UnlSeVJ6UnpSelJ5UnpSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelN6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6YnpSelJ6UnpSelN6U3pTelJ6U3pSelN6U3pTelN6U3pTelN6U3pTelN6Y3pjemN6Y3pTemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6ZHpjemN6Y3pjemN6ZHpjemR7ZHpke2R7ZHtke2R7ZHtke2R7ZHtke2R7ZHtke3R7ZHtzemN6Y3pjemR6ZHtkemR7Y3pkemN6ZHpke2R7ZHtke2R7ZHtke2R7ZHtke3R7dHt0e2R7ZHtke3R7dHt0e3R7dHt0e3R7dHt0e3V7dXt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXx1fIR7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIZ8hXyGfIV7dXyFe3V8hXyGfIZ8hnyFfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJZ8h3yWfIZ8hnyGfIZ8l3yXfJd8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJd8l3yXfJd8lnyHfJd8l3yXfJd8l3yXfZd8l3yXfJd8l3yXfZd9l32XfJd9l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2ofad9mH2XfZh9qH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2pfah9qX6ofal+qX2pfql+uX65frl+uX6pfrl+qX65frl+uX65frh9qH2ofah9qX2pfql9qX6ofah9qH2pfal+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX65frl+uX65frp+un66frp+un66frp+un66fsp+yn7Kfrp+un66frp+yn7Kfsp+yX66frl+un66frp+un66frl+un66frp+un66frp+un7Kfrp+yn66fsp+yn7Kfsp+yn7Kfsp+yn7Kfsp/yn7Kf8p+yn7Kfsp+yn/Kf8p/y3/Kfsp/yn/Kf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf8t/y3/bf9t/23/bf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/3H/bf9x/23/bf9t/23/cf9x/3H/cf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf9t/23/bf8t/y3/Lf8t/zH/bf9x/23/bf9t/23/bf9t/23/bf9t/23/bf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t/y3/Lfst+y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+u37Kfsp+yn7Kfsp+un7Kfrt+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Kfsp+yn7Kfsp+yn7Kfrp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9un26fbp9un25fbp9uX26fbp9un26fbl9uX25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2qfbl9uX25fbl9uX2pfbl9qX25fbl9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl9qX2pfal9qX2pfKl9qXypfKl8qXypfKh8qHyofKh8qXyofKh8qHyofKh8mHyofJl9qX2pfal9qXypfKl8qHypfal8qX2pfKl8qHypfKh8qHyofKh8qHyofKh8mHyYfJh8qHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yXfJd7mHyYfJh8l3yXfJd7l3uXe4d8l3uXfJd7l3uXe4d7l3uHe5d7l3uXe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7h3uHe4d7h3uGe4Z7hnuGe4d7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z6dnp2enZ6dnt2enZ7dnp2enZ6dnp2end7hnuGe4Z7hnuGe3Z7hnp2e4Z7hnuGe4Z7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp1enV6dXp1enV6dXplenV6dXp1enV6dXplenV6Znp2enZ6dnp2enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6ZXplemV6ZXp1emV6ZXplemV6ZXplemV6ZXplemV6ZXpleWV5ZXllemV5ZXplemV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeWR5ZHlkeWR5VHlUeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeVR5VHlUeVR5VHlUeFR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhTeFR5VHhUeVR4VHhTeFR4U3hUeFR4VHhTeFN4U3hTeFN4VHhTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhCeEN4QnhDeEJ4QnhCd0J4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzF3MXcydzJ3MncxdzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF2MXcxdjF2MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2IXYhdiF2IXYhdjF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYheUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlCeUJ5QnlBeUJ5QXlCeUJ5QnlCeUJ5QXlBeUF5QXlBeUF5QXlBeUF5QXlBeUF5QXlCeUF5QnlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeVJ5QnlCeUJ5QnlSeVJ5UnlSeUJ5UnlCeVJ5UnlSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6U3pSeUJ5UnlSeVJ6UnpSelJ6UnlSelJ5UnpSelJ6UnpSelJ6UnpSelJ6U3pTelN6U3pSelJ6UnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6U3pTelN6U3pTemN6Y3pjelN6U3pTemN6Y3pjemN6Y3pjemN6Y3pkemR6ZHpke2N6ZHpjemR6ZHtke2R7ZHtkemR6ZHpke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e3R7dHt1e3R7dXt0e3R7dHt0e3V7dXt1e3V7dHtke2R7ZHtke2R7dHt0e3R7ZHtke2R7dHt0e3R7dHt0e3V7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXyFe3V8hXyGfIV8hnyGfIZ8hnyGfIV8hnyGfIZ8hnyGfIZ8hnyFe3V7dXt1e3V8hXyFfIZ8hXt1fIV7dXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8hnyGfIZ8hnyHfJd8l3yXfJd8l3yXfJd9l32XfZd9l3yXfZd8l32XfZd9l32XfZZ8hnyGfId8l3yXfJd8l3yWfJd8lnyXfJd8l32XfJd9l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32YfZd9mH2nfZd9l32YfZh9mH2ofah9p32YfZd9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX6pfal+qH2ofah9qX2pfql+uX6pfrh9qX6pfal+qX65frl+uX65fql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+uX65frl+uX66frp+un65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+un66frp+un65frp+un66frp+un66frp+un66frp+un66frp+yn66fsp+un66frp+un7Kfsp+yn7Kfsp+yn7Kfsp/yn/Kf8t/yn7Kf8p+yn/Kf8t/yn/Lf8p+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kfsp/yn/Kf8p/y3/Lf8t/y3/Lf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/bf8t/23/Lf9t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf9t/y3/Lf8t/y3/Lf9t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/bf9t/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/bf9x/3H/cf9x/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/y3/bf9t/23/bf9t/y3/Lf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst+y37Lfst/y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn7Kfst+y37Lfsp+yn7Kfsp+yn67fsp+yn7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fsp+yn7Kfsp+un66frp+un7Kfrp+yn66frp+un66frp+un66frp+un66frp+un26frp+un66frp+un26fbp9un66frp+un26fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX25fbl9un26fbp9uX25fbl9uX25fap9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbp9uX25fbl9qX25fal9uX25fbl9qX2pfal9qX2pfbl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qXypfKl8qX2pfKl9qXypfKh8qXyofKl8qXypfKl8qHyofKh8qHypfKh8qXyofKh8qHyofKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfKh8qHyofKh8qHyYfJh8mHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd7l3yXe5d7l3uHe5d7h3yXe5d7l3uHe4d7h3uHe4h8mHyYfJh8mHyXe5d8l3uYfJh8mHyXfJd7l3uXe5d7h3uXe4d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7hnuHe4Z7h3uGe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7hnuGe4Z7hnuGe4Z7dnuGe4Z7hnuGe4Z6dnp2enZ7hnt2e4Z6dnp2enZ6dnp2e3Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enV6dXp2enZ6dnp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXplemV6ZXllemV5ZXplemV6ZXpleWV5ZXlleWV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXplemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWV5ZXlleWV5ZHlleWR5ZXlleWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeWR5ZHlkeVR5VHlUeVR5VXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHhUeVR4VHhUeFR4VHhTeFN4U3hTeFR4U3hUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeFR4VHlUeVR5VHhUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeFN4U3hTeFN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hCeEN4QnhCeEJ3QndCd0J4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QnhCeEJ4QnhCeEJ3QndCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCdzJ3MncydzJ3Qncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncydzJ3MncydzF3MXcxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXcxdzF3MXcxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdjF2IXcxdjF3MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdiF2MXYxdjF2MXYxdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXlBeUF5QXlBeUJ5QnlCeUF5QXlBeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlSeVJ5UnlCeUJ5QnlSeVJ5UnlSelF5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5QnlCeUJ5UnlCeVJ5UnlSelJ6UnpSelJ5UnlSeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6YnpSelJ6UnpTelN6U3pTelJ6UnpSelN6U3pTelN6U3pTelN6U3pTelN6Y3pjemN6Y3pTelN6U3pjemN6Y3pjemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpke2R6ZHtke2R7ZHtke2R7ZHtke2R7ZHtke2R7ZHtzemN6Y3pjemR6ZHpkemR6Y3pjemN6ZHpkemR7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke3R7dHt0e3R7dHtke3R7ZHt0e3V7dHt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIR7dXt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV8hXyGfIV7dXx1e3V8hXyGfIZ8hnyFfIV8hXyGfIZ8hnyGfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfIZ8hnyGfIZ8l3yXfJd8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJd8l3yXfJd8lnyHfJZ8l3yXfJd8l3yXfZd8l3yXfJd8l32XfZd9l32XfJd8l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2ofad9mH2XfZh9qH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32Yfah9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qX2pfql+uX65frl+uX2pfql+qX65frl+uX65frh9qH2ofah9qH2pfql9qX6ofah9qH2pfal9qX6pfql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX65frl+uX65frp+un66frp+un66frp+un66fsp+un7Kfrp+un66frp+yn7Kfsp+yX65frl+un66frp+un66frl+un65frp+un66frp+un66frp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kf8p+yn7Kfsp+yn/Kf8p/y3/Kfsp/yn7Kf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/23/Lf8t/y3/Lf9t/23/bf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/bf9x/3H/cf9t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf9t/23/bf9t/23/Lf8t/zH/cf9x/3H/bf9t/23/bf9x/23/bf9t/23/bf9t/23/bf9t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t+y3/Lfst+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+u37Kfst+yn7Kfsp+un7Kfrt+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Kfsp+yn7Kfsp+yn66frp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp+un66fbp+un66frp+un66fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9uX26fbp9un25fbl9uX25fbl9uX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2qfbl9un25fbl9uX2pfbl9qX25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl9qXypfKl8qXypfKh8qHyofKh8qXyofKl8qHyofKh8mHyofJl9qX2pfal9qX2pfKl8qXypfal8qX2pfKl8qHypfKh8qXyofKh8qHyofKh8mHyYfJh8qHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yXfJd7mHyYfJh8mHyXfJd7l3uXe5h8l3yXfJd7l3uXe4d7l3uHfJd7l3uXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7l3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4d7h3uHe4Z7hnuGe4Z7hnuGe4Z7dnuGe3Z6dnp2enZ6dnuGenZ7dnp2enZ6dnp2end7hnuHe4Z7hnuGe3Z7hnt2e4Z7hnuGe4Z7hnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplenV6Znp2enZ6dnp2enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXp1emV6dXplemV6ZXplemV6ZXplemV6ZXpleWV5ZXllemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWR5ZXlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhUeFR5VHlUeVR5VHhTeFR4U3hUeVR4VHhUeFN4U3hTeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4U3hDeFN4U3hTeEN4Q3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEN4QnhDeEJ4QnhCeEJ4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QnhCd0J3QndCd0J3QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCdzJ3MncydzJ3MndCdzJ3MncydzJ3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3QndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzJ3MXcydzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF3MXcxdjF2MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdjF2MXYxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdiF2IXYxdjF2MXYxdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdjJ5QnlCeUJ5QnlCeVJ5UnlSeUJ5QnlCeUJ5UnlSeVJ6UnlSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6U3pSeUJ5UnlSeVJ5UnpSelJ6UnlSeVJ5UnpSelJ6UnpSelJ6UnpSelJ6UnpTelN6U3pSelJ6UnpSelN6U3pTelN6UnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6U3pTelN6U3pTemN6U3pjelN6U3pTelN6Y3pjemN6Y3pjemN6Y3pkemR6ZHpkemN6ZHpjemR6ZHpke2R7ZHtjemR7ZHpke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke2R7ZHt0e2R7dHt1e3R7dXt0e3R7dHt0e3V7dXt1e3V7dHtke2R7ZHtke2R7dHtke3R7ZHtke2R7ZHt0e3R7dHt0e3R7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXx1e3V8hXuFfIV8hnyGfIZ8hnyGfIV8hnyGfIZ8hnyGfIZ8hnyFe3V7dXt1e3V8dXyFfIV8hXt1e3V7dXyFfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8hnyGfIZ8hnyHfJZ8l3yXfJd8l3yXfJd8l32XfZd9l3yXfJd8l32XfZd9l32XfZZ8hnyGfId8l3yXfJd8l3yWfId8lnyHfJd8l3yXfJd8l3yXfZd8l32XfZd9l32XfZd9l32XfZd9l32YfZd9mH2XfZd9l32XfZh9mH2ofZh9p32YfZd9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2Yfah9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qH2ofah9qX2pfql+qX6pfrh9qX2ofal+qX6pfrl+uX65fql+qX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+uX65frl+uX66frp+un65fql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+un66frp+un65frp+uX66frp+un66frp+un66frp+un66frp+yn66fsp+un66frp+un7Kfsp+yn7Kfsp+yn7Kf8p/yn/Kf8t/yn7Kfsp+yn/Kf8t/yn/Lf8p+un66frp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp/yn/Kf8p/yn/Lf8t/y3/Lf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf8t/y3/Lf9t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/cf9t/3H/bf9t/23/bf9t/3H/bf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/cf9x/3H/cf9x/23/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/bf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/bf9t/23/bf9t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lfst+y37Lfst/y37Lf8t+y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Kfst+y37Lfst+y37Kfsp+yn7Lfsp+y37Kfsp+yn66fsp+un7Kfrp+un66frp+un66frp+un66frp+un66frp+un66fsp+yn7Kfsp+un66frp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fbp9un66frp+un26fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX26fbl9un26fbp9uX25fbl9uX25fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp9uX25fbl9qX25fap9uX25fbl9uX2pfal9qX2pfbl9uX25fal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qXypfKl8qX2pfal9qX2pfKl8qXyofKl8qXypfKl8qHyofKh8qHypfKl8qXyofKh8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyZfKh8qHyofKh8qHyYfKh8mHyofKh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8l3yXe5d7l3uXe5d7h3yXe5d7l3uXe4d7h3uHe4h8mHyYfJh8mHyXfJd8l3uYfJh8mHyYfJd8l3uXe5d7l3uXe4d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4Z7hnuHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7h3uGe4Z7hnuGe4Z7dnuGe4Z7hnuGe4Z6dnt2enZ7hnuGe4Z6dnp2enZ6dnp2e4Z7dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enV6dXp2enZ6dnp2enV6dXp1enV6dnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1emV6dXplemV6ZXplemV6ZXpleWV5ZXplemV6ZXlleWV5ZXlleWV6dXp1enV6dXplemV6ZXplenV6dXp1emV6ZXplemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5ZHlkeWR5VHlUeVR5VXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHhTeFN4U3hTeFR4U3hTeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeFR4VHlUeVR5VHhUeFR4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hDeEN4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hCeEJ4QnhCd0J3QndCd0J4QndCeEJ4QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCd0J3MncydzJ3QndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdjF2IXYxdiF2MXYxdiF2IXYhdiF2IXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYhdjF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdzF2MXcyeVJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpSelJ6UnpTelJ6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6YnpSelJ6UnpSelN6UnpTelJ6UnpSelJ6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pTelN6U3pTemN6Y3pjemN6U3pjemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpkemR6ZHtke2R7ZHtke2R6ZHtke2R7ZHtke2R7ZHtjemN6Y3pjemN6ZHpkemR7Y3pjemN6ZHpkemR7ZHtke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke2R7dHt0e3R7dHtke3R7ZHt0e3R7dHt1e3R7dHt0e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8dXt1fIR7dHt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fHV8hXyGfIV7dXt1e3V8hXyGfIZ8hnyFfHV8hXyFfIZ8hnyGfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyWfIZ8hnyGfIZ8h3yWfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJd8l3yXfJd8lnyHfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfZd9l32XfJd8l3yXfZd9l32XfZd9l32XfZd9l32YfZh9qH2Yfad9mH2XfZh9mH2ofah9qH2nfJd9l32XfZd9l32XfZd9l32XfZd9l32XfZh9l32YfZh9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX2pfql+qX65frl+uX2pfql+qX65frl+uX65frh9qH2ofah9qH2pfah9qX6ofah9qH2ofal9qX6pfql+uX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frp+uX66frp+un66frp+un66fsp+un7Kfrp+un66frp+un7Kfsp+yX65frl+un66frp+un66frl+un65frp+un66frp+un66frp+yn66fsp+yn7Kfsp+yn66fsp+yn7Kfsp/yn7Kf8p+yn7Kfsp+yn/Kf8p/yn/Kfsp+yn7Kf8p/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Kf8p/yn/Kf8t/y3/Lf8t/yn/Lf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf8t/y3/Lf8t/23/bf9t/y3/Lf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9x/23/bf9t/23/bf9x/3H/cf9t/y3/bf8t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/cf9t/3H/cf9x/3H/bf9t/3H/bf9t/23/bf9t/23/bf8t/23/Lf9t/23/bf9t/23/Lf8t/zH/cf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/bf9t/y3/Lf8t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y37Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lf8t/y3/Lfst+y37Lfst+y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfsp+yn7Kfsp+y37Lfst+yn7Kfsp+yn7Kfrt+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Lfsp+yn7Kfsp+yn7Kfsp+un66frp+yn66fsp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un26fbp9un26frp9un26fbp9un26fbp9un66frp+un66frp+un66frp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9uX26fbp9un26fbl9uX25fbl9uX25fbl9uX2pfal9qX2pfal9uX2pfal9qX2pfal9qX2qfbl9un25fbl9uX2pfbl9qn25fbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfKl8qXypfKh8qHyofKh8qXypfKl8qHyofKh8qHyofJl9qX2pfal9qX2pfKl8qXypfal8qX2pfKl8qXypfKh8qXyofKh8qHyofKh8mHyYfJh8qHyofKh8qHyYfJh8mHyYfKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd7mHyYfJh8mHyXfJd7l3uXe5h8l3uXfJd7l3uXe5d7l3uHfJd7l3yXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4d7h3uHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z6dnp2enZ6dnuGe3Z7hnp2enZ6dnp2end7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe4Z7hnt2e3Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6Znp2enZ6dnp2enV6dnp1enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXplemV6ZXp1enV6dXplemV6ZXplemV6dXplemV6ZXpleWV6ZXllemV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZHlkeWR5ZHllemV5ZXpleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlkeVR5ZHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHlUeVR5VHhTeFR4U3hUeVR4VHhUeFN4U3hTeFN4VHhTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeFN4U3hTeFN4U3hDeEN4Q3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hCeEN4Q3hDeEJ4QnhCeEJ4QndDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCd0J3QndCeEJ4QnhCeEJ3QndCd0J3QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCdzJ3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MncydzJ3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MXcxdzF3MXcxdzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdjF2MXYxdjF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2MXYxdjF2MXYxdiF2MXYhdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdiF2MXYhdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXcxdzF3MXcydzF3MncxdiF2MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF3MXYxdzF2MXcxdzF3MncydzJ3MncxdzJ3MXcydzJ3MncydzJ3MnpTelN6U3pTelN6U3pTelN6U3pTelN6U3pTelN6U3pjelN6Y3pTemN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pkemN6U3pTelN6U3pTemN6Y3pjelN6U3pTelN6Y3pjemN6Y3pjemN6Y3pjemR6ZHpke2N6Y3pjemN6ZHpke2R6ZHtjemR6Y3pke2R7ZHtke2R7ZHpke2R7ZHtke2R7ZHtke2R7ZHt0e2R7dHt0e3R7dXt0e2R7dHt0e3R7dXt1e3V7dHtke2R7ZHtke2R7dHtke3R7ZHtke2R7ZHt0e3R7dHt0e3R7dHt1e3V7dXt1e3V7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIV8hnyGfIZ8hnyGfIV8hnyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXyFe3V8hXt1e3V7dXyFfIZ8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfJZ8hnyGfIZ8hnyHfJZ8l3yXfJd8l3yXfJd8l32XfZd9l3yXfJd8l32XfZd9l32XfZZ8hnyGfIZ8hnyXfJd8l3yWfIZ8lnyHfJd8l3yXfJd8l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2XfZd9l32XfZd9mH2ofZh9p32XfZd9mH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32Yfah9mH2ofah9qH2ofah9qH2ofaeKiH2ofaa2VrVYfah9qH2ofah9qX2ofal9qH2ofaa1VrVZfal+qIuJfah9qX2ofal+qX6pfrl+qX65fal+qX6pfrl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX66frl+un65fql+uX6pfrl+uX65frl+uX65frl9qX65frl+uYynmXl+uX65frl+un66frp+un65frp+trVWtVp+un62tVa1Wn66frp+un66frp+yn66fsp+un66frp+un66fsp+yn7Kfsp+yn7Kfsp+yn/Kf8p/yn7Kfsp+yn/Kf8t/yn/Lf8p+un66frp+yn7Kfsp+yn7Kfrp+x7VXtmp+yn7ImYp+yn7Kf8p+yn/Kf8t/y3/Lf8p/yn/Kfsp+y3/Lf8mamJmKf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/y3/bf8t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/ImYiZi3/Lf8mZiZmLf8t/23/bf9t/23/bf9t/23/bf9mZiZqbf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9x/3H/cf9x/23/cf9t/23/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/ZmZe2bH/cf9x/3H/cf9x/3H/cf9x/3H/Xtme2bH/cf9i2aoysf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/bf9t/23/cf9t/23/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/Lf8t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y3/Lfst/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Kfst+y37Lfst+y37Kfsp+yn7Lfsp+y37Kfsp+yn66fsp+yn7Kfrp+un66frp+un66frp+un66frp+un66frp+un67fsp+yn7Kfsp+un66frp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un26frmMqn66frp+un66fbp9un26fbp+un26frp9un26fbp9un26fbp9un26fbp9uX26fbl9un26fbp9un26fbl9uX25fbp9un26fbp9un26fbp9un26fbp9uJh4mHp9un24mHiYen26fbp9uX25fbl9uX25fap9uX24mHl9qX25fal9qX2pfbl9uX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfal8qX2pfal9qX2pfKl8qXyofKl8qXypfal8qHyofKh8qHypfKl8qXypfKh8qHyofKh8qHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyZfKh8qHyofKh8qHyYfKh8mHyofKh8qHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyXfJd7l3uHe5d7h3yXe5d7l3uXe4d7h3uHe4h8mHyYfJh8mHyXfJh8l3uYfJh8mHyYfJd8l3uXe5d7l3uXe5d7l3uHe4d7h3uHe4d7l3uHe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4d7hnuHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7h3uGe4Z7hnuGe4Z7h3uGe4Z7hnuGe4Z7dnuGe3Z7hnuGe4Z7hnt2enZ6dnp2e4Z7dnuGenZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enZ6dXp2enZ6dollllZ6dXp1llWWVnp1enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplemV6ZXplemV6ZXplemV5ZXplemV6ZXplemV5ZXlleWV6dXp1enV6dXp1emV6ZXplenV6dYllemV6ZXpleWV5ZXplemV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWWXVZZFeWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5ZHlUeWR5ZHlkeWR5VHlUeVR5VXlleWV5ZHlkeWR5ZHlkeWR5ZHlllkWHVHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeVR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhTeFN4U3hTeFR4VHhUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHhUeVR4VHlUeVR5VHlUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hTeEN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4QnhCeEJ4Q3hDeEN4Q3hCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hCeEN4QnhCeEJ3QndCd0J4QnhCeEJ4QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QndCd0J3MndCdzJ3QndCd0J3MncydzJ3Mncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzJ3MncydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MXcydzF3MXcxdzF3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF2MXcxdzF3MXcxdjF3MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdjF2MXcxdzF3MXcxdzF2MXYxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdiF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF2MXYxdjF3MXcxdzJ3MXYxdzF3MXcxdzJ3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXcxdzF3MXcydzJ3MncydzF3MncxdzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3Qncyd0J3MndCd0J3QndCd0N6U3pjelN6Y3pjemN6Y3pjemN6Y3pjemN6Y3pjemR6Y3pkemN6ZHpke2R7ZHtke2R6ZHtkemR7ZHtke2R7ZHtjemN6Y3pjemN6ZHpkemR6Y3pjemN6Y3pkemR7ZHpke2R7ZHtke2R7ZHtke3R7ZHt0e2R7ZHtke2R7ZHt0e3R7dHtke3R7ZHt0e3R7dHt1e3R7ZHt0e3R7dHt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3R7dHt0e3V7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXt1fIV7dXt1e3V7dXyGfIV8hnyFe3V8hXyFfIZ8hnyGfIZ8hXyGfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8l3yXfJd8lnyHfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfZd8l32XfJd8l3yXfJd9l32XfZd9l32XfZd9l32XfZh9qH2V0zd9l32XfZeLhrVV8SXyNfEnfJd9l3yXfZd9l32XfZd9l32XfZd9l32XfZd9l32YfZd9lqZXfZXTRfEl8SXxJfEnfZXiOH2V8SXxJfEl8SXxJsRF8SXxJfEl8SXxJfEl8SXxJfEl8SXyNfEl4jamVZhl8SXxJfEl8SXxJsRF8SXxJeM18SWXZdM18SXxJfEl8SXxJcVF8SWnZZhkp1SnU6ZF4jSnVeI0pkOlQ7VDtUO1NKZUtUO1Q7VExDS1Q7VDtUO1Q7VDtUO1Q7VDtUSmRKZYjKenZ5h14zXxJfEl8SXxJqZV8jW1RfEl8SXxJfElxEXxJfEl8SXxJfEl8SXxJfEl8jXxJqhl8jXxJfEl8SXxJLVF4jO1RLVEtUWnVKZEplS1RLZEp1SmVKZUplSmVKdUp1XxJMRF8SXxJfEl8SXxJMQ18SXTNfEl8SXxJfEl8SXxJfEl8SXxJfEl8jXxJfEl8TXyNdM1plXxJfEl4jXiOKh5jKbTR6h18jXxJfEl8Sa2ZsVVp2XURfEl8SXxJfEkxDO1Q8QzxDO1RLVDxDO0Q8QyxDPEM8QzxDO0M8QztUS2VdM0tUXTNfEl8SXxJfEktUXTNLZV0zXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfI18Sa1VsRF8jaYdqdl8SXxJfEl8SbTSZqV8SXyNfEl8SXiNfEl8SXxJfEl8SXxJbZV8SS1VaZVtVTERfI18SXiNfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8jXxJfEl8SXxJfEkwzPDM8Q7fst+yo26jbt/23/bjst+x6d5jKa2Z5mJjKqNuIuZjKx/3H/bf9x/3H/cf9x/3H/bfst/2o27fsx/2oysf9mZhbVWqGS1RaZXmYiblqdnmYO0RLVDxDS1RaZnmXWmVph6jKuOyYyqjbt/2ZmLfsqNuIuajbibmo27fst+y37LfsuOxtNHxFXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SbFVfEl8SXxJfEl8SXxJfEl8SXiNtNHmYeYdfEl8SbFRfEl8SXxJfEl8SXxJtNF8SXxJ8VV8SqNtsVV8SXxJfE18SanZadl8SXiNbZVtUTERLVF8SXxJfEl8SXxJeI18SXxJtNKjLXxJ8Vbfst+yo26jbXyN6h1xEaoeIuZjKeZiJqLf8t/247Lfsx/3H/bf8t/2o26jbe2ZfI6i6mZhfEl8SW2VadktUS2Vqdmp2WnZrVUxES2VfElxEWnZqh1p2aodfEl8SXxJfEl8SXxJfI18jbTRfI3mYeneJqXqHbFVeI8f9x/3H/cf9x/3H/cf9t/23/bf9XxJtRLf8t/yoy7fst/23/bf9t/23/bf9t/23/bf9t/237G4jt/y3/F8SXyNfEl8SXxJfEm4jmLpfEmtVXyNfEl8SXxJfEl00XxJeI6jbXxKYuV8SXxJfEl8SXxJ5mF8SWnZeI18SXxJfEl8St/y3/Lf8t/y3/Lf8t/y3/Lf8t/yJmLfst/y37LfsbiO37Lfst+y37Lfst+y37Lfst+y37F8SbiO37LfsqMu37HtmqNt6h5jKqNtfEpjKXxJrZomoXERph4moXxJph18SXxJfEl8SXxKKh6jbeod6dl8SXxJfEl8SendeI2mHXxK37Lfst+y37Lfst+y37Lfst+y37Kfse1W37JmpXyNfErfst+y37Lfst+yn7Kfsp+yZqafrXxJfI6frp+t7VafbbURfEl8SXxJfEl8SXxJeI18SXxJfEl8SbER5mGtVXTRfEl8SXxJfEl8Sa1VfEl8jbERfEl8SXxJfEl8SXxJfI6fsp+un66frp+un66frp+un66frp9un26frp+un26fbp+un66frp+un23tmp9ttM6frp+un26fbp9teI6fbXxKYypjKiKiIuZfap9uIyZjKaYd5l1plWXZ4qIi5aZd4qKfbp9uX26fbl9tfEpfaXxKYypfaiLmXypfaXxKXyl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJeI18jWXZfEl8jXxJfEmtVl8pfEm1EXyNfElp1XyNfEl8SXxJfEl8SXxJfEl8SXTRKZV0zSlRfEl8SXxJfEl0zO1RdMztDSlRMQztEO0NfEl8SXyJfEjtDO0M7QztDTSNfEk0zXxKXypfKiLmIuZfKl8qHyYfKbER4qF8SanZ4uIi5aJd4qJfKl8qXyofKl8qHyofKh8qHyYfJbERfE3mXeZdfEl8SXxJdM18SXyNZhltUSmVcRF8SXxJfEl8SS0RKZUxDOlRfEl8SXxJfEl8SXxJeI18SXiNeI0pUW1RZhltVXTNfI4fKh8mHyYfJh8mHyYfJh8mHyYfJXxJsRIfJh8l4qIe5h8mHyYfJh8mHyYfJeJdeI4fJh8l4qF0za1VfEl8SXxJfEl8SXxJfEl4jeKhfEmplXxJfEl8SXxJfElwzXxJNM2p2XxJqZV8jXxJfEl8SXxJZdlmGSmRKZV4jXxJeI18SanZrVV8SXxJ3uHe4eJd3uF8SXiNfEl8SeKhop10zWJZ3uHe4d7h3uHe4d7h3uHe4aKdoqFmGXERnqGl2XxJfEl8SXxJfEl8jXxJbVF4jSlRfEktDXxI8MzpTOkMrQytDXDNfEl4jXxJfEl8SXxJeIztDXiMrQztDXTNJdUtDXSN3uHe4d7h3uHe4Z7h3uGe4aYZ3uF8SXxJnuGe4W0Rnp2e4Z7hnuGe4Z7dnp2enZ6dnp2e4Z6dnp2enZ6dnp2enXxJfEl8SXxJfElwzXxJfEktDXxJfIl8SXxJfEl8SXxJYlliXWWVYhlenZ6dYlliWS0RJdUwzOlRIhViGSWRIdWenZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp1enXERfEl0jXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJnp2enV6dXp2enV6dXp1eWWJZXp1iGV5ZXp1eWV6dZZV8SXxJfEl8SXxJfEl8SOzNfEl8SXxJfEl8SKkNfEitCXiNYhl8SXTNXlleWSIVIhV8SXxJfEl8SSlRJZF4jTSNXllwzWlRfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOIl8SPSJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SPDJfEl8SPSJfEiwhLCJfEi0iXxJfEl4jXxJfEkeFR4VIhTiFXxJfEl8SXxJKQzhkO0MpU0eFR5U4hUeFR5VHlUeFR4U4dDh0KWM6UziFSHRfIl8SXxJfEl8SXxI8MipCLCIbMl8SXxJfEl8SPiIsIj4SPSI7Q18STiJfEl8SXxJfEl8SXxJfEl8SXxJfEilTTSIqQkeVR4VHhUeFR4U3hUeFN4VJVDeFXxJfEjeFN4VcMzh0N4U3hTeFN4U3hTeFN4U3hDeFN4U3hElkN4U3hF4iXxJfEl8SXiNfEl8SXiNfEl8SKVNMMypCGkJfEl8SXxJfEjh0SlNLMzpDXxJfEl8SXxJeIjtDXxIaQl8SXxJfEl8SN4Q3hDeEN4Q3hDeEN4Q3hDeEN4ReIzhkN4Q3hDeEOGQ3hDeEN4Q3hDeEJ4Q3hCeEN4Q3hF8SXxInhCeETDMndF8SOWNfEihjKHQ6UyhjOkNfEilTXxI7MilTOkMZQjsyXxJfEl8SXxJfEihzXxIoY18SXxJfEl8SXxIpU04iOzInhCd0J4QndCd0J3QndCd0J3QndCd0KGMndCd0TDNfEid0J3QndCdzJ3MncydzJ3M5UzhjXxJfEidzJ3NeIjpDKGNeIkwzXxJfEl8SXxJfEl8SXxJfEl8SXxI6Ql4iOzJfEl8SXiJfEl8SXxJfEl8SGVJOIk4iXxJfEl8SXxJfEidzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3NeIl8SJ3MncydzJ3MncydzJ3MXcydzJ3NeIjpDF3MoU14iXxI5QxhjTSI6Ql8SXxJfEl8STiIrMj0iGjFfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxIsIjsyXxIKMSshF3MXcxdzF3MXcxdzF3MXcxdzF3NeIihjF3MXcxdjF2MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXcxdjF2MXc18SOzJfEjwyGGIYYhhSGFJfEhpCGzEKMRlCGUIKMQlBF2IXYxhiGGIXYhdjF2IXYxhSGFIZQhhSGGIXYhhiF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYhdjF2MXYxdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYxdjF2IXYxdiF2MXYhdiF2MXYxdjF2MXYxdjF2MXYxdzF3MXcxdzF2MXcxdzF3MXcydzF3MncxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF3MXcxdzF3MncydzJ3MncxdzF3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3QndCd0J3Q3dDd0N3QndCd0J3QndDd0N3Q3dDeEJ3MncydzJ3MndCd0J3QndCdzJ3Mncyd0J3QndCd0J3QndDd0J3Q3dDeEN4Q3hDeEN3Q3hDd0N4Q3hDeFN4Q3hTemR6Y3pkemR7ZHtke2R7ZHpke2R6ZHtke2R7ZHtke2R7ZHtke2R7dHt0e3R7dHt0e2R7dHt0e3R7dXt0e3V7dHtke2R7ZHtke2R7ZHtke3R7ZHtke2R7ZHtke3R7dHt0e3R7dHt1e3V7dXt1e3V7dHt1e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV8dXyGfIZ8hnyGfIV8hnyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXyFe3V8hXt1e3V7dXt1fIV8hXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyHfJZ8h3yWfJd8l3yXfJd8l32XfJd9l3yXfJd8l3yXfZd9l32XfZZ8hnyGfIZ8hnyXfJd8l3yWfIZ8lnyHfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2YfZh9p32XfZd9l32YfZh9qH2ofah9lfEofZXjNfEl8SXxJfEofZXUSHyWp2XxJfEl8SXxJ32YfZh9mH2ofah9qH2ofah9mH2ofah9qH2ofah9qH2ofZeLiH2Xi5XyNfEmp2XxKH2njJh9qIyWioWmV4uGmXXyM7VF8STEM7VDtUO1M7VF8SXyNfEl8SO0M7VF8STTM7VEplSmVZhlp2WYZpl10zSnVpl1tUXURrVV8SXxJfEl8SXxJfEl8SXxJfEl8SXxJfI18SSmVMM18SXxJNM14iXxJfEl8SXxJfEl8SXxJeI18SXxJNI00zXiNadTtUS2Rph1mGeKh4qFmGWYZ5qHmoeZeIyXtmiMqIuYi5iMqIyl1EXxJcRF8SXxJfEl8SXxJsVV8SbFVfEl8SXxJfEl8SeYeIuXmoeaiIyYjJeKiIuVmGaYdKZVp1aZd5qFmGaZdsVV8SbFVfEl8SXxJfEl8Sa2ZfEnmobFVfEl8Sa2VbVDtDO0NLVDtUO1RLZEtUWmVMREtUTERLVEtlWnZKZWqGWnVdRGqGbERfEl8SXxJfEmmXbER5mGxVXxJfEl8SXxJdM0tUXiNLVEplaoZLZVp2XxJLVExES1RLZVp2S2VadnmYbFV5mGxVXxJfEl8SXxJ5mHp2eZeJqV8SXxJ6dmtmXxJfEl8SXxJfEl8SXyNfEl8SXiNfEkxDPENOIzxDPDNfEl8SXxJfEk0zPENfEj0zXxJfEl8SXxJfEl8iXxJfEl8STTNfEl4zPEMsMzxDPDNfEl4jXFRMRDxDPEM7VDtETyJfEk4jXxJfEl8SXxJfEk0zXxJLVExEXxJfEkxETEQ8Q0tUPENLVFplaYdadnmYO0RLVUwzS2VqdnmYanaJqIi5qNuYuqjbt+yo27fse2aYyrjsmMq47Lf8bTS3/G00TiNLZV4jS2VqdomoWnZ5mF4jS1RMREtUWnZ5l1plaoeYyrjsmMqo27fsfFW37Jm6iLmo24mpqMq37LjcuOyo2200iahfEntmaoddRHmHWmZfEm4zXxJfEnmYWnZeM2tVXyNfEktUTDNfEl8SXyNfEktlS1RbVVxETTNfEl8jXxJfEl8SXyNfEl8SXxJfEl8SiZhfI5jKialfEl8Sa1VdNF8SXxJfEl8SXxJfEl8SXxJfEl8SXiNdM18SXxJNM0xEXxJfEl8SXxJadmmHW1Vqdl8SXxJfEl8SXTRcRExEXiNqdl8jXxNfEl8SXxJfEl8SXxJfEl8SXxJfEl00XyNbZV8SXxJfEk0zS0ReMzxETDNOIzxDO0Q8QzxDPEM8QzxDXxJfEl8SXxJfEl8SXxJfEk0zXxI7REtUXxJfEkxDTDNfEl8SXxJfEl8SXiNfEl4jTERfEk0zXxJfEl8iXxJPIktlXjM7RE0zXxJfEl8SXxI8Q0wzPDM8Q18SXxJfI18SXxJfEl8SXxJfEl8iXxJfEl8SXxJNMz0zXxJfEj0iLDMsMzxDLDM8Q00zXxI7RF8jLDM8QzxDO0M7RExES1RLZV0zWnZfI0tlW1VfEl00XxJfEkxDXxJfEl8jXxJfEl8SXxJeI18SXTNbVV8SXERfEl8SXERfI0tUTERfEkxEXxJfEl8SXxJfEl8SXxJfEl8jXxJfEktUXTNfEjwzTEM7Q00zO1Q7QztDO0RfIjtDTTM8QzxDPEM8QztDO0Q7REtUXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOI04jPDNfEl8SXxJeI18STDM9MzxDPDMsMywzLDIsM00jTiJfEl8SXxJfEl8SXxJfEl8SXxJOI18SS1RMRF8SXxJNM04jTiJfEl8SXxJfEl8SXxJOI18SXxJOI00jXyI8QzxDO0NLVEplO0NLVFl2eZdadWmHO0NLVDtDS1RaZWmHWmVph4i5mMp4qJjKl8pfEpjKXxJ4qIjJeKiIyZjKXxKYyl8SO0NKVDtUSmVadWmHWXZpl0tUSmVLVEplWXZ5l1l2eZd4qIjJeKiYypjKXxKYyl8SiLmIyYi5iMmIyl4ziMp5l18SXxJfEl8STTM7Q00zO0RfEl8SXxJfEl4jO1RfEjtDO0M7QztDO1RMM18STDNfEjtUSlQ7VExDXTNfEl8SXxJfEl8SXxJfEl8SXyJfEl8SXxJfEmplW1RfEl8STEM8M14jXxJfEl8SXxJfEl8SXxJfEl8SPDM8M18SXyI8MztDXxJfEl8SXxJMMztDTDM8M18SXxJfEl8STDNOIztDXiJMM18SXxJfEl8SXxJfEl8SXxJfEl8SXxJfEk0zTiM7Q18SXiNfEkxDO0NeIjtDTSNMQztDO0M7QytDKzMrQytDXxJfEl8SXxJfEl8SXxJfEk0iXxIrQytDXxJfEjwzPDJfEl8SXxJfEl8STSNfEk4iTiNfEk4iXxJfEk8iXxJPEjtDOlQrQztDXxJfEl8SXxIsMitDLDIrMl8SXxJfIl8SXxJfEl8SXxJfEk8SXxJPEl8SXxI9Ij0iXxJOEi0iHCIsMisyLDIrMl4iXxJeIl8SLDIrMiwyKzJOIl8SOzNNI18SPDNfEjwyKzIrMisyKzJfEjwzXxJNIisyK0IrQytDK0NMMzwyXxJfEl8SXxJfEl8iXxJfEl8SXxJfEl8SXiNfEk4iXxJfEitDK0M7QytDXxJNIztDK0M7QytDK0MrQ18SXxJNI18SXxJfEl8SXxI6Q00jOkM6U18SXxI6QzwzXxJfEl8SXxJfEl8SXxJfEjtDTiIqQ18iXxJfEl8SXxJNIipDTSIrMjpUSWQqQzlkPiIrMj4iHDIrQzpTKzI6U18SXxJfEl8SXxJfEl8SXxJfEl8SPDI9Il8SXxItIi0iPiIcIk4iHCIrMipTKzIqQ04SHCIcIRwyKzIqQysyKkNIhViWSHVYhleWWWVXllllSXRIhTlkSIVYlliFWJZYll8SXxJfEl8SXxIrMl8SPDJfEl8SXxJfEl8SPDJfEk0iOWRIdTlkSHVYhliWSIZIljlkSHU5ZEh1SIZIlkiGSJZfEl8SXxJfEl8STiJfEl8SXiNfEklkSkNfEl8SO0M7MhsyXxIbMk8SXxJfEl8SXxIbMj0iGzIcIl8SXxJOEl8STxIcIT4SHCEtIV8SPhJfEj0iHCEcIRwhPhJfEk4SXxIbMhsyGzIbMhsyGzIbMhsyKzIbMhsyGzIbMhsyGzIqQhsyGzEbMhsyTxJfEl8SXxIqQjwyKkMqU18SXxI7MzsyXxJfEl8SXxI+Ej4iPhI+Il8SXxJfEl8SPhI+Ii0iLSJfEl8SXxJfEk0iGkI9IhsyXxJfEl8SXxJOIhsxXxI9Il8SXxJfEl8SLSIcISwiHCFfEl8SPDIsIhwhHCEbMRshXxJfEj4iXxJfEl8SXxJfEhwhThIcIRshXxJfEiwiPSIaMhoyGzIbMk4iXxJPEl8SGzEbMiwiTiJfEl8SXxJfEl8SLDJfEiwiXxJfEk4iXxJfEhwhXxIbMT0iXxIcIV8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOEj0iXxIsIhwhGyFOIhsxKzIbMRshThIbIRwhGzEbIRshGyEbIRshGyEbMV8SPCJfEk4iGjI9IhsxTiJfEl8SXxJfEiwhXxJfEl8SXxJfEl8SXxJNIj0iPCI9Il8SXxJfEk4iGzE9IhshPSJfEl8SXxJfEl8SXxJfEl8SPSJfEhsxLCJfEk8SPSIcIV8SLCE+EgshCyEcIQshCyEcIQwhDCEMIQwhCyELIQshXxJfEl8SXxJfEl8SXxJfEl8SXxJfEl8SXxJOEl8SLRFfEl8SXxJfEl8SXxJOEhwhPRIcIQwQDBAMEC0RDBFfEl8SXxI+El8SXxJfEl8SXxIbIU4SCyELMV8SXxIsIT0iTxI+El8SXxJfEl8SXxJfEl8SXxJOEj4SXxJOEi0RDCEcIQshDCELIV8SXxJfEl8SLREMIU4SCyFfEl8SXxJfEl8SHCFfEgshCyELIQshCyFfEgshXxIcIQshCyELIQshThILIS0hCyFfEl8SXxJfEgshCyELIQshXxJfEiwhLCFfEiwhXxI9IgshCyELIQshXxJOEiwhGyELIQshCyEKMQshCyELIQshCjEKMQoxCjELIQshCyEKMQoxCTEKMRlCGUIYUhlCGFIYUhdiGFIXYhlCGFIYUhhSGGIXYhhiF2IKMQoxCjEJQRlCGFIYUhhSCjEZQgoxGUIYUhhiGFIYYhhSGGIXYhdiF2IXYhdiF2IXYhdjF2MXYxdjF2IXYxdiF2MXYhdjF2MXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYxdiF2MXYhdiF2IXYxdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdzF2MXcxdjF2MXYxdjF2MXcxdzF3MXYxdzF2MXcxdzF3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXcxdzF3MXcxdzJ3MncydzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MndCd0J3QncydzJ3MndCd0J3QndCd0J3MndCd0J3QndDd0J3Q3dCd0J3QndCd0N3Q3hDd0N4Q3hDeEN4Q3hDeEN4U3hTeFN4Q3hDeEN4U3hUeFN4VHhSd0N3QndDd0N4Q3hDeEN4Q3dDeEN3Q3hDeEN4Q3hDeFN4Q3hTeFN4VHhUeFR4VHhTeFR4U3hUeFR4VHhUeFR4VHtke2R7ZHt0e3R7dHt0e3R7ZHt0e3R7dHt1e3R7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3R7dHt0e3R7dXt1e3V7dXt0e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V8hXx1fIV7dXt1e3V7dXx1fIV8hnyFe3V8hXt1fIV8hnyGfIZ8hXyFfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfId8lnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yXfJd8lnyGfJZ8h3yXfJd8l3yXfJZ8l3yXfJd8l3yXfJd8l32XfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZh9l32Yfad9l32XfZd9mH2Yfah9qH2nfJd8l3yXfZd9l32XfZd9l3yXfZd9l32XfZd9l32YfZd9mH2XfZh9qH2ofah9qH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofaeLloqIjJeLiH2ofal9qX2ofaiMmX2ofah9qH2ofah9qH2ofah9qX2ofah9qH2ofah9qX6pfal+qX6pfal+qX65fal9qX65frl+qX65frl+uX65frl+uX61mGSmVpl1p2O1Q7Q0plO1R4qGmXiMl4qFp2SmVpl1mGO0M7QztDO0M7QztUO0M7VEtkO1Radlp1O1RLVFp1WnaH2ojJl9uX2ni5eKiI2ojKl+uX65frl+uX25fbp+un62mXaZeIuYi5aZdpl4i5iLmX25jap+un65jamNun66frS1RKZUtUSmVadmmXWoZ5mEplWnZahmmXaZd4qHmoiLl5qHmoeKh5qGmXWnZ5mGqGiLmIuZjKmMp5qWmXiMqIuXmoiLmIypjKiMqY2pjbp+uX26frp+yn7Kfst+yn7Lf8qNuo26fsp+yY25jKp+uo27f8t/y3/Lf8t+y37Lf8t/xLZUtlWnVaZUtlWnZadWqGaoZadnmYeZhqhmmXeZiJqHmYial5mIi5ial5mIi5eaiJqYi5mLqYypjKiLmo25jKiLmIuajbmNuIuZjKqNuo26fsp+y3/Lf8t+y37Lf8t/2Y26jbqOy37KjbqNu37Lfst/y3/Lf9t/23/Lf9t/23/Wp2W2Vph1p2S1VLVFplWmV5mGqHiLmJqGqHaod5mHmoS2VaZVp2anZaZUtlanZadmmHeZiJqIm5eZhph4m5iamYypjKqOyo25i6mLqo26jbt+y37Mf9x/237Lfsx/3H/ZjKmMqo27jsmMqYyrjsqNu37Lfsx/3H/bf8t+zH/cf9S1VLZVplWmVaZWqHWnZqh2qHaoZ5qHmYaod5mImoibmJqJjKiamYyqjsuNyo7LjsiLmoy5jKqNu47Lfst+y37JjKmLqo26jbmLqYyqjbqNy37Lfsx/3H/bfst+zH/cf9qNu37Lfst+y37Mf9t/3H/bf9x/3H/cf9x/3H/cf9x/2YyompqNuIuWmHWnZ5mGp2qNuYyrfsqNuJqXmXmMqJqUtlS1RaZUtVS1Q7VEtUO1RadlpleZhqh0tlS1Vqdlp2t/237Mf9t/2o25jKt+yo28f9x/3H/cf9t/23/Mf9t/2YuYmpqNuYynmYeZiYypi6t+y37Lf9t/2o26jbt+y37DtEPEQ7VEtUO0Q7VEtUS2VLVUtlWnZqdlplWnZph3mYS1RLVFplWmVLVEtUWmVLZWqHaYeJqImpaYdqdomoeZh5mHmomLqYyompmLmoyqjbqNuo3Lfst/y37Lfst/y3/JjKmMqo27frmMqYuqjbqNu37Lfst/y3/Lfst+y3/LfsO0Q8Q0tUO1Q8MzwzO0M7RFp2WmV5l2mHS1VLVWp2anY8QztUO1RLVUtVWmVaZVp2SmVadmqGaYdqhmmXeZiIqYi5iamoy5jKeah5mJjKmMqn7Kfst+y37Kfbp9u37LfseaiIqZjKmMqIuZjKmMqo26fbp9u37Lfsp+un7Lfst+xaZUplanZadktUO0RaZUtVeZdph4ipiKhphlp2eZh5lztDO0RLVEtUS1RKZUplWnZadVp2aYdpl2mGaZd5mIiomMqYyqfbqNuIuYi5qNuYyqfrp+u37Lfsp9un26fsp+uIqYi5mMqYyoi5mMqYypfbp9un26frp+un26fbp+un61plSmVphlp2S1Q7VFplSmV5l3mXiLmIuWmHWnZ4qGmXO0M8QztUO0Q8QztDO0M7VEplSlRphlp2S1RKZVp1WnaYypjKp9uX24i5iKiYypjKp9un26frp+un25fap9un23mYaZeIuYi5aZdpl4ioiKiXypjKp9un25jKmMqX25faS1RKZUpUWmVZdnmXaYZ4mEplWXZZdmmHaYd4qHioiLmIuYjKiLmXyofKiLmXyoi5iLmXyojJl8qXyoi5l8qHyXmXeKiIuYi5iLmIyYjJl8qXypfKl9uX2pfal9qX2pfal8qX2pfal9qX2pfKl9qXypfal9qX2pfal9qX2pfal9pol1l2eJhZhkpUO0NKZTtUeKhpl4i5eKhZdUpkaYZZdjtDK0M7QztDK0M7QztDO0M6VDtUSnVKZTtTO1RKZUpliLl4uIfKh8l4qGiXiLl4qJfKl8qX2pfKh8mHyYfKh8pph1mGeKh4qFmGWYZ4p3ioh7mHuYfJh8mIuYe5h8mHyStDK0M7QztDO0M7QztTOlQ7VDpUSmVJdUpkSmVZdlmGO0M7QzpUOlQ7QytDOlQ7U0l1SXVZhliGSXVKZFmGWXZZhmmGeKh4qGiXaJd4qHi4d7l3uYfJh8mHuYe5h8mHyWinaKd3uHe4aJdol3i4eKh3uXe5h8mHyXe4d7h3yXe4KzIsMitDKzMsMiwyKzIrMjpUOlNJdUllO0M7Q0pkSmQsMitDK0M7QytDOlM6UzpUOlM6VElkSXU6ZElkSXVJdViGWYZop2inWXZZdWiXaJd3uHe4d7h3uHeoZ6h3uHe4WYZYhmiXaJdYhliWaKdop2eoZ6h3uHe4Z6hnqHe4Z7g6UzpDOlQ6VDpDOkM6UzpTSWQ5ZEl1SXU5ZDlkSXVJdTpTOlM6VDpUOlMqQzpUOlM5ZElkSXVIdUlkOWRIdUl1WIZYhmiXaJdYhliGaJdol2enZ6dnuGe4Z6dnp2enZ6dYhliGWJdYl1iGWIZYl1iWZ6dnp2enZ6dnp2enZ6dnpytCKzIqQysyHCIcISsyGzI6VCpTSXU5ZCtDK0I6VDpTHCEbMhsyKzIrQipTKkM6UytCKkM6UzlUKlM5ZDlkSXVIhUh1WJZYlkl1SXRYhkiGV6dXl2enZ6dXlleWV6dXpzl0SXVIhUiFSHVIhUiGSJZXlleWV6dXpleWV5ZXpleWOWRIdTlkSHVIlleWSJZHlkh1SIVIhUiFV5ZXlleWV5ZIhTl0SIU4dClTKkM5ZCpDSIVIdUeWSIU5ZClTOHQ5ZEiGV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZIhUeWR5ZIhTh0R4VIhUeWR5ZHlkeWR5VHlUeWR5YrMhsyKkIqQipCKkMqQylTKlMqUzlkOWMpUzljOWQ4dClTKVM5ZDhkKVMpUzhkKWM4ZDh0OHQ4hTh0OGQ4hDh0OHQ4dEiFOIU4dDh0OIVIhUeFR4VHlUeVR4VHhUeVR5U4hTeFR4VHhTeFOIQ3hTeFR4VHhUeVR5U3hTeFR4U3hSpCGzIpUxpCGzIbMRoyGzIpUylDOGQpUypCGkIpUylTGzEbMRsyGjIbMRsxGjIaMhpCGkIpUylTKUIaQilTKVM4dDhkOIQ4dChjKGM4dDh0N4U3hDeFN4U3hDeEN4U3hShjKGM4dDh0KGMoYzh0OHQ3hDeEN4Q3hDeEN4Q3hDeEGzEbIRsyGzEbIRshGyEbIRpCGjIpUhlCGzEbMRpCGkIbIRshGyEbMRsxGjEaMhpCGjEaMhpCGUIaQhlSGVIoUyhjKVModChjKVMpUyhjKGM3dCd0N4Q3hCh0KHQ3hDeEKVMoUyhjKGMoYyhjKHMncyd0J3QndCd0J3QndCd0J3QaMhoyGUIZQhoxGyEaMhoxGVIZUihjKGMZQhpCGFIZUgshCyEbMRsxCyELMRsxGjEaMhoxGUIZQhoyGUIZQhlSKGMoYydzJ3MoYyhjJ3MoYyd0J3MndCdzJ3MncydzJ3MYUxhSKGMoYxhTGGMoYyhjJ3MncydzJ3MncydzJ3MncxoxGjEaQhlCGjELIRpCGjEZQhlSGFIYUhlCGUIYUhlSCyELIQsxCyEMIQshCyELIRoxCjEZQhlBCzELMRoxGjEYYxhjJ3MncxhjGGInYxhjJ3MncydzJ3MncxdzJ3MncxhSGVIYYxhSGUIZQhhSGFIXYxdjF3MXcxhjGGMXcxdjCyELIQshCjELMQoxCjEKMQoxCjEaMRlBCjEKMRlCGUIKIQshCjEKMQshCjEKMQoxCjEKMRlCGUIKMQkxGUIZQhlCGUIYUhhSGFIYUhhiGGIYYxdjF3MXYxdiF2MXYxdjGFIYUhhiGGIYUhhSGGIYYhdjF2IXYxdjF2IXYhdjF2MJMRlCCUEZQhhSF2IYUhdiGUIYUhhSGFIYUhdiGGIXYhdjF2IXYxdiF2MXYhdiF2IXYxdiF2MXYhdiF2IXYhdiGFIYYhhiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYhdjF2IXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdzF3MXcxdzF2MXYxdjF3MXcxdzF3MncxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXcxdzF3MXcydzJ3MncxdzF3MXcydzJ3MncydzJ3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QndCd0J3Q3dCd0N3QndCd0J3QndDd0N4Q3dDeEJ3MncydzJ3Mncyd0J3MndCdzJ3Mncyd0J3QndCd0J3QndDd0J3Q3dDd0N4Q3hDeEN3Q3hDd0N4Q3hDeEN4Q3hTd0N4Q3hDeEN4Q3hTeFN4U3hDeEN4Q3hTeFN4U3hUeFR4VHhUeFR4VHhUeVR4VHlkeFR4VHhUeFR5VHlkeWV5Y3hDeFN4U3hTeFR4VHhUeFN4U3hTeFR4VHhUeFR4VHhUeFR5VHhUeWR5ZXlkeWV5ZHlUeWR5ZHlleWV5ZXlleWV7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1e3V7dXt1fIV7dXyFfIZ8hnyGfIV8hXyFfIZ8hnyGfIZ8hnyFe3V7dXt1e3V7dXuFe3V8hXt1e3V7dXt1fHV8hXyGfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyWfId8l3yXfJd8l3yXfJd9l3yXfJd8l3yXfJd9l32XfZZ8hnyGfIZ8hnyHfJZ8l3yWfIZ8hnyHfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9l32XfZd9mH2XfZh9p32XfZd9l32YfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32YfZd9mH2Yfah9qH2ofah9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2ofah9qH2ofal9qX2pfqh9qH2ofal9qX6pfrl+qX64fal9qX2pfql+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX6pfrl+uX65frl+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frp+un65frl+uX66frp+un66frp+uX66frp+un66frp+un66fsp+un66frp+un66fsp+un7Kfsp+yn7Kfsp+yn/Kf8p/yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un7Kfsp+yn7Kfrp+yn66fsp+yn7Kfsp+yn7Kf8p/yn/Kf8t/yn/Lf8p+yn/Kf8t/y3/Lf8t/y3/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/y3/Lf8t/23/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/Lf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/3H/cf9x/23/bf9t/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/23/bf9t/23/cf9t/3H/cf9t/23/bf9t/3H/bf9t/23/bf9t/y3/bf9t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/23/bf9t/23/Lf8t/y3/Lf9t/y3/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst/y3/Lf8t/y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfst+y37Lfst+y37Kfst+yn7Lfst+y37Lfsp+yn7Kfsp+yn7Kfrp+yn66frp+un66frp+un66frp+un66frp+un67fsp+yn7Kfsp+yn66fsp+un7Kfsp+yn66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un26fbp+un66frp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9uX25fbl9uX25fbp9uX26fbl9uX25fbl9uX2pfbl9uX25fbl9qX2pfal9qX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfal9qX2pfal8qXypfKl9qX2pfal8qXyofKl8qHypfKl8qXypfKh8qHyofKh8qHyofKh8qHyYfJh8mHyYfJh8qHyYfJh8mHyYfJh8mHyZfKh8qXyofKh8qHyofKh8mXyofKh8qHyofKh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyXfJd7l3uXe5d7mHyXe5h8l3uXe5d7h3uXe4h8mHyYfJh8mHyYfJh8l3yYfJh8mHyYfJh8l3yYfJd7l3uXe5d7l3uXe4d7h3uHe4d7l3uHe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uGe4Z7hnuGe4Z7h3uGe4Z7hnuGe4Z7hnuGe3Z7hnuGe4Z7hnt2enZ6dnp2e4Z7hnuGe3Z7dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dXp2enV6dnp2enZ6dXp1enV6dXp1enZ6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6ZXplemV5ZXplemV6ZXplemV5ZXpleWV6dXp1enV6dXp1emV6dXplenV6dXp1enV6ZXplemV6ZXplemV6ZXlleWV5ZXlleWV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5ZHlkeWR5ZHlUeWR5VXlleWV5ZXlkeWR5ZHlkeWV5ZHlleWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5VHlUeVR5VHlkeWR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhUeFN4VHhTeFR4VHhUeFN4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR4VHlUeVR5VHlUeVR4VHhUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEJ4Q3hDeEN4Q3hCeEJ4QnhCeEJ4QndCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hCeEN4QnhCeEJ3QnhCd0J4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3MndCd0J3QndCd0J3MndCdzJ3QndCd0J3QncydzJ3Mncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXYxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdjF2MXcxdjF3MXcxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2MXYxdjF2MXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2MXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXcxdzF3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QXYxdzF3MXcxdzJ3MXcydzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MndCdzJ3QncydzJ3Mncyd0J3QndCd0J3MndCd0J3QndCd0J3Q3dCd0J3QndCd0N3Q3dDd0N4Q3dDeEN4Q3hDeEN4U3hTeFN4Q3hDeEN4Q3hTeFN4VHhSd0J3QndDd0N3Q3hDeEN4QndDd0N3Q3hDeEN4Q3hDeEN4Q3hTeFN4U3hUeFR4VHhTeFN4U3hUeFR4VHhUeFR4U3hUeFR4VHhUeFR5VHhUeWR4VHhUeFR4VHlUeWR5ZHlkeWV5ZHlleWV5ZXlleWV5ZXlleWV5ZXlleWV5dXlleXR4VHhUeFR5VHlleWR5ZXlkeVR5ZHlkeWV5ZXlleWV5ZXlleWV5ZXlleXZ6dXl2enV5ZXl1eWV5dnp2enZ6dnp1e3V8dXt1fIV8hnyGfIZ8hXuFfIV8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8lXyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8h3yWfJd8lnyGfIZ8hnyHfJd8l3yXfJZ8h3yXfJd8l3yXfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd9l32XfZh9l32YfZd9l32XfZd9mH2Yfah9mH2nfJd8l3yXfZd9l32XfZd9l3yXfZd8l32XfZd9l32XfZd9l32XfZh9mH2ofah9qH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2pfal+qX6pfql+uH2pfqh9qX6pfql+uX65frh9qH2ofah9qH2ofah9qX2ofah9qH2ofah9qX2ofal+qX6pfql+qX65frl+uX65frl+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX66frl+un66frp+un63j5p+uY6qfrp+un66frp+un66frp+uX65frl+uX65frp+uX66frl+uX65frp+un66frp+un66frp+un66frp+yn66fsp+un66fsp+un7Kfsp+yn7KfsHfEd8TvzO/Md8R3xHvEP8Kfrp+un65fbWuYP8FrmD/Ad8R3xD/Ae8R3xHfE88zzzD/Ba1g/wSsWIuYi5eah5qKfrmNun65jbWtYP8FrWD/Cn66fbp+yn61rWD/Ba5g/wD/BLtA/wO6Rph2mHWnZadg/wO6QP8DukWnZadlp1WnaI6bfsiNmo27fst/yn67fsmMqYyomoiLmo26jrmMqo27f8t/y3/Lf8t/23/bf9t/237Lf8p+y3/Lf9t/23/cf9aZd5qGqHeZiIuZjKebg75GqGeZhqhnmYPNMP8Ii5LfKo27fsHfI79Lf9x/23/Gn3D/AP8A/wD/AP8A/wD/AP8Lf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/23/cf9x/23/Yn4HvFa9g/wD/Ad8Q/wD/AP8Mf9x/2o+8f9x/3H/cf9qPsP8Gr2D/Ae8bfsO/So25jqx/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/1q9jzzx/3H/R3xx/0P8A/wWuYP8A/wWvUP8A/wx/3H/aj7effH/cf9efeY+g/wD/AP8DzjD/AP8B7xD/DH/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/Tzzt+wP8Czzt+y37KjbqNvH/cf9x/3H/cf9x/3H/cf9t/y3/bfsefiJ+B3xD/AP8Mf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9t/3H/cf9x/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/zH/cf9ifh598f9t/1595j5D/AP8A7wS/QP8A/wLPMP8Lf9t/23/Lf8t/y3/Lfst+ws8pjqD/Ae8bfst+yoy6jbt/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y3/Lfst/y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lf8t/y37Gn3t/y37Fr2O/S37A/wqNt56A/wD/Bp5x3yt+y37B7xLfK37Lfst+y37A/wHfEP8B7xidge8Q/wD/C37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Kfsp+y37Lfst+y37Kfsp+yn7Kfst+y37Hnoafe37LfsmOqn7A/wD/As4h7xD/A78w/wD/C37Kfsp+un66fsp+yI6Vr2p9un25jKmMod8Q/wedha5qfsp+yn7Kfrp+un66frp+un63nnp+tp5g/weecP8Gnmp+un66frp+un66fbp9un26fbp9un25fbp9un25fbl9un6yzzLPIP8A/wWeYP8DvkD/AP8FrWD/AP8A/wD/As05jKmMpa1VrVl8qXylrViMkP8A/wS7Q7tA/weKhKpXmXp9un26fbp9un26fbp9un26fbl9un25fbp9un26fbl9un25fbl9uX25fal9qX2pfal9uX2pfbl9qX2pfal9qX2pfal9qXypfal9uX25fal9qIuYjKeKiIuZfal9qXyojZl9qX2pfal9qX2pfaeNhZ5ojZLPIO8Q/wD/AP8A7wOuSX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl8qHypfKh8qXypfKl8qXyofKh8qHyofKl9qX2lnmadeX2pfKl8qXyg/wD/A75B7xHfFZ1g/wD/CXyofKh8qHyofKh8qHyVnVh8mHyVnGeLiHyQ/weLlZxofKh8qHyofJh8mHyYfJh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJSuUr44fJh8kO8B3xD/AP8EnVHfEP8B3xD/AP8IfJh8mHuXe5h8mHyVnWSdVZxQ7wD/AP8A/wD/Ac4g7wh8mHyYfJh8l3yXe5d7l3uYfJd7l3yXfJd7l3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHfJd7lox3e4d7l3uHe4d7gP8CvjD/AP8He4d7hop2ind7h3uHe4d7h3uHe4d7h3uHe4d7hop2eod7h3uGe4Z7h3uHe4d7h3uHe4d7h3uGe4d7h3uHe4d7h3uGe4d7hnuGe4Z7hnuGe4Z7hnp2e3Z6dnuGe4Z7hnt2e3Z6dnp2end7h3uHe4d7hnuGe4Z7hnuHe4Z7hnuGe4Z7hnuGe4Z7hnuGe3Z7dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp1enZ6dnp2enZ6dnp1enV6dXp1enV6dXp1enV6dXplenV6ZXp1enV6dXp1emV6ZXplemV6dXplenV6ZXplemV6ZXplemV6ZXplemV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHllemV6ZXpleWV5ZXlleWV5ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZHlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlUeVR5VHlUeWR5VHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHlUeVR5VHhUeFR5VHhUeVR4VHlUeVR4U3hUeFN4VHlUeFR5VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeFN4U3hTeFN4U3hDeEN4RHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEN4Q3hDeEN4Q3hCeEJ4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QndDeEJ4QnhCeEJ4QndCd0J3QnhCeEJ4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MncydzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzF3MXcxdzF3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXYxdjF2MXcxdzF2MXYxdjF2MXYxdjF2MXYxdzF2MXYxdjF2MXYxdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2MXYxdjF2MXYxdiF2IXYxdjF2MXYxdjF2IXYhdjF2MXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2MXYxdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF3MXcxdzF3MXcxdiF2IXYhdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXcydzJ3MncxdzF3MXcydzJ3MncydzJ3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3QndCd0N3QndCd0J3QndCd0N3Q3dDeEJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3QndCd0J3QndCd0J3Q3dDd0N4Q3hDeEJ3Q3dDd0N3Q3hDeEN4Q3hDd0N4Q3hDeEN4Q3hTeEN4U3hDeEN4Q3hTeFN4U3hUeFN4VHhUeFR4VHhUeFR4VHlkeFR4VHhUeFR4VHlkeWR5Y3hDeFN4Q3hTeFR4VHhUeFN4U3hTeFR4VHhUeFR4VHhUeFR4VHhUeVR5ZXlkeWV5ZHhUeWR5VHlleWV5ZXlleWR5ZXlkeWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5dXl2eXV5dnp2enZ6dnp2enZ5dnp2enZ6dnp2eoZ6d3qFeWV5ZXlleWV5ZXl1eXZ6dXlleWV5ZXl2eXZ6dnp2enZ6dnp2enZ6dnqHeod6h3uGenZ6hnp3eod6h3uHe4d7hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfIZ8hnyGfId8lnyXfJd8l3yXfJd9l3yXfJd8l3yXfJd9l3yXfZZ8hnyGfIZ8hnyHfJZ8l3yWfIZ8hnyGfJd8l3yXfJd8l3yXfJd8l32XfZd9l32XfZd8l32XfJd9l32XfZd9l32XfZd9l32XfZd9mH2XfZh9l32XfZd9l32XfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32XfZd9mH2Yfah9qH2ofad9mH2ofZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2pfqh9qH2ofal9qX2pfql+qX6ofal+qH2pfql+qX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX6pfrl+uX65frl+uX6pfrl+uX65frl+uX65frl+uX65frl+uX66frl+un65frl+uX65frp+un66frp+uX66frl+un66frp+un66frp+un66frp+un66fsp+un7Kfrp+yn7Kfsp+yn7Kfsp/yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un66fsp+yn7Kfrp+un66fsp+yn7Kfsp+yn7Kfsp+yn/Kf8t/yn/Lf8p+yn/Kf8p/y3/Lf8t/yY+6fsp+un7KfsWuYP8GrmD/C3/Kfst/y37GrmD/Bq5g/wD/BLpA/wS7Radlp2WnZadg/wS7QP8Eu0WnZadlp2Wna3/Lfst/y3/GrnD/Bq5w/wt/y3/Dv0O/Rq5w/wHfIP8A/wS7QP8Eu0WnZadlp2WnYP8Eu0D/Ae4Vp2WnYtwi3Caod5mGmHeaiIuTzjiLk842mHeahph3momLk845i6POMP8A/wD/Ae8WrXS9V5qEu1D/Ae8Q/wHvFpl0ukaoc8pGmHiahph4momLo845i6PONph4moapZ5qJi6PONq1x7xD/Ae8Q/wHvFqhzyTaoc8kw/wHvEP8A/waoc8lEu0HtEP8A/wD/AP8DzTS9V5h0u1D/AP8A/wD/BadjukS2U8kw/wD/AP8A/wmLqYynmYiagP8A/wD/AP8GqGaodaZVp2D/AP8A/wD/BLVTyDS1Qsgw/wD/AP8A/wS2U8gyyjHcEP8A/wD/AP8EtlWmVLZVtlD/AP8A/wD/BLZVtlLbJbZZjKD/CJqQ/wD/Ae8Q/wS8V5lw/wanYP8A/waocP8Gp2ebiJuXmYeZeJqTzjeZdql2qGanZadlp2anZqdlp2WnZadg/wWnYP8A/wWnYP8EuVWnYP8Fp2D/AP8A7gD/AP8Fp2WnZadlp2WnZadmp2aodahWp2D/AtwmqHPMMO8A/wD/AP8A/wD/B5yJjKPNOJqQ/wD/Ae4Q/wLNJ5mC3Caoeo2x7xascP8A/wLfIP8GnXPNMP8CzSD/AP8Ii5D/B5mB7hD/AP8A/wLcJqdizDWnYP8A/wD/At0lqWanZph2p2PLMP8EuFD/AP8GmHD/BLlFp2HtFadkt1D/Ae4Q/gD/Co26jKmMqIuZjKiciJqXmoial5mHmXaYd5l2mHaYdqhw/wD/At4g/wPOOYyg/wialLtA/wS6QP8A/wWqYP8Eu0aodqhlp2WnZqhmqHaodph1p2WnYP8B3SaYdaph7hD/BLtA/wLdIP8A/wWoYP8Gp2D/AP8A/wHeI8w2qGeZdqhpjKqMuIuZi6qNs845i6PON5mImoaYd5mIipLON5qCzTD/AP8A/wD/AP8DvULdJphg/wD/AP8B7hWoVaZVplSmVqhmmHWnZqhnmYLNJphyzSWnZqdlqFLcJphyzSLNIe4Q/wHuEP8B7hWmVLZVp1SmUP8B7hD/AP8Fp2WmUtwi3Ceah5qGmGaYcs4lrGaYdpl1plWnVLZUplWnZphlplWnaIqYi5eZh5qIi5iLl4qIi5aYdpl2mHaZd5mHioeZh4qEtUSmVKZVplWnVphlp2aYdaZVp2O5RphmmHeZh5l4ipaZd5mHmoiKl4qIi5iLmIuYi5iLmYypfamMqYypfbp9uIuQ/weKgP8A/wS7QP8DukeKgP8HioD/AP8DuTD/A7o1p2WnVKZUplWXZphkplWXZKVEtUSlRLVEplWnVKZVp1iKgP8Ii5D/AP8DujD/A7pJjKDvCXyjvUD/Ad0Q/wD/BKZUpkSmVKZUplWXYd0Q/wWmVLhA7gD/AP8B3hD/A7s3mXeKhph3ioiLkr44i5D/BphniXaYd4qHioD/CIuQ/wD/AO8A/wLOJ4yIi5eKh4lw/wD/AP8A7wHvEe4Q7hDuFph3ioaZd4qIi5D/CIuQ7weJd4qGmXeKiIuTvTeLh4qA/wLMMP8B3RWXZKZUplSlQP8A/wDvAP8CuTOlQP8A/weKh4p2mXaYYP8A/wHeEP8A7hDuEO4A7gD/AP8A7gDuAs4ninDuFph3ioeKhol2iXD/BZdQ7RSmVZhlmGSmVZdUpkSlQ6VDpUSlRKVDtkD/A7VDpUHcEP8A7RD/AP8ByySlRKZB3BSlRKZUl1SmRJZSuDSlRKZEpkSmRJZTp0HMJ4qCziaJcs0g/wD/AP8A/waIYs0lmGLNIP8A/wD/AO4A/wOrQcwkllWYZJlUllSWU6dDpUOlQ6UzpUOlQ7QzpTWXYc0ll2HNIP8A7gD/AO4Fl1HNIc0g7wD/AO4A/wD/A6VDtDOlQ6UztDOlM6UzpUSmQ6VB3BHbE6VDpkK4NJZB3hOqRJdUl1WIZYlkl1WIY6VEpkOlQ6ZEllSXVJZUl1aJdop1iGaJdnp2eoaKdnp1iGWJZYhliWaJdnp2iXZ6c6VElkOmRJdUl1WXVZhliGSWVZhkl1WIZYhmiXaJdnp1iGWJdYlmiXaKdnp2enZ6dol2enZ6dnp2enZ6dnp2enZ7hnuGe4Z7hnuGe3Z7hnp2e4Z7hnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dXp1enV6dnp2enZ6dnp1enV6dXp1enZ6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6ZXplemV6ZXplemV6ZXplemV6ZXpleWV6dXp1enV6dXp1emV6dXplenV6dXp1enV6ZXplemV6ZXplemV6ZXpleWV5ZXlleWV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VXlleWV5ZXlleWR5ZHlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VHlUeVR5VHlkeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHhUeFN4VHhTeFR5VHhUeFR4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHhUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeEN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hDeEN4Q3hDeFN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Q3hDeEN4QnhCeEJ4QnhCd0N4QnhCeEJ4QnhCd0J4QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Mncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MncydzJ3MncxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzF3MncxdzF3MXcydzJ3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXYxdjF3MXcxdzF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYxdjF2MXYxdiF2IXYxdjF2MXYxdjF2IXYhdjF2IXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdjF2MXYxdjF2IXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdzF3MXcxdzF3MncxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdzF2MXcxdzJ3MncydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MndCdzJ3QncydzJ3MncydzJ3QndCd0J3MndCdzJ3QndCd0J3Q3dCdzJ3QndCd0J3Q3dDd0N3Q3dDeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hTeFN4U3hSd0J3QndDd0N3Q3hDeEN4QndDd0N3Q3dDeEN4Q3hDeEN4Q3hTeEN4U3hUeFR4VHhTeFN4U3hUeFR4VHhUeFR4U3hUeFR4VHhUeFR4VHhUeVR4VHhUeFR4VHhUeWR5VHlkeWV5ZHlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleXR4VHhUeFR5VHlleWR5ZXlkeFR5ZHlUeWR5ZXlleWV5ZXlleWV5ZXlleWV5dXl2enV5ZXlleWV5dXl2enZ6dnp1eWV6dXl2enZ6dnp2enZ6dXl2enZ6dnp2enZ6hnp3eoZ6h3qHeod7h3uHe5d7iHuXeod7h3uHe4d7mHuYe5h7lnp2enZ6dnp2eod6h3qHeoZ6dnqGend6h3qHe4d7h3uHe4d7l3uIe5h7mHyYe5h8l3uYe5h7mHuYe5l8qHyZfKZ8h3yWfId8l3yXfJd8l3yWfJd8l3yXfJd8l32XfJd9l32XfZd9l32XfZd9l32YfZd9l32XfZd9l32Yfah9mH2nfJd8l3yXfJd9l32XfZd9l3yXfZd8l32XfZd9l32XfZd9l32XfZh9mH2ofah9qH2nfZh9qH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX6pfal+qH2pfah9qX6pfql+uX6pfrh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal+qX2pfql+qX65frl+uX65frl+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+un65frp+un66frp+un66frp+un66frp+un7Kfrp+yX65frl+uX65frp+uX66frl+uX65frl+un66frp+un66frp+un66frp+un7Kfsp+yn66fsp+un7Kfsp+yn7Kfsp+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p/y3/Lf8efi3/Lf8t/y3/Lf8t/y3/Lf8t/y37Kfsp+yn7Kf8p/y3/Kf8t/yn/Kf8p/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lf8t/y3/Lf8t/wP8A/wt+yn6w/wD/CYyoi5p+yo66fsqNuYyompmMqJqA/wD/B5l2qGD/AP8Fp1WnVpl2p2eZdqhlp1WnZadlp2p+yo27fsqNuYyompmNuYyrfsp+y3/LfsqNuY27fsqNt5mGmHial5qGqGaoZ5mHmYmMqYuqjbqNuIuYi5qNuo20uleZhqhnmYPOMP8ImpiLlqhnmXaoZ5l4moibl5qImpD/AP8ImpeZge4Q/waodadompeZiJqXmYaodadmmHanZph3mYiaiJuYmoiLmYupjKmLqYyqjbqNuoy6jbqOy47Im5iaiYypi6eZhph4m5iaio26jLuOy47JjKmMqo26jbD/AP8EtlS2UP8A/wS2VLVVplW2VadlpmW2VLZVplWmUP8A/wS1RLZQ/wW2VLZVtlS2VLZVplWmVLZVplWmUtwmqHaoZ5mHmYanZqdnmYeZiYupi6qNuo25i6mLqo26jbanZqdnmYeZhqdkuleZh5mJi5mLmo26jbmLmYuajbqNtaZg/wWmYP8A/wLMMP8Gp2S5QP8A/wD/AP8EuUD/AP8A/wD/Badlp2D/AP8GqGaodadlp2LcJaZVp2WnZaZVp2LcItwnmYeZctwi3CaYdqdom5iaiYyoi5eZhqh3moeZc7lFtlWnZaZVplWnZadmp2WnZadmqHaodqdmmHaYd5mDzTeZdqh2mHaYdqdmqHanZqdmqGWnZqdmqHaoZqh2mHWnZadlp2WnZadR3CanZqdmqGaYd5l3mYaYdph3mYeZhadmqHaYd5mHmXeZiJqIi5eZiJqYmpmMqYupjKqNuo24moiLmYupjKiLmIuajLqMuo26jbt+y37Kfrp9u37LfsD/AP8Fp2anYP8A/waYdph2mHaod5mGmHaYdph2mHaYc803mYaZdph2mHanZph2p2aYdph2mHaoZph2qGaYdph4ipeaiYyoi5eZh5l4ipiaio25jKt+yn25jKmLqo26jbaYdph3moeahph3mXiaiIqYi5iLmYy5jKmLmYyqjbqNtLlA/wWnZqhg/wD/Bph3mXaoZph2mHeZd5l3mXeZh5mA/wD/Bph2mGD/AP8Fp2WmVph2mGaZdph1p2WmVadlpleZiIqIi5mLmIqXiomLqIuZjKmMqn26fbmMqYyqfbp9t5mGmHiKl5qGmGWnZ5l2mXmMqIuZjKmMqIuYipmMqYyh7RaYZadWmGeZeIuXmXiLladWmGWnZphmmXiKlpl3iomMqn25jKp9un26fbp9un25jKl9qIyZfap9un26fbp9tadmmHaZd5mHmXeKh4qIi5iKmIuZjKmMqIuZjKmMqXyoi5l8qYypfal9un25fbp9uXypfbl9qX25fbp9un25fbl9p4yJfaiLkd4g/weKhph5fbiMmX25jKeKhpl4i5eJgP8B3RWnZKZTujWXZKZVp1WXZadWmGWnZKZVp1WnVadafbl8qX25faiLl4qJjKiLmX25fbp9uX25fKiMmX2pfKaZdphnioeJdZdll2aZdpl4i5eKiXyojJeKh4qIi5iLlphniXWXZph3ioaJdol2iXWXZZhll2WYZpl2iXaZdol1mWLMJphll2D/AP8EplSmRpl1mGaJdpl1l1SmVZhll1WYZph2iXeJdol3ioeKh4uHioeLiIuYfJiLmHuYfJh8l4qHioeLl4uGiXWYZ4qGiXh8mHuYfJh8l4uXioh8mHuQ/wD/BKVEpUHcFKZEpkSmVKZEpkSmVKZUpkSmVKZUplSmVKZUplSWU7ow/wSXVZdkllSXVJdVl1WXVZhlmGWIZZdll1aJdZhll1WXVZhlmGeKhol3i4eKhol2iXeKh4qFl2WYZZhmiXWIZolmiXaJdol2ineKh4uGioeKh3uHe4D/AP8FmGWYYP8A/wWXVJZViGWYZYhlmGWXVJZVl1SWUP8A/wOmQ6VB2xSWQ6VElkOlQ6VDpkOlQ6VElkOlRJZGiXWIZol2iXWXZJdViGWYZ4p2ind7h3qGiXWJdoqGinSWQ6ZEl1SXVKZEllSXVZdViGWIZol2iXWIZYhmiXaKdJdViWSXVYhminZ6hop2eoSXVYhkl1WIZol2enaJdnp2e4Z7hnuGenZ6dnp2e4Z6dnp2enZ6dnp2enZ6dnp2enSXVYhliGWJZYl2enaKdnp1iWaJdop2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXplenV6ZXp1enV6dXp1enV6ZXplemV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHllemV6ZXplemV6ZXlleWV5ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlkeVR5VHlUeWR5ZHlkeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHlUeVR5VHlUeFR5VHhUeVR5VHlUeVR4U3hUeFN4VHlUeFR4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4RHhUeFR4U3hTeFN4U3hTeFR4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeEN4Q3hTeFN4U3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEJ4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhCeEJ4QndDeEJ4Q3hCeEJ3QndCeEJ3QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3MndCd0J3QncydzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MXcxdzF3MncxdzF3MXcxdzF3MXcxdzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF2MXcxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYhdjF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYhdjF2MXYxdjF2MXYxdjF2MXYhdiF2MXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF2MXcxdzF3MXcxdiF2IXYhdjF2MXYxdjF2MXYhdjF2IXYxdjF2MXYxdjF2MXYxdzF3MXcydzF3MncxdjF3MXcxdzJ3MncydzJ3MXcydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3QndCd0N3Qncyd0J3QndCd0N3Q3dDd0J3MncydzJ3MncydzJ3MndCdzJ3MncydzJ3MndCd0J3QndCd0J3Q3dDd0N4Q3dDeEJ3Q3dCd0N3Q3hDeEN4Q3hDd0N4Q3hDeEN4Q3hTeEN4U3hDeEN4Q3hDeFN4U3hUeFN4VHhTeFR4VHhUeFR4VHlUeFR4VHhUeFR4VHlkeFR5Y3hDeFN4Q3hTeFR4U3hUeFN4U3hTeFN4VHhUeFR4VHhUeFR4VHhUeVR5ZHlkeWV5ZHhUeWR4VHlkeWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5dnp2enZ6dnp2enV5dnp2enZ6dnp2enZ6dnqFeWV5ZXlleWV5ZXl1eXZ6dXlleWV5ZXl1eXZ6dnp2enZ6dnp2enZ6dnp3eoZ6h3qGenZ6dnp2eod6h3uHeod7hnp3eod6h3qHe4d7l3uIe5d6h3uHe4d7h3uYe5h7mHuYe5h7mHuYfJl8qXypfKl8qHuZfKh8mXypfKl8qXypfKd7h3uXe4h7mHuYe5h7mHyXe5h7mHuYe5h7mHyofJl8qXypfKl8qXypfKp8uXyqfbl8qXypfKl8qny6fbp9un23fZd9l32XfZd9l32XfZh9l32XfZd9l32XfZh9qH2Yfah9mH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9p32XfZd9mH2YfZh9qH2ofad9mH2YfZh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qH2pfqh9qH2ofah9qX2pfql+qX6ofal9qH2pfql+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65fal+qX2pfql+uX65frl+uX6pfrl+qX65frl+uX65frl+uX65frl+uX65frl+un65frl+uX65frp+un66frp+uX66frl+un66frp+un66frp+un66frp+un66frp+un7Kfrp+yn7Kfsp+yn7Kfsp+yn7Kfsp+yn7Kf8p/yn/Kf8p+un66frp+un66fsp+yn7Kfrp+un66frp+yn7Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p+yn/Kf8p/yn/Lf8t/y3/Kf8t/yn/Lf8t/y3/Lf8t/yn/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf9t/23/Lf9t/y3/bf9t/23/bf9t/y3/Lf9t/23/Lf8t/23/bf9t/23/bf9t/23/bf9t/237Lfst/3H/bfst+zH/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/3H/bf9x/23/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/237Lfsx/3H/bf8t/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9t/3H/cf9t/y37Mf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bfst+zH/cf9t+y37Mf9x/3H/cf9x/3H/cf9x/3H/cf9t+y37Mf9x/237Lfsx/23/cf9x/3H/cf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9qNuYyrfsqNuYuYmomMqYurfst+y3/Lf8qNuo27fst+x5mHmYmLmIuYmoiLmYupjKqMuoy7jsqOyo26jbt+y37Mf9x/3H/cf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9t+y37Mf9x/23/Lf8x/23/cf9t/3H/bf9t/23/bf9t/2YyqjbqNu37Lfst+y37Lf8t+y37Lfst+y37Lf8t/y3/bfst/y3/Lf8t+y37Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf8t/23/Lf9t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lfst+y37Lfst+y37Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn67fst+yn7Kfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+yn7Lfst+yn7Kfbt+yn7Lfst+y37Lfst+yn7Kfsp+yn26fbp+yn66fbp9un66frp+yn66frp+un66frp+un67fst+y37Kfsp+yn7Kfsp+yn7Kfsp+yn7Kfsp+un7Kfrp+un66frp+un66frp+un66frp+un66frp+un66frp+uX25fbp+un66fbp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp+un66frp9un26fbp9un26frp9un26fbp9un26fbp9un26fbp9un26fbl9uX25fbp9un26fbp9uX25fbl9uX2qfbl9uX25fbl9qX2pfal9qX25fbl9uX2pfal9qX2pfal9qXypfal9qXypfKl9qX2pfal9qX2pfal9qX2pfal9qX25fal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl8qHypfal8qXyofKl8qHypfal8qXypfKl8qHypfKh8qHyofJh8qHyofJh8mHyYfJh8qHyYfJh8mHyYfJh8mHyZfKl8qXypfKh8qHyofKh8qXyofKh8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYe5h8mHyXe5d7mHyYfJh8mHyYfJh8mHyYfJh8mHyXe5d7mHyYfJd7l3uHfJd7mHyXfJh8l3uXe5d7l3uXe5h8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3yYfJd8mHyXe5d7l3uXe5d7h3uXe4d7l3uXe5d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z6hnqHe4d7hnp2eod7h3uHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7h3uHe4d7hnuGe4Z7hnuGe4Z6dnp2e4Z7hnp2enZ7hnp2e4Z7hnuGe4Z7hnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z7dnuGe3Z6dnp2enZ6dnt2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enV6dnp2enZ6dnp1enV6dXp1enZ6dnp2enV6dXp1enV6dXp1enV6dXp1emV6ZXplemV6ZXp1emV6ZXplemV6ZXpleWZ6dXp1enV6dXp1enV6dXplenV6dXp1enV6dXplenV6ZXplemV6ZXplemV5ZXlleWV6ZXplemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWV5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5VXlleWV5ZXlleWR5ZXlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeVR5VHlkeWR5ZHlkeVR5VHlUeVR5ZHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR4VHhTeFR5VHhUeVR4U3hTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hTeEN4Q3hDeFN4U3hTeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEJ4QnhCeEJ4QnhCeEJ3QndCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hDeEN4QnhCeEJ4QnhCeEN4QnhCeEJ4QnhCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Qncyd0J3QndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MndCdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MncxdzF3MXcydzF3MncxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF2MXcxdzF3MXYxdzF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF3MXcxdjF3MXcxdzF2MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYhdjF2MXYxdjF2MXYhdiF2MXYhdjF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2MXYxdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2IXYxdjF2MXYxdjF2IXYxdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdzF2MXcxdzJ3MXcydzF3MXcxdzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3QncydzJ3MncydzJ3QndCd0J3MndCdzJ3QndCd0J3QndCd0J3QndCd0J3Q3dCd0N3Q3dDeEN3Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeFN4U3hSd0J3QndCd0N3Q3hDd0N4QndDd0J3Q3dDeEN4Q3hDeEN4Q3hDeEN4U3hUeFN4VHhTeEN4U3hTeFR4VHhUeFR4U3hUeFN4VHhUeFR4VHhUeFR4VHhUeFR4VHhUeVR4VHlkeWR5ZHlleWV5ZXlleWV5ZHlleWV5ZXlleWV5ZXlleXR4VHhUeFR4VHlkeWR5ZXlkeFR5VHhUeWR5ZXlleWV5ZXlleWV5ZXlleWV5dXl2enV5ZXlleWV5dXl2enZ6dnp1eWV5dXl2enZ6dnp2enZ6dXl2enZ6dnp2enZ6dnp2eoZ6d3qGeod6h3uHe5d7iHuXeod7h3qHe4d7mHuYe5h7lnp2enZ6dnp2end6hnqHeoZ6dnp2enZ6h3qHe4d6h3uHe4d7h3uIe5h7mHuYe5h8l3uYe5h7mHuYe5h8qHyZfKh7mHuYe5h8mXypfKl8qXyoe5h8qHyZfKl8qXypfKl8qXyqfLl8qn26fbp9un26fbp8un26fbp9un27fbp9u33IfKl8qXypfKl8qny5fKp9uXypfKl8qXypfLp9un26fbp9un26fbp9un27fct9y33Kfbp9un27fct9y37Lfct+yH2Yfah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofal9qX6pfal+qH2ofah9qX6pfql+qX6pfrh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qX2ofal9qX2pfql+qX6pfrl+uX65frl+qX65fql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+un65frp+un66frp+un65frp+un66frp+un66frp+yX65frl+uX65frp+uX66frl+uX65frl+un66frp+un66frp+un66frp+un7Kfrp+yn66frp+un66fsp+yn7Kfsp+un7Kfsp+yn7Kfsp+yn/Kfsp+yn7Kfsp+yn/Kf8p/yn/Lf8p/y3/Lf8t/y3/Lf8p/y3/Lf8t/y3/Lf8t/y3/Kfsp+yn7Kfsp/yn/Kf8t/yn7Kf8p+yn/Kf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/y3/Lf8t/y3/bf9t/23/bf8t/y3/Lf9t/23/bf9t/23/bf9t/23/bf9x/3H/cf9t/23/bf9x/23/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9t/23/bf9t/23/bf9t/23/bf9t/23/Lf9t/zH/cf9x/3H/cf9x/23/bf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9t/23/Lf8t/y3/bf8t/23/Lf8t/y3/Lf8t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y37Lfst+y37Lfst/y37Lfst+y37Lfst+y37Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfsp+y37Lfst+y37Lfsp+yn7Kfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Kfst+yn7Kfsp+yn7Kfrp+yn7Kfsp+yn7Kfrp+un66fsp+yn7Kfsp+un66frp+un7Kfrp+yn66frp+un66frp+un66frp+un66frp+un26frp+un66frp+un26fbp9un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66fbp9un26fbp9un66fbp+un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbl9un25fbl9uX25fbl9qX2pfal9uX25fbl9qX2pfal9qX2qfbp9un26fbl9uX25fbl9un26fbp9uX25fbl9uX25fal9uX2pfbl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfKl8qXypfKl8qX2pfKl8qXypfKh8qXyofKl9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qXypfKl8qXypfKl8qHyofKh8qHyofKl8qHypfKh8qHyofJh8qHyYfKh8qHyofKh8mHyYfJh8mHyofJh8qHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyXfJh8mHyYfJh8mHyXfJd8l3uYfJh8mHyXfJd7l3uXe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uIfJd7l3yXe5d7l3uHe5d7h3yXe5d7l3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuGe4Z7hnuGe4Z7hnt2e4Z6dnuGe4Z7hnuGe3Z6dnt2end7h3uHe4d7h3uGe4Z7hnuHe4Z7h3uGe4Z7hnuGe4Z7hnuGe4Z7hnp2enZ6dnp2enZ7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp2enV6dnp1enV6dXp1enV6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXp1enV6ZXp1emV6dXp1enV6ZXplemV6ZXplenV6ZXplemV6ZXplemV6ZXpleWV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHllemV6ZXplemV6ZXlleWV5ZXplemV6ZXlleWV5ZXlleWV5ZXlleWV5ZXlkeWR5ZHlleWV5ZXlkeWR5ZHlkeWR5ZXlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5ZHlkeWR5ZHlkeVR5ZHlUeWR5ZHlkeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR5VHhUeVR5VHlUeVR4VHhUeFN4VHlUeFR5VHhUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4RHhUeFR4U3hTeFN4U3hTeFR4U3hUeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hDeEN4Q3hTeFN4U3hTeEN4Q3hDeEN4U3hDeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4QnhCeEJ4QnhDeEJ4Q3hCeEJ4QnhCd0J3QnhCeEJ4QnhCd0J3QndCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QncydzJ3MndCd0J3QndCdzJ3MncydzJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3MndCd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzF3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXcxdzF3MncydzJ3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXYxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF3MXYxdzF3MXcxdjF2MXYxdjF2MXcxdjF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2IXYhdiF2IXYxdjF2MXYhdiF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYhdiF2IXYhdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYxdjF2MXYxdjF2MXYxdjF3MXYxdzF2MXYxdjF2MXYxdzF3MXcxdiF2MXYhdjF2IXYxdjF2MXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MncxdjF3MXcxdzF3MncydzJ3MXcxdzF3MncydzJ3MncydzF3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3QndCd0J3Qncyd0J3QndCd0N3QndDd0J3MncydzJ3MncydzJ3MndCdzJ3MncydzJ3MndCd0J3QndCd0J3QndDd0N4Q3dDeEJ3Q3dCd0N3Q3dDeEN4Q3hDd0N4Q3dDeEN4Q3hDeEN4U3dDeEN4Q3hDeEN4U3hTeFN4VHhTeFR4VHhUeFR4VHhUeFR4VHhUeFR4VHlUeFR5Y3hDeFN4Q3hTeFR4U3hUeFN4Q3hTeFN4U3hUeFR4VHhUeFR4VHhUeFR5VHlkeWV5ZHhUeVR4VHlkeWV5ZXlleWR5ZHlkeWV5ZXlleWV5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5dXl2enZ6dnp2enV5dnp2eXZ6dnp2enZ6dnqFeWV5ZXlleWV5ZXl1eWV5dXlleWV5ZXlleXZ6dnp2enZ6dnp2enZ6dnp3eoZ6h3qGenZ6dnp2eod6h3uHeod7hnp3eoZ6h3qHe4d7h3uIe5d6h3uHeod7h3uIe5d7mHuYe5h7mHuYe5h8qXypfKl8qHuYfKh7mXypfKl8qXypfKd7h3uHe4h7mHuYe5h7mHuXe4h7l3uYe5h7mHyoe5l8qHypfKl8qXypfKl8uXyqfbl8qXypfKl8qXyqfbp8un25fKl8uXyqfbp9un26fbp9uXy6fbp8un26fbp9un27fcp9u33Lfct9y33Lfst+y37Lfct+y33Lfst+zH7Lfsx+2n26fbp9un26fbt9y33Lfcp9un26fbt9y33Lfst9y37Lfct+y37Lfsx+zH7cftx+237Mfst+zH7cftx+3H7cfth9qH2ofah9qH2pfql9qX6ofal9qH2pfal+qX6pfql+uX65frl+uX65frl+uX65frl+uX65frl+uX65frl+uX64fal+qX6pfql+uX65frl+uX6pfrl+qX65frl+uX65frl+uX65frl+uX65frl+un65frl+uX65frl+un66frp+uX66frl+un66frp+un66frl+un66frp+un66frp+un66frp+yn7Kfsp+yn7Kfsp/yn7Kfsp+yn7Kfsp+yn/Kf8p+un66frp+un66fsp+un7Kfrp+un66frp+yn7Kfsp+yn7Kfsp+yn7Kf8p/yn/Lf8p+yn/Kfsp/yn/Lf8t/y3/Kf8p/yn/Lf8t/y3/Lf8t/yn/Lf8p/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/bf8t/y3/Lf8t/y3/bf8t/23/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf9t/23/bf9t/23/Lf8t/y3/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/3H/cf9x/3H/cf9t/3H/cf9x/3H/cf9x/3H/bf9t/23/bf9t/23/bf9x/23/bf9t/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/cf9x/3H/bf9x/23/cf9x/3H/bf9t/23/bf9t/3H/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/23/bf9t/23/bf8t/y3/Lf9t/23/bf8t/y3/Lf8t/y3/Lf8t/y3/Lf8t/y3/Lfst/y3/Lf8t/y3/Lfst+y37Lf8t/y3/Lf8t+y37Lfst+y3/Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+y37Lfst+yn7Lfst+y37Lfst+yn7Lfsp+yn7Kfsp+yn66frp+un66frp+yn66fsp+un66frp+un67fst+y37Kfsp+yn7Kfsp+y37Kfst+yn7Kfsp+yn7Kfrp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp+un66frp9un66fbp+un66frp+un66fbp9un26fbp9un26fbp9un26fbp9un26fbp9un26fbp9un25fbp+un66frp+un26fbp9un26frp9un66fbp9un26fbp9un26fbp9un26fbl9uX25fbp9un26fbl9uX25fbl9uX26fbl9uX25fbl9uX2pfbl9qX25fbl9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX25fal9uX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal9qX2pfal8qX2pfKl9qX2pfal8qX2pfKl8qXypfal8qX2pfKl8qHyofKh8qHyofKh8qHyofJh8mHyYfJh8qHyofKh8mHyYfJh8mHyZfal8qXypfKh8qHyofKh8qXypfKl8qHyofKh8mHyofJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8l3uXfJd7mHyYfJh8l3yXe5d7l3uXe4h8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJh8mHyYfJd8mHyXe5d8l3uXe5d7h3uXe4d7l3uXe5d7h3uHe4d7h3uHe5d7h3uXe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7hnuHe4Z7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4d7h3uHe4Z7hnuGe4Z7h3uHe4d7hnuGe4Z7hnuGe4d7hnuGe4Z7hnuGe4Z7hnt2e4Z7hnuGe4Z7dnp2e3Z6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2e4Z7dnuGe3Z6dnp2enZ6dnuGe3Z6hnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dnp2enZ6dXp2enZ6dnp2enZ6dnp1enV6dXp1enZ6dXp2enV6dXp1enV6dXp1enV6dXp1enV6ZXplemV6ZXp1emV6dXplemV6ZXpleWZ6dXp1enV6dXp1enV6dXp1enV6dXp1enV6dXplenV6ZXplemV6ZXplemV5ZXpleWV6ZXplemV5ZXlleWV5ZXllemV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZXlleWV5ZHlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZXlleWV5ZXlleWR5ZHlkeWV5ZXlleWR5ZHlkeWR5ZHlkeWR5ZHlkeWR5ZHlUeWR5VHlkeWR5ZHlUeVR5VHlUeVR5ZHlUeWR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeFR4VHhTeFR5VHlUeVR4VHhTeFN4U3hUeVR5VHlUeVR5VHlUeVR5VHlUeVR5VHlUeVR4VHlUeFR5VHhUeFN4U3hTeFN4U3hUeFN4VHhTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4U3hTeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4U3hTeFN4U3hTeEN4U3hDeFN4U3hTeFN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hDeEN4Q3hCeEN4QnhCeEJ4QnhCd0J3QndCeEJ3QndCd0J3QndCd0J3Q3hDeEN4Q3hCeEJ4QnhCeEN4QnhDeEJ4QnhCd0J4QndCeEJ3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCd0J3QndCdzJ3Qncyd0J3QndCd0J3QncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Mncyd0J3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncxdzJ3MXcydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzJ3MncydzJ3MXcxdzF3MXcydzJ3MncydzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdzF3MXcxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXcxdzF3MXcxdzF2MXcxdjF3MXcxdzF3MXYxdzF3MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdiF2MXYxdjF2IXYhdiF2MXYhdjF2MXYxdjF2IXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYxdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2MXYhdiF2IXYhdiF2MXYhdjF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdiF2IXYhdjF2MXYxdjF2IXYhdiF2MXYxdjF2MXYxdjF2MXYxdjF2MXYxdjF3MXYxdjF2MXYxdjF3MXcxdzF3MXcxdzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MXYxdjF2MXcxdzF3MXcydzF2MXcxdzF3MXcydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3MncydzJ3Qncyd0J3MncydzJ3QndCd0J3QndCdzJ3Qncyd0J3Q3dCd0N3Q3dDd0N3Q3hDeEN4Q3hDeFN4Q3hDeEN4Q3hDeFN4U3hSd0J3QndCd0N3Q3dDd0N4QndDd0J3Q3dDd0N4Q3hDeEN4Q3hDeEN4U3hUeFN4VHhTeEN4U3hTeFN4VHhUeFR4U3hUeFN4VHhUeFR4VHhUeFN4VHhUeFR4VHhUeVR4VHlkeVR5ZHlkeWV5ZXlleWV5ZHlleWR5ZXlleWV5ZXlleWR4VHhUeFR4VHlUeWR5ZHlkeFR5VHhUeWR5ZXlkeWV5ZXlleWV5ZXlleWV5dXlleXV5ZXlleWV5ZXl2enV5dnp1eWV5dXlleXZ6dnp2enZ6dXl2enV5dnp2enZ6dnp2eoZ6d3qGeod6h3uHe4d7h3uXeod7h3qHe4d7iHuXe5h7lnp2enZ6dnp2end6hnp3eoZ6dnp2enZ6h3qHe4d6h3uHeod7h3uHe5h7mHuYe5h7l3uIe5d7mHuYe5h8mHuZfKh7mHuYe5h7mHyZfKl8qXyoe5h8mHuZfKl8qXypfKl8qXypfKl8qny6fbp9un26fbl8qn26fLp9un26fbp9u33IfJl8qXypfKl8qXypfKp8uXypfKl8qXypfKp9uny6fbp9un26fbp9un27fct9y33Kfbp9un27fct9y33Lfct+yn27fct9y33Lfct+y37Lfst9y37Lfct+y37Lfst+zH7bfsx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftt9y37Lfst+zH7Mftx+3H7bfst+y37Mftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7cftx+3H7Q== + + + + + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/banner_dummy.bcwav b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/banner_dummy.bcwav new file mode 100644 index 0000000000000000000000000000000000000000..d579907da6824f4216b582327a468dba0808fdc3 GIT binary patch literal 73288 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 literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/banner_imp.cbmd b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/banner_imp.cbmd new file mode 100644 index 0000000000000000000000000000000000000000..e64d1836615ed50dc9c8773508b2729bc3621c5e GIT binary patch literal 16575 zcmc(`{XVhHz!K%)k^mlsD7F+pGvDBMtp2xt?kyp`IE zwenKeNgS)eb({;!SYWbjpo|--+eYg+RHz#$!?MaaSDIRD(FxXCb&%fY#OL`R9)19l z+Keg z46fV~gfP_m0z!WjXQ%yx{GJ?BrKzTCzGyMr{`{q-2vx_ z!yV|8mi$<&v^jo!UM5kEsoXyd9QvdJ)yRMKX2mU8PUIg-exFjTEEd39W z|NS{V@^Y%UJo2lO4{1{n%8Qt5i~Q@~4@LgvWwaE%9q)*|mr@t`Z4i>6F1c9$Rphhx zB7c&gV3c=BzH&b5<&#lMf@PZuzmY5cDdClfKR=T*pW5YRe&uPwNPgtsd>Ws?4*xeUh!67I!4S;WOOzexz6Z{UE!Kf3?$ANUhq{&Qm3+x0a=nmoV6WMzj9zOc%M`Lj5Nb^U(n~5&!ye!RMb90 z)%n+M7vCsB##-%9k2n6bGPrSBjJES-^W$CEPhVDDRQ)!P+(08z>iN&bfG2)0VCC=q z>GuB7Eeq*iDkgT@(60+`3J1}CE+g!`8a4gzx}9n~ck9kHxqn;Vx~7lJ%?9fn_rrze zoGs})`jd*b^fhcmp-0fA$*=Y_VWEDWr5BOz6Y2XONTo}qOTR>&E644qQ}chQGiM%k znw}v1$U3oUNyOu%PZ!tZXWvogt^G3bGIrrGT4D;Wm8|+<$v=|r{B$~NaPR5bp%W$pmI*V zvYyA1Mn2m55E1BK2|fSTSLZs>zc4S9m=;mgA!R0N4*fDSw)z7if1Ey~`)Wr8LTcqH zm;3QXext`Mrykwg`%_as^$SYVWo7BMqc>6MTW=ZPW-9k0Gs>wp?lJC1rF&A|s@z+; zA61&(LjO{^uhQ?$$~~3)8?B*POG@_}->w{p%F0CyNupHU_DxnYAY&h$xW|aHka6E` zXsyelyLq2btcE+qAcG-@c0jji@;$ zW$&An#<%GGSn!VY%3Zr^_g%!h(0o&l*;rP)C!zFh4FA}?R)qymq?tr-?b~1a)_x3s zW?uUTtTQhjvo@M4QcdO>8}`?}ZS>13HJgoZr~Xq8D&1?|V|+UX#OAOZMXi~OnhtHRa(1ee-633 zRMz76+whF6l+CGa)F9@EiFCO%b17PMF`r<+)JV*sO_Ks0O}uW7P70-?4WU?*z&s(s zK6=57MH@s`35l7*E+B-RFkob$KIkkhLZo8Rtg%xX5vd`y`17eT9J{)*;>&tmWDcsQF^pdS7}uEL%XrH5i((SfhhEl;JN;X) zx85LOfxqBEw3wD4TwzuXMEeB?+U%t02U27sMRUFld~OYzvnut`ok16)F@0dq%ti4n z?4EBG_w;J3;_)pFN$5o=7<*=b332Q_r#{pm#z<^l0edwRFD^6(m|;?@q@=c1}J+D{*tKTV4|v5#+wKORt!F$3bq z7oQ7$Jn$rqkpb2qSEv7GpX6{5w@(7d;NNt@cP8UO^ZthslIYXiNUxmN9@dbQUPOv% z(PMp>8T1L^*atoZuu2{yvp-2#6@Hz8(Y{3(g4q3}2o0#LiExDQ2o@Z8U|+KcnK2Zs z&}&4uurLF*Fdk%Fe4UxYav zh~h9QFCa%3Glp268$zybmS-oBi5J)_J}nGDjvfm~x%pZCzTmh{V@S#w!a5~L;$b1DATMXR2_wVb8(<=YTR=Jv z2|N-wjGaa%4pDYD5AO-Oex}+x!?~NIVK&U$&36d`hZr|IgAwqT$Jm}=e~y1}LcnUy zViHc^F>Z+J#s(DZ=_T;ekDElW3hFGz^DqLUVAKoDF~NI=U|~XL8d*3$-tKZB;kv+# zd3{f~JxJ(VV&N?wo)cK7iF5F}5z8EV#m~*T`UJ%IHtHSWW|#@q3A@0goPcp-$iX2p zM6h$GT^xehyqv(f^98!Kmr!t9E~hv zm~WlFO?f?na1}8QMEFj@w@b?eNSozhZr-6|F`XyapW;MPIG+1nhww?X$uUnLVh-cn zh=OD36WqcQ-3-r}F6gR-Nq_`?48g%5>S@XOIg{bOZ^YFPu|Arn7J$e%usng5z}6 zNHPmLCoBO8aAO<@-5loiov-^d0aOGdK$R^++%d}O;2a)7AMJwWjrfM-In2bvnM$Vx zegX#5!FLf4Up$Q%JLo^0ImW@!5I0R@CJ%hUVHa43i^V99pNZq`UQXAIk!rzx8KfY< z2?%!hBeL`{)dJrS=g9IR#~H@r>K~Ax`SpU8KwxW>hv`OK7e6tt@#9bPOU5^nH_KoT zycZm{$m1FfP4@og_T)wsdY0xjB%7YZha!A?X9A=e$p1 zol0iRavw9Dg30+Ft_u{@ta0<55|an9pp1kE7K%xRK}X<0j=DljSv>5lUOTxG1&qd+)AJJSwM3o|Ucz}MDzJ$z0qNW39prbhDi43<%aTEpl_ez!3?P4vrlIQQ0}(30CR!DX#D2r;x(~NW_6r zp5bO$ejo^$#t>&0ctmuAE@FfSc8NHT?zv){cm~31DcC9xr|$a9&&~T5fK1PI43L3G z)D%oJxkT6R$IOB)1MXnsNjvj)j6HF9xapdQRJsN+CBV2C=-;;>8t&ak}q3Sg|;fyMzyd?x`o zY3V}D%=5`%=}uEW!@2ClAjn#<%woi8F>%~=OEL#?zx-4{ z37ar;pwASsU=`LGz`40ufHV%a={FwW+oEKax@);l@q%NFx;h>NANZ`tJq9{UhQjD})+x9+hr`Q{t0^!?Fm@-nPWEFLXeDY+1Rdc#)C>!-WEuiUZ`L61 z41_^Uj~4_wEMQh8J7&7hjImA^2++xxe4dG&aXI`fc6c6>&U(ju>WBE-jFas`!4eD{ zr-kFYF$%2R0d50hMt*6;g0a8d<@(Wkvw~|ypwx|lJG3LL=FJe^Ggv8PpDFG7ant(~ z$je*63vhthj2qNK$LX%?#^^Kvd)T1huPFZY2?sLrd-qbA$V|HB;Wu=|dX1Ju32 zJnWE;Hrlvr97nR$b#uTIKrhFz&z&L#;cd!m((R%iw0Ah}xEx8F2|oE$A1=dq`)8Y7 z4)=rh(2n*Fn&~)21|Z4U=Xh8j62Oi02(#}c22gXSmYr(ag(#tEmp<%>bXV_aAP;Kh zz_QOG$t3Ubev*&)9@c&j!=w2zvnBvx0vNEz;oOfQx836TOCrWh{1VxPbRd=sOohu% zbtCF_`>NLV)`0-WHJziqRd9^>@%@wu;MhulMGx_yC$p3jIlA4vUcvJs6rgho6vP3n z{kg4=D-q$q92`Ip-v!~Cm2gZlWBja_pT#7f0eErT?vn*ZYMLrA>LFvMezmYJK0(!nStH0*WFGIJg3ejfRSOH0BI1vAlD!u zosMVSU`1Xh5>68W={sa$1nDIL&%a;*kA-nP^9nx)|DQ_Bb;0MJPYWJ2KnM=j?V6mI z2pFUFXEPG(}we?I*(b#$eCpq!AdNA zm9hSMal%DhNn`cbOXQFgn1h&Qd(y4q&Op4tuS8yDENGdJDG{leWd(J`xW73Yy^+f- zE37MML0fCL)@~>-k;}H$;-c~mxmpqn%-L$pqyx95=>wVvL|e&QG+_8~X4$q*&$d-* z%(8*c#vjUZLYXD6?qk9wHp*g(^hvmX zCLW+oPf9b#LV6RTUv4Z`XTFD z8}86azj2Lhe1I$OjVw~yQ%gFE@~T>7O~yvl(LP*N*Vv&oq^kmCM|U;a3XOi1t-Yh? z?~$3#OSpopY#Z*KX~#te-^0$|+nez2CR7t-*b{&I3$8@IH=*&hj>gv13-3o~%i=xn zek2d;oiS)aBXo6z&9bx-d6BUwciVUP>4A*w{N6D#u_l1QDnJM|^r2p(sV?o^Y^65)-6DCy->eLZstPpK14d9U=$?ERDL_=-L0AeQR9 zj~=J2j8c8;mH!B6!n9fgbp1`c@V)9b&R!z#p&xdPwgvaL4O0beS35={DqG_p7t}T2 zp_Re5hF)%%S!TPzspPgBxRTJ|5*dL$3OFUdEiX_D>2uY2r1BbmKk8v&?a)Zg{jHIe z>01x4FIH=+8WiUP1i;~T1`Z}$}H1HLaLm#TATG%)EL#;HcTJWRqjcr8)R_s z4d>g28+PL^z?=Nl>d;0T*=RFYzTRHYQk08tHJ)%}rf)TFTbH)sa#w;gF=uOTQGPB? zOO6jIx*$-oI0W4^}f~h z^ZFwRQhf&HZm`v#Z>}wF=-u5@tlmkV6#91e?CvdSdEt%pir&h@r}Nv3##gti*v!?X zN$L$buWd+E;23%Mgk!ZmEx1IkSiQ1XolzT@nN}M$(=9Q3XD5jr~|n8B+5+BsNJUCkc+k)-r15-zNHq>X-IRh7=4`0T(?}t zO9^&wi_S)zF6gqXJE-l|q^yl@SEQE6cdjXu6|1RhTMlnI+|U!eH8*2TW|lnvSo#jp1#!((M{#LC6Wl<52{Du2sidYzR`TUV}4i`kh&9au-z zGVO=g?MLhO$CPczS$7!UvVX85DSmBgEE%zqE?r-p91$DQkc_vh8_DBng)t^4YgNSB zRDB*ZN!`xKE!CumDDN9;7=h@v5q%lul%u5d&Q8hBkRtEL&g3pk-^y*6iPqvnHdAtcb~p zG{(n72rE~lY7a_q`93mwKzMn3gf?F1L6SRb$_A;Y+tyYK-1?k#bXqetSQ4=zZB1E8 zMFbg*UcIs*6`xCaP!rv%6|LB@Jz~&;T=!MX7ebf0K5XBb92L9XFYT4GtcVQ`=|DM5>omD^gda zzVwTyWkju zsIMRKGrV2nD|86*6VG!)T0?91-SJh!gxoCfTW&k+@QDdrVX)fk^#x-V=LiJ7h~r&T zeq?~xmc4eK;< zS*_?s!`0RsZC7`r-a=!;`AQq}3$d}}3e``FnWDAP#B|oxwVSBSf);AF(zdn~tF5#Z z*+**HuC}cuWNpLv+19PbLi}t-V@yw_ZJwy!r4$wQmgHB* zg=!_4id2)27a(b(=3Tr8>El#g$`EB9@JUh1FcQ)!~i9B=dfwu|5iNQ?s%kqNX}9<+tQzqkXI9SvY&9}ZBxIW>~8F+s%wwE z-uuc-$EVZ->QU3Kjz8(#M98zf38ZMdydqPPnJl#TlJ`|&s^SLzln|=oR+xl)RN1NY zPjy0H?< zy^)@D;o`3s`-9p$7WZ;Xgl$1iusuh7>s^3DWq_p^^(v#wO7*8Sfq8dvMO;X1-;`MxF0c~Ow;`l4sE6Ia30WMU1RW8T& z5NV->Dzpk?C4BWPT=;~d}e<{c7S>~0V{}i)K;2X(}VU& zyLt&#nkXl=1$CA0+7bd2f=C^iqbE8>$IS#$eU%oC zmZ;m`xBhO_YnRtdX3*^a7!R;({4m+vG+C%LC7D@Xg? zR8|&zy_OX1+}wh1ZrO6uEP-%Q@@M`Ovp1uB>vqeUviN_aR4e1Noz%ig<;In3;#cV| zZBLn6B}?XTky1wF=sv?g17|A!BPm^prwoV`7bR;`Kf$FcQf@9?n@aShWv)$Owd&t- z$;2Qj`ffm?qJHCiHI+Pd=FUow(vw}0UA;;cD=Wxm&yazz^hR1@&13Luy|RNceOPQn z&#UpTKB6xrACJF8_Q(EDS1ggXFE(4E^O9vNRq?a>y?0R5dfG-FT`41bWTAL_`1WNh z4aYmNxSphSvMIb(RYL|agNnp46l*y z*oddlC&(iQN4$6_nKC%Y&@Qus9MX^R0_;1w*o(?lg%VWo2xsSxWx{f?ZuA( zLu8+`bP>n&{)<(0MY_h-nR(QqLL*TdyRY59x2msgu&-_ld5)zRv+&}Itd7@o3 z+}HtG0e&K>0D$l`ew;X~FB@4LF+o^GOJ}GdYPeG>!+s{C@p`fpZ>)lhySA#XMYaz= ztgmQ~T_BCU(>~3)N4UoH*(oVx{@>|(Rj91`uk)n6yEUvRUU` zP4xSs9qeC8Hn}Eu<8kT)&D$y~S|cPlUsVVG_$eNAKjp0aL_|;vejt@=i#YmBM#+w; zhLVjto<=Op^a!aYd0MJGCs8gogsG#{B59#ls z`NPUq`IMgBe!WLtcC9QxUe+^bX63DOWS3xNBSXo9kzwWlk|nECW`2zyX|y%w67tZ5 zBiaS(tn3VBrvmW9xq5=y7gt!PXKf^FIAUgO<{K)JJo+QHx2@OqKL)w}sO<(lP28u1 z%GE6mk!(R7F(SL&;EAkH7)~(SMq6qB^h-sfQH`Ud7+-!>H%mq>P}6i6zA{SEjE!D| zR@y;>Y_|;(w2r957tgU#nFY05%PU(p7Sxqwn*FIDnW#3ZZ%0mw*oZ66gX%P_@7)bi zJ&-gF;~2iOw#^Vw;xyjQA&WOe9jnj452OTc5;owW z)CAsyax!W&Y71I+zS}~|@ElwwON{E;ZA;l5HP~>zez=}yn#~oEI`!0_uit#0mY#3u zHA~6R=woT;b!XBP>R8>`7D$`D#NWQQkcde`} zZhg7TmZ}oRZQ4GiP^PXW59Z(j#MAY7)Nl1&TMiSS5j`^7{+)g;TUzpa^65kQDJOBP zC%z*kAi3)+ISz+QrzF-XvK*wCpVv@qj7?!n#s_^>%n!d+n*ML3+v0*rjaH* z3Ol^MJSJz|eqwQdi#Z1A14zYY+JD{t`ptN&uZMX8)@-62^0lcnmbNwxH{w{ctf?#} zXMNfF@~_BxsQIkJ_u{7Vn2lxY@KAXA7#{cmE&he%ND00iuikK%EHVVF`*qcV=J2}e zM7^{rWvyT8%J`U^S8@N9yH!*>Zb~EfLT>h6D%nI_CXNx^cmQR8b-)l7W00C#A^j>7 z$WupZst3(s&C&}Kikmvi9UaHma3(%R`G7Xzhkjst@G~Tvs`p=kpIPCzW5td&IcsDw zYXtm&Dw;gBZBuL_9=dHK9==G2(W1XLZnKb+$;Mal*3WQWMd#sTWNBRE4r*8c!^<%o z+I~Wxs8?*1=>t5t_>GC9iLd0mLhJB=1^Vz}7CwdFAz3lGko@59+xfSi(yW+>qPnTW zuMRNFQ}9q#i0YNHSKKs<2fP_=5Fco#Sy_~T%MChW)84zJCK5dP3C7N~Bb#~dc~pyr_Gqh{9rauK@yRld8dnR!e%A28quE`Ub^WoadCB`3 zUq`vH_*3_gU+a#&NUvZQtU;v2YYv2p?UIW@Jw66O_tU>D7j6Z1#{5x*nhDgof*NKn zn8lw1>%yiNVFu{31F<3GhR_+v4CzC?XHlmFYSp|z_3>s2ajw-M(uYwOIz`kqK`$B* z6CUs&(F0z0QC3ApOXfN9w&?s z>MEF_9q3Qp#moxAGA=ets6MZ6Si|yzHlV#&S`Q2sb5Jw3 zpBAxB-@tQvO>^{s2I_t;;oU*=3gN%+W8usFku2*b@K`>Z65aBDuNK-I=y%2eHqnCh>-krn*@IsdgL-Z}o1gbs6*&Ckr%yqo`!$P}n9o}n5G9CWFFZ_Y_Atb~B zuLVDl%p3A%3cr)QIZuj6sbu~&JSu$2gQSN^5Ao&y3rDc^O51STaN~+zr~n*S40X(q z%b$=dGDl+7v;4fq?RxLb#uZ6f z9iymYv>ghQy)%;DxsFjhOz@J?8#gtZx*^Dd$OwwYzErUBymraARlcxJlr-rlnQt3b z{zw*thy1AhN#}l6`ItO*3)mc#on3S;wm*68wFiYilaEx1wdyP-p-+7WP!=!WG6TIUYCA8;0A$cdsKaHaq{iQ;q*u_#Kiu8t*KFAX&cHcn81q-7N^#Elo^b&s^-o*qk5LcM2j^ z+HX_YNSQUKB6d>kE}SZyI-GpJaH{QUZiqHARMgPB^=zXJSwIsXLYtDxGhL3fjW$G5 z%wD|hy6bAg{}p`K_Tu%}AD5P$UOKYUjI<)^?(Uw7UiJhG=zyksg%`3O=yUR8 z$UV$)JajR^+H@n(0_OQ4_pcu(2;_&AIKd#?pLm$+B>#K1SBaZT~=}L>c!q$3Q!*A{(zcR){~fK6RlYw#hVXd zCa2~2xcIv7yBsV_=PMf$UQA~PiJLVnw9f_8Ec`F&2k&A5=-{S!4?H($u@jf$7Mj6* zxMojZeKw#rCM)Nr3$Ii zlRnD)<7*S|_QfVm;!G>aFwVldm$kpoG?D}}(($Pu;0B~=?_RHZp{1&|(5R9ycQUcO zq(hmxv4@%^m@(;4Y8*u`YPH~Lfk~#aPl-MC!=3%>}cpEMVYx< zpOQ+v2q$DU@yE3vk=du?6WjX877$sItYTYQCCz~8d9g!(+S$&lMpg#0 zpCN`nx7ApHTS)({HMw{VDWb0x*0#w*zKIWn!W`8xx-{;gw*D`1Y+4b1rkv~|Q^=5B zx&H?{PK8GpwL^`s+ZyCvYEU5;B1&7fH^>%YMaT8|$&T26{-)teQfQEeGsCY1J$P+) zDO9_(AeKY%N85&%&NqD~$6h9nOyI-h;aqdJ;`jzy{NH$Gk1RW7nmk74 zEWP!8j+P9-8+-Id=v2vUyX9vJYL`yPBrz=oDoHJVGj{`yZQm+et}Q1P@F4Z0rN`0> zR(*npm4{!#!)3+{T#;c^93n%SNi4&-VgITx8eZs){bsis4PrqdYkR9fcDh zq{OY|R+0-J#D~fihcZxk`0R$?L%#Sz?ar2+CrN+3Y{NX>2f4`*{;+3f%kH6d2YU%8 zE{4w(WJn9Sd_!(VIj+Q03Icp7W((a%W&ur&OvLkTq>|K9gLH=LsNm|MJlx$SxQ{sL zYjgnLNsqB70U)_+zEGS6-r;G$Yk)9}f#wMC+djObbD&PO)yJxYH&637XRi1me;?cm zoR6IVj1>V$Y?$=I5{m~oFg`Ar2*40YyMW&_`5gNZb%CAs6NZE(+(Ve!M-vRed^C|+ zpy~LyLP$69W8d44c-}GR?fXlJsY~#Iwimd8ADm-*d^54YDwu?Li=F&ciUS@49t4z3 zmJHXQZyjcx^~3MA(wLVgW_aGL!If7pk|MLFbr?zkS1H@54wz-^tQW$*Zk`i-lspK4 zrJT@DaLj3)Q^yHJH~2Tea&ScsU^;QWR|GfD1L=sj%rZ{rv&JWj%+N*O#(@D8tUx&R zjG7(9H_dJLC|i5(_2Sow-WjE(PkDU1cVo0Jl&Ot1+TxDK9md5vfmEF_P&Wiz~PX4gM96$$fMy9!0J=kB23}rKusto~g6p z0eOW)H^FFk6>W47L%Nwb>BFhb`f18S^PhgF=gk4;Fer}Q#f9OD4*Ib< zpl}!A!bNZNxbUct*yGkf=62j?aUN=cQht%VA~^->c4>qvIrCe}r1vJPt6JlVY+Cjs z+MO(;qEd#a80t*&9V%&(@FyxMJGmSmA#@LEF_F#aQtsA<6SHKvmpZMQ+Fsg0W|dS^ z>yzyp+xz0z*R`eJ<$&UI{mkTRz~Cwn|X)KZO= zt!)uSF#ml)#it&MaP6p|Z&PLXxd=HA9jg0daf^h1Dl0QlF0Y=AzncH^eqvh>+{5p|(WdewHr96~+Rd5FzA&m(!7p3%+9Cv4Q+8`Rtr zT0}e|gQx{E#CD@0{YyN1IQ$#xab;_=Z3ZuvFH(6#4K9R7P81SaZ8w!tSj!ef1d?Nv zkRUNRuIOPA|FgGeiF{<;7PJ52)hZWc1D!QdCJ) zlcIu?vFpC5#6zgZ#HI2|+n$2Bqqu*q?oiym%GOo8Z4JaJs*8HiaK52!^&BpG{Q+Ik zFx*ga9xuRKciZy)@i5#WXhP_GDB*NdC-73JJ_dYE!u7liT#(GidFljRSn^!l{bVmb zO~~nXIz%8x$ivBts$;a9polce-$8nM$e!J@e$5p1n9LC90N7?WnFsdrkT|Hj?4pJS zi3+NkTBQB;61u>XqMQX;9hY>wMRE4U&#TN_$Ckvp; zhg(QGGA4bvqc>H<0?!|7(I38ou)XMynb+rDR4kePt!*H6-q zK05_KaNwH2yZpR1zhHuQ18nf!>^YPSg^rS&OL&V&m_gR-K0u*(!Q&VatU>H^<}5%O z;X(2hrV;f4f%1`>-TVh9U};3Ri~r*R!9AtpOk)PkRQr_)e#l|}#mDD`;W^+HI{Kr} z)(g=EjE|FP>L>aD#GPizJg~$)otlf$w$Yw30T-_eJt>0b-d3PIDGjrjj@#gZ?5}`NIK@2rlvUFDuMe5i!>nr09;TpHO9S#l#e|nMyl5ti_ygzO>_;ymF6(bnR-nzb+z80 z)Qga{l#U)yY@X$t#UR0ob%|uaI`#MpgGj)dGjvx6#Fp#U0M-lcP#BY*uW&;B55nq1ZW!i_w{Kq2sSz;g1V(`#d}h`xA#NT3&UzQv0?@-TXinWhY?mLYcAXM> z1b?9PY5gh4>&#ccwF4U%-1O{i=*vc#HQy+a1Gs>|F&%ON3t0lZUhv=yZ@Fd~vt0jR z0(`#D(jX1K!|?_U^7nv86+i)5CoCPP!SFB8!8r~T46M-kVUWqWwx1OJb$#N0fqmGT zqnnApl31tsoAN{9>>_EX{H0DKRy!9K4F&j1jsKWUkQG1Iqk+b6JH5RJHR1(`TMuA8&h!37Quqt)DT0SatjO^nk@ z2!72NHO4s@-XM0tqWX2bz<3zmEEdt2qlc;BII2bQZl)(s<;)FQqgB|n0MRp5jCrTro(r}7-z zWt}({jhLGP(`~tqmMusBp8ey51w_GvK7tH5;NJ|0f1eGnK1lKMpaYYeVtfDs2kYdz zbWYB}_JYM(?*HroECWF5;hc|&InGY>J2=o*FTY0RZPw7y9B1P>Y7)AOVM6-@3RkL*{VhG5ovC(ng3r4^;S=ca3>cnc4*aK4HFebC0Dt0vsdZ!E zAZd{aPQY=2aJaZNA}_b#=4lbno32A;{;JL=+^ZIz4jad~W2}?qK>f_oaBvPzHwkql UoriK*?DL2Wgazm|m>K(j0PUE9DF6Tf literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/icon2_24.ctpk b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/banner/icon2_24.ctpk new file mode 100644 index 0000000000000000000000000000000000000000..a96f3786494d1c396c3d8d3c514b63a22f657187 GIT binary patch literal 1152 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

_@}RNYh=j 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%0Aa3Ws9(u>zjvC7>ODL!Ps)EBE_;) z9QOTrkGPp+ZifzW_C{QxpEIyn+Giz!gCcTKs6`JIbp|q-Y zviKj0`y9Fot`<&eu%!WJ^OtdY5GKq8& z)gSQzVkQ>mrhDt4rE24w=~*I&Vzyr%Hm0NosjIwnW0qdnp7~JOtA_P$^YE)j)s#Pjgjhg#oZSEmX z>+_tby;b74fOY4Ekk~epQGwG~Nq-OV0mF?WC*>X+;}I|G@yRXMwp^ztDN;|8aK+LQ zrBnlQLL*u7YqMVt)F`WWXF<3`SAxwtlTa}v71txL3EJMJG?DY@;I2wA1V%H{Vs+*m z$JJ@4$q9ar#1YxEyWIdv%WRQCQ+e?}RDeXtRO3SoqvuesFynCPZpnqk;g9;uen)Ry zd{ZYP1i)Grd^`{6m8QSFbr}N%kihPrgmaw^bTrNkmmXM4HKa6h=U5wKTEd~Vj38(< z+`N=Y(8tl%&MfXuB)7ReS$rK~0|a2KT5b)xzrW&3CqME~(vYq?>%jz~dxK2K;`>tW zj^n7re_eA&{+aGb)ZHpVrG)ySn)#dX3-JiC5&nB=rYjl#NUAq1P;pnT{^h^}GdmPV zg?8tBYi7shk)Y5zow)PLs`!b@iL6ZPi?o*_uMIC3o?l733-Ihv$JQSQTabb4G!YQ; z4ycLBi4t|^Erosv4XVXrwfuw8Wn4UP*sBsyWf}g!mBnW0 z#{UZMf^xIZuK%N!QTtG%Ypw^uPZn-^q{W1ScU#p-s_8w9K*9E26`wLD=>R(#++dMD zK-ZVVSS|>vZO1_5mSS&~qnCLuK3y--fLHVw7i{g>(q|VcWgsGRD#0dti%S{lQajB_ zJ^7s1(-lMA^qnj|y?(vc3TtY+h8?=pR7s~fb-j~g_qy5bfJk$jy;{C8sb=6eboc`y zZvMVOCcUc-i|dWfb86#3I)WTKNCo3@fB5Q@`s1hRA|L?-Q85?g89yr+p8LV>H$zmg zI}gMFsv(VyyGvT)QRP_TXPk8JYc_tVr{9ROHqpT@ zHh108K{1lmQGIHkxO+r0rgwjhyjI_77>A2KRK+(INSdKF4KkSL2MPt#^?0X6R)5j0 zzo#mTzEN zz8$m&K@b-3cV~u$`YI5BHLRTi!kBPo7tG(XsS8EX0v?|;^2D!5G|AtP!lw3(e=MFH zX>TSp{bQW4$@`=;-yGz=7rogIGkKxtT5usxM#U-P1L|IB9HK#6k&sxu!u_RFfq?|) zFJo&h3p+1PY0L_l6lD1puCh=fLC<2@bqM%;ntdGVN(huGiFs@)tMujguq{U&6bP>z64C z3T{Zwz&|kX{xYK)R6LYq(`Ik26{_TbFi!^yqIrIUjL(8HW+g^-8nuz^F7qt~gTB)y)+X`lI|| zXzwm^gb5nuaC*}s@HJh{CWf#p%H)tmK+Sohp&O5{<^>$76=EtGV6b#1{y*o|#(@CL z3VaNd(}v1hbaZ`lNo02jB*fk>>*em;v3IlG`Q<69Ze?a^o#Bl*&u=n+@x9(b#H^Tt zRdE|j5W!bAI6xtAQgeLphZ7$lS9H?do0gJZcHhi6&_b!2RgjP2Si-r&@&8SFxUM;- zJ#0SR&#m|T-T*&Uso}|ef~NI8H29ccWXMp1;15l5LIUQn;>QWX$35c&4J4FqPRflo zZ>X&a0yswTu}M;NFpB^;eqU=j4@8X#6KeOZAf6fqve;Q!eTH+WxB@6Y<;%j;Hx$Un zQ((u(PNUV#IsB9sg<@})>ix!5B1 zzb`YTHghXmwt-e4F2hz^~mz!^>_ec6eH}l6V^pXW)}Pe2k}%ivQ7@JUQGY2 zh7AlUXW0UqObTNCmf*|qF4nW{#Ih~XsoUI76othZob?U!IWH9 z1Fg_4Ko>LzxZNYwU$_ivNDaPF(|IwrBTC{jYgs&sS}w8IuNj&ZJ?fFl9Z@BdMlWbU z+I)0dGXZQzM=b-D5eE~=X7=AmY#foft?rJDNsck&g57;%{^oR>SX0p z=OVNw?$BbumMC!@XL%Xz3_OZ`!S9=uB zh9=Zf!xw)L(!Zm6wHbO%==RWJZP^N|M_ltJ2Ept(lQBI?d>pT3>=O84RUhwPnfgu= z@Dwn3xzYK&8K%!_B(X=$2hJR@kIoTV4%7%-tRBSfl5tQ8g{``u8p&nA`xo_7F>9+j zqN9q{-ZBzqP=Uk2%r|DUnmiXUbT z7*n2+XzMv_c$`GeRlp?^tb#ezVVSq@lQMuE_f^-6$>`~qf=4BrN{u<^jMOPHgjGw{ zG}FgEzHUc;Y%r0|93u{uDz%w;EBEH~K8==g2K zR$7!5M&|xW_nSf&s(~9(-i`y3K!@DVmWpBPDHCK4ngu;ybF$!{;SPf#jHEcN-aTuG7 zKJ>-)c8E~$v&$;rA0Z%ADms^eCiG$6`i|FUgM-~pW<|Ki2~#x+u*=1aP^4m9?~rOh zK~oWTp2hAREQv_9!RDf|_kNtG%3`suk#yu)ZN*dZH*06$Mf}!m`+6Azce>O4*0Dy? z#(c1Jr~gd*O4!j9O5})_Lk3;quSkA`Eap>JHTrzW-5V?S=~eK}@LTg5|KMNdcSRBk zq$$GIl)OF)wPE{Ta`93YPl%}W2p*#z{}NmdzCUR6sSWY&)|LaWLu8d5ZY~P8O^vfO zkES!mK=C3gDe1(UW*|R+TLy#+lP&TRUiuXZ>DYYrDiDRHkjw>+&^#b6ip?0{P3x7G zn~?3nf2%s_V$3CMnI6?&ZGEf0;bpBKr5fIPXKOBIqAPY-VTS`FOsq4lj0t8YR=PQ96B}48+S?gV#qlf( zHl_aZf5TSZ`7p1QfmCPXG8EB!=N*=;X{ah&ZR%Cz!%MOHLo85r7d?Vqs!PrDV!>BI zcam&bS+@djzJ2v*otf2z2cBweUv?99Jh~>Y(dB9p%BOZe1lBlWGk3a<_`&;#IdjMP7+EwLw;Wz@_R*9fdA|W?@KL| z>-OOk&XDs088w%EHePlksI|=bvW`6`BW{Z9c<&6&V0J>3owr>dq0j~*|J?6dyb4pL zx=BF{y;r|bfQF^Cy564&WcEzfa9jtRV0pQa3pHRWSNM4@Bh_8OUxvg!&P`2JHX(8b z)A_w-YBew;>%|BP30R-w_+rs)h@WE)M9^JdnEr_)X_!o?29@nCiM*<+cg`?o_`Lye zgAU^JYS0C2$4%C2Rz*FuKo|1g0>hz3M`i%#naufc_6A(UZzNpn2 zJuN(o8U;yc(zVZ^vNl#(ITZbdcQpuK5;LG}BEkP|9+5v*s0D}v0*pv+^7AqGSf?P5 zPi#|qz5e0ZF zMAHSghR~-+oH+GJ&VUDB;y>qOK#{`6Z-+{*!VOXtTkIulADNl}PvI_*iDxiLggD`| zN4k?MA93WOV@r_JYg&|n(r)3sgbwH++z|73GK^Iq(UUGal$@HwiCrrzU7Hgu086s` zp;MAMDVknMR30weED$Hm`IQwwU>TlVSfoIdphrd*TdEU@e1w>Ei3&L<073Xt-!x=d zxGjQ@0~Cc3CIJV_EJqv(P(>$>hX!omv94~5dU@EgAn?6c_p<;bYY+|mIHSO}dm$qr zhfFfKT*Fqe`#Sz>3ckFKmtwtS{r+LQYPhP8DmarvK%e09uL(k)iaDUZDp%8v!oHsl z^BRm+gVXic^b~mGk{<4Z8=;~m%CXJ}&dAhNM4e&*st&+$VfA-ekOumit7` zZpX#2bWtmty&ndkdhgn`#>^Hr+XU(BpD@%+%f ze_-c3>0&ogZDp=pqWoxNl4DyJ`A*-VQCfk>5GzOQjx$^{K)b4^c(=I`c4)?X7nFo* z=|B85#i)6XRvxRxL!9eMW@aAj_^VOsd3q9#+gS8)61@Tl0Dj-jXRnD8JHa|ouy8X7 zd_rPN8q}<8fM-kDh1Y<38!uKGO5Zzy`g{i{SFBh(6j$hTFGB#1H6kM5i2$ z$Hrwzz*0Yl_Ac3OSn4MLImj73GYR@s6{P$a6gx4bgy<0B1;yu}`PR|n79%&U`&7o8 z;7m^<{xV=)8kglJis-OHY4fYc}*x{ z*y8_LLFDpR0}Pol2wLvU2}J!22WQ!uR7pUKo+Y|}n+Cvi{E-fM2gw#rQ=iL8rWGjs z>leFCq)%g18oVt(!@Gdu7Ua7pz3?Sbn&FaRi3ng?+VJ6L*5%^NL+AeM4!o43>TSLS zM5lw<3QGrkF11G?YCc|~`AnO{4EfKr=n3fn-_}kDObpLHl$EZbtmh2SdJ!>%a}yZx z-v%O;HY2$9mo893a2t3sdg6xlD{E7OCEQb2;`4w+GZ5qY1D|DKe}NrWCw!QM*#!=+_oCz}O<&kZdF1+oCID7_bi0^$}+Lr2z-Wzb8-F8Re@j_KAvJ{K|g0imSJTG>1Mz!xFBJHdw(B) zTvm!mEXXcV*ymCtLk|b)rSX~8k!EQWD90QW-fK(0Dmu9r1!Bg#2;x#bZ=LRoc`xD# z8i_qcDXtXp3jc7I)@s>AlovL!eR}f_*(J5qOJ*c>8k%r=PcJu3f6-; zJN*y1lRatIlN!U*(yQWO#Uu`=KE)a91-tE5boIUJ;wy4z=AgJTfhDeD*oqY6qUtcni=K*-!br+kJE*iXI z#;7ENRUJtWxyRROW<*}VGx=C7R-4j%fUGZ{qq!|!>+C@-wz;V8;cy+}8bm&iAp}m0 zxfjT0KJxN8pg|3zI5=7^>B2Rj5bewbnu&}|LfFRamluV0A#^O{;)_069NAJ}130oW zDf*@ra7^xwM$+X$kgXn*YD({@{)Im$V=mE4thZ<>78954A^^^C5%`~d#qjSffUwqS zTEFU{?x!D@`({_ZYw<+8ySB@NJyDHy(qvy#TjD5~(FBycNB8d9AN<1N|R zJc;Jl+>0B$8%0pFiM6rK{1x8h|`0T{tUU)hukgF9L>5bd1!7oPj5`|6u(#rb^)sNnWS6Fcv_ zMqjcoJmuv}XqA65H^TPvAnJTHqQe##j9L&KfBgm>uUN-79B`ZRuX6nBbwBd<#``ug zIH9}bDt5D#(E3Ajrsqb_T&KU1ky*N>eW-2C_rv&m=S4oRt5|%b!@s4u^_le-9FmNe z-Ez5O?G%2MPf{ffbW#IX=Z3c&WXosbpDr~;U{zP+(SlixJZClBd3;|{IaL+=sgY<3 zz8X$H6uU5@f%Po!PA8Y%OCyV}j7nf8TI=36AR8`kjYy~%wu9PsXKRRIPS09ec-EH@ zlB0zNpiq_oqkeM{ZzT?)0y8s&F5S8aHoln8)IuAeiWN8k4Q-v1zXDq0HFp40BThY1 z6bV2T>D{I-`|j6>x4@YMQc)6xI^xaDywG3?@o+CV8IcSj7=pt=YN1>hHOF(OjC#KU zy+Ome`z!~0Gu7}ZfAcEd5<2H>92^3}eGAtPIfg1cb609R-?P-1;O4ztEx;L+LWJNx zhE5GSK}V>o5jah?t1QH_GDaR}*8B-9SV*3J@A-xr%Pnbd^2_4m%e=q>svlRgj36*_ z2Y{X+nuck}YQ{p^z~qzlTQ~Q&f(jSs^?uSB1(s!?9Zaqf*iypNEf z+GD^z&VLRQ_hs46zsr1h8|{AKa2;h<7bP%P32Rc!2oRBidi?FZ!r&1|;5l3u z{=T2sJHG`~%dfPO#$VKU7$LJS#fu>PF^X?OrnN#sYDy;7ky&B3;jW^L4qi5wlRs6@gEcgoQo)k(gU`53MFz@p$AU*f_g zCpE_d-_|1>I-gg7pcs+MsHm1zOJ1~v^iBVAhS@)#c_|-kg0>xwh4RXuvMh^f@`g(A z;{M63%ql!^F3B+lPY@D~ReaF^jgOS%kgMuP?Ute%NwJX=@L{xc)nwm-@J)C5SqP-8 z+NV+5bOD71JUs0pGeRsK5#wSvKiylTyT)dI~J^_UV`|aur1?Bu{Blxgsl`gOrD6 zk_zkfraXw-MFW0wPWrv|NxPnOOHsz*ADb<0cJ*%Q94Ztk1(V@Ay0I$8>SohX3MIcS=k(>~Ty9ySw<1=w!GYC*thLEd~Gd7LHyrF79sU_=4Y zGW)}ssolL%lj67fE&s_^R~2{zA_b^vNJcny#jA6}b=XXtt3J$DTwn?FyfBTDfKthr->7T0O=1AZfXunwy0TR4 zyqE$90e85#j+;d9Jj{N2t5vQh+dz#EKWRdQ^8KY#9Nw~UQ95CTlj+mWW4K&C0k8CB2?vl}* zTP?ey*;b@As_8;iCC18mMJe=#J%d*#^d4q?WV03IA@h9wVV(B|P`M+e=Q?4HB0N8l z@f+^8fGH(RqfcDvRXu^J`TNE^w6f0IxyQ;RFuU<` zkWmop!KZKlu7%tM=F~3P?(vCz%fgV^VpVIAX??_!V0XNoh~WLCk-GTf;H5-B^xu2jm4NwvM5_jU&u=N_ub$)9Ca*rWaGi&(Vb6#J|Jvw)%nD~UZK2onqWO# z72Ov9QfVdGsTDeuaT2nZ3^$WnCjd+g8eyRpQ3-(g0w9>uj01>JphSjEo~QQJ(-tu@ zdJaxO%rX3i*0Nupd(>1PZmg|n_}(&MtVhrW?i{NtO9q89<7cWJ1zHQpM;!O`!~nPT zfp8w8BsuRE;;(xbYY|KK{l7-r+_~ps-+{S9T1y`3u0TFdpsX9O)t(0<%w~Rw=PHew z6kg6Icj7AT2p-a1H8a}EIoX4^$d=4?ALG$dI2V1f+=Eq(6hGJX?n&4{9zi{J9fKyp zd~EjAjq|=YWL*$2X37?nqNB~k?Fk`K2vV1lQE5r&4t4yF1N5I}6FBW&Dw=>W;U_rH z?JMD>m~$x#G>sa|4h>e=lzS9#MqCfK zPE;Tf&KJG^-e%jT;)^N@52{Z}7j)}ym&_Q|f7$ec0fjMcYo!>c4jCmxEZ4mw)_T`` z@+^y$qU-{14A~S_Z8f8O zqKjSOOl#ao4|xMAqDFXdw4xvxL!!r^E|e1F(3P1ryA9Zr0bm9%F(gvtNz-4O%vx09 zD(sgF-g1WN@WNKRw>}$WtxBM7@S3-N&W%n=I#0`hvlYf}@p#*_p_HFiOTtR3zAZ$= z5_WhaA%LWLrdmVg%%DKtc1F|#q3FHOF$oAn0vyTHZouf}(_*buS!d7iW8419vTxzL z%duUXxlkW>12d4<5>a>ATX2A!avCdHtVCfLJh^ZCCA=2v8fgUlN0@xcvN219IhP)J zjT4#k@H)`IM5xm#q`^6(4oZ($ntm|f8^1W`;J|zIR$*;Fn-GxsFZIaY9 z`9(u)%@`6g>Pd5wW4)PC)agY~S^oGiyW)+J#b_!u{_N7}$M2Ma$+Wt(7(sz6Dsa17 zt9Dx28B&4n98h9#H9bsbid6LeiSuU%vI4MXMx9vO$_&eRn#Ww*^X4s;lf;A7)l5$=3OZ@TuwRdny$V>!T zs1LQ)7edFiNrAb9ddyb;KOXo5^jbH2mV!ovJYb8taxmY+74uWjNGin>Tn+`UHMEat zN4t^g>>labXp%)y%y%}-UqXlOIM9j3Lf_Q8E^aG}!L#QT`kOyS06jp$zgNUv(z8c* z0+SXFHIH0kqh84I^g%bWAbozPhri4Ktty0nvA`r2;0D=+BGm@5plBMx=6Xd%K{u{# z34y;ux8Fb|!owc}+^Z}O(={Dca>ktwE*-rAG&>o9_380PyYdrGTzgM7bL8}`TCl$f z8e#oeAk}P;hDr*7ukD7@@P#{QKx8)kQ7{Sg4!M$R!o^cqrkq~U3yXAW{ftg`gNT+E zf}(!!Q-9MjSX&lDpxq+3?*b?jf!6TUd98G&%I-Q_+Xb_mxmSlYng$*IR>i|Gf{b?A zSfattRx5y9<;JM^+X|JE+@1KteYPW9V>|5?^BucwjF?GjI07X&;d(a4DQop>P$09i z{}O*^ftQqJP5+}TvT9rW0v!2mw|MZNS#wz)eL|p1h=7YHTecQ>lpi<0nCz#+>53lMo523NXRbbig~CRPVvR01tsc!M zOkQb16g}*K@CL6rHEq`merD&+rphHHy@ubK5%r{agCK#EZsr*f;9n(w9Z#ae`f#U z?KBW?P6p!I$_!9kVMU<&=_NsADGPU-bp{{a*i~!|%XXvH+-fjR=F>!%4?*1Kl(2zP z(0IR-Hn__{ulrP)?*DqV72tU3Kg76b;?2b1=}WlGo7lQRNu8$bE=L=!42JvCv0v4o z(|vr#rG&*@-VV#@VI7>~-xkRGiwBu_3urj!0#cpR?W;#8M61f#E7-}P7L(S=7*hyL zyD-``941Zx1FXMqn52vydR4GL+!O+CVqm8yCqZIw-P9;*m+rCxzR!+9EgMka+);cv zozpqT-T5AL&K!kCKW&{wZt(W|cGU{@o&=UD%zu+o3WRfeR_PyC-e3W7vzIZ7_UWIQ zM_;p2lR=4XE>J#`*1etV-7&$a0 zd-=b|O3Y%yFv`OHtn2CYok+hOAi1cT2Z2w5L%jMsTq*2=m+dq#ZOCB1D^NaTL<}@+ zmy)7{>+a}kHnrI{GR-ctFc|W1Qyw+ta_a=68e<$$I)tAGD90D(O8yt_-eoU|%7Hcv zB-j-m(cVm1v3(PyKmagE%%@8`w~WoAfBJU%uI`xg-|nv(U}?V#r^-rn6amjBm1 zwr!UWC|qo7mO|eXe7KC#y^T<2_Im8)olGHM0rRx-1p!Y^r7IbeG0h#xO#!X#Cq;SI z!F9s%_T=Ky{jjI!99Pejs1)>uS_FU9H)96drkE;H&MRwt0ToxL?SeE${Ttln`V<46 z$``Sc@5r(zkUjCR?b})=GJBd~ztpwUw}$J&(zGS2s`Vd`Kh?oPXp6iE2N;6p+j7+uhok`Aqap$R`74ZU$1t5d&>zlIW<@5Ip^_aqg7(CQq2f3GsGbaE zN|nnK+Yno#QrEvRa|ByC63nnIUzkt1E$dSm0 zrCLh({fmdPy#Z_#fbd9Ek>QeUsm|{}xcO-Y+)vkATF&na$R=kU$oN<4`+(0sK+z%> z4-j+K&aQybRu(;~{{wU^=R4no7V-u3Ei1=~^)UZ3j4^)xdt^=;imY@6Bg&D~To%&c zwwkteo#p5`6?Sax2?%@&hKR7f))zTaV-n`RaJR>`3(d} z`GON2j@6h9=7JgnnmBOi_nTFg;7(1Z#pnr#{&FQ470Mk;hDqvqbH{541`NPLRf;kj zfqXuujyWKn(DHRoL9+;Au0bL|7lz7x$tD4TlXOR*IIE`$>#`rvWM|a})_{ghQ?3cbc0|9Xi)GZ^bGNCG7aa4Z2@p@oNIRhde$g8XmrJj#8h zplC{FxI1pK;6wcgJGhvl*0($IdNTt$pOMUZBqRd$A!hWvo=%VhD~LV+9Y_^WpQ!i8pus{6`_C6{6B#Vo$~*r==iHe#}Oa~~VczgEQ9uJFoGqYa|##8PGD zsi(?S%+0Rs?TMxwHKt)=aAcpm{)q@Yo`x5(&_r`wh5Pb1)_7k#)`dp-(m6@AS_aS8 zXxu@=-}{)8dTlWIIpBlNF?*F;Pw=%l?il8&zp1FPY_`_k(gINTYf0jv6j*1(*fK`Z{qf~_`HVhW_gnEN>8L!LAa&~W|ZCSz7Vd(B~ek@E- zHGv~xeoS(@blSC<^lcA9WYp7v>HcmZ1WQa4JVtO z(ntQ-qwnT}t;j8%o1rGS_Va1NKc$aIkrdfPUyq}T_{e+))Nlxu_9Kts@^t}Y zhThhh?GN3Y&B;~_(%R}r=PnKhc74 z!^QXcV*Ox;;7ya`UMtGSc$%QNl_Mu?#C5ip8{k{wdK5Or12L648-fcah? z9E4mP!D5L;IN1DWW+4+#qrQBQ%1g^*c?+^fA!VvZ$%3t+^ z+)xw0ugl{br7s1qmQO$`380TM&7kq$SC^idJuQtM2c}b&K?obfyF4;@FtMZoSe>Ph z{jA0bUEDOER5N!G7Qr0h=FX)~neF&!r!Rkal$d6xIEvbFM^8DeO}-!#?a44WV-P}h zaF_MMZ`^-iZcjdI+{?hUvbaLNw&JVVddJ%Tw#()!1zX<~V*=$P(bZZO)14$#Z)*l# zm`m4rK0yG&8XvB=RsKmzH3Ch zb6W&!TR+xRQjr+KKwMRIEouEvfivaH(~Ywf=eP5u=n&{84UB;FYsE+}M}?v%4mZti z5#odo+M(8!Yp*S4TxCr58Z8e}Sv=5o!&l2Y@H03bA0r|q#HyqvP6&{5(V3|yBauz& z<3^ZP4r~--oo-}j0(HC!G{6roDz;d!xbb%wtut%EAe(idP|?B|;Hz-8CT=xbHi)M} zLPPJcU*%or*Kte;&qgDTL_fEL&})VDQe)W zpH;<7W#-X&mj;B_OzVkM+ykugpykV9SBVU1q7cD6;iJ_-oHw?ZZ_)pUh`q!3-_yPLt+daFp3=jpn0P* z-g9=83XWjFH?O498R`vJt?OACVzGBDK(fTx_kH{BTP}V#yEXI{IBU$Eoi_7qd5hxR z(Q)C@nWsTcen){ks!RU71ss*%2~8oAf%1IoA~+1_JAW()ru8-Qu|SEnJmtBEequku8caZS-gV$7f#-GMn_qEW0bArWmVY z>($5xd;W_*ebeVxrRt}y>X1p}b(j2(-$w^^|1rv1LKj+3lKMrY!!ZWENe-Bru>>1< zssz2R&N)Sps`yf4FvVDo@EMn+()UHT`Gm=8`0Db4Ffx3^czcgHAId3sVkkjL5%aP6 z^$-wU1%x{aSQ!$w+dH3@9CK^*S*rT?C&31z`Y7Wwnmsd`I9bVptKvalM}CtcnE-rL zlg44U8?~sI3*7PC{EWRB7v{^LA&Y&5b!C)suC97GVpNQHiltV}2au5t^u5CSJMMxY zihmq^y4t^|Pogu=8~>dZjgJru%11iQg0mmEu%KI@~avMYcu!~UUZ~wVI0F&tldG@fPc6VtU zQFp{f5bt@ur;cdCx9GlJ+{|4QxlENcfeU3bX)$oKt5<%M|C~+81lxX@tSgBmJ|aI~ z5E(2MK3um(p=gL0fsUOp+-#H@?( z(oTOiCm84{lC$nFd3_Y01Xc;dfI>c~W*>F>A5xhbOj3QxCxEX=}6J2q=Vc*bgjE?Dm;(6fPyB=ZW3J`pFL|NgG z&iN25NyqK1klXu|a0R^QbzK00i8Ws?TF>@Om=8nDqJcF&ba`4XM-9Z()>*1Q2}6W? z0E-&yZTMfv69ZeldP!XBWKQhLKNLXjEl*#s%xLk()+tZ$f#L=S>$p@`Z*|i`Kk)R2 zC~K7TJ^TGN5s9-P|3#D6*jgX_7)i&3pn`9RXU@v#XzdoRZ|doY`00OZvZOs}m)bUL zBc|%uRqEo$u<&^1bxKua-hiP-*ja$d;m48T&v!vTyd}05-K^w>J?P;NfKg~6^CzmQMf9aLr<;|n z*g&RBIKPNAN4k^G@rlu4ys*}Py+1V5#(k}k%ZL?0>n_(-(yt+?vG^^N^AbsNRr)d$ zC9b7(E#nsk`;=;Gaa@^&+g51SyWpT-z`y7tLfK&8wml@I!|kC-J%B*%p{c8E!#m}i zoFyYt!*3T$?@8~`xV}fryHQ1xP2Y4_T0hcHD``%(A0egyJ!3a4YXmx$ z-z93RO$*J&K{k@b&jo4BtKml?{9n~e?3s9EABz*v(hRS2y#MS zZ=k2_YBX0nhI!C^%(9|1>J!e#Oh9Z#wdJVy-1!9$6Y~mW5rs-;->I z2Q;81ip2c%E2sOL7o0C#P^<~b5-DNpcd{rvWRIU$Klu+U;7C!!RVDEVswjh#0j*8p zwIu@=bPFq{>ifE9-A)99cL5%hQh_-$uX+d zDy_N_v>2`RwV$yVvpUixQ=Gha98n0_@8ebBmq6A{6$P8!mw6)}b^Uf%&)K6{n-?^A ztEGYxEmd3s`Bp=@0RPO7doXG4xRtyMld;sp%7w&Q@Cc5EJfvf0Kpx&%l?k*~tZwFT zPU-pV0W1IlQFT)|>&0QtMs$^0#tj&Obi`|aoXI&Q#4S-}cHd)-1VBwqyidtNZzJ7$ zA?>abXj87C{_rA7W~=poKWc6HD5S)z zE`_~_jB{Ve@8PRLaZkEZNu8c5%98JbA{yV=J_Ic4y=uF#5SjP)+Hh41M~0N9-@K_% z(!on^s4v3!`8^om<_qd@243Uxou9Bla$wny|+9 zw02;WE#WmT{u(WSI-+~kr zf_&t{E$~9_C06{H<|9M+a&^)z<*@%O(yRllWBzC(HU7o(?!w=V4IVZeq+2=>`0|{7 zG_=j98^CJ z+DE_>ksxN@IwbGNSFRhJK%Y!&3bD6(I?`xw5S%gHL$j}oGEuvBq- zU87pALF}Er41xTl4s$ks$}+*_Aftzl$D$1$s}8Wc!8Wj{;MOf%oX42WPuz;I#Zi81 zb<;zu1gA^5H0`si0RzV{6;$D;lY1F;T17x~p?1*EVMAvc;dav@v>>-h!-n`RF_x;# z_t}lda1|43lw@k*9a1~zrRMgc%>G6HJ4HaN)2Pe(15V9Gu_qvKr`(ff*i=l}y^5QX zybv+`l!i#F%W%l3K{YtW0Ww3}!57Zg!L!vrO>W5lIFjDHR&~oV?Lj9ET$Szr|1gYl zCl0&MROi0@Dz|Orr%*rtPzFVY8M&;F)o2W`obZ4@Om=O0h-FxOXWDz(#xeeVZD{(e zme4Gz3(arb+h~ez2=NyGWZm63e-$EfAIOG|A=Pwrm^iwNY2AxUpn9W&@7~5X`#q@M zZd^}US}vM4V%d)<6Y{AVMq!B+=n9;$qXY@#i(n#UJlN;*l1~;fZmoDD zp2iO5-3M@vXCGLwNydJ!%DB_1A<>m-%Llf)V5N8PKpIuq98X@ze-q7wW;aY_vVd&W z-8Kyc1%GfW-*?aUC%z6@m)d63Ze*o$uO7&HoPBVKWzcO7UphpVAe3|ZWOE=gqKbbi%m$4 zOi^OgcE7Klr?TRB@)a5 zPUix0Hi-y3E^m2ZEuyH4d3VxyGXo1giK02TgF8PonvC zZSB`DKzERaupBcDEmN{wIG6mbos;b88x5EnBSAwr#WX`Nvcx;bhqx7iKT8S`e#L6X z>feEocLtT5P1s#1+Rw5b%b9hU#9+bh(|8~M8yATO#>ezBX$lj==Lo^}^WyrvR%82_ zPw7wmgQAEJs9U^7C#WbWv#$to0vfL@U3J(e9y6p*$dcfG(p$#~YKKFxUK0vrr$#Vs zJv^d%7!T+eF^V~Qi?%*Wr_#wmQL-vO+625`Aq^70 zOkps8EWp>gzX61ftlQ z;z%389D~p^vm2BJcTC-TG*XSWazfDO#{^mk3KrJ-DYwgd2CSh*7ZhCp#8c~x#mbk`;IPncHWSdc;xJ|F)DS(bb%gYEAeY*)aoHN zI+cMqrJ*q3i`OZ`e(X|6%WNMDPS-j+uos-!qkgV% z50M6jmtZru0IZxZ5edN1hq=D!G$e&%XIbc$eP*pi$GKJ;3fs`kC9Vsl(f-TsIiEMV zMLcRUcU*dQ5!)!7PE*0e&L7h#`Usc+%$uRP56#06ma)+RPi)H#NSQITt6bsM43LS!G;Q_ly-! z(FmdDPUb=qG-cS1Muy-*gk#~ud6!(C2t}k7>aj|Fiu{JWGP#$Xl^p1!aV9fNOX6){ zuPpQ*MWJ{;X`bCnoK3g6P>%`KOD-J;YE}1r%%r;CqefKy)IYcL`6heKIb~<1! z4PS%c6jDe(XV9n1a7>PjG-|SJn54rSxD{fmPzO;}cv8s}C0z#L(KSsSqJqk8p2~v- zhoEobv5b=qzx%Z}M-VORFKWb3&}_%q9~S41$i!h-{KW_wwhjM=3XAUR!Mw%bTO+g4 z0iwu$&n;p+b8d+m7^NKMX@`TI5HK?d_rLJTAAYiO)E+3o+gZ&4`j!v%_O^dPCU8E* zUyWvf-R^uG4E(^cm=c>&y`r=%x8cZgN*Kfabz`cobfji(!sYa0Pk7)x_hIv`tgXXh zcySO>4Y>=XzKQIa&yOSH9{=gz{l(_Rt*3u;vj5^Jvc>~uE5XSEW3aqW^qg?ckq@2sHD4e4H`BebzM9o$_dZC!r&JUNMy@PK{-;xl`zND%V_{U$V!bUE zqRJS+4gqKQ*rzEQb^^cPYi)IRb=29Oo+JQS+!ETp<=}ktc5ZGGEDhN5%(;V4INKrN zQ4b;lgvjJC1_9;)U3zua6nzEuos?6rTx%tugsvcbjlGyBqj{syLrt|I4o*GyYK_g# z5XPe6XpfXH%eIqpkoW_zL)VN!Ng!PL~oQu+XH%Q?}kXO#4xyQy&h;(a}?nnIKLkkn8axs5rD z{9Dc`9v?s~b!O|1_01kuRfsqprIH3fQ@ZpvlMTvkCZ^e=f(n^W?8IkYXPDKFgp7st zCU)Xp*c7?{;hxZY&LhsuRXsb9^N2%$(YjVfG6yX3q`$-qmjXUl1TcUEuU%X3ipxP$Jz@A4 zuBfJ67tsRTTWvE{TvtyorGVQTAD~L3h^@&0slLYUC+mdwsyKY2sjhMEvCD-kKD$1T z)mxaU)A+X(F7e)d&x%3PJk%hI<@e8QYd-Zg!=hFwlR)R0_2lX0)g)sIo zq&7ZLw&FE~X^47w8yUZdnO!eY(=guV{nZCrkL?R32JzeKYuxe5wcIYQ(h7$<%^UbR zqpv;pFFva~QneSpTs`UN$KFYbAtzEZc}x-Flz|uY2eX)mQ`2JBXTeEvd~YR!d)}I^ z>nwFa65|(no!BU0uD#yKX;GUuvyUsleW0hvQ+2R9gXKGT8TY-%6QS>(XJ3S6eiA(l z>g9N~`%EPJDYonQO&kSh8R(!i|E)?v+W74J<$W`RK6|Hc_7^wBGET*4YY;9rszKKHn z79c;v0L;N3r!#DW=s0y4?SQVS;yY9f-&9h&p{s>QH6Kd^nm15*)E&6=njuh0}e zF!0xPLVTPF7X1w$AfZNHbv*MBTA5HuXc za4EJjmy{1cDi_L{Ibj+?baT;^``fO5k3-_pyPsHv0Fq=Sx^rTkkN0_#lbm8m)3=?r z7cj!yS8gHMO)iq$$#+@mdddLE&q^f9YtdpTB`4ihWB5iYb>DKDs4MU%y%7H&A1!$pSU%}l4&p!9 ztmDcus^_!p<|O|N5WWr;!MJ17(TJ@h3n=6yD0*y{QaRg2uUWs8#6vb+tPj0weL#d? z*p80BzlLwved_rm(BXSlOGV zVZ^j;;A7Hs5tw@5LV^>2$I`d#IAH`i?ga-J7HHz{#W;%b>3=p-H8Ek$WC7kE$mxD8 zy8v3u#AKkDyuMXg<${Wc0X0hwq7ITZd?QDTb4g>S!}w=^4~@!s?y1p>Iz}!qum_#|=Z`SPwAgqBu;P zQSQ$DK`=HM%qIEd9lBIi6i=baVYEqALP>@kTtZK|DvP0kG6S2NCxepaXAMdOcY312UEgJB0k<Qfu>iyB6jO@}Fs7e@kb*5P^ZaOVdW8S>Z17Zkk5U5IqlKH& zHy0EaL4?PpxXzP%Pad^k=?3lin)I9@KI3!Cq7C-!oBR z*nv`qaRlvW4}#8Rf~L>Q8E+{;c|J_#B>D0y3 zB`eFq=@jIuDaJ{^mY~)8EBVJ#PKoxqzvjMOiq*25kAg8Q?U(a!ZIB*~ynfz49-IRJ z)f^4nyAJL_j_4KWUq~z8ZtgMe#o^tM-f5KuzQwR5a(T={Y?^_|lQP($97NFM^4i}z zgkANxgkQfb=`}ft$_9De0g+4kwYnVN*YlxGzVX$BMUzLNz=uMjA9-wfv_O&up$=tP z0*edyY5HjdKO3Tnj?8O8gf?-^U2qnLVyBLnVB%;HHK1l2C5F3eY`ZG&IldFxzr)6W=tOKD~L@X>`~{Z9}77ZWX4m}l!Xg@f<}yIXR6 zKdl#46JjXM2Fw&T(z2Cx%kqLW2pMc<#8`&FXJIo=gpIaqjD&U)J6eJ<#gL-A{6nBC%3_MisZL$*V|G%lE>4V8*0Pjuegrx5T!oo{s|4`$ zh;R{&w~J(aFA$>?j@8kupB9Wtr;W(~V?mw%t-Ce3>p&T(l6z<+GtPQ$_k`u*15Lfv z=(i_4ln3f~@5})cC_sk7zE@pEkk(I5v$9aig)w;G@7JB<&CK#8!QLeskR?41iWM+}dDB>oT7m`eMSnY4 zO@h0|SAFEh3JL;DCn+wicAm_#9-$*b9*aA&cAn$}NECX{AX zEBn}fYnz~1q2094cA7qkwlog{p)G9=llSp zg(jt*y&LV@#5eZ7K-d)Q35PBiCspv?>Iz1F_`!nf9?~_%_?BH2X5;MLMpFdWKieItJup zPlvfki|o72cjT?H6fRQx#PZ4`HfFjJoww!@(FJ+_9EsTmrMJ0P)>_uFDShUe%bM(| zc!y8(t?xiIbqUU6#Cg4ex2ZL9@Q+)o$3uptOjtJ3FB2Pkr6Yp)D##>>&qGJLTUdDf zk9))hY7UyvjhVX^RDPXaP%k5c)*1BgXKkAEtKP{H}zoKn6 zJ38S>z?#OY3W0U|E7yL-cZ!AbBx=Q_Ci#2*oMx|0N)&V&i-n2SUY@TW=M?JuiWU{D zl=n7naf6^kyvH?kwv%p6qvQ=X4{Cn^<24XPjTw!0C+{QXF$fW*$q+hyiV|v~)*`V$33e?PTqmx1Vg|A`dB7~m<3>9@c=7a*Lf&sk`}Jy#Ps#5SAJ;FwxH;pg#_)UPV>35S4+bf`5A?a(^eCif^J1ii;^y z?A&>0YB6pftnF{xJOXq+A0hersGa=)A$JM#sYfAurTMHTL79~`#wUbHrnFMX`W&=d zUk_&&rm8gvjABd8huqW8mn=dB1%1j_{*P~=_x(|+szIkcgEqA2`26pBsUw_{Y3(>q zZGZ>m6Zo;Gz)5xv^k`OT2Pch$bS$iosEshN4b>CyRuC1OT$$k`_t8$JlgUu6<-D=L zICtOTR*N-wQuB0Y{e)EPP2-{wIza3-mbCH`;Ewc&jE+0RWEl22HZHPL(mnJtyjum$ zTsTj7lIW!3B0;&c>274x!rqVu)ayoh&w!1?CL=>R{w$Ou5bRA9)1p=Sy7braLLxM` zb4r)xIiez{XJ}W4HH97zwU}O|lDCWxX@xTj;I}D>6%&qS!AD-Y*pRn^{c=o5!(7uA zpD%Ro_GVx~w~449XmTM^Z!6oElznoe08H!pXhLrFJbMylh7MVxoAcp zU+Bg~uUqpedCx*Uy%*cipuMYEObXkpi;poV<9x#>##C}n6W?7M996C|5-ox#uMqD zLG&HSuaxxLe+=ESZ;rwuu`ByN^F(_c3AJ05fl{pnSHC){JEJFmX~+jxT-LIcjsbgy z&QpY2C%^yT(>Bv?>5-Ge#Epoj2Vl+qypK<6qXDF8cW%uxiL9T7q==DjTzBoU6bPW* zRIXt_{+vxgT{-zV*EB0g#-p73aYelo)|4v+%MROGJ9tB&%U&}t-At$B8wYMncenD_ zJ<%Z^0!GaFQcueb3sZrZRdU<)p()F8d<=m_qGoL;lDQreXjwcU+-cJ+abm#lHVs!; z+ouQ}lr8=zs>4YrBC_>|2dRJ*k21r4k9;R!?~5g-SIhUW4VMK|#b24^>j;BNy2*-- zd05jAe_8I3xuh-gPl?an0|jqR~EeAFwkCKZubPe0!^U`W{$RmxMR#ui{oXh&RbP zND3z7clcfrHYjb=@QVaD{&(eqZLxg)matGdQYAza?9B^whCt2omd3fXRyFh9%Hnx=cDlrsb?OxPRG(ZJLWTPV3MY}Sc z<%()wk_Q%O;9JZF^jl?B!mWz{ z{tU-G&4VMK$AqDmE19O406`aprWEZ+=^hYe7R~^u)MI_vQa!tHXV`iY7 zLsi7X#y>``W9Hyj9pXP5M)$RzY1{{V13jF8OP9MU`W(M>!KPVq;rKi2L+j1K6W_72 zs0S(|67vIrITV_6FGvJ=#Bc54Q<_fKSc@PYDRZ~sP;I=-&CRqy=iG!xx_`{#pvT`= zD1;>N%o9T!{c<+21=^7-F%s0^%-P`3damv-s+C_9!WO5L6|Q$H9BVjoA*H&V@Rd0f z<;W9@vy|Dx&8bRqG__zLC7raTZItQOeWrIz04tBly;vFZuS9~}W(b9CuxZjnY_iC& zTIP}C4nL)5Wpl0PLu$^7SV+sRREF%fv)K~c~dD}PjEGC?G+z$TcApkVNw$t;-7pRAkm2wE7ObB>* zI!&QbQcXjLj~492j7%P&>9s5Ic7}%7a8WGe$Cx>*vycp}?H=q(Y+<5UV``wcMKhbO z)Xt%+R(?xP#o4Ar;~){;!#oYr#bb_omg>~%L>YXSO#D?7EY-lm=#5gS<`M__$S4Cq z@wj7}E5rTw+W*Qg zTbpO%!ezI=l6IOXpl4@PYnV7SRnI@P!nxx^wGk$-&lv!~@5QAs@td+ib{Yioyy=q@ zt$_^klV_|nnx^g7g&H6lAhu!Af0!l~K3tWE0M$|COkRv`X!-?n1#ai3aTh6EEi1M( zaTcco_6+;eb!zETg?@(W>9V^^FMROtc5y*+m0D!*?`F~Ya7jB)gQ{*4cGDksZm%7% z3pckjk^W)~#%KbHs&_T%vuYQmq4w5+bD!jxKhI$)PE$&78vei771Fb`i;UcZY13|) zy%v0)<*Qg!kX=Y?&Nu*&%9lv`oU|A6Nmv!}>IA!_>N?(vEuYUm-bhC@6G(t3alE@= zvd)j#fp!rbRDN7%1-6;SmD^s%-S_g#z?F*6*6h7KKPtlsu=RmU)6n-Ev1mlV z-uO5^>IJ zB`Wj?Ak1-`e?(Jmq98~}cn(b@3j7}=hdWtprUwQayb5>K#>-w!wPT$w9L7E|ylE(5 zQ^2;3%#$<9nK1aY%JnAkwK5oD;m0h?uIutc!*4MX+4jAhp{&|`b=I^b)xjp%_6lv# zSXS3D!GGxsRzoM&IcdIA-4V`^C^S_Q0VIF@|NIlttXIbsq}?lx^GUQF98DW3)2bQd z(gBM>N`p!_AYrThk$u~AfFk7tJ3>puZp&j>^?~7MGCEzk52?JEX@?DE!)Mppv zEiy@n8C|Yb>@y?kp^!kY|NMYFLZI5ZiA9g5n6FgMj?fT~PDyzlRF<)RAZ_O{IcN{| zAKslsI8^D7=eB|P9kXqY>K>_3)#B{g5ol0r@n2jbS`OS!Dk;`xr@mT)|DycHcS_Hy zpx8a);i=#W2uwm3f{z!N&CQ(DJ9kzX!r&zgF?~jpWl-~=Odu*7-qtjq-ig|-NflkG zNc>|YG44zlg8NV2o5-5Lf*rcDTixLKDNnV*gZT%HON|4ZrQk0MeIQ3(8FjI4gGTfI zD6)h2tWJZx)wgv+n`g1piUi`{jA?J%w0KH64N~J69(8eOCHv=0hWf$;jMBPukaj-r z1{#9l#2_5)uuo-znaHI#jX~9e!ssvS`GRQ>vVvMx8F92tQjw~P@A9hDLafRO%JUXl zX?g7|fqG!Aw5sEpv9c_CXqBg?XRfV+wTe2}{L%W$k;Pr7Fla$cX}0v}&$QR-y`&vN zY4h!E-1R<=z_!5cl!imjvlFM8|J1x{mo0H6bqOO_zqp;rNg`cwVb=MRy=Fu2dnt#= zs2%w&^eaJ(4w+zYd2b<+BwPz$w9yjT1jOa9eKB6pg)Dyy_)ghNP5`M!$4q2Thbhb3 zO^Zt+E8sR2B8X_Vf5vfB?DM@a-sVQjY;k5DrHtoqrhTmA07ys|09pS4^wna))WNF# zH0!bH)t#Su4Ft?IGfy3nfO;Mcb^T~h>71d!LknUx6bET;^^i0X85x7R^8?PTMc>7J zY;#A?sQUm*K(xO==lNXGWaKaps0xDwXX|gxadNM^YJ#-dMbU4>j{hX{{rt`p`R#hp ztwI%#6{DxY5=o1awct=HiUa5fteSHiLEjF^be_xQyp}awTnFjeZ9rZsIZK>JCSo+t z-`{q^Gor=^64+a^BuXgqH=%P$I?iPE$Kp%M14^o%X5J9ntKjBj;~YMKrl$tp;2$OYO1{9f^7-Ex1brKAUX3Qdbj7LH9zvLY_=xrCeD zJU8m&DR|TuH9m?nau1CV+2k`CE{s5$DGI^h-)Su8nD*8cFkWjK3YoFYyMTVi;H%ZD z0LCi_qguHeuf1kdV@%0%pf(!7&tiu=UV}1GjS@!Vkgeo_0C45eOen*7$T9bY*nX*K zmCC%kvqJ}IRF`m8QC@U`-yU6QltvG?02lgJo~k%(tMMc@bC5>n=7E`yyOpJxO9N$c z$wWdyFmCi70<;k-j? z7Z)3>wX~ za7nXt6n)?k=px7D_(lQB2t;R}81m ziq(16d!P(-g{m@B)2V@#db2#a&@`K1vafWp&7bEzEj%EiF;N)$W5~&Orpq^!d$6gRhXu56zRcS4=!7>M|GX|L-iN z!_QV@aN@T{q&epsS5|?P!Q9;AsYJDzG+LIpMf01D+esarAAX!Zn0AT{%QS%~XIV$h z5C9bt$Wm);l~V3A%$Qrqj>*xm`2CsO#Ngg9<#hsRqCYpsu+67JF$&56LgstE-;q1H z^7hT3TbpCqdazOVuD$FtnR&XbzqH6Te-69yFcw<3Al;K}2dj(aac|VY2PytK^Ta;H zGDlH*C0~HIhp}Ob1>vbDm>a_cfy=S14eDI?)H)e?z1n2(4cWHgjO~*IGcH8pb$S>% z+O)<)CG516nI~E`-9{uHG+&sG->W|o1RznN!RE!+f9rV44QAVu_Aug`*csWa65W1l zE+!s;;7MY+!xH|PDeD+)xAnBj35aj5$I0|Rl9BWV$rCbJ?U5Zt)ZKQ%oOXbcs-kD= zpKgIqe<}PEHJS4g3oZ6u+sA&G(!rO)L?6=Baa?1)Lq1@GU_Ucinoa@)R%VF1i)>3Q z$6}7$2~>at@(81Bq(+_f(Pj!lmn>mRqW?wM`cM;P@M*G+wX?74*U#ktkaSI!o15&$ z&Gy^8{c&})bN%o2ZIhr@mAmg*huPVup2y|VQ1)Lv&bN%6pl;1{YVLc6(=>4oLh6L7 z?^!yRq}<;wLXz)%T}@%ExbT0Cd9OZ!W@)g43?fY{uHVtuR8(&kk~&RrqNxpFZ?uRE zU1_w*M&q_4?V=+~FRidSP0c#!)Omuj6D1PiVXEV94MvIGSeAJj%QQVo&)I1++|B0T!|DixPFc6QFKcoMvU4@pz?(UX2~F@Bo;JddXIoAZ-FO_~fA!{(S%z znvjRr1Kf{X8;64);Yg)1UKYSQzVrzR3Fw#b!E-n?GqgS8e%hzDPuID(ziX9`z$z5U zl~?rQESZq}YQ*#R?`h+QoXuUmhr~5Q#d{%G??Ha{8k}d6fWf$L?#%Fi%OT=4L+7+^ znP*q)B+8BLK}b)n5j1|od#KM3Oq-a$!~z#KI7~PBQwPYyRl)dg6wMAF%NlbUH$_qs z2fUI)brKu-Wlsgt6N9f~R zPS8JT-G?+}SKC35@;$igC>Bnlz?~SOw|a?c|Kf|HbjZzT1b|he!aI&4sJ}tf_&QgKqxYz%TR+_ zbiwd;*BKbSRnzpcM=uSD!+~NvVUuy`8uhFIJWH;NAq-`>5NffyTYYIv+#OF=ZOraJ z2>=K2KRx0x{s7i4t}L=e-QI_@C|j&Ntkoy$GwJaL4~JpVFD$eX}6iXaJ`4tGjMSH2|4FQNh6syPY}_ zgoPa#f>(aa?TYvgOKAJ?(NQl}vM2w&Y9xN6U5ILKTI^XdDql{#{d*em((NT2|((sb7*Vk`gsE zJ&^t~!Jxj-e>w=?y=0weou*kz{}A0QVp+-y^7dtzO7g?JVteuZnSWSOn?=y9e6F}v z5V?64d=cSDnqnzl?~}K-l}0l_0$Sv7xM2`}i_u=u4`X=ZJev}KJ8!IIO>awc;i?UG zD&%YAfeuui0*4vX8)9vL@fHuf;x~__ITf`osOiIA{lee1??tPMtlO(!Wj*T|9FgMW zVq&Gk*gi_-m_mwvY(6^P*ZkJ6pM};hRN^}~BzXwQCDCf`nG!s9-)31k`}=A~!e>XJ zr-Aqxn*w=gF8m$DkK&a2uFD>9XS#$bcRytV=`WixGqUDPvB=_yXdyHL&kr&-J$C%r zrv2cFtqWl)XqT2Kq283I2(o!K@&vjsk_VNfn7SR?Xx0QWxa~I#|Qc~&Z zZC6Sp53MkGJ6L8NkK;l8lKn~aN%gX_xs5V#IsAy(FPrOQ*=zvmZoX0HE|dr87q$-< zZ+fEq=@3WfeW%B3i>xdIhF4Ikcxi$!-s#&a9TInNE4h^S)^t8R9(f}qZj#686G{lp za9p)B_EUC3#FP$UFugwzZevo7g*BOHJq7EBEo#;B*R)xlEzED-9ABPJ2Qnqbn6yUv zXoIQ5*zBm8#l$KNlM^35$_5Bs~p^3EWQ4~Hr?rNY`GiP1IhaAXjR>i42$DHZ!FtG=$ZM03xtHL(bYDz5Wjx#_2h z8ef%kiU_55-CwRJd7?ygRNw)_zXvdGOZON7oqQc8LDo9(q^*HSqz>Nq`$+x}1LN{Q z_zPG|?C~P(beB*frI^OW*QtotKW9?PrM_Cx(;OMA_=1#KA8e?WT`r$jE^SX>On?Ql zGAC)I$)RQ_va^J;`3e$DXC_k42BJfgCP7I&Ek)ejOu8(=>S&g84Prmx8T-(o`7T)+ z`r$`r$#nPZr)@MPdRHxc2q>_U)=b zFVw+}WF-;WISUlBpT!XsD>TA}XeKH8Otoyl;*=3jeb&(B3Oy_QQF%z@@P684D&!f? zS`CRnW}qdNF}@kV1e|eHMvBhEDz1Pf{MSd%y&5VIcGb_#nt8nSU87xrsA?r7_9vB2 zy8xynMeb&z6P_++)KY-^UPcsu0x6=u}Ps`7iUzr#@vz!M!%Sf>((av@y(VTB<^rdSrr;nY8h+KghPj zX9HhX4hi$!{z81ih+jJnr9Qex@uzV-0dkr91Ui3X` z)RS{VEewP2D|KDjdu7ii5}FKEu%{P5MNCu8E^ZjX_6R8)yg9$wMrOnsK4aDUyZBP5 zCTeUbs!Z%KgH7O<;c>u)V!J2_C=Zbdk|~L!H7uvNclZs4`2D|&mFC7p zOW}LT@!{EwsjZ-^H#R{_`&@APWn$-QVp<))8BNjUirUvGR(ul^URi$AV9HgDimu^% zqRPW~8?1>7fYBoV^_j~tr>)zN3qL<0|BuQ~_evMyEu!w6V``}_dFVKTp5z8@iEw;8 zJ2i>4E|WR`3_|D){=^b57qo)aDGi9_Sj)3K6ZF9jG<+U;n*g9;I{8=A^DNPjU;9>$ z0U9tY=pATlpc^n)ALjYpTpwW`gIR=@ELSK0KSH|!hD?OiYJXiE`H2!A%Z7 zlg2CIX0vygYdtecD}8-!8>Rj7oaL|)E<7xFfCbLuUP--8*KS7ReN!v3OABfG6a1K3PfFd=h}+>)rywI0!WrljCBPe4My_XT6O?7F z53zgW(f?W6v4=CzD4b_*8=gLB7ATCCA8z2&1er;chw7}NLyk42mv_>Y!WOk40$MWd zfmjp4PWIG%N<%COa1v23bcky|Rk+bkB*3do2$py7Z>Jv&(mX8*b^2b;ZoYXi4S#1d zZbBkO{cqM?&n^KTLZ|d_${lbqmX30ZNw0kR37e3NT_97=^c!TWZW$#D?1L)_-$Rv| zf3CG}$2FB?lV|I*K<>aA+of_%lGsJp4y!Oi`UT7v+wq4>xD``5&RI+^gHnG#RaZH)M@}#c|Kp(aog;R-c+y6Jh(2+To$y<>HZHtI( z%-&f85z8}J_WK|wp3>6Cj^lIE;b53pg7tDEd$7IDw{ME!l7)*&6R-HIBP+le?{XIZ zu!^{E&>*1iwFw-u_rKs(`QXm(5;9flaAM>qlw9QDlhzxu6OK(}c@YNSvIB;#A2q#S zChg8#%4$#ur0x^`v(8(645k>@yMBH2DL0>M+wsHPP+um}+ygezjuv^j~T? zGK%*egRper9fgd+P;irM!4MB7UrW7vT{k;{1?Z)%1E--dl4w`Cre1C>L4pyWMtTW8 zzavUt?d+uR$j}bB-GB3)smygzvTd@7qID`43mvdS0wS_xgjjP^h@|K32$HqX2dbLi z^q0kB@VfU5N~f6j?KIUA*%FY;Qe#;-F7@_S*^Ds5DhR1JMqMl)?Sq!k%r+qCS$>V{ zIA6ZcNQ%yVntH9+#!>8fPfv5zKOoup4TKHrf@$)aTu{;A~B`UK;M4*V`cc z3d9HfeRF;m0mv&+H!c{W0CY~%R1geE9K~~`!wA{77RzLSnxKwGFlg!^x-i=Os%6Ne zx?NQ97OeBsf?YwI7&^*%X05zCnBcN3JLt>H*;3)SjSwZeo4ElMNk%lmyln&Y_VQg- z=kS`^-wt1SNcT( z4z)93R1a#bNGJON^(=Zy*fT4Jg%M+EWOX z=rrI%h;YEM*bchM-_vNue++-OEt=t1S4ZBD_zt!>^xgnctilWGoo0ZWOyr}61MFv& zxZiT8Jw|=w{*}(?Z&Q2ff}^~Gle(D&TjF1=5FHU&r$}kk{>G?5;02k^Zx?<4dB}#J zQG8E0j0Oo_*hAbrtGz>LI&0Icu42>EVFPEjAV(x3IGmfGFuUqVEOKD$>g*$%kOXCB zTQ$aHd7Qado-$A~-eXdochuGrVxKbI*Rdv+@30E93DFFvVk^0q_Y%5jV-*3kF%A@9 zRyn+b9-OehPxpt@0Ha={e`*`=UN~Etn_2TSx8%)fS~C>i352|}uB(cy=u?^pdx+xO zQSN`y_YFPC(xE`!ipu%ULyRh=22# zn89b;w8E}#%w55)iC;R&r2jYceyH>cISheD#vaSFl-WAxe02+m%pv#pSf-ow_@;Vpvpqv&vQITKmL>jm3Es zwvgv0g&^?^b`_+TcR#l8B-b-Z9eaGg*V+d^Nddp3CpaI#W6heR2)-j+^pCdOx;LhF zvYoEO!z34IK;ID#aD@;M7|M)B216Z1^3ZHv&10K`@+3Z7pM#S`$OVk$f@XSKY=I%C z@gelPTM}i)v^mU>oAaw-Wd<@T0Jh=$v>+)`+3s3uHg9B7r&NO6k8o+YmV)Pjya%0o zR`2j~N1uOnsG9BYoWiCqET6MUYbL3PvJgZ2x6T@?Q!MgJA3-MJM6|V z1#;88KKjPVJ*@tuT;qvxw`hQYnX*_T_DvjP%H95A$>gT zJm)z1VU%x3u_Tbtz_@Dy^p7w};rAyY$ZT%E>y!)bWxWlj-&&-bVL|a=+Z<7%+8yig8B=bW5O5;8?sF#7C4SqLdJG_ zy?lDD+~#fdzr=>pI3+qTl+x=Y>UM5BEQA%zbcsAfdz=(JB>`~t^r+&Ta> zl3HD-%-C)(Ia29Ke0MlEORBgv=`dj@h-H!hS2R};1e z?rUOMnIgvEQQQWj;-z}T7|vic!1E=2!rT=N&qlwu2;g|<*7*r&FLHE7O{Ps|Qp}U# zg0m3Ye^N?ekMBwBp!)zrTW7G;2G?La3sUg@Czb|z$8-+AdmZy(Ud>4 z110Zcc1H?JpipJqmiZy5z|Dq%@r@Wdzil%5Q;jIMvxXn}9d!4?Es?_(zAGywkA=(? zIAuWc*WON+&VJIteul=o+TX5Z$|##?)fn;Nl5kL(3Ugs`wL1khd+Zc4??RbUQyoN^Jg{eQ=F}_xX?sKC9+OD)9O zyDq3wVT(D(_k}{CJxyAnfN`(FGw)l^G}Cap$r$B|K${>03U99Z57t?0gO8ZV8SzP0 z?1SMs673ig1WhMA7Mrb2wz?P!$-g~|GKvgQ2lD}! zAKmJ`Rf$85hr{5JQ?8Cs%v@*Qm2pae^2JFWC{7(jFsSREG^XQ;Q!kz-Cz+BerQc(T znlvwMJZBC`b6cjgq#RNdz+>B;v*~=1;#EV&Zk|P&_{DaZO?+mJer?AsL_mc|OjStL z1}3Bg0mU=GrBpwD-aD@sdy*cs10Xu@>P( zXkij{!nH=>cN9PdsG!|E(<^#Rkmlp4_}+8Pg4i5>>|hzoKn2CW6w5Ssc9j%Rl{Fg_ z*|Mc*$ z0aKk8A&AyJh9k~ZIbsCYk6E5yqbo{B=;8737QKwdU3YIk zyt{aAxDioV*CS~-T&*SxL4Ge1aJcyH%cF|G;5*E?a3ea5tnLScUf{$HrPL^?qG0NV|TU zTsR2YV_Cyo#p*L#B^mlrS2*%QW+xQC{gD^;2O2QEj9^0DaoNP#h!{=iQ`|XBCG_;d zg9%aNu9buRAzcd(z(X`JM70cN^?&tLLh+XR5f1|!)rPaX(WEjeenK0>1AR7a zgpoP_%?;6}O7I>N=F>=}q69Uo8bnf5dA4Km%4Q3)fKby_`wgXXSBk((y}qaJlw?19 z{l9L*jRBNhxD|Ey=ciCuLsWVvukLqvT@f-SAkUYFGKzsAM=rM^0&mJ`Skpv-NL@E_s*=UccnzMOhRv{7jW#WyaX`Q&Lcr`hk+E|&`d5E-a z?5BQXQF`cj@@?k;X{T)QBK|4;1PyD3oh8i!poog5u=){tLWh#wY+a6ZW6JX_4s1P7DODj)bJYIRjlj0<(QOLwst z^Ta#+>*KRdBbJ}90n7rqnil`KO~nt=S!wj)K=(Y>7`P^*>KvRu_rxeSqyN(OqpHaNr|h}Wg>Qo9)o){aSyX8&NLB; zGRC8TFI9IQo%9ZlELAU167$pL@>4;4p=n&I! zuBV4VX6P|pXP|{0Pzg}Or~vuUp8*!#h!_RibQAh`C4T>EWa@9rIF!uhHn=JQJ zM7;M6uRc;)-93Z)uX{J-&iN_Q(X zw0~0NC?3KUD>}v;JzDXHeSuJJRW$cEW#QI4Vy2qA_1ls8T==EhO)Oo~kT)mqy(<89 z)|le_^F!~ck{c)QGw{7NL0Z4Azl+w)TkY|5v#l1w=a0niy6gP^s@_A_!~)H5kg0BW ztb~0Ol`HSDU-cdmz0KzY>vQ@4kZXBva1?73;c|2gyc`Lyy3=n2sqh!SI9~DgFR{~H z1Y&&3_;*wBO4x3(E`_fSKbeBiZ!!jNC##e0Cov(`lNi{>)*syNbwM`wwKU4{F%!SE z3%FU0S$tXky*(q!n|-|zLBogAqaJ0%?@cDDkFO1$lS!K*D!DloQce)9AYuk`RZycG z%`+fbi21#DAOZB;6>zhuNtZTKZ+OAhr(e*i^$?KbY|dh!<)istD62Yc+}yf|+4XSE zxj2*B^dc4Va=b8w{&2wwFX%%oBtM(p7hUz~3@&f=5LC#?o8@DXy2-?|4rYA#6OyYT9p!%2Cnq!?SIH5#V)woeFwT+TMMtCD3kt@$K z{9g?XlbFC{QTc-oWP)wdrvHjNFtaSK=M2Z22z+a}zxALAvyS3;1+DclI{Cmb#B4ML zGh*xh6FetO+X7_Ho?FK?Y$ZsTv}f>4^}AVQR0N5jXW(a$7pjqPw}zRJ0KzS3lvCh0 zC<~`_XzEkZ6&k`^BF8QL6IF%1!jm&(jA5%3xMro92W2~=C0KKEIpDCsO6K2R2LARf zPZ@m;7-q&yKOUAiVN4wUNW$@~DZBbJCOt&hOhPXofT**|w+JH$k}`%bTdOgj1rt^b zsQj#L8$+~{#4jI^)>%iObcFMW;H&0t3q_l^>3rsLykKsV4G{@>>NO|)AH{#RIW%5= z!%)l-t>aj<%BDm$<%#2Lz&1l0Re>U77OI|0dY>UW*paQ_S~4xXRIG+=N|iS;lBlgm zPXL`#r(1Lt+8j|vwY$JDTb;4$PFMF(RyB@oAA3FNY}3QEv)APnldquhP_@bxHG0*5 z{=oJO&0^u01u>9PVf=9%(X?-tt1_x%-fx96>*Fxa#tM7Q^2eeX+wiZS5`1KLSaN4e zt>w?5#DXKJ_jg1WX2HI>4Od3~U_P-cE_4gy_LTl)HJiR`86v2|+Y;CNnL%L>H6mP( zO&<_z_b6-s3xd_t3oOOw9?uIjQyqnkpt*m3nutQ9D>B+n37`3!V?@qQgp6^u)<*1; zISdxH*u1!+nLfPj&B@`E-)%l$x8STeY>UdUGP)!!2*ws)Tg?cTWC)iT2kZtgMpA1B zR4U0nz_b}E6fzJw44)#s!BS8V?x|aJWZ9pGydj!}{JJ{>2~67i zvgmVYj7qZ*w&Xu<)5W*%URY0p+b+R|AgH|&RQXyBLp)rh*EMQ(cJ6 z$`#sTH_Wk);4Z=HdPB;Ua8>xFWFl~zLA#qWV5nfoU`3qC!_$5L!~8g(Z7qIpOY%{A9@ z>A;~M6_m|Z9(zEm34>QCjPicq(@`Not}Whk!ida4L76U8LS(%owG1%d)2#vDe@S;K ztz9yxU*Zznq_rFb6f3L&EB*uxdOslNa>`jC-vATwdUimk5RF54ZPi&q?}s@>&s*@< z*c|#ZWC_{PI*Z|5Lutx0z&ts)n5QEd>yJ&{6ZiM~Uv|4}Fu2GnCFxElaHg|GJCr_@ zRT_ll{Uct;DqUBozgxc=O<4*bAVDMS@qC4rB#z2&OtM=BtANNXE zy&zPEbDM{kaazJ&4v1Uak#c-Goxd&D z`(cMS@X4C?V!~_~#Mxs(sckb*mY7)XU zZ!xWgfw_57iP^6kYHiCFN#6R*OcG1REiu7hAii{(~#^TL(17cZqo<2m@J?0az|>p1ftpM$gjO zL$(#TP|p;bH}sEl)MtVDsrlV}XyuA23=u2;tey?hf7us^+*S0!_$smbrAJ9fCqGIT z@!1B3RW?6;25F;^Qn1ig1>&##1h;x~>26V4tIB{7dhz9_u(w1m+9wd)f#Oq9QIbr@T zzaMOdf?1h0y33s`?}P_yFCWcNz3K!<6bN;@4js{NghA8Gnis!kJ6c?XFtlE^?0a46 z)K9}(vWNH`KirEADo|Dfu#f0$J_M5ceU_X0%)WWwo?E4;6)Zd`SQs2|#H;7g9u*z_gU-dWGF4@VIa`oqg9i3WM+dp~Wp_=vCbzCdMrQC{9(4f^d zv^++Rz!oIEon^7gi)+&<(2^b0+}3vDq~FN zZ;rEf_<)OmOwTIg;>V%O=XPbS*5GB_a;eaWNqv%k-V8_Qw1&5b?LknQVf>vxzC{k4 z(3cEP4@1mf9z}KZZ~@=SiPiTJG|#6l-&&P|yH&C@`Bv3B^3|*Z6!ja|{$U4Vta+Gq zwH(PklT_f?cU>7|UEQ*fI$ME}-)?DDA~=!{N2ENP18%@D8mp|#Aw=4*qfNA>862d( zz06})z(FuaXW?b>mj0ZmsCAAtEQ|$g&s~nA1!tS2V_eq;zreIE0Rz)3)$nLAGWttq z9F*vs>ZaKq5|0>)vZ)mE3d5q>VLmjIr7Az%-izyQ#*eR{V$o#zQ_y6;+PBZ1AW?rhd40I;0aWtD)5I#O+Lt^yf$1 z9L-MQKCQIcGq+Zoae7CN`!c>b3?YGJlaI`UT+WH;14F?}Th)Iv(v7|Q{`ychpX7i& zZJ`7BF($a8gRPf28HgdW{#s5S+7GvzB?tb7jTR55wdD!{(Q{*3T*c!xwhLCS3Lf#~ z)IXDX_zZk6n^cz7_|bm~2v%M;B`P#Y4SE-L=}P|NO2pcV!SgH_n4p(5$Wz88I%Ea% zBV2gwUCm-N2eU`uGv%`cQSTHX@V-{CuxL;)e^ayj~qKg5CL*!YSuz7di2fmTX-QWv^nX7CwDy1DX*414Fn;)(Y>|~J`*sG+gVB6g(8M70;YLgV z_)fLSxRNO4PmwZ=O%&$#_X;HcLDF^+0uIBXfhYBMiJv$<;0MJHRrf;|Ww?o^9>%9KwV(}u3_K!vCoRB5g3 z(q?WfoLSMr9r8)K+exQJg|5P-)oF0BKG3$4+B}cSjCWpVc?%t@4@)o^x+C8yWFh(4 zbuoq$URr=2Z=}EtMABzNf7}~dBS^1BLW3fAv^dXhN7pg3*qO$q)+u5XDNTI>uBO&x z{9CHGKrqsOLW%Ll<#-;O*X(cez?gFt298XAkbRrw)Ajo*5$h)H%0PE~)%Gaqg-c%8kmtj56|4Oofm{^@d|Ml=#5U-p?@n)EM8cjLb3; ziGZ)U47-EYs=b#F^;b%Wq-@vI%00-c#m&+FnAHgCV|p_ivdI4no)R>@KQa%8wo1|$ zsbuJrGYNdSBz1r1)N@3O)&E?x(0RNxu*N@>FKqd#332>Kw9eKpL#4O0?ht*OQw;K^Qkb<)Mb z1&*%(n?`g|;q)#q{NuMYt^8CIoL=RWGsvI0aZF!x7ud$9DK662z1lz?mWug7*4okc z^HBdeJxS```@HbNkH@jN%xmrWC}`fj8qmG#k3^4RUUsuwwRMt!yEKzD=fiSE*4YrUCibYs*TZ^f@zM56=X3F zlHSjS>Z3-jIeDuP1)a?*yZ>Uvu=h~QiQyEaGl@^!8b}h=wzCN%#I>c@VV%jf7;b}$ ziTUHkAz{vUbGmkG*EZAC58${Lc4#8KQ(VhF1)b}RpX^vtC%}rYYcaUGv$?gctx*%Yn`^=zCrx4Rcd-%W`ic&wAoI-qKV@45bpj)qEDP{KV zDI{)9=#~$lOue zj9Lt_y%KB#J2wR}4K7foicj{^SrBC3WKtrT32$^S91V$MVbN<{CfBth&6Tb=wf2^`nvi#x7ptZ)+uIAuvcgi_1^>3>H8E zZXWZxyx_$x>1T$WU^@pmT>>e4m<)C4;K)7pb1Pr<6zL}mepthQpG5QzHCh+iIVn9} zqkE9xQYOlf{oZ&;o`jxDk19ZGj47TAX(3a3O4ZB~szsfS!jmwKw1I}coLQHbEQOA( zDBKhIC)XYzsDm|W>+JNkazzXy zxRVOf#yXn%td82m za{H1T`x)jX6P!bj5|~1sqM8e~@g$L*G)((^mcP8AW)|8Gu&~Q}_U&GOHzS@T=#IKb zq=1jv>wlX=#2awlXxu!*7FAU>`K?3i6K>_8K?ZjLO%BYfAZYjcpJ|6;AIxe+Pia&>7OSJP*M01tJ*ouXZkzMBqB#X6jeIB;@13?yxWuAE3X53Mxjvi zYJTJZk-39dVn6xkl^33arkNlmnL%}&kP=Y7_!KU|GXn;!-ROt%g>2WEL&}d4` z{LH5Yn?Yd>r^ZW+60t#QLF9wVKpF!MA$ky*AG{DOGT-6EhLEasbiBwBeFXBW^|Zuc z20p@Y$#t#7+;X81KAak>mOCcgi4!i-S0F+^Hdt-~gIXz*m}G_9KJxI;+T*ydCy>v{ zSCdog+96bo+L}+2rj*WO3X`~CNvyq1&2O@S-S@9T&%jJmB2K1mAlbN=QjF3UmJCt( zd;$fA7vK8;&FA)kq%l##5a{1V^EG+*xjAkRPhV*Uq@jf?7jlOXYY}<-ZdS!yIvIwU zKDKYKND_3A%8(a@638J;!23c3*_l4#79;u1z8Ii&JMzcB$}wro3a zTGF`%$^dLaS@%r%koEew%reCz03{JOP&jQ1c*ETsWqhyOuIU0A%Y*Qs7zPXY<}5>V%FgXX3i(1mTocn)98p_hDx==0OlYSFrsk%!|zy#RzE}49<*Fp6AGe`fP*%4W@WxIfXk9orWdiv{GHc`dU4DMt%AM09n2Rm+Z=S zHUK`k&mX+~OHg_!Dx%5HOwc9~aBLHMr;-pI4^)mpY!LRo5eb&vYuNf8wG!0LtZ50z zboFIO0}KZtgIt{`NAO$DfD+f!>ei&FNk37et1J~BnwuF=kq7`kK)}Bz@jar~*}t=b z)QH;@%n2LV1Yurultg%1WgXeo#;72cOkqj6;5)yk+3;ow_D)?t= z%d%UU@|(^ls1PXKZ?xMArczHN<{zTt6cV+F{i}6mTo(Z-cwk(u9Gx$pg5u{0MW6g6gA6iwIGQSxrvmtYwo0Ti_x=c9xR_!+_{E%3tGDwJ7;vF@GAc$sX+r(Sd~Z%&>Sq4k1YkjETU>S90R zVoFMs(v~BnqTVztW8Q5Op~y^_Ku&z`Qh3TLA;!rRE%#ZsAd4j41uKo8DfVO}z~7kU zf~5j}!roaQf)WsWdcv!wS+DHBV>}sPhgi8v%*j13NTvhy)5d#-6O0-Dn(KhirW9;{ zWWN?3>Ab(7P0k=^D*fX)6n5EL(GTaH=teAqGE`K#<^eA#)~R2DICZQ~{5q7=z_NS@ zvc+)rNws=2X%Ra($(XV^2l1ekoi26(F!1~z&@Kc$6B zNMRSd4s$0s!6n^~=`S{l)9Ti zvw4K>9}3Zoi*P{JwM&=%h27NeajpmO1V*w2aHEkzWQjN1orRr!jWP60I12gkWScKJ zrf{Mlb~s*nn>oyZv(%3(bMs_qQ`6r5OX~d-ETRf5+xQIqq{rf!Yi_cyufp$w ztrwN&5vNzPi|u|$18wzdooe$NugUZRvPzp2w-IQ^d1bY-HZD?p8~3`D%BdJ38e=Wk zc625C{%gE+1kB|k1(E|}6#@u`#lIe6F(15X)8NhLFb=u@A4mGvR20#AN2p6RSq-M< zp3zyQQvE7#i=wgt_-HlIBEI2?*F++=9R0i><87*?7dy>OkThIUnP;LR$~AeqQ%X1RedL$bC$tu5zsiv+$aimAlDZb9-+ zjXO$Lj08{${@e!PmZU4iwFmby50M}Qe&Sef3FNS%(oYWLBv&KT9Z0E~ndt#Rc^gR8 zt337g9NH`K;qG0b-`Xr@an;1!!v0R+w~mTn=r@QGF+%f8L7_;(q&xitik(uKeji*D zDM;Fi6c5T<;+}&Ad!K<3o=xhXzIY7^6HnwzO-B#TFP|{&Ptsq5sD&~Ef}emcMhM@2IaBuyy{ z@Hf~C=d_s1up5=f6zb+(oJ4W(2jGl%!|Z%T^YjE@&_{KB{wKYi30jSp$!cTUSZ9_IzUR0h-NFg3Gc>2jdy?(~=U7s5dr2D};8k20^`= zV#%>J+%F%@3T5-3owP-V^6-TNd(;uD_^vRp`?{5K!@_%_ z$^IrU1=_F&z~8N?yj^|c7T>^u?l+7mI1aWQjtHUT0Q;k{VtLdicTyVU;Z!5~= zd;B-1qSUWHXzLMdAi@i4v0=P$4~`c6g-b!0#xzKKMSm~q|Fi~_5bk4B3R1M4MiA!o z8vssO2NY~>0>$ZTUvST2s$f;GTeAdaw9i;xFMMsuY)hr==5H=O=08cF zGIAnxg7-@wSWXCRiX=B4xQWXF08kdpU3`8>@+8%(pF)4`Es*4dG-5feNx2c+f@D4C z?n84fcwJvgLH!e~qfp_QNs76FCrb5&SmHyA)#Tzo(&W}$#tZIzQ&$tZ6agaFjt}34 z0?wz&K5nl|co~FgKv4(T-2C>~-h=txVWb&zdUHk!LV)Zx=Cd6mbYEQ=<+{m?ermok zJB7`PF{I)B*z^y=1NfpNzl0@s?dkXh)ltsKjYv-Lgo+LjSpfS?#RyX5Z?Nl(a_8fe zLR6XEsDnB0w}r&&^)5g~Dulz8c1t*wF9{AfMXM*sEJ{ZH8T~AJrP6 zg|$T-2;F|4YB~_%8J2#2JR&n_aeDQE$5e?xTJUK}Vs#>I2Ng8|X6HX#R4PC0la^V- zhkN)Fmt+3cnHEaiGyw+R80rF6K&%ZX${k0XbmTVwqcUOrvDORG34>&af&IJMnY_>i z>NChT!Hk4-bIzv_JEzkJ&$B9OeJI7M7xJ3%?;DaA-X{FO=0{k0&4#$DeYHLILs#V9 zf}8hrfiMsd3C#e{R*#p_xTcNbj{c4x!Loq3Dg`5Nw9sN9GBddh?Kg)UE{qfelwHkp z0@5LDocufcedDuDxBwy1Lz+|UNT6ldC_;{Znym;W5OYRrON0ZI#gTua3_mJkJ&SM~F2;@IEA}a`VtM%9M;7#Pu&$WHY_U9KyvLJ!-RLPaw+)T82n-5v z1Jqj9fhJ?KGauB-y?*)zT~dO2)Y=ov`ggB}JdkLex+Q~)*&1vG zxp3lW>>r81M7YBVoJs3f^ZAXFvTShTAxTOdSCy4YqvQ3^pIMhDumxjuXug12<^4r) zd9;C#Rld&&q)}&}o0}al6f^oT4BzHZvKlw7^^LS^60$6Ct6uznLquY5${8}!EhjT2 zECug5QhUf%ZytHPoG(gq0{!%C#pb+TeMrgGCK@m!!18A}I%Q@eJ1$F8AhV5WY0V)Z ziPef_FSz89{RAJs%_9L$d@OVfJTd3@a2u&kAJMoB9wiu02S~K`>IfTZ&%S{<&q#o-&2_ZeIw0i&YN<(TLc$vVBE30iSH>7tAmB(yUtn zPjLd2k7O6z!B=9=tyI$PcZyZ`Th4Rnxes3myCf_7x(fFVXD<~~N1GGNoBj=yWkG+8 z63@rii!UXTb3hPxTYlxfH15C#7~Z$TS)3&|zKF?;@4LxwI};NSEsgt8v1s7J0yf879}n?P zX)uE$KMxdIs9ei&^bshS4(ZjXc>*&Bf*k#X3tQUTIKQY*3hVT1qWXU zlF91JYnc=)aS)WK0BizwC$#_vuN_VRBOmMn;5pkPAD3Rq0AWh`&)9Vb6Ro_!b(|e0 zFw2xXz{hHk1}zb6U_}xRpnuCXQhQp>X**3aO%g;Z;^|@K0_k5(kV@uY3i(K21ksgB#Jbx!3?}6ECtne8k_!)HhbnD zI5{kA@wVjtl(N`jz#Rx~5JQ@rE+qqX8dh;Yvk?*UV=IfvG$(anzg&bLUB4oSj;cZt z-%bM0MML5Pc-DQ7sunz`pQ;D_-5Aq8%=CO$KQs3$-xJmK$w28t3vY8O@*#5%EIeA7 zKnFkELw6leXGTFT?zM{sVwDxrBh7=CCoOkZY>nFmF9|4ArD>e~*CHH+DEs^|K;ImVbqX(Zk$sJ>- z>y0=C*f618=h`7vgkDTE!ZkI#!Hp0dg~RL)ij*^U?&C~6vo8K2^mbLv?RA#LgWkQOPi1YDTW5svXjTd$5xVI!uhvP?8$*i?eS=(K+4*_u1pM<4AQ zVZTuTjp8nedmL^*V5a6|Z}?uB;n`y2IZkASek1rc)0b}FM`^bPj1O`!@yq+5k)3N! z>s_%z;WSlg>3>$RS%%7VnS<5QT!aP8?ncyNEZ#qVGF%Nf-0uVnZZUxBtHp3Jz2DoJxBDf#%_ zO3l{M>Gs6GmL7Ueo5XqhyZ07kZqX{_%H}$DHK(rmC8wPF{DZa_^_Y;M3%({TG(TZj zSxW+n1*j(XV?|iS-HV5wtkf!*IbeREoK;4?1WbU|`3z()qA;KwD4cWmM$?DxnlGjI zhJnBI9EY64(!K;8$dOk8(tt)Izx84@=Tow%8Z|_!Y=Cd)yEJFm|3uV?I|isli}A&v zqY6@H&fJH05nXbuTFlKnyPs_U14fu`C0cd<0FzH~4KgV<-1KDudj8UmnOg8{^hnmn z9$eDHojd|hbu?rtrz8fpEga}C;eo&+g3v0j=0+dKv-)N>;3XJq;&XxywAjZ@pegG$ zgD<0`*>vhtdB=Xvy}$&g5YnJG(_Cjm2lNEvWiujjFY6SHwsJ117f=j0_-VY+z;H}e zsOug5bcK4KM#^2eHb0Q*|9s zB5%84Vn$AON}gd}rM*h5Mw{8zqHxueGrpYdxovL0<~Xn-eTDCIh5YQ7KVR+JI!xs- zXr`zeLt_f9HCgs!a^m*ZSPOw-gorzzstEh;4w$O&oTv_7F$9B0-*flo2LinYTr09$ zzVK5D!vL}$g^TzMPME3kMZ6I$*XFz-!O!!Fsm0Ah%9G)NN3rJ!42VwBk*YXE&98Ei zNiIc!f|fbpZkHz$#H!gnMqa>`RPC;~#!w2HL9YkT-C$as=Q3ohwy+6Q=%-=w`{$0p zIBVUC6_Ge&cil%oP<}Fk;I~b&V(Av42>8{82jPlxSKP-mp3~Lo%$mgc4T`^C5`*Kq zE94j?{URaNMRlbmPuog#<_)c2Hd&Ge*Nwk6J~j+C2_lUpJAn12xSEC7fU>@npJWrh zy#fGW&5FN2S4hG&7@9L}M~uB{>G!Z2M=;>{{LF=OlE!z3eh<$@$$3sss&*5alj+l}*pC5oC4k6qrLRd|4HX3sFV$y;m@Z4)M~Kk> zH+wn`I56Lt?Q9jsqQokpw;|xk?qJaLeBgjXtS|AcMw||%vq7MGdR_(vffYdTg2RkC zhSS4?>js!vMy<-U)!BME^Zkr=a^D7L$OmwklZ0*qW3Hl)VTI>qY{86i0^GTzEf`r+tWt0sJjB+_ zZ6d@qEW`c?`9P!2U|Rx#i;iee^$ZMc5xI^vYpF%-K9|1Gb8j^RuxG&kF!nuk5z5k@rG#ak;x=~G{6GU6)?ZB(oVi>ipuawO1ct_Kt%4-vt{Gut*7V( z82P`pXh6CssnLGuJPn8W@oIytka}hR$Yis>tfX3p4`*-3S~%L`XY`%U3c$7E&>ns6 z1{aO4$E%KRu_924T;H?^_-Q~cElzV`nMk5`G+q6sELCK8Qw?`e!LIBW_xY<1q?(B> zLwGpDDrf)MFvv|7C38`_+dfo2 zkl5_nu~GYl*}p5FlMb!((f0ARe+sB@8(%f$Jmh>-9;Sy0ZruoR2s&4MgSz~`>I4e6}GDqW@7B? zDlEJXs#M7n&GDI$hP>a1KydvF2}At}AU*oEsJ~3wcuw)S`oGb2j?S+L3P(1tuN~ma zbqBjH=Bz5!$gu2+zH#cC?0vdS46al5D5noBU{=T$j`ORh=~YakXk%?_htl}UoKn`Z zdxBtEsohJx_@#{G=Qi#S#az}O|Ng>#EhB9K*yqP8MM?68kq~8e?o8H@8Kq)7%ChmX zX}9{*!36>Ek{)C3NzqO1aYOW^z36I%(5FN7lX}%u+96I7*8o^Q`WNHAL&dF*vyS1P z5<-opzBR+bQt!gw@V@i=?&+5i;f(1Ol2FXj$6@Ze;Gbbc-tlD<9?n*hnAG?O-euV8 zguYAc(dn*j+a}SMQ>F3~nwjS2paa}PHy*k#1Vp5~Pf#+b2p#u>XendJ^v=0#p+5=QUXK(EO98*XRocc|?kxl&Y4Q>T@$o2lc9} zg5t0hP!FjJ4*ehUZgdW?ES)4rIckPJxXBq<$0=cCyg8Jok`=n-#Bma2$TFGZ-2-mT zs;we+!>m{6%<$_-&JIClmSB)l&@4sq^cQ}rdU6b($#Qnl!a#jU`HS>yXnmsEI?TKI zT7e?Iu-cG92cHDBx(KSX_?Cu)f*@A$e9S0srpeD&VpC+b*Jyr+L7S> zciJVT2KUVq6*Ey;JB%TLH?^SxT(FXHeRAJO9aGg-()FXxpd$oxfI+NJ*!vjSMo+eG zX=LlJ-pyWr7|<>I10`|?mx?p#Zl5Y(d2egfnCnn#XdPu5mUi6A7WN}FVIfqHJlVYK z`5Z*A!T0L&`Qx+d;b>`KNv)0WfPRu#+kCvV8zFK`0vX?*{hE1iN=A_pw4RiW>y8*6 z%p-3pVrp0{AZv@(WL_|F@!~sZkjhYgzJR;#w}&r4rw9LPfcKNxigu4Q`^^A7YtE)R z;aaZ;%Q#9M8Pgl1IJbt-d2%nkZ`ixDWw2d{I_s zo=yGOcD%x3#{=4Eo}nH~QFRZc_$aVrF?%nb^RJ4a2kEICvbTe1uk~x`il1qss19<` zAZOud5WY(z{sed;IsDCdxSXP>6U`%4JqM<8-REY~A3|g?HwVO)VW*xgRx#(Cyi*bD zIo6A<*uFWs>OQaPk!GA5R$V5_8(L&_7sb0umqg68t<|73TVI~_dMyyk;zEDzM^zQ> z#^SKMx+L=#2YF1w(GATkx(6Bqj}YT`glbCCE$G0`Si>_F$@(Xg#OV7Js z0DrlSj$TjPA3zy_BglhT7@@VOFrCKUfiM+=n`}NH*b-4!-Tj1?y##zhS4G(fJTx$HR=`lO+qfaslMC4U1pO9!iI zpoPli^p}=XKft0vZNj&~aS9+Tt=%7CUbFnTV}zqAP@$V_oF{U1clkpFyj6}qix)Z( zpPeA*))b~(es$kSA?cgj0m+$CeQb}gRyv!pj^B@p@}JJDulC8}TbZCRChgQYSk)~O zcX+N@me|*E?17aSE^imJEzBUSlFvDryHdok%8hm1s}Nr!Wz6+^7Q>5{d(S&DXMHIB z;!eFyUmA@j%IG*C7jgcyFd)m+Z24a8D7@99eyha1>_m;42R|>zW=0T;dR-HtbTTcn z(R5(%F|c=M*~FPwXrd(^tv%m8pa#Fj;A%I(Ikp|~Ba;*9bJD|v5DnF^()$uPTG4m&X^Q>$dB46 z+bm36MHUsYCW@pZG6XwVk2=(@a8|m&&oZ|H(pf$cz_#!pA`52vTZd zrRhWVDtTiCpi2e7{qmcL_4mktRQW2>#<1uDS`m-nMgCQY9{YTAu8m`w*-7jTU;@af z2<}D|YBldmZJT80ZGeg?P=AfDM(5DwD>nJ6AB&{qLyJS4RX)Q4)Ny0K)tL^^Jjzv^ zg4Jdwz1UJordouPK1s(JvfVDx=&5;(w#LyFS-M*cHVyC!kDeOm#Z8L@tO+A-SJ!or zKgklZjgH<@j>d*)n;cddC7x5khvwudXu1W`oqse$%)|0VjmFQaOqX;Lxw+xyX zvU_nU)8?qhEu?d1BW(7-M6Z$jSl{!wfo8Ub4|cvpIOT4`&FC`qq*~rOHI=NbufOWH zL?-%;(`gk?vVgA!o!WVOZ==Q`04vSV;$ln=wh^($cK;jaW|C71io)IiOO{kF(-!bXsx&zsM zmE<(*0DjU}HQgoy_Sr+{G>nif2wi%0oW4^c;?>dp)^RTU#9ijuT7Z*2eB*4lq{Aqw z=0*eHs|c%~$m||gWsU}i{=ph96+9t#*n1>_+SKKZBxQ^H{4)q6H#-aNfo1@sJ?-lB zMgq#c@ta?BCmM2VylQY01%Jub7G7DOdE#rp2=&} zy`2R87e=vg6&5h`tfHSAt9Z{N-fA?z0~a%?{r1*$3xcf*e{M07#C{>SJNX@9f8KYZRJx(P?%$_CkL?RHP~AaTq4*~$*QA(;_4QLSD4mLzU9c4(o9a=S`&sG1I>wx`UjUMVNWaU|a0 z-ygX>KdlShY^;h9#jgX$9&@0;Hg#L#W(wMctf6jQ%223Ib-b`725(Bp8VLR|v7ILt zhg)!O`4FA+Tnz}c$_x<=`#@Z(M0g4x@1GZro-kfd%pyv!PDJZ{Uc@n&TsWI`L>ejB z9vOG#M{lPD7^&|TUEei$&3u^xAqC$_Kq#lS6u@RQh>`npsw4K=lg`%h`#Ghh>K`f z8LsRgX2O@b@S<3(A#Fbbq>Xb+a9l?$$NLa*c_FkyCpIrJb#>)4d-Kxg z^ZU_#?L%>g{YeTtrj4=vxJ%Oc0L*eDBWBh%c~iH#Q}_ofAXo^uDLus|x8x7&op2xl zqxo}nHJcMS5#oE!-N*a6&|s#8u~9gJA^)p1El&S?)&%;ti?AvhQxI+pFaO4AzQt^k zO(C&nv3^F`hWcGGt!>t=i@sS*ClgNOJd1r`VY6@ZV^x_B-#UIMraOE4+g~^?5F3=} zZf64+Jy!`vLLHEIABlv>oxykAZhC)8CuibASQpvj}-cRaT~ zHYop~vV74ND6G{5&|*IY+MBRP>UXLd#J`sL^@(akxq2n-<_ga*xt%($5-*1IG z#j_*hXEQvEhzH60UQLHxOoai}sKb#4Gx1@EYE(&+bks0uVcyW- zS>~UWAOEH*=9h@`!m?;}&C!}$>{4LOM2iI|E3c?yjC_(s(0+qpd%P~=MzG%#wlWk^ zpdHNE`w**1od4*E3pAhV2t+Ru>I|)`In&ZyhZqM=OP-MYc>JU)zqJiLYn!Mk(DZ~2 zm;QoPqn|)hIdTf6ljaufw?6+BZQd^>89o(&^ssXiAQ7vx=90mB7jD;knnA< zvb)q8Ig2}6r}xG?NMHlxNJBq1`PxeA+o5DNlWt#}9J7K8Y=6TMXhG`>u6=K4w#zHI0oeznSJbNASW#;JPei7yA}k{d?z6 zp_#V&=1luS#Zf|WkTTKAS@sPqC*TeWrsf+!dpRkgNw$U&&|~$x>4Yom{1Hm#XJ8!k z)1V=cYS=<7&%J6Kcd5FnA~A6Jy*3KR?Ywfx^{|i^i&b?Yx_$FS2GxLC#w4~$;i^zM zZqI@8cHXa=2uCft{~hj9`7)kty9{J_kTBJ>G$)K`?vrLo59vUU%D5Od1Z3W3}=m3US7-#sm{3&6uVQT&+rq9Hm^JzAOifq@}gIP?1xIej`G2!lI zbKGLkr0*M|{EAE!ZKN-}D@x$q%a4`UnoK9pG@4qD$aTD$!-Cc1@u0hzPdQxgCmCuU zR~4(LO1=Bq;L`hyl~rTV3Evp$t=fio-Hd#=Acay(2?7xOf4}+(@7arNNE~ssWKWWD zZJbO|!-rF0l76ppDZ-!Z2*zYXnwrJ`pfoyZhh%Bhh);m-T#4+N%esToj=4!mHC$!r zN6&!3Ay9e-J`P$f8q_X;w}`WpN9HGRGV@utz$v-^P(`k~vB85cM6cn`D>qFo z4huY1vm}dpn_J!an4`b27dMgN9G2?qERAlK%srS#@(+QzMQVkrN z&R8DkzHwj+E-7j;wigQGMnfpc4us6lS1Y9b{U1Lw*?ij3#4*~#isV#S8yT;71=vb7 zDZ#1yY$)w+qxxwaIB4C(E*Y2)e8D zVaZEOdRACxIl>%&n-jOEHQQ$;Hf>p6hng2aJ`)(j{0ASe!puxo*h?l%x;NnBkW%f&27<85+=jK3ESW3d2$P-TU;MPUjk?7G5}?_t&CQuq0i22lrES+ z`ot3#L|2(NDIol^zQI@d;&=mQDq$sctow{Umst35K2c>X>6>FCP>#M?VGsGXp=l;I zVR+512RnKGd%OGT9U=W-obxf?fB#GFAM)M1C0(Vzp($^8)Y}*A)*|H_H=5EMe-(xD zT#L>N;qPoHV(Wj*SMe6`iV5C3UIxf2Kx(vQW&PE*e;hO0L6z)5Zqa6J)=9~}oR4~w zlb0>A`ePhK84}B9-a6Py2hP$yvJph(sY63+Etfep6$x^e;N3PrJR)IGpa+Q#DGF`ezZr zE(aDz(sxA?+AhVqD?Pd&t#pMt7q!RenmxZc_M$%ECwl$$lKgl*|G>pk8gEq(I5e6N zDqKiWzBkjdSiT;;hBkWTZNc1d!(QVNZ@N_9%5ph!ic#ye*uz3p(<(zD1}lczwD&u>!dK4bd)%G7|7w9k_g&Ce;gs zw2GOCif6FvxC^K=h=$DfhwZq0wF-m2HBSe%QWK&W#I<))G%F> z6xQXLs})mZ#Jd@=oqk)sQ!dFIYD%_lu;l+iF+v<`M^O(U7HI0G+{#bE294DDKY`Mj@E6pA<&GwTbYi{cHN` za*uWVYC3lr0Q#)}&<4pYb~s zm3hy&-sZr*@VU-mrOqG2mEBqn<YhmB_GAv!mRNVx#DWz1q~?vzwJF4F;`$8yf>joVX`SZ@hZ8)!Z@%-ia8@E9Trsw3 zYnZ4!bagPTcS5F;va50r-n9NJ?yB_r{GdSh;KJEkYT?B|LjvL)-Rs;hx7{mgioZYx zkBa%)YM(QU{jm=zzL^)nk(riMeNOEy3RWkU#@^u~#Dfct#y_=^`bsr5nyWl6Hf&xGB1nbXaq z4jkYzgeZ+t6K!;`3E0c^PB3%5ex;jck4AXjT-KLX!Mhh06$VlLfvjIVHwEDmpct7bnU!(P z9BsYd|1yK@r@=5ouh7M3Mtay3_|%Zz1b1IR?{;fD9Yay!K2%^j>aaj@mM})n@cx}4 z39lIW(18GhA*3kP8_R|%xAWeBH8V|6u-vrN>NCb2O3ImuU-*F+fk23dNenQ4vM@rR zoMpsg;s;+3kLP5fK`4NxYsbFEI5DM1ofGOxyR83)-1=LK474PTywI%;%+7)7gHk0#^F$dzDqs zkQ89o%2-S9Km6qL@1D)E?!KT=^`%y`sQ*R}p$c#^lq7!{t`A#I2K%T(r3BF6VeF)CgKoPH zGOQpuz9}&OW)Z+C>*u!`OPC3_WCV>iZCs8tr?1Z`g!j)@#Axzz)MVJ|!9?Y4N(#?8 zTy6df+AooeJoRqF5s5{L7LkrnyiE>2NS*x(bBCio8zDWtH>$bPfQ_jKGg~icTksM% zfyo7m(KJBmO?n(UbxV&TAwX#I5dZ76`#NG}fnSmqsm^Vh;>iMGh>B!3DBpC*Ufk^5 zYuzqk?gIQ)p{)2MwO&)Xn%WYaA@>OGQ#jeFhkUY${b8CD=69r(h4sepBp2As{M_f% zcPNG7D5=y)OFNdW~*=>vAO;js#B-z>R9mC9O|H9l_3@=qP7QBZx zeen#ji<3`LSW9*?Xp8~YlTalhOpjZuBh;`~qLficib;agHK~(mCrviT2La=ZEK;Ev zHp0Y)4N44P)YtSoyUd|S*A`;}PrWVgfr0#K{a2qIpOUc`#(sgJ?F>w30Dm6F&W7Q6 zY8cn-4Ta=hB9rW|eX|W%vbLg}LWP7cf`rlV-2QP7fLynQaG5wVA+xEB(oC^Hh#DrV zSm8>5zfd#sJmNu1MUN27u>YXW{0vpa8_!y+pUZhYWj$QoC}m=Zb&jX~R?pZITuAD+1k4i)lzC052yH z9%p#nq*E1{{ytW|6cmRBotv()&o(tE^JHhiAZ+0QC$2Tg*p)qpBczwg%ue&MUIh0D&JG|cS1p|kyGvKiiq(#6T@8?3 zu_4>(R6uk_V}o@oD5ho_;iV8&NFZ02gaf z&ygjzG&+i+T*_#*sKXQBX>@%l&*poZDgTzF zJB*~S{G_2@Tqot=4a8^Rk^W%9*n=wY(r@uOxsgrVNZ_Dz?nvT?ieJ@#6Y`Ho4Q6>U#pujlncJ1(Ka)?cKSX3^L847;{bLceVVq>MZFE)}okjvdUQ`6ZAWR)G{&%yVB(qkjU-yjxz+|MkD6e z*UGes7gUR(EWdy!YJeIz#y01nCC6i3L-jI~W;aW+kkc1@rqa!xRbCe*Q)DsQfP62C z1g38y)8dgAw>H()f+0{vq78U zIY(uSc$92Eyhc%2QlD)1a)~lBqFoRkfJp!zSnw;DTZ_ zrohq4|6$p5A`2c=Zw=b({a8^76D#}<7KBYQnJEq3#vE-<(7f|7p#C!s8=Id#Vuwp< zpC|9%sss;T3|q;9J!LB|g}TZwL&xQ#4Ad);4ZY3Cz&UXfyVltdoOHv;So)jp7U7qY zHIlm=%4ZH4d>=Mj-eB7vN7%m=!~#+3uWTFk_6`Bob-^nJu2VmSIaIa!2}emISZtJ2 zV3^Kjv&9dcU6^2Tq!wgz9nZ=I?TDGHfeU?r|RSvr?^5-Y9%DEjFJgwrO4+qv_2v-&aF~!WB4H-*!DvJudJ)y4Tl3}Sa1)3+;w>H-BK5E;0 zhV$N87c*fi^*bY@p$HwHyHrr;FCu1Zl;(dMqFMycv09|3zR=yj*->yl18zZk)Q#TL zy;ui%7b&1Fr*ERJ$D_Q^e{5sfyHk-6Jeg=5Qk>j4V(zG3xso^yGV@iIf0DHv0scw9 zH3(mmoOLfc`HCXKuiju06dZV@2TU%OJAOV^NU5eO+Fh1sQ$K3V#OH>QFs^!xH5`;* zERMSu{Ie}6$JSA*W)VRwpA32+ikS#7A~%6T7~RE78A(%EEjTbQ>BUuz)S!aq@2{zb zPz6(D*YgvqvXx<@AwzmR>O9t>ny8@Ey4)tpvE%McumSvOnJlN*t&qlGTOzGR9T_x< zaQfSn7OwuO7LVZTqCUT|SLu0#0eBLRs;9lTg+jD$Ad z4vqG%=s7(17-Ab;uoFh+m1i4t+di=pE#heJn(cwjj>&O3F42o2w@wuQS)F8stS_YS z(&RQ`KeG!a1)%>ZY|h8B6Li#8K7xK%Mvp`1&O!jp+`| z9q1zUQE&%)_2lg)v-j2G)uVl`;_ZUoivu7f6R?ew;Ag5&0nj@`6s-bI``RXpy-k#b z7yEVi7HLn0PR!q{M^=ifVq&$*xu+>m3uX`aTl&kO(cx(s>@5Rq=a7AgZmI~UIeP&z zY0;j!A4Daef;FsY{jCq2-2+Xe0P=8AiRGV(Uf;{5PS9|btIvx?>CSCIVjz84*RS!W z-fLq0QxV#k7ezMTk270d4?zc^-?B#m!PW0qgRw{h?+_Dh6j2duJoah z??&^-#~DVBF9b-59kbH!LACypYjrdiSxTX(x1z&vZL07h<__;deuAUKY%4AOEqP_8 z0614aNUR9dAD#0?pG`7db~f-pAu*j2#kz9G<)E9IUrFsx;D~6aeWA=7C`nG-(&K9z zqwu43TDB=yG|l2b%2?qczSErSn)5admORGchWfa*41-(Xd5JLrX)^?BGr0>!ydnro z7Ke4*Ys#~=R5i*v^nVWh?*^EUJ(A1Hgdvmx1^N?O5zs@FN`3-|inV6t;lpW=BDZEP zU?k2vP8u?>Lf*4%+mIRm(b92o_VGy<8K&DXni86+c%arxWutlt5Mub;9d!!0HCdV5 zn8cFL?zPA{6fq6jcxgc?m{fu|zvwJri?MewJ;ig%zcLrn-9tNAVd zlCY4sQ~t-DZLM+NCcX7voUKhc2g_j?mt_}NqNVmWoA*JTO-FdR*n)4}3c32wsE|Nt zjvjo@qxZ}aF0O_3qY4s0H_XpmCWm7SM*vSbSOOe*%N|B(Iw?HRn#2ZsWaS}Y?-tLc zC2d%uMDW@ZP7){=qtD>V>hdIctE?49G&HBsd7;jiX2>z1Yl`u>fbVVz5+%YWH4R6^ zX=aZI+CQoK+%>4xQf=5TT@b;?mi`&Eo#cift46wDio2id6y~Htw+A?gJWlB4D~Ebo zPSzVO)UwzW!^eLwd3AohgKirwI8h$9-+@m9^F#uBDD6S4P7x#iork!=!Tzb~Ga<8J zNnL$Hz$ZXJ0ymrO5(~ye2NPx8Gk_d1U;e{p)jr+~1Yxly$PO6igXev4c*0<~%UNle z%V$9E#i<{t{iC4I(GCzW2!g3yFLdA5>|J{bKGfEt7H>L;t=!ZYAn<+tvqw!2&P|FT zQ<`XynrVfW-5DY^iPXvYD@oj!3yyoF_~4~m2imiwMVDhxw_1cD+|Fm6C~YN?lJTd z^iH>+M^G*X6oAGWaQ0qF)eNZC(LDZ@$_F|? zkg~H+E&I0%@fBP+^5jcHoD{nZEV2Eildmk@buT}QImgZpePHvn6qyLb=z8LbdT92- z#4R!-dQ`mnV7?aODE&t;yit5JYKLP8DrDw}`ubOS&AV6EH;*+~~~kF&l?c}yy> zF1phX$+ukKW$alnHC87g98gq6EERN^b%2J2yC$gniB2Ij@a9Ev!JwNtjF|M+n`dAL z(W&A8!$aYvWZP2i)`=}dQ{JyaX3w)f=HE*kPL8o0p@;DzeI!CAFUR{#B5@0Jh-%~v z%rr=JGHVZ?OoQlyB`CGjw2MXMnwv3EII73w1gLCaP2G}LubroZxCS&f@yVT%CCk{3 z?FWx5rcEkR*E1df#W5*2@=9Ii29CVHy<}W~!sZteM1ms%>AI&9t5w)r>z48(={Nho z(IpcqQ0n3F8eC({cpK|MlILPdizr`&HYA*2<&p9=K~WG|m2=Ol(w`!xZ?>VGknmk>_*po$iA4 z7_}`8wSA$Pde#szfM4!_f~??PpU)0UD_HtD$M2VkPsq|)9wpdo(_@_mYTXSB(@Hej zA1K85y@1e(5=(8tQI$;5s9=QG=`u0jg=BB`CUKJ%l;yUG{$$Zk;p)w!t-Qa-ycnqb zj<*@{8n-&WJ=`$N1PwRkt1C>1*fjiqDyvksUi6f=)|x4b|8P@q`{!uXpq5HU>m;ieYF+zc^=6}APB2zy_j;TFMk{|_b^|0Y4X*Yd z1^-?a9T+{78%Bu&gN+*KWD$7)7A;0=0JuRCNzYTX8tn8n4d*5ExX)1RHh=fP!ouP( z1lfR70z>agbW}D<3 zQ))33s&(0SERAw_m1)?4`%Q-xbr9U&acbu14;t83z*X+HeFw6le4`k+I70Lxgryt} zG13c_sDJD!r6|zOqOF>bW%mI9xYGTqv-OKFZI`-XQ*%(ab$n-S*<7H3;0V}a4AHK7X_A+SRbQ9jX!a`tsN#St$0-k~iw-4lM30>;x=S|lo!lUPAC^+iEvUxHeEAP<3}dMZBva3KUbzR9U%|=? z?H%L#2c`CKk+~X1IDBN|1G=y6j=k?tKdfDF64_)c&BykU4WBGOkTw>2k4JuXAv3Cy z;;avw&>r(nhTVdze|pUoq-(&mWj}`0%QjL6YCpRMkCnYgsrA>n8`TbisUe2LM5|ck zQr?VrhhGs|sQ+ys3o!b}ftMg~o%9nw;Y5AfUWHcPtHgYI^FZ`Z7S`R=%Zl;e>YATOo36E*VJF-?S(EPD`v45mjWS2G*QMsXduXCpm(G!gTz+#|%&&aFFVJnQ zp}3xHx@xEbGFh%?~L_ zn>;`KI}PL}PVKi0W07wvJHDsUp?B6HrEQ)?Hi4{k`WPVo<3(Bvqw`o_u!dpllP;tE zbUGnk>So6XEI2kOfXHX$ne8(xB}~sWD0t`zY*itf>vku#RLru4);X*4<7JD%GJR4* z;3hu7L#yQKHS@Zf?~V7m10P2rU*iCzT<3(~Ro=GWfQz3nZO*AX-|Ht?AV?Kp7j(zE zdXC$)*_``(GE_DMTX#={zpZY*L8&J$z0?co2m(hh~PCx}6htp*-O>dXOyb$x=Y=&&#PA z7}sJf!GMu(OKrB`?^rz+Eynb*jhZvb{*ggesr4&0C)rK*HyU~GhfznUUkPp%$37b zC$&QI;lT)(&J)8Q*qs3D!7{vt0-PONj8`*7Ky%fY$swYc43U|sk?Pr`BZA_PdT-O@uv=6?P^sj_(ssgUp4*sq(J}B zIIq~GQFigf4vw)l_JKAwg8Rovc;c}Eec|i}-nl(XO?4|)Vjx7gA1M<$l&u7gYGDAb zf3DynVX6O(56r+U(}L z+hgiaWDW6ZY#*?GXn9xuJ7=-WAVka8wy>XF1oeA>h$U}>JKYVtLioofthek)ohlvH zrjSR=6sN8euO*Yksm9lLbOuT#_`2!wPF738n>2adRoY(xc;dPo)c2#kIw)6#fL=9p z11_D-Ik1bsvj?6Fz2a@L2TkS~br-c6a|5cJu?PC!_>V2CQZOh=ZhU<7C}7T_&alI) zrOaGlpgcuB?9goqPS*)J?>%%X4g^q-v?WI&r^#y`KDUtO)zLkb{zspj}Y?J zO6q}Y4HBl5s#)6O3e4dN@q@c%xWn}43mWIO)M>-n`qSAbD?ijj7^QD%*cpYmY}w^w zB_f=Vf4M*D2%xe#V@HxZrv%{C%{2yXrR~6MNoNfVB4W$ea~IHlX$dPG{CC$B$wOL> zJ0;L(JJ@CA_WoV7Ru=;A>psv`X4$MY zmJhRz{1i)-q`8x|va$Mm*cqKh1mtX8Lo}X&Y(=grWgG|sPK;g7`U_y)qE_f$t|Q}R zOTa|x#ae8j5CT3bd%piAMiuu~Dq!FeEY63P2SDe#-f8RoL*mP#w|_?uYX!SUr7i?+ z)&PX=wz-68D+|h4a_4nmw39lmdZqu?A61m}<=>Vz4KvDT=pjLjMMWw2ApJsj#TRYR zS-m$R=CmzcgAw6xT*8|$m*yv*I?k{BR}TBYdgaQ&ofB&dnavlgjf_{Ow%<4~AO2D*9$RQ|^CG5=+0^XAc^!mS90d^v)PR%3S( z#eyjDWM$f||dhZ~U z>y;&-_&n#rgMp&(<5xDvX)mOVmf$M>Jz=3UY0lbkt5M%Q;8Ku0M2J*_06#VE5~j*B z<$|3cn%U?$*WoX;c0Y-P6GcCN_(#+T!mw^t+xOgypeSnXG z%bplE8~W%YoAD%Q!ZJR4{lGv1kpsZShvJPjba0me=8r7uyuuE-r;t{4 zv-59S7hd8oO!tBO2m}0y4nIk?l@h-xh8=Wd$ma}>dg1ZZ#MVJ>PlcU$aA! zz!2z1A}8bR+FOW^{Kz@1@P~qjE&b98!s!DghoABg?#moUDpr7p+;En=EQk9xhIl#z z3YF&xDi(*h))u9G&dL1VSrLtiwn*z@{q7grL*?G$6fZzQQHYVvq%uw|XWXU;;iXRt z3J`XWG^-yD8klD;t3qU;RM*lO7gGy?9y?XyD~Bzo_PVwIp3(J=0@M{!5&Stf1&|e`u9g89$Z+ke zlPerDej&HT6wSQ+g@oQ#R;u~oJe+LSJ^X~hzxddHGR=~yI7!0qv9FYcRkQ8_7#de2 z?+ZDy+b-WN{v+Sv-u#sw7se8z&TR+{!So7wlYicOY0FwYh|M{+RK5-%lnRURq@w)B zB7ux>kxneH+6R{v*}Bcf)uKPfl-p0e~IWP1H)u75e1AIrUjT zp0evUHcyGAwlx|L{2B8_IB7MGdOubePIb_>G;{vXF z*B|$TZr61G|3ua9rRNG973QQeV<0$gZKyxU(?Vw0<*gvh9n955-`xfRrIuxfCAFaA z&X)udVD|1#VgS~}=|Z)g2im$gxid${)6)BMC^DJKf_YlpZ3ZDa z91ynY0&eKPlx3M;sly=ZW)>S<&oJZc*=riSd_MbAj*L8>Do!_#Lc_~vqXGAarXe=Wc((6EFwz*|Y;2H50UG|YAuScL2Th_ei>srAsF zr~6HbFGD1QG_fJ7Et^Vs28zJw4+qNUtTe9ii%@C^RSxx5Sw4H!*6XBW|3;<`=M$^R*g%y zK4tvNvA=|n0W@!K^S=OAtFZRUGyoTuRiJU*+OLeQd4v>B6i)N2^mE3MBfx{UkB@># z9|N5H)!1NG9&MrnOx#J6zNMtaDJV+P%)5YrB!I+zx9{aSn`Xw`Lni+wfXc8ta5s1v zJ&uim)V|g28!0FlqhS_TI{;)923DYB+lCl-NIHAfj!A|E8x0Z+^vHi$TiDIkSmjG%>z)cDUexe=-gZ=iJWZ+>gWUdd+I;dcE~Rr}3DBS^!uS{6;-fTzS+`GEdWX^50>vzBEyKjf>+{|t~7ZLlt% zPcT@qme@eMYQuQME2n~yEm5>B*ah)x+QP=~*oj*>dA7-ttNrnm*s=U8ZUs9TnJ`{e zmYNh9q+!sn8$r)cw&Gd5L)*b%x7}5;`INJDgKax@1HQ8fM~6K%8CdP(M0x~s8>PqW zY1lMcFu>NqEGf#O=S1;2M5d!GvkCxeBol_{Lz{67SYEzT1%{eBXc4esqQrmLUT3r7HQWL_f;0c!0`z8oo@%Q$paF|K?}Ug$s&84ZEyNG(m@;LTvZ9V!Q>ZT zEsG&iyRgJw3*Qf<@Vo#vpn+QQ14e#DfZSmy0)jw`+nS}YWt~^J0vkJs04@JsJ$Xp) zB#W^1`0b>X$~RQ@oc&#sD`V>rdYG8!me`;EN(!+`J3y;zK_mDFt;nXdXVDU$+ze+c zfWu!MI;d>uF#PLo@@a5o#HDwFG2%88g+ZuJGIwMNCGCF0^&Q7kpi0Vae6jQ^{~vN=!oIo)o_*Js>E!C$LRfOvk*kzFz@RR)IZ)khp(jQ89Y=%KMO z%9k}6lrb4pT&62-;HGEpuQ7bn?JRe%CwZRvI+gw1Kr-}O2rWd%0~B199QeP%g|8Z) z{C9K5gN-_Ai-=`NvLwBC6ae{im0aVg%%S1!FVe}kgC^&rttKigL@n4=G_UHk@KU_3 zz7X#Ri0SI65rPS+beEeKJx-=_b?D^?GNzbwx7K4OZH3oyAB9V)VTfh^Yf&N9iyz93 z!Eb~UcJf*8{S`&}jHybs^4V%o@G}04`A$Sg(UY!cPR-=FprNFTO`QUit$7xapZ(_1 zmS0sYg12aXE02l1yKhg8B7`1ZAOUjy6l8#CTl7u-CH+UR+^sYLz^FZ;oKQvBKB`d%RxR9l7GHMp+UnU19#s4F9eq3)PIBNOI}c3yEq`g) z6waB4j}pN5?f$A=coLc=nUs__9oVJaU?(m?8_>`&%JSb6mP{-m8K)lx=t>8$3$&d7 z-}Z=^-A!^^^$cuFZuPrnQ}(D4%NC+|@I}#D&xu)A`r;=BqENH1xp=ZNOev;Do~h8| zlM8=HWg>9rtx6tvI5v#}kx$k%k1u~JWpXUVS)hFW6iUrZem$ds7wXg>mMPi(tb&;L zKU=pBra}Z4-&0N1NslXd!V~LRg?24ysXu6)`YhU;Z(T&)dZP+Z^ZtnXbKCt$wQqXJ z&9a$Bj`|{1h-fWCYW5>5_tQWyPj%7U4rG_CQuVFueA8um&_{yIA$ssd(_2lN{|Vn& zU}sc5C(Z8^d>?D5ly@a)XMRS~g>ODbtc(mr=}sTm)?@!nVKTM-fV+R&m@|kh(vy^8SRBB~E$Lu-AwOF;pEG=>ks4iUHs? zCAf%Ym73WGq}-IS@lzZf&>m&mr#t<^gfwYOAYzpg9RunORs9JWMPj5mX^)Q=FZQ9@ zi(xaay9;rs26wSqn-rHainS)YehFjvi4hiI!^}ddK`gqXK%s(bqXHh+33??{KkiFD zZYI|MiWO%N({a3MwdO5edeZ_`y${|X`y5xM06*W0*BD^)+u-0%c zjZ5$M99(saKu8$EJu}TwoJ_;{ysMLqj4WcQbS*)5?fPZ5$*u|1`v%A~cVGt7VS;KN z;rMzpw!@iSiit?pzbl%s%nt}F_kRIfdJ5;AEg)$12r2YwW1R2qA=)_w8NEE!D&Gki z%w`eCu%V&c*YriMQIA!^E>?4l zg(a;eNc{$9gbPu0a?=*#D!99|6$+onW2~bPw&7Cd(|qNigjs7%qvz^yX0O(${He6l zJt;jE-sXiysgIST)mvzP>$~VhKr%VM7Pa|5%F#c0Uzu{SSwj-243Xjp3FcXa4lkoj zybGwujxz5jJzXZ=2hWE$c=mG__NKm5z29S^_f&nKYv!?H80DJ!J`~bct+2Gt!u;}K zzvRt(x6)3Ue5uJFPAmvGJ)FOy_@N2+|M}A!QPBWks45+LH1uodYB*hQ_)@;a@nXz+ zBSgp-&X@*?t{&1}0)ye?y}WPRCypPN$7dsZ!>vQQk{2u5ZA>A1E|-Vbsn_p471rB~ zDN7QSSK30_g%0vGoQx-^G{PAaxV=C`n;}IMN1P*~DW31TtoXGnO45$EdT?0@mc-^t zWT!vW6k@cecXHNIVC^q;K{1z_G&A9l3g@@myxQ$`9FYNRzYG{*h2g0-wDGrD$dtj37FWg{TYnsO_PE+N5sg`Fm zXKMQCuDccY>3beCC4kf?$g631@B7e}W8|Ftf4pZj5VNdC$d+9zYrSH%T1sZL5W}y< zT7apxt{Pqd$3O)qvysrQL4H-K?8e!M{S*9XFC49BBu`^sOqD(kVd4BgZTed^2wgL})=k}IcoWr>8+9DL>CAc}KWVIeA z$S;Lii|+sDuMF#UckvkDXv@XnWq$~9;LBppx#VQJVv-1q$b@t)&utTz;-C+b&mGt_ z6x;k_WQ`IlZpygp^!Jt$sf6q9*^6kRW`G`8AIswKIFdxOrjP_cHVYtISTFRvn3-@t zGmA^e_DIyi$p&k$D}`D=ZZg3W(5g$0Re<_XL`kuoT-`^L<%~;Eua4q~-V5+vAkCj9 zW(S_-PA#4(O|)DnTliNI@f?rosBhuJAw`nr0oR+inrvlsi)Vm|MwI@)UDK@WSzzX! z+h8AHP6CI2@;E+?euHh`iq{0fVlB>hLg{h4oQ&!-Cc$vK#^*~d;F2aiUW zcV4&&1Nb9!o|%1gEI$VNwf0=4ZmjDdx}OGFJTH5orKK+@CuF@;4~|OLQsNjF+uDa#i5=bKS4f z2Xge8;j!uo-*^Ro)8g=kd7t{D+u8Es%UUtQ8xe|8VXCoiOEhuON2>vY{H~g0QmXIh zx$FWs_dZwDLZs$AnoN*w7*m;&UaCo^i8yOT_1gOu@!zbpxMLss!-pbk*UA(fF|$mq zUnB3n?Q8JoD2(g6Mx%1L9xdUiqq^uy7PtDS8QmXX@=t;@JL7z?_zywVv;QA|j(p4VL%oYn3LbKN}Ift!xt&|#q5NqSA0yJ3! zi64Zy$v@CQfJzMe@S*1N4U1`2$;$z5Ifg+b%dTQ5=f=e2C%=nVm~+AQ$k-o2;@&RI zelH#g%xzuy#ni_p=&2}uU77bhAvRs|^S_H z1Lyv(kUHT6_qeF#+`|H_md)5t8wWh#X0ToG`70en#4Aq&dddnSh9ap}PofMawx=Mm zv80Df&86FDr%6h`P2i;stkTr;wkW$qmgVu(7JpXak84z?0m`)>rJWidlLZ%dq@}Dv zSRWx(+i9;WKEjP3aXhxoVQOiU5fI8XW5Gic7{yTl$h&*;c{38e}o`YEJ6O-vLj*}P&61c{ip4>+h@c3JcT z0~gZ3SafJkeeca|B1Rt4-R8>@)EheGitskU79NXD*WqFpH-T8< zEXz=ULdFAwPipWAYnJ22a>$ijw-&H5mMR18o4FHorbD1p(ue7f!h9*mBlB7ydWCCnNS~pDNNWe%az} z{Ip-%-?-kaMtwE3B^i%4m-Q}5UKy`F znSk%4GJ*~nY{fV=y*Cp<(o�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

  • k%PFt(7H!I@eQHXGRSl8M!@;|;p=TkX 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ð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 ON!_m0@0b0$kN7{x%f}r6 literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/main.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/main.cpp new file mode 100644 index 0000000..b2e3e68 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/main.cpp @@ -0,0 +1,223 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: main.cpp + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +//#include +#include +//#include +//#include +#include +#include +#include +#include +#include +#include "demo.h" +#include "../common/ver.h" +#include "../common/sleep.h" +#include "../common/common.h" +#include "../common/shfnt.h" +#include "test_data.h" + +demo::RenderSystemDrawing s_RenderSystem; +nn::fnd::ExpHeap appHeap; +uptr heapForGx; + +namespace +{ + bit8 readBuf[64 * 1024]; +} + +bool ImportFile(nn::fs::MediaType mediaType, wchar_t* filename) +{ + nn::Result result; + + nn::fs::FileOutputStream* stream; + result = nn::am::BeginImportProgram(&stream, mediaType); + if (result.IsSuccess()) + { + //NN_LOG("Importing: %ls...", filename); + nn::fs::FileInputStream in(filename); + + while(s32 read = in.Read(readBuf, sizeof(readBuf))) + { + stream->Write(readBuf, read); + } + result = nn::am::EndImportProgram(stream); + } + return result.IsSuccess(); +} + + +//#define setColor(r,g,b,a) s_RenderSystem.SetColor(r,g,b,a) +void setColor(f32 r,f32 g,f32 b,f32 a){ shf_SetColor(r,g,b,a);} +//#define setText(x,y,s) s_RenderSystem.DrawText(x,y,s) +void drawText(u16 x,u16 y,char *s){ shf_DrawText_0( x,y,s);} + + +nn::hid::PadReader *hpr; +//---------------------------------------------------------------- 入力待ち +nn::hid::PadStatus padStatus; +u32 WaitKey(u32 mask) +{ + + while(1){ + hpr->ReadLatest(&padStatus); + if(padStatus.trigger & mask)return padStatus.trigger; + CheckSysBreak(); + } +} + + +void endfunc() +{ + nn::hid::Finalize(); + SharedFontFinalize(); + nngxWaitVSync(NN_GX_DISPLAY_BOTH);//SDK2.0以降では不要かも? + s_RenderSystem.Finalize(); +} + +char ver[16]; +void nnMain( void ) +{ + nn::Result result; + + nn::os::Initialize(); + nn::fs::Initialize(); + + //DEA-SUPにて推奨のフリーズ暫定対策:無線デーモンを停止 (2011.3.1 現在) + //ただし、スリープ時の"いつのまに通信"は止まらない + //無線は使わないが念の為、本体スイッチで切っとくのが確実 + nn::ndm::SuspendScheduler(); + + //中断処理の準備 + InitSysBreak((uptr)endfunc); + // グラフィックスライブラリの初期化は、以降で行わなければならない + // 他、アプリケーションの初期化処理 + + nn::hid::Initialize(); + nn::hid::PadReader padReader; + hpr = &padReader; + + //result = nn::ns::CTR::InitializeForShell(); + //if (result.IsSuccess()) + result = nn::am::InitializeForLocalImporter(); + + nn::applet::DisableSleep();//スリープ非対応 + + const size_t ROMFS_BUFFER_SIZE = 1024 * 64; + static char buffer[ROMFS_BUFFER_SIZE]; + + // ヒープの確保 + appHeap.Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR); + + const u32 s_GxHeapSize = 0x800000; + // RenderSystem の準備 + heapForGx = reinterpret_cast(appHeap.Allocate(s_GxHeapSize)); + s_RenderSystem.Initialize(heapForGx, s_GxHeapSize); + SharedFontInit(); + + // スリープ要求に対する返答を有効にする + // また、蓋の状態チェックを行い蓋が閉じられているならスリープ要求が発生する +// nn::applet::EnableSleep(true); + + s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0); + s_RenderSystem.Clear(); +// s_RenderSystem.SetFontSize(12); + shf_SetScale(0.8,0.6); + setColor(1.0,1.0,1.0,1.0); + drawText(20,20,"CTR Card Savedata Mover Setup"); + s_RenderSystem.SwapBuffers(); + + shf_SetScale(0.5,0.5); + sprintf(ver,"version %.2f",VERSION); + drawText(250,40,ver); + + shf_SetScale(0.7,0.7); + if (result.IsFailure()){//初期化に失敗 + setColor(1.0, 0.0, 0.0,1.0); + drawText(10,70,"Initialize Error"); + drawText(10,90,"check *.desc file"); + drawText(10,110,"Push B : Quit"); + s_RenderSystem.SwapBuffers(); + while(1){ + padReader.ReadLatest(&padStatus); + if(padStatus.trigger & nn::hid::BUTTON_B)break; + } + finish(); + } + + nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE); + + drawText(80,100,"Push X : Import"); + drawText(80,140,"Push Y : Delete"); + drawText(80,160,"Push R : Test Data"); + s_RenderSystem.SwapBuffers(); + + u32 trg = WaitKey(nn::hid::BUTTON_X | nn::hid::BUTTON_Y | nn::hid::BUTTON_R); + if (trg & nn::hid::BUTTON_R){ + shf_SetScale(0.6,0.6); + TestMain();//テストデータへ + } + shf_SetScale(0.8,0.8); + // CIA のプログラム ID を取得する。 + nn::am::ProgramInfo programInfo; + if (nn::am::GetProgramInfoFromCia(&programInfo, ROMFS_IMPORTEE_PATH).IsFailure()) + { + s_RenderSystem.Clear(); + setColor(1.0, 0.0, 0.0,1.0); + drawText(10,50,"cia infomation Error"); + drawText(10,120,"Push B : Quit"); + s_RenderSystem.SwapBuffers(); + + while(1){ + padReader.ReadLatest(&padStatus); + if(padStatus.trigger & nn::hid::BUTTON_B)break; + } + + } else + { + s_RenderSystem.Clear(); + if(padStatus.trigger & nn::hid::BUTTON_X) + drawText(10,120,"Importing"); + else drawText(10,120,"Delete"); + s_RenderSystem.SwapBuffers(); + + // 既に存在するものをインポートするとエラーが返ってくるので、あらかじめ消しておく。 + nn::am::DeleteProgram(nn::fs::MEDIA_TYPE_NAND, programInfo.id); + // タイトル鍵が違うケースに対応するために、チケットも消しておく。 + nn::am::DeleteTicket(programInfo.id); + + if(padStatus.trigger & nn::hid::BUTTON_X) + { + // CIA をインポート + if (ImportFile(nn::fs::MEDIA_TYPE_NAND, ROMFS_IMPORTEE_PATH)==false) + { + s_RenderSystem.Clear(); + setColor(1.0, 0.0, 0.0,1.0); + drawText(10,50,"Impoprt fail"); + s_RenderSystem.SwapBuffers(); + } + } + s_RenderSystem.Clear(); + drawText(10,50,"Complate"); + } + + drawText(10,120,"Push Power Button & Power Off"); + s_RenderSystem.SwapBuffers(); + + WaitKey(0); + +} + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/test_data.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/test_data.cpp new file mode 100644 index 0000000..b881b4f --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/test_data.cpp @@ -0,0 +1,673 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: main.cpp + + Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +#include +#include "demo.h" + +nn::Result res; + +nn::fs::FileOutputStream fout; +nn::fs::FileInputStream fin; + +nn::fs::Directory dc[256]; + +wchar_t file_pathw[1024]; +char file_path[1024]; +char file_path2[1024]; +char src_buff[1024*1024]; +char get_buff[1024*1024]; +char str[512]; + + +extern demo::RenderSystemDrawing s_RenderSystem; + +//終了処理 +extern void finish(void); +extern u32 WaitKey(u32 mask); + +extern void setColor(f32 r,f32 g,f32 b,f32 a); +extern void drawText(u16 x,u16 y,char *s); +void drawText(u16 x,u16 y,char *s,int v) +{ + sprintf(str,s,v); + drawText( x,y,str); +} + + +//----------------------------------------  テストパターン +void make_pattern() +{ + int i,j; + j=0; + for (i=0;i<1024*1024;i++){ + src_buff[i] = j+i; + if (i & 0x100)j++; + } +} + +//TEST ライト +s32 size; +#define SIZE_TEST1 421888 +//#define SIZE_TEST1 244736 //dup +bool Test1_W() +{ + int total,size2; + + res = nn::fs::FormatSaveData(1,0,false); + if (res.IsFailure()){ + drawText(8,100,"format Fail"); + return false; + } + res =nn::fs::MountSaveData(); + if (res.IsFailure()){ + drawText(8,100,"Mount Fail"); + return false; + } + res = nn::fs::TryCreateFile(L"data:/test1.bin",SIZE_TEST1); + if (res.IsFailure()){ + drawText(8,100,"Create Fail"); + nn::fs::Unmount("data:"); + return false; + } + res = fout.TryInitialize(L"data:/test1.bin",true); + if (res.IsFailure()){ + drawText(8,100,"open Fail"); + nn::fs::Unmount("data:"); + return false; + } + total =0; + size2 = 512; + //size2 = 4096; + //size2 = SIZE_TEST1; + while(1){ + res = fout.TryWrite( &size,&src_buff[total],size2); + if (res.IsFailure()){ + drawText(8,100,"write Fail"); + fout.Finalize(); + nn::fs::Unmount("data:"); + return false; + } + total += size; + sprintf(str,"size %d",total); + s_RenderSystem.Clear(); + drawText(10,80,str); + s_RenderSystem.SwapBuffers(); + //if (size<512)break; + if (total >= SIZE_TEST1)break; + if ((SIZE_TEST1 - total) < 512)size2 = SIZE_TEST1 - total ; + } + fout.Finalize(); + nn::fs::CommitSaveData(); + nn::fs::Unmount("data:"); + NN_LOG("total %d",total); + drawText(10,100,"end"); + s_RenderSystem.SwapBuffers(); + nngxWaitVSync(NN_GX_DISPLAY0); + return true; +} + +//ベリファイ +bool Test1_V() +{ + int i,total; + + res = fin.TryInitialize(L"data:/test1.bin"); + if (res.IsFailure()){ + drawText(8,100,"open Fail"); + nn::fs::Unmount("data:"); + return false; + } + total =0; + while(1){ + res = fin.TryRead( &size,&get_buff[total],512); + if (res.IsFailure()){ + drawText(8,100,"read Fail"); + fin.Finalize(); + nn::fs::Unmount("data:"); + return false; + } + //if (size == 0)break; + for (i=0;i= SIZE_TEST1)break; + + total += size; + s_RenderSystem.Clear(); + sprintf(str,"now %d",total); + drawText(10,80,str); + s_RenderSystem.SwapBuffers(); + if (size<512)break; + } + fout.Finalize(); + nn::fs::Unmount("data:"); + drawText(10,100,"end"); + s_RenderSystem.SwapBuffers(); + nngxWaitVSync(NN_GX_DISPLAY0); + return true; +} + + +//ファイル数 +bool Test2_W(int n) +{ + int total,size2; + + res = nn::fs::FormatSaveData(680,1,false);//dupなしファイル680 + if (res.IsFailure()){ + drawText(8,100,"format Fail"); + return false; + } + res =nn::fs::MountSaveData(); + if (res.IsFailure()){ + drawText(8,100,"Mount Fail"); + return false; + } + + total =0; + int num = 0; + size2 = 512; + while(1){ + sprintf(file_path,"data:/test%d.bin",num); +// res = nn::fs::TryCreateFile(L"data:/test2.bin",SIZE_TEST1); +// if (res.IsFailure()){ +// drawText(8,100,"Create Fail"); +// nn::fs::Unmount("data:"); +// return false; +// } + res = fout.TryInitialize(file_path,true); + if (res.IsFailure()){ + drawText(8,100,"open Fail"); + nn::fs::Unmount("data:"); + return false; + } + res = fout.TryWrite( &size,&src_buff[total],size2); + if (res.IsFailure()){ + drawText(8,100,"write Fail"); + fout.Finalize(); + nn::fs::Unmount("data:"); + return false; + } + fout.Finalize(); + total += size; + num++; + sprintf(str,"size %d , num %d",total,num); + s_RenderSystem.Clear(); + drawText(10,80,str); + s_RenderSystem.SwapBuffers(); + //if (size<512)break; + if (num == n)break; + } + fout.Finalize(); + nn::fs::CommitSaveData(); + nn::fs::Unmount("data:"); + NN_LOG("total %d",total); + drawText(10,100,"end"); + s_RenderSystem.SwapBuffers(); + nngxWaitVSync(NN_GX_DISPLAY0); + return true; +} + +bool Test2_V(int n) +{ + int total,size2,i; + + total =0; + int num = 0; + size2 = 512; + while(1){ + sprintf(file_path,"data:/test%d.bin",num); + res = fin.TryInitialize(file_path); + if (res.IsFailure()){ + drawText(8,100,"open Fail"); + nn::fs::Unmount("data:"); + return false; + } + res = fin.TryRead( &size,&get_buff[total],size2); + if (res.IsFailure()){ + drawText(8,100,"read Fail"); + fin.Finalize(); + nn::fs::Unmount("data:"); + return false; + } + for (i=0;i= SIZE_TEST5)break; + } + fout.Finalize(); + nn::fs::CommitSaveData(); + nn::fs::Unmount("data:"); + drawText(10,100,"end"); + s_RenderSystem.SwapBuffers(); + nngxWaitVSync(NN_GX_DISPLAY0); + return true; +} + + +bool Test5_V() +{ + int i,pos; + + res = fin.TryInitialize(L"data:/test5.bin"); + if (res.IsFailure()){ + drawText(8,100,"open Fail"); + nn::fs::Unmount("data:"); + return false; + } + pos =0; + while(1){ + fin.SetPosition(pos); + res = fin.TryRead( &size,&get_buff[pos],512); + if (res.IsFailure() || (size!=512)){ + drawText(8,100,"read Fail"); + fin.Finalize(); + nn::fs::Unmount("data:"); + return false; + } + sprintf(str,"position %d",pos); + s_RenderSystem.Clear(); + drawText(10,80,str); + s_RenderSystem.SwapBuffers(); + + for (i=0;i<512;i++) if (src_buff[pos+i] != get_buff[pos+i]) + { + drawText(8,100,"verifi Fail at %d",i); + return false; + } + pos += 1024;//512飛ばす + if (pos >= SIZE_TEST5)break; + } + fin.Finalize(); + nn::fs::Unmount("data:"); + drawText(10,100,"end"); + s_RenderSystem.SwapBuffers(); + nngxWaitVSync(NN_GX_DISPLAY0); + return true; +} + + + + +#define menu_ct 6 +#define menu_max (menu_ct-1) +char* menu_str[menu_ct] = {"Casual check","Large size","many files","Deep directry","max size name","data < create size"}; + +#define menu_top_Y 80 +#define menu_top_X 60 +#define menu_spc 14 + +//---------------------------------------------------------------- main +void TestMain() +{ + u32 value; + int curs = 0; + int i; + bool sccs; + + //Render + setColor(1.0f,1.0f,1.0f,1.0f); + + //TEST PATTERN + make_pattern(); + + while(1){ + + //menu 表示 + s_RenderSystem.Clear(); + drawText(8,20," Backup Verifi for SaveDataMover Test "); + drawText(8,40," for 512KB Backup"); + for (i=0;i"); + drawText(menu_top_X,menu_top_Y+menu_spc*(menu_max+2),"push A:Write ,X:Verifi"); + s_RenderSystem.SwapBuffers(); + nngxWaitVSync(NN_GX_DISPLAY0); + + //ボタン待ち + value = WaitKey(nn::hid::BUTTON_A | nn::hid::BUTTON_X |nn::hid::BUTTON_UP |nn::hid::BUTTON_DOWN); + if (value & nn::hid::BUTTON_A){//ライト + sccs = false; + s_RenderSystem.Clear(); + drawText(10,70,"writing"); + s_RenderSystem.SwapBuffers(); + nngxWaitVSync(NN_GX_DISPLAY0); + switch(curs){ + case 0:sccs = Test2_W(10);break; + case 1:sccs = Test1_W();break; + case 2:sccs = Test2_W(680);break; + case 3:sccs = Test3_W();break; + case 4:sccs = Test4_W();break; + case 5:sccs = Test5_W();break; + default:break; + } + }else if (value & nn::hid::BUTTON_X) + {//ベリファイ + sccs = false; + s_RenderSystem.Clear(); + drawText(10,70,"verifi"); + s_RenderSystem.SwapBuffers(); + nngxWaitVSync(NN_GX_DISPLAY0); + res =nn::fs::MountSaveData(); + if (res.IsFailure()){ + drawText(8,100,"Mount Fail"); + }else + switch(curs){ + case 0:sccs = Test2_V(10);break; + case 1:sccs = Test1_V();break; + case 2:sccs = Test2_V(680);break; + case 3:sccs = Test3_V();break; + case 4:sccs = Test4_V();break; + case 5:sccs = Test5_V();break; + default:break; + } + }else if (value & nn::hid::BUTTON_UP){ + if(curs > 0)curs--; + }else if(curs < menu_max)curs++; + + if (value & (nn::hid::BUTTON_A | nn::hid::BUTTON_X)){ + if (sccs == false)drawText(8,120,"Failed"); + sprintf(str,"desc %d",res.GetDescription()); + drawText(10,140,str); + s_RenderSystem.SwapBuffers(); + NN_LOG("desc %d",res.GetDescription()); + WaitKey(nn::hid::BUTTON_B); + } + } +} + + +/*---------------------------------------------------------------------------* + End of file + *---------------------------------------------------------------------------*/ + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/test_data.h b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/test_data.h new file mode 100644 index 0000000..3525aa4 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/Imp/source/test_data.h @@ -0,0 +1,6 @@ +#ifndef TEST_DATA_H_ +#define TEST_DATA_H_ + +void TestMain(); + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/OMakefile b/branches/0thNUP_No_NUP/CardSaveDataMover/OMakefile new file mode 100644 index 0000000..b69eb88 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/OMakefile @@ -0,0 +1,30 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakefile +# +# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Rev: 34658 $ +#---------------------------------------------------------------------------- + +#\DemoCugp܂ +#PC‹ɍ킹ăTvf̃fBNgw +#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include) +SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../CTR_SDK/sampledemos/common/include) +INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR) + +LIBS += lib_demo libnn_am + +.SUBDIRS: $(exist-dirs \ + body \ + Imp \ + ) + +DefineDefaultRules() diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/OMakeroot b/branches/0thNUP_No_NUP/CardSaveDataMover/OMakeroot new file mode 100644 index 0000000..7260486 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/OMakeroot @@ -0,0 +1,73 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakeroot +# +# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Rev:$ +#---------------------------------------------------------------------------- + +# fBNgCAEgɂ‚Ă̐ +# +# a) \[XR[h[gfBNgɔzuꍇ +# : +# /OMakeroot +# /foo/bar/OMakefile +# +# : +# OMakefile ƓfBNgȉ objects images ܂B +# +# /foo/bar/objects/... +# /foo/bar/images/.. +# +# +# b) \[XR[h sources ȉɔzuꍇ +# : +# /OMakeroot +# /sources/foo/bar/OMakefile +# +# : +# [gfBNgȉ objects images ܂B +# +# /objects/foo/bar/... +# /images/foo/bar/... +# +# + +# [g‹ϐ̎擾 +public.HORIZON_ROOT = +if $(defined-env HORIZON_ROOT) + HORIZON_ROOT = $(absname $(getenv HORIZON_ROOT)) + export + +if $(defined-env CTRSDK_ROOT) + CTRSDK_ROOT = $(absname $(getenv CTRSDK_ROOT)) + if $(and $(defined-env HORIZON_ROOT), $(not $(equal $(HORIZON_ROOT), $(CTRSDK_ROOT)))) + eprintln(HORIZON_ROOT CTRSDK_ROOT v܂BpXݒ肷邩Aǂ炩`ĉB) + exit(1) + HORIZON_ROOT = $(CTRSDK_ROOT) + export + +if $(not $(HORIZON_ROOT)) + eprintln($"$$CTRSDK_ROOT `Ă܂") + exit(1) + +include $(HORIZON_ROOT)/build/omake/commondefs + +DefineCommandVars() + +.PHONY: all build clean clobber +.PHONY: run run-scripts + +# +# OMakefile ̓ǂݍ +# +.SUBDIRS: . + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/OMakefile b/branches/0thNUP_No_NUP/CardSaveDataMover/body/OMakefile new file mode 100644 index 0000000..d5a78c7 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/OMakefile @@ -0,0 +1,63 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: Omakefile +# +# Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Rev: 25650 $ +#---------------------------------------------------------------------------- + +SUPPORTED_TARGETS = CTR-T*.Process.MPCore.* +#CTR_APPTYPE = BOTH +#CTR_APPTYPE = CARD +CTR_APPTYPE = NAND + +#demoCuʒuw +#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../common/include) +#SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir ../CTR_SDK/sampledemos/common/include) +#INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR) + +# rh\[XR[hw肵܂B +#SDɃZ[uꍇmembak -> exsave ύX +SOURCES[] = + ./source/main.cpp + ./source/savefile/savedata.cpp + ./source/savefile/membak.cpp + ./source/savefile/savefile.cpp + ./source/screen/screen.cpp + ./source/gui/gui.cpp + ./source/gui/shfnt.cpp + ../common/sleep.cpp + ../common/common.cpp + +#LIBS += lib_demo libnn_am + +TARGET_PROGRAM = CtrSaveDataMover + +TITLE = CSM_body + +# ROMFS ̃[gpXw肵܂B +#ROMFS_ROOT = + +# Ǝ RSF t@Cw肷ꍇ +ROM_SPEC_FILE = body.rsf +DESCRIPTOR = $(CTRSDK_ROOT)/resources/specfiles/repairtool.desc + +# oi[AACR +CTR_BANNER_SPEC = banner.bsf + + +#Cia o[W:}X^OɍXV邱 +#W[rsfŎw(Remasterversion) +MAKECIAFLAGS = -minor 0 -micro 6 + +include $(ROOT_OMAKE)/modulerules + +build: $(DEFAULT_TARGETS) diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner.bsf b/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner.bsf new file mode 100644 index 0000000000000000000000000000000000000000..516f44d35878f9fb77d917481df66b6b4c23f6e1 GIT binary patch literal 1954 zcmb7^TTjA35QWdHCjJK!pS{HJV0e>D4Jt?|JQE6}G!{`T8vnd{&SFUs(pj@1?9y+} z&dllX{dI~uLIkMb%&iK~V?1-su;Q;FUbvfZ7a&2({Rxioz93d)b zT#(%mBV3`1bDlD)J~^d2pT_^vsN(vMMu+!LnMqobLop*|5MjX>)e6pqSKKXl|0edbP^UB#lCi7#m5~YQ*|wftZS^L9 zSMq%1ifWVgK7EHC-!%0xMz@efgY|b@9xeV}P6W)YoVZ2HAleuhL}+H(Ff+Z!qj5_U zLxbp<8hukkKB@B|--RXp%u0H1G3vg>sQ(rt2P{S&Sd3h-82Ml^a>8Qdg~iAXi^=`y zalRr>WWtG=b7od + + + + + MetaData + + + + + + + + + ContentSummaries + + + + + + + + + + + + + + + + + + + + + + + + + + + + ModelDccToolInfo + + + OptimizationLogs + + + + + + + + + + + + Skeleton.Bones["*"].AnimatedTransform + + + + + + + IsVisible + + + Meshes["*"].IsVisible + + + IsBranchVisible + + + + + + + Materials["*"].MaterialColor.Emission + + + Materials["*"].MaterialColor.Ambient + + + Materials["*"].MaterialColor.Diffuse + + + Materials["*"].MaterialColor.Specular0 + + + Materials["*"].MaterialColor.Specular1 + + + Materials["*"].MaterialColor.Constant0 + + + Materials["*"].MaterialColor.Constant1 + + + Materials["*"].MaterialColor.Constant2 + + + Materials["*"].MaterialColor.Constant3 + + + Materials["*"].MaterialColor.Constant4 + + + Materials["*"].MaterialColor.Constant5 + + + Materials["*"].TextureMappers["*"].Sampler.BorderColor + + + Materials["*"].TextureMappers["*"].Texture + + + Materials["*"].FragmentOperation.BlendOperation.BlendColor + + + Materials["*"].TextureCoordinators["*"].Scale + + + Materials["*"].TextureCoordinators["*"].Rotate + + + Materials["*"].TextureCoordinators["*"].Translate + + + + + + + + + + + + + + + + + + + + 0 + + + + 0 1 2 1 3 2 + + + + + + + +-12 -6 6.5 +12 -6 6.5 +-12 6 6.5 +12 6 6.5 + + 0 0 1 + +0 0 +1 0 +0 1 +1 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + Textures["banner"]@file:Textures/banner.ctex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DccToolSourceNode + + BONE_00 + + + + Shapes[0] + Materials["MT_00"] + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/BannerModel_test/COMMON/Textures/banner.ctex b/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/BannerModel_test/COMMON/Textures/banner.ctex new file mode 100644 index 0000000..c36b19c --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/BannerModel_test/COMMON/Textures/banner.ctex @@ -0,0 +1,17 @@ + + + + + + + + + + + + B/YH9gf2B/YH9gf2B/YH9wf2B/YH9gf2B/YH9wf2B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf2B/YH9gf2B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/gH+Af4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/0H/Qf9B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf/B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/gf/B/4H/wf/B/4H/gf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Af9B/wH/Qf9B/0H/Qf9B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH/Af8B/wH/Af7B/sH+wf8B/sH/Af7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/gH9wf4B/cH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Qf4B/kH+Af4B/gH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf8B/wH/Af8B/0H/Qf9B/0H/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/4H/gf+B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/8H/wf/B/4H/wf+B/8H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/wf/B/4H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/gf/B/8H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/0H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Af8B/wH/Af9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af5B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/wH/Af7B/wH+wf8B/wH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf+B/4H/wf+B/8H/wf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/gf+B/0H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/wH/Qf9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af7B/sH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/sH+wf7B/oH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH9wf4B/gH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Qf5B/kH+Qf5B/gH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/8H/wf/B/4H/gf+B/8H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/4H/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/Qf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf8B/0H/Af9B/0H/Qf8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf7B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/kH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH9wf4B/cH9wf3B/cH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Qf4B/gH+Af5B/kH+Qf5B/kH+Af5B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/wH/Af7B/sH+wf8B/wH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af9B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf+B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf+B/4H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf+B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/0H/Qf9B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Qf8B/wH/Af8B/0H/Af8B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/wH/Qf9B/0H/Qf9B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/sH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/gH+Af4B/gH9wf4B/cH+Af4B/gH+Af4B/cH9wf3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf5B/gH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+gf6B/oH+gf6B/kH+gf6OPsH+gf6m/2r/gf6B/oH+gf6B/oH+gf6B/oH+gf6q/6r/gf6B/o4+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oo+2n8B/oH+gf6B/sH+wf7B/sH+wf6B/qr/qv+B/sH+6v+q/4H+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/ur/pv+B/sH+2n9B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7Wf1p/Qf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH/Af8B/sH+2n9af0H/Af8af1p/Qf8B/wH/Af8B/wH/Af8B/wH/Af8af1Z/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf8B/wH/Af8B/wH/Qf8B/0H/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Wn+q/8H/Qf9B/0H/Qf9B/0H/Qf9B/0H/av/q/8H/Qf9m/44/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/GP8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/9p/2n/B/8H/2n/af8H/wf/B/8H/wf/B/8H/wf/B/8H/2n/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8Y/2n/B/8H/2n/af8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/gf+B/4H/gf/B/8Y/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+Wf9p/wf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/mn/OP4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/wH/Af9B/0H/Qf9B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH+wf7B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf5B/kH+Qf5B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf4B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH9wf3B/gH+Af4B/gH+Af3B/cH9wf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af4B/kH+Qf5B/kH+Af5B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+c3uB/kH+Qf5GPqb7N/dz9zPzAf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/lq2wf5jbq/u7+7r6qvqgf5jqkH+Y+In5mfmY+Ij4i8/f//7+7v7v/////v7u/u393f3c/Mz8zf3c7dSskJpv/////v7u/u//+8/e/u7+6+3N/dCZaNut/d393PzM/Mv7t8ua+qGpYJlgqFCoUKZI6ZCoV+iAp0CmQLZAtkC1MKdBt1C2QLUzyGK3ULUwtkC1MLUwtkC2QLZAtkCnQKdQjpevxJ2s7t/////+/u7+5aud/dW6jPzN/d393PzIy6/////+/u7+7/////7+7v7t/d390al7/M393f3c/Mz8wrdp66C2QLZEuXCnUKZAp0C2QLZAp1CnUKZApkCnUKdQp1v7s8hq+qv7u/u6+qr6pMhp+ZXXePiJ+Zn5mPiI+I/////+/u7+7//+//7+7v7t/dz92Nuhp2393f3a67rstq7Bjrve1a2+/////v7u/uW7mMywqGjbrf3d/dz8zPzDx2C1QcVAxDC1QrdQxDC1MMQwxDDEMMQwxDC0MMQwtUC2R9qQtUbZi/u7+7r6qvqgtUXYcLZF13n5mfmY+Ij4j/////7+7v7v/////v7u/u393f3c/MW6mc3M/dCYYal//////v7u/u3f5J7O/u3+7f3d/drsvPzN/d393PzM/Mv7srhq+qC2QKdSt2HGWfqZ+ZfoiPiI+In5mfmY+Ij4i/u7+7r6qvqr+7v7uvqp+pn5mfmY+Ij4ifmSxVHFQMQwf7B/wI2gjrB/wH/AjrB/xaygjJS6kJqAjKCOsIuQjKB/wH/Af8B/wH/Qf9B/wH/QfsB/wI6wf8B/w4/Qf8Wew7hwqGC1QKZQmXCbkKhgmoC1QLVAxDC1QKdQmXCmUJhwjKCOsIygjrB/xJ7Af8GOwIuQjbCbkI2wfsB/wH7AfsGP3d/7zu7+7/////7+7v7t/d393PzM/M393f3c/MjMv/////7+7v7v/////v7u/uzt293QmoCZff3d/dbKnPzL+7v7uvqq+qv7uNuq+qr6psup+ZCNtcmJ+Zn5mPiI+IGocKdq+qfpkLZSt2PHYLVJ+Zn5mPiI+In5l+iI+Ij4jN/hjs7+6c7QfsB/0I2wjs390qumypCocIugjKCZgJqQf9B/0I7Af9B/0H/gf9B/4I2wjsa8vPzDjtWe3PzM/MC2UKdgtVC2UKhzqpCnZLmSxlC2WPiCx2CnYKhwp2Coe/u7+7r6qvqr+7v7uvqq+qfZmfmQmYKpkJuhqpTJh+iAf+B/4H/gf+B/4H/gf+B/4H/gf+z8yt3Qf+B/4Y7Qf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/r7dB/4H/s/Mz92/u7+7r6qvqq7MGNyvqmu6j5mfmY+Ij4ifmX2Zj4h+iAjsv7sIy6+qv7u/u6+qr6oJqZ+ZCod+iJ+Zn5mPiI+IB/4H/gf+B/4H/gf+B/4H/gf+B/5Z7Qf+B/4H/gf+vt0H/gf/B/4H/wf/B/8H/wf/B/8H/8/Mvt0H/wf/GP4H/nvMCO1KywjMCO2/uwjMr6pLqgm6XIgJmAm6n5kJmI+Iv7u/u6+qr6pK3QjtSstay5+Zn5mPiI+IKqqOmQmZj4gH/wf/B/8H/wf/B/8H/wf/B/8H/wf+i90H/0n+z93PzAf/B/8H/wf/B/8H/wf/B/9J/gf/z8zP3Qf/B/+L3Qf+ncy/u6+qr6q/u7+7r6qeu5+Zn5mPiI+IbKoJqjuIXYi/u7+7r6qvqr+7e8yvqq+qbJmfmY+Ij4ifmZ+Zj4h/iAf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/5v/B//N7gf/B/8H/wf/B//e7Qf/z8wI3QjuCMsIzAfuB/4I3QjuCZkJqgp3CYgIywjdCaoIywf/B/8H/gf/B/+/uwf/r6oI7gf/CN0H7gf+n5kH7o+I/////+/u7+7/////7+7v7t/d393PzM/M392+3c/MGan//+//7+7v7pv/B+7v7r3uz93f3RqZv8zf3d/dz8zPzL+7v7uvqq+qjbsKd22ZCmafmZ+Zj4iPiF2IC2VddwtVCnY8iAtVC1W/u7+7n6qvqgtVC1ULVQtVXXefmT1mj4gH/gf/CN0I7gf/B/8H7gf/nN0IzM/MKrsI3QjuCLsIzAf/B/8H/wf/B/8H/wf/B/8H/wf/jN3P3Un/Sf/PzM/Mv7uNqq+qn6oJmWu7Cohsqp+Zn5mPiI+IG3cKiCx3Cma/u7+7r6qvqr+7v7ueu6+qjpmOmQp3O4gJqjuqXYh/iAf/B/8H/wf/B/8H/wf/B/8H/wf/z8yc3Qf/B/8Y7gf/B/8H/wf/B/8H/wf/OP/e7gf/B/8Y/63di+7f3c/Mz8y/u7+7r6qvqq7MCN2vqjq7n5mfmY+Ij4ifmWyZj4hdiErdv7tKu6+7v7u/u6+qr6oJqgmqCogKiI6Zn5l+iI+Iev+b/+/u7+4H/wf/OP8H/9/dzt3PzM/MCO4I7a3MCMwH/wf/B/8H/wf/B/8H/wf/CO4I7hnMnN0H/lnuz8zPzL+7v7uvqq+qv7tbu56qGoifmTuIj4gsdwpmCmYLVQtVfLu/u46qr6q/u7+7r6qeugt3jpkLZht3fZkJmSuIbYgH/wf/B/8H/wf/B/8H/wf/Sf4H/8/Mz90H/wf/i90H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/gf/B/8H/gf/v7u/u6+qr6q/u4zMr6qvqkuZn5l/iI+In5mfmY+Ij4gI3QjtKbsIzAfuB/4I3QjtO5kJqkyHCogIuwjcCakIuwf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+vP///83u7+7/////7+7v7t/d393PzM/M393f3c/Mz8wH/gf/B/4H/gf/B/4H/wf+CO0H/gjcB+4H/gf+B/45y7+7v7uvqq+qv7u/u6+qO4ifmZ+Zj4iPiJ+ZCnaPiAtm3v8Y/u/uve4H/gf+CNwI7d/d393PzM/MWssZy67MncsH/rz/eu3v7v/////v7u/u393f3c/Mz8zf3d/dz8zPzL+7v7uvqq+qv7u/u6+qr6p+iJ+ZPWaPiJ+Zn5mPiI+Iv7u/u6+qr6q/u7+7XJivqp+ZXXePiBxUPGafmS1Vj4j//97/7+7v7gf9B/0I3Ajc393f3c/Mz8xaywi6S6oJmAf9B/0I7AftB/0H/Qf9B/0IywjcCak6ywjsOO3PzM/Mv7u/u6+qr6pMiAp2PHYLZZ+Zn5mPiI+IXncsZU5mTWY7mL+7jqqvqr+7v7uvqq+qn5mfmY+Ij4ifmRmoXYgKhwf+B/0H/Qf9B/0H/Qf9B/1Z7Qf9z8zPzAf9B/2s3RjsB/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/UnsB/0H/c7cz8y/u7+7nrqvqr+7rsuvqq+qCalcmQqHCoefmZ+Zj4iPiAjbSttbukq6v7u/u6+qr6qOmTuYj4gKhp+Zn5mPiI+IB/0H/Qf9B/0H/Qf9B/0H/Qf9B/2+3CjsB/0H/Qf8KOwH/Qf9B/0H/Af8B/wH/Af8B/0H/M/cz8wH/Af8rNwH/L+7KduvqgjKCOtK2wjKSsqfmRmpj4g7hwm5OqkJlzuXv7u/u6+qr6q/uwjrr6oIyp+Zn5mPiI+In5kZuX6IO5cH/Af8B/wH/Af8B/wH/Af8B/wH/Af8GPwH/Af8rNzPzAf8B/wH/Af8B/wH/Af8B/xZ/Tj8z8zPzAf8B/vO3GrsGOuuy3y6r6q/u7+7r6qvqp+Zn5mPiI+In5k6qX6IO4e/u7+7nrqvqr+7v7uvqq+qCaiOmW6Ij4ifmZ+Zj4iPiAf8B/wH/Af8B/sH+wf7B/sH+wf7B/sH+wf7B/vO3M/MB/sH+wf7B/sH+wf7B/sH+wf7B/u+3HrsB/s4/M7cz8w52gjajbpKub+7v7uvqq+qjpk7mF2HCnWfmZ+Zj4iPiL+7v7uvqq+qv7u/u6+qr6qfmZ+Zj4g8hkuYn5kKdSt2B/sH+wf7B/sH+wf7B/sH+wf7B/u+3BjrB/sH+wf6B/oH+wf7B/sH+wf7B/sH+wf6B/sH+wf6B/oH+wf6B/oH+r+7e8uvqmy5COkI6gjICMifmQqWC3UKdQmnCacKhQmWB+oH+gjZCOkH+gf6B/oH+gjICNkJpwjICOkH+gjpB/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+Qf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Af4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4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B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af5B/kH+Qf4B/gH+Af4B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B+kH+gf6CNgItwjpCMgH+gf6B/oH+gfpCNkH+gfpB/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gmWCnUJpwqFC2QLUwp0C2QIyAmnCNkIyAqFCnUJpwmWC0MLQwtTC1MLUwtTC1MLUwtkC2QKhQp1C2QLZAp1CoUH6QjZB/oH6gjICLgI6QjZB/oH+gf6B/oH+gfqB/sH+wmnCacIyQjICacJpwjICMkH6gjqB/sH+wjqCOoH+wf7C2QKdQtkCnUKhgmXCoYJpwp1CoUKhgmXCZcIuAm4CMkJpwmnCLgJuAmXCoYJpwqGCMkIyQjZCNkJuAmXCMkIuAmnCLgIyQjZCMkI6gjqB/sH6gf6B/sH+wf7B/sH+wf7COoI6gf7B/sI2gjJB+sI6gf7B/sH+wf7B/sH+wf7B/sLZAtkCnUKZQtlCoYKdQqGCoYKhgmnCZcKhgmXCacJqAmXCbgJpwi4CbgJlwi5CagJuAjJCMkI2gjJCLkI2gjJCMkIuQjaCNoIyQjJCNoI6gf7B+sH/Af8B/sH+wf8B/wI2gjqCOsH6wjrCNsH+wfrB/wH/Af8B/wH/Af8B/wH/AqGC2UJhgp1C1QLVAp1CnUJqAqGCLkJqAqGCoYJqAmoC2UKZQp2CoYKZQtlCoYKdgmHCZcJqAm5CZcJhwm5CagI2gjJCOsI6wjJCMkI2wjbB/wH/Af8B/wH/Af8B/wH/AjKCMoI6wjrCMoIygjrCOsH/Af8B/wH/Qf8B/wH/Qf9C2QLZQp1CmUKZQqHCnYKhwqGCoYJqAmoCocJmAmoCbkJqAjKCakIygjsCOwI7AjsCLkI2wjKCNsI7AfsB+wH/QjKCMoI2wjbCMoIygjbCOwH/Af8B/0H/Qf8B/0H/Qf9CNsH7AfsB/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0IywmpCNsIugmXCnYJmAqHCOwIygfsCNwJqQmYCMoJqQtlC1UKZgtlC1QLVAtUC1QKdgpmCZgKhwtlC2UKhwp2B/0H7Af9B/0I3AjLB+0I7Af9B/0H/Qf+B/0H/Qf+B/4IugmpCNwIywmpCZgIywjLB/0H7Qf+B/4I7AjsB/0H/QtEDEQLVAtUC0QLVAtVC2ULZQtlCncKhwp2CncJmAmZC1ULZQpmCnYLVQtVCnYLZgqHCZgJqQm6CYgKhwm6CakJqQmpCMsIywm6CMsI3AjcCOwI7Qf+B/4H7Qf9B/4H/gjLCNsI7QftCMwIywjtCO0H/gf+B/4H/gf+B/4H/gf+C0QMRAtVC1QMQwxDC0QLVAp2CmYJmAmIC2ULZQqHCocMRAtVC1ULZQtlCnYKdgqHCmYKdwqICZkKiAmZCakIugi7CboI3AjcCakJqgjMCMwH/gfuB/4H/gftB+0H/gf+CaoIuwjcCNwIywjcCO0I7QfuB+4H/gf/B/4H/gf/B/8Kdwp2CogKhwtlC1UKdgtmCakJmQi7CLsJiAqHCaoJqQtUC1ULZQtmC2UKZgp3CogKdwqHCZkJqQmICakJqgi7CNwI3AfuCO0IzAjLCO0I7Qf+B/4H/wf/B/4H/gf/B/8IywjLCN0I7QjMCN0I7QfuB/4H/gf/B/8H/wf/B/8H/wp3CncJiAqIC2YLVQp3CmYJqgmqCMwIzAmZCogIuwmqC1QMRAtVC1UMRAtVC1ULVQp3CmYJmQqIC2YKZgqICogI7QjdB/4H/gjcCMwI7gjtB/8H/wf/B/8H/wf+B/8H/wm7CaoI3QjMCaoJqgjMCMwH7gjuB/8H/wjuCO4H/wf/C2YKdwpmCocJmQm7CZkIuwp3CYgJmQmqCaoIzAi7CNwIzAjuCN0H7gfuCN0H7gjdCN0H7gjuB/8H/gjuB/8H7gm7CMsI3AjdCNwI7gjuB/4H7gf+B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8IuwmZCMsJmQp3C1UKdwtmCMwJqgjdCMwJiAp3CaoJmQtVC1ULVQtVC1ULVQtVC1UKZgtmCogKiAtmC2YKiAqICO4I3Qf/B+4IzAi7CO4I3Qf/B/8H/wf/B/8H7gf/B/8JqgmqCMwIzAmqCaoIzAjMB+4H7gf/B/8I7gfuB/8H/wtVC1ULVQtVC1ULVQtmCmYLZgp3CogJmQp3CogJmQmqC2YLZgp3CncLZQtVCncLZgmZCZkJuwi7CZkKiAm7CaoJqgm7CMwI3QjLCMwI3QjuB+4H7gf/B/8H/wf/B/8H/wjdCN0H7gfuCMwIzAjuCO4H/wf/B/8H/wf/B/8H/wf/C0QMRAtVC1UMRAxEC0QLVQp3CmYJmQmIC2YLZgqICogMRAtVC1ULZgtmCnYKdwp3CmYKdwmICZkKiAmYCaoJqgi7CbsI3QjdCaoJqgjMCMwH/gfuB/8H/wfuB+4H/wf/CbsIuwjdCN0IywjMCN0I7QfuB+4H/wf/B/4H/gf/B/8KdgpmCncKdwpmCmYKdwp3CZgJiAmqCaoJiAmYCaoJqgp3CncKhwqICncKZgqICncJmQmZCboIuwmZCZgIuwm6CMwIzAjtCO0IzAjMCO0I7Qf+B/4H/wf/B/4H/gf/B/8IzAjcCO0I7QjcCMwI7QjtB/4H/gf/B/8H/gf+B/8H/wtVC1QKZgtVDEQMQwtUC0QKiAp3CaoJmQtmC2UKiAqIDEQLRAtUC1ULZQp3CmYKiAtmCnYKiAmYCocJmQmZCboIywi7CO0I3Qm6CaoI3AjMB/4H/gf/B/8H7gfuB/4H/gmqCboIzAjcCLsIzAjcCO0H7QftB/4H/gf+B/4H/gf+CakIywmqCMsI7QftCO0H7Qi6CNwIywjtB+0H/Qf9B/4I3Am6CNwIugmYCnYJmQqHCO0IywftCNwJqgmYCMsJugjcB+0H7Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0I7Qf+B/0I3AjLB+0I7Af+B/4H/gf+B/4H/Qf+B/4LZgtlCnYKdgp2CocKhwmYCocKhwmpCakJmAmpCakIygmYCakJqQi6CagJmAi6CakIygjLCNsI7AjLCLoI7AjbCMsIywjcCNwIywjbCOwI7Af9B/0H/gf+B/0H/Qf+B/0I7AftB/0H/QftCOwH/Qf9B/0H/Qf9B/4H/Qf9B/0H/QqHC2UJlwp2C1ULVAplC2UJqQmHCLoJqQqHCnYJqAmYC1QLVAtlCnULZQtVCnYKdQqGCocJqAmpCYcKhwmpCagI2wjKCOwI7AjKCLoI2wjbB/0H/Af9B/0H/Af8B/0H/QjKCMoI2wjrCMoIygjsCOsH/Af8B/0H/Qf8B/wH/Qf9C1QLVAtlC1ULVAtUC1QLVAp2CnUJmAmXC2ULZQqGCoYLVAtUC1QLZQtlCnUKdQqGCmUKdgqGCZcKhwmXCagIuQi5CbkI2wjaCagJqAjKCMoH/AfsB/wH/AjrCOsH/Af8CagIuQjKCNoIygjaCOsH6wfrB+wH/Af8B/wH/Af8B/wKdQp1CYcJhwplC1QKhgp1CagJqAjJCMkJlwqGCLkJqAtUC1QLZAtkC1QLZAtlCnUKdgp1CZcJlwqGCZcJpwm4COsI6wf7B/sI2gjJB+sI6wf8B/wH/Af8B/wH+wf8B/wIyQjJCOoI2gjJCMkI6gjqB/sH+wf7B/sH+wf7B/sH+wp1CnUKhgmWCnULZAqGCnUJpwmoCMkIyQmnCZYIyQm4C1QLQwtkC1QMQwtDC1MLVAqFCnUJpwmWC2QLZAqGCoUI2gjqB+sH+wjaCMkH6wjqB/sH+wf7B/sH+wf7B/sH+wjICbgI2gjZCacJpwjJCMgH+gfqB/sH+wjqCOoH+wf7C1QLZAtkCmQLZApkCnUKdQp1CnUKhgmWCoUKhQmWCacKZAtkCnUKdAtkCnUKdQqFCoUKhQmnCaYKhQmWCacJpwmnCbcIyQjZCLgIyAjZCNkI6gfqB/sH+wfqB/oH+wf6CMgIyAjZCNkIyAjICNkI6Qf6B/oH+gf6B/oH+gf6B/oJhgmnCZYJtwjIB+kI2AfpCaYItwi3CMgI2QfpCOkH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6CMgI2QjpB+kH6Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af4B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af5B/kH+Qf5B/gH+Qf4B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf5B/kH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+Qf6B/oH+gf6B/kH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf8B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Qf9B/0H/Qf9B/wH/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf9B/0H/gf+B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/gH+Af4B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af4B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/sH+wf7B/oH+wf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH/Af8B/wH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/0H/Qf9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/4H/gf+B/4H/gf9B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/0H/Qf9B/0H/Qf+B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/wH+wf7B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+wf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af8B/0H/Qf9B/wH/Qf8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/4H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/wH/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH/Af7B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+gf6B/oH+gf6B/sH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf5B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af3B/cH9wf3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf6B/kH+Qf5B/kH+Qf6B/kH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf7B/sH+wf7B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/wH/Af8B/wH+wf8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf8B/wH/Af9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/0H/gf+B/4H/gf9B/4H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/gf+B/4H/Qf9B/0H/Qf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af7B/wH+wf8B/wH/Af8B/sH+wf7B/sH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf4B/gH+Af4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af3B/cH9wf3B/cH+Af3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/oH+Qf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+gf6B/kH+gf5B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/oH+wf6B/oH+gf7B/sH+wf7B/sH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/0H/Af8B/wH/Af9B/0H/Qf9B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf/B/4H/gf+B/4H/gf/B/8H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/gf/B/4H/wf+B/4H/gf+B/4H/wf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf+B/8H/gf/B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/Qf+B/0H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf7B/sH+wf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+Qf6B/oH+gf6B/kH+Qf5B/kH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/kH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/gH+Af4B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af4B/gH+Af3B/cH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+gf6B/oH+gf6B/sH+wf7B/oH+gf6B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf8B/sH/Af7B/sH+wf7B/wH/Af8B/wH+wf7B/sH/Af8B/wH/Af8B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af9B/0H/Qf8B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf+B/0H/gf9B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf+B/4H/gf9B/0H/Qf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf+B/4H/gf+B/4H/wf+B/8H/gf+B/4H/gf+B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/8H/wf+B/4H/gf+B/8H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/0H/gf9B/4H/gf+B/4H/gf9B/0H/Qf+B/0H/gf9B/0H/Qf9B/0H/gf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Af8B/0H/Af9B/wH/Af8B/wH/Af9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/wH/Qf8B/0H/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf8B/sH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH/Af7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf6B/oH+gf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+gf6B/oH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+gf6B/oH+gf6B/oH+gf5B/oH+gf6B/oH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Qf5B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/kH+Af5B/gH+Af4B/gH+Af5B/gH+Qf4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf4B/gH+Af4B/cH9wf3B/cH9wf3B/gH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/YH9wf3B/cH9wf2B/cH9wf2B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf7B/sH+wf6B/oH+gf6B/sH+wf7B/sH+gf7B/oH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/wH+wf8B/sH+wf7B/sH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/0H/Af8B/wH/Af9B/0H/Qf9B/wH/Af8B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/gf+B/4H/Qf9B/0H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/gf/B/4H/gf+B/4H/gf/B/4H/wf+B/8H/gf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/8H/wf/B/4H/wf/B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/8H/wf/B/8H/wf/B/8H/gf/B/8H/wf/B/8H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/gf+B/4H/Qf9B/0H/Qf9B/4H/Qf9B/0H/Qf9B/0H/Qf+B/4H/gf+B/4H/gf+B/0H/gf+B/4H/gf+B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Qf9B/0H/Af9B/0H/Qf9B/0H/Af8B/wH/Qf9B/0H/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Qf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/sH+wf7B/wH/Af8B/sH+wf7B/sH+wf8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH/Af8B/wH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/sH+wf7B/oH+wf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+wf7B/sH+wf6B/oH+gf6B/sH+gf7B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf6B/oH+gf5B/oH+Qf6B/oH+gf6B/oH+Qf5B/kH+gf6B/oH+Qf5B/kH+Qf5B/oH+Qf6B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf4B/kH+Af5B/kH+Qf5B/gH+Af4B/gH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/kH+Qf5B/gH+Qf5B/gH+Af4B/gH+Qf4B/kH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/cH+Af3B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af4B/gH+Af3B/cH9wf3B/gH9wf4B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/cH9wf3B/YH9gf2B/YH9wf2B/cH9gf2B/YH9gf2B/cH9wf3B/cH9wf2B/cH9wf3B/cH9wf3B/cH9gf3B/YH9wf2B/YH9gf2B/YH9gf2B/YH9gf2B/YH9gf2B/YH9g== + + + + + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/banner.cbmd b/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/banner.cbmd new file mode 100644 index 0000000000000000000000000000000000000000..23645681f03e6cd923ffc06645b11524b4a7f9a7 GIT binary patch literal 9198 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 QyPweG?iYr7!vKN(KO269zW@LL literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/banner_dummy.bcwav b/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/banner_dummy.bcwav new file mode 100644 index 0000000000000000000000000000000000000000..d579907da6824f4216b582327a468dba0808fdc3 GIT binary patch literal 73288 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 literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/icon_24.ctpk b/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/icon_24.ctpk new file mode 100644 index 0000000..cc54fe7 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/icon_24.ctpk @@ -0,0 +1 @@ +MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUUMMMMMMMMMMMMMUUUMUUUU]]]U]]]]eemMMMUUUU]UU]]]eee]]]eemm nemm v v,v,v-~]eeeemm ve n n v v,~-~M v,~,~-~-~NNoM~NNoop n,v,v-~-~NNo-~NNooppnopӦҦӮӮopӦӦӦԮӦԮ7778XYφMUUUU]]]U]]e]eem]eej]mkeK*!m2 vk+;-~LmNeeemm v v,vm v v,~,v-~-~N v!-~K moK*.uNoS: v-~!dM}K*!NnuopkNdl2oL2ktrҍk.Kl2kpO}nKtd CtӦԮ KB:kB.KB|77cXyӦ|k7m:!kXkY7XXYYzzzYzzכߛߛm:[kV:WJOSzzߛtxߛ,~-~M~NNooNooӦӦӮӮҦӮӮӮԮ77X77XXYyzԮ77X77XXYYz8YYyyzzߛzךߚߛXYyzzכߛߛzߛߛߜߜ \ No newline at end of file diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/icon_48.ctpk b/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/icon_48.ctpk new file mode 100644 index 0000000..24fd5a8 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/banner/icon_48.ctpk @@ -0,0 +1,2 @@ +MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUUMUUUUUUUMMMMMMMUMUUUUUUUUUUUUUU]UUU]]]]]UUUUUU]]U]]]]]]]]]]]]eee]eeeeeem]]]]]]ee]]eeeeemeeeeemm nmmm n n n v veeemmmm nmmm n n v v v n v v v v,v,v,~ v,v,v-~-~-~-~Mm n n v v v,v,~ v,v v,~,~-~-~M~,~-~-~-~M~NNN-~NNNNooo,~-~-~M~M~NNNMNNNNoooNooooppopNNooooopoppӦӦӦӮӦӦӮӮӮԮԮMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMUMMMMMMMMMMMMMMMUMMMUUUUUUUUUUUUUMMMMMUUUMUUUUUUUUUUUU]]]U]]]]]]]UUUUU]]]U]]]]]]e]]]eeeeeeeeeemmm]]]]]eee]eeeeeemeeemmm n nmmm n n v v,veemmmm n vm n n v v v v,v n v v,v,v,~,~-~ v,~,~-~-~M~MN n v v v v,v,v-~ v,~,~-~-~-~-~N-~-~-~NMNNoNNNONoop-~M~M~NNNNoNNNoooopOoopppnoooopopӦӦӮҦҦӦӮӮҦӦӦӮӮӮӦӦӮӮԮԮӮԮ777777777778X78XXXYYy׆MMMUUUUUUUUUUUU]UUU]]]]]]]]]]]]eUUU]]]]]]]]]]eee]]]eeeeeeeememmm]]]eeeeeeeeeemmTemmm +n n n+e+]2kkkk2Kemm ne! Lk n n v v2k2kkKT+;,~,~-~-~-~d-~u-~-~NNN v vm,v,v-~-~-~kk+;K*l\N e~-~MMNNNnumm *!kkkKK-~NNNN\OdNoooo/pkKkBp!k} *:P}kkoooppkS *NdӦl2kkktӮ CӦ:rӦ2Ӯkkk!kk|knSk0dk.Km:kӦӦӮԮӮԮt *kBkB777kckնS * 2kck 2!k7XXXBkBkXYYy7777XXX7XXXXYYyXYYyYyzzyzzzzߚzߛXYYyyzzzyzzzzߚߛߛzzߚߛߛߛߛ]eeeeeemeeemmm n nemm n n v v v n v v v v,v,v-~mmm n n v v v n v v v v,~,~-~ v,v,~-~-~-~-~M-~-~-~NNNNo v,v,v,~2kCk-~-~-~M ekN: eNm\NNooo *k *opd/uNNNNNoonoopopLCkpkkNd\oppt\ul *r ColӦԮq/dkk\p\SӦӮӦӦӮӮԮԮkkҕplkk0d2k: *kl2kk *0l0lk0lkttkukkk7m:7Dz|!󝵮Pl7u677777XkԝԝXϗXYXXXYYyyz[.S!k6,2Ykkkky׷zא[krtkzr|kr|kk:zzzߚzzzߚߚߛߛߛr|k:Uμzߛߛߛ,v,~,~-~-~M~M~N-~M~M~NNNNoNNNoOoopoooppNNNoooopoooppӦpӦӦӮӦӦӮӮӦӦӮӮԮӦӮӮԮԮԮӮԮ777777788X77777778XX7XXXXYYyXYYyyzzz788XXXXYXYYYYyyzYyyzzzzߛzzzߛߛߛYyzzzߚߚߛzߚߚߛߛߛߛߛߛpҦҦӦӦӦӮӮԮӦӮӮԮԮӦӦӮӮӮԮԮ67Ԯ77777877788XXX7777X777XXXXY8XXYYYyyYYyyyzzߚ7XXXXYYyXYyyyzzzyzzzzߚߛߛzߛߛߛߛߛyzzzzߛߛߛzߛߛߛߛ \ No newline at end of file diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/body.rsf b/branches/0thNUP_No_NUP/CardSaveDataMover/body/body.rsf new file mode 100644 index 0000000..44da92e --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/body.rsf @@ -0,0 +1,28 @@ +# AvP[ṼftHgl +BasicInfo: + # vÕ^Cgw肵܂B + Title : $(TITLE) +# BackupMemoryType: 128KB + BackupMemoryType: None + Logo : Nintendo + ProductCode : "CTR-N-22NA" + +TitleInfo: +# Category: 0x0010 +# Category: SystemApplication + UniqueId: 0xf8014 + Version: 0 + +Rom: + HostRoot : romfiles +# SaveDataSize: 512K + +AccessControlInfo: + UseExtSaveData : false + + FileSystemAccess: + - CategoryFileSystemTool + +SystemControlInfo: + RemasterVersion: 2 + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/romfiles/banner.icn b/branches/0thNUP_No_NUP/CardSaveDataMover/body/romfiles/banner.icn new file mode 100644 index 0000000000000000000000000000000000000000..eb780b9450ecb05453781a347fcab0caf545a22e GIT binary patch literal 14016 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 Dhs>&= literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/romfiles/nnfont_RectDrawerShader.shbin b/branches/0thNUP_No_NUP/CardSaveDataMover/body/romfiles/nnfont_RectDrawerShader.shbin new file mode 100644 index 0000000000000000000000000000000000000000..4290c2ccf471f95efa5505da684e57bb896f592b GIT binary patch literal 964 zcmXw&PfQa*6vkhtv@8qQf(W$0cDr~$4u%*mdSSMy2_c(xgQOvZL^e=^Nd+rj? zf!m|k^xk|;KQmd=Gg;rwntN{FTyUv>Zik)aJ8tKa^_prt68->UeLT3*KNnal^Ao@J zx|sGT$F#>6n6`hJX@iU5+wMIc4SJT7p`tT{y&o)M{Q*B@H0{t44_Ov^%v;QaKIaje zf)ee@c^~=Vuot?+-aFVgmri+@1Lwdw!9RH`56*-0g8%Sn1Uv#B0grm@8Z{F~xn=f> z7VT*4|NiIgLxWzrM)s3yn7>_`w!;Fr04@kF+bt7pf=$5-c2oox!9~I7FSA^FLrpu9 zeb();IE6e%-a~%ZZW&+$YzW4D^pLbX+p$)B$GQ`UGd4wBYfLsWaMs_a8=cT6qtw9f zrP`3vai;V*)~ANzbVHZ(Qv-^1o|3#4*IA9%H&0dF-B@>G{rXwOab4tor5BTOefUu6 zkAjLX>?;o9baY~-04Cne z5o{2~WE2j~z&JXD$r(g{F#w>1tSwm75JUVYhPcoqJke(gU!iI0klG7hjNAUL4XSRe ON!_m0@0b0$kN7{x%f}r6 literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/gui.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/gui.cpp new file mode 100644 index 0000000..dbbb05d --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/gui.cpp @@ -0,0 +1,636 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: main.cpp + + Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include "demo.h" +#include "gui.h" +#include "shfnt.h" + +//----------- types etc --------------- +typedef struct{ + u16 x,y; +}tU16xy; + +typedef struct{ + f32 r; + f32 g; + f32 b; + f32 a; +}tCol; + +typedef struct{ + uptr image; + tCol color; + f32 width; +}tStyle; + +typedef void (*FUNCPTR)(u32 value); + + +//------------------ コンポーネントクラス +class cmBase{ +public: + FUNCPTR callback; + tU16xy pos; + tU16xy size; + bool enable; + bool visible; + u8 scr; + u8 padding[1]; +public: + cmBase():enable(false),visible(false){callback = 0;}; + virtual ~cmBase(){}; + void SetCallback(uptr adrs){ callback = (FUNCPTR)adrs;}; +}; + +//PADボタン +class cmButton: public cmBase +{ +public: + u32 mask;//PadStatus.Trigger のマスク +public: + cmButton(){mask=0;}; + +}; + +//パネル +class cmPanel: public cmBase +{ +public: + tStyle style; + char *caption; +public: + cmPanel(){ + caption="None"; + style.image = 0; + style.color.r = 1.0f; + style.color.g = 1.0f; + style.color.b = 1.0f; + style.color.a = 1.0f; + style.width = 2.0f; + } +}; + +//メッセージ +class cmMessage: public cmPanel +{ +public: + u32 parent;//親コンポーネントID +public: + cmMessage(){style.width = 8.0f;} +}; + + +#define LINES_MAX 20 +#define CHARS_MAX 128 +//メモ +class cmMemo: public cmBase +{ +private: + char strlst[LINES_MAX][CHARS_MAX]; +public: + tStyle style; + u32 lines;//行サイズ:strlen配列数以下であること + u32 parent;//親コンポーネントID +public: + cmMemo(); + bool setline(char *p,u16 ln); + char* line(u16 ln); + void clr(){ + for (int i=0;ipos.x)return false; + if (x >= (p->pos.x + p->size.x))return false; + if (y <= p->pos.y)return false; + if (y >= (p->pos.y + p->size.y))return false; + return true; +} + +//(2011.3.10)本体内蔵フォントに変更 +//作成時のフォントで画面位置を調整 + +#define setText(x,y,s) shf_DrawText_0(x,y,s) +#define setSize(sz) shf_SetSize(sz) + +void setColor(tCol *col) +{ + //s_RenderSystem.SetColor(col->r, col->g, col->b,col->a); + shf_SetColor(col->r,col->g,col->b,col->a); +} + +//void setSize(f32 sz) +//{ +// s_RenderSystem.SetFontSize(sz); +//} + +/* +#define FONT_CAPTION_SIZE 12 +//caption付きBox描画 +void drawBox(tU16xy top,tU16xy size,tStyle *st,char* str = 0) +{ + u16 xe = top.x + size.x -1; + u16 ye = top.y + size.y -1; + setColor(&st->color); + s_RenderSystem.SetLineWidth(st->width); + s_RenderSystem.DrawLine(top.x, top.y, xe, top.y); + s_RenderSystem.DrawLine(xe, top.y, xe, ye); + s_RenderSystem.DrawLine(xe, ye, top.x, ye); + s_RenderSystem.DrawLine(top.x, ye, top.x, top.y); + if (str != 0){ + int w = (size.x - strlen(str)*FONT_CAPTION_SIZE) >> 1; + int h = (size.y - FONT_CAPTION_SIZE) >> 1; + if ((w>0) && (h>0)){ + setSize(FONT_CAPTION_SIZE); + s_RenderSystem.DrawText(top.x + w,top.y + h,str); + } + } +} +*/ + +//上画面、メッセージ枠表示 +void drawBox(tU16xy top,tU16xy size,tStyle *st,char* str = 0) +{ + int i; + shf_SetScale(2.0f,2.0f); + setColor(&st->color); + for (i=0;i> 1; + h = (size.y - h) >> 1; + if ((w>0) && (h>0)){ + setText(top.x + w+10,top.y + h,str); + } + } + +} + +//下画面ボタン表示 +void drawBox2(tU16xy top,tU16xy size,tStyle *st,char* str = 0) +{ + int i; + setColor(&st->color); + shf_SetScale(2.0f,2.0f); + for (i=0;i> 1; + h = (size.y - h) >> 1; + if ((w>0) && (h>0)){ + setText(top.x + w+10,top.y + h+10,str); + } + } + +} + + + +//描画 +void drawDisp() +{ + //NN_LOG("draw\n"); + //上 + s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0); + s_RenderSystem.Clear(); + int i,j; + + for (i=0;ir = 0.0; + col->g = 0.0; + col->b = 0.0; + break; + case COLOR_GRAY: + col->r = 0.5f; + col->g = 0.5f; + col->b = 0.5f; + break; + case COLOR_RED: + col->r = 1.0f; + col->g = 0.0f; + col->b = 0.0f; + break; + case COLOR_BLUE: + col->r = 0.0f; + col->g = 0.0f; + col->b = 1.0f; + break; + case COLOR_GREEN: + col->r = 0.0f; + col->g = 1.0f; + col->b = 0.0f; + break; + case COLOR_YELLO: + col->r = 1.0f; + col->g = 1.0f; + col->b = 0.0f; + break; + case COLOR_WHITE: + col->r = 1.0f; + col->g = 1.0f; + col->b = 1.0f; + break; + case COLOR_PARPL: + col->r = 1.0f; + col->g = 0.0f; + col->b = 1.0f; + break; + case COLOR_SKY: + col->r = 0.5f; + col->g = 1.0f; + col->b = 1.0f; + break; + default: + col->r = 1.0f; + col->g = 1.0f; + col->b = 1.0f; + break; + } + col->a = 1.0f; +} + +//------------------ class code ---------------------------- + +nn::os::Thread s_thread; + +//thread +//void Gui::thUpdate() +void thUpdate(nn::os::LightEvent* pEvnt) +{ + nn::hid::PadReader padReader; + nn::hid::PadStatus padStatus; + nn::hid::TouchPanelStatus tpStatus; + tU16xy tpOld = {0,0}; + nn::hid::TouchPanelReader tpReader; + u32 value; + int i; + + while(1) + { + if (pEvnt->TryWait())break; + + if (s_Button.enable && (s_Button.callback !=0))//PADボタン + { + padReader.ReadLatest(&padStatus); + value = padStatus.trigger & s_Button.mask; + if (value)(*s_Button.callback)(value); + } + + tpReader.ReadLatest(&tpStatus);//タッチ + if((tpStatus.x != tpOld.x) || (tpStatus.y != tpOld.y)) + { + tpOld.x = tpStatus.x; + tpOld.y = tpStatus.y; + if (tpStatus.touch) + { + for (i=0;iClearSignal(); +} + + +Gui::~Gui() +{ + Finalize(); +} + + +//初期化、終了 +bool Gui::Initialize(uptr pHeap,u32 size,nn::os::LightEvent* pEvnt) +{ + if (Initialized)return false; + Initialized = true; + + //コンポーネントの初期化 + int i; + for (i=0;i< PANEL_MAX;i++)PanelEffective(i,false,false); + for (i=0;i< MEMO_MAX;i++)MemoEffective(i,false,false); + for (i=0;i< MESS_MAX;i++)MessEffective(i,false,false); + + //Render + s_RenderSystem.Initialize(pHeap, size); + + SharedFontInit(); + + //HID + nn::hid::Initialize(); + + //Thread + NN_LOG("Thread Start\n"); + nn::Result res =s_thread.TryStartUsingAutoStack(thUpdate,pEvnt,8192); + if (res.IsFailure()){ + NN_LOG("failed :res.desc = %d\n",res.GetDescription()); + return false; + } + + + + return true; +} + +void Gui::Finalize() +{ + if (Initialized != true) return; + if (s_thread.IsAlive()) + { + s_thread.Join(); + s_thread.Finalize(); + } + Initialized = false; + //nn::hid::Finalize(); + // nngxFinalize 関数呼び出しと VSync 割り込みが同時に発生すると + // 画面が暗転したまま止まる不具合を回避するために VSync 待ちを行う + nngxWaitVSync(NN_GX_DISPLAY_BOTH); + SharedFontFinalize(); + nngxWaitVSync(NN_GX_DISPLAY_BOTH); + s_RenderSystem.Finalize(); + +} + +void Gui::ButtonCallback(uptr adrs) +{ + s_Button.SetCallback(adrs); +} + +void Gui::ButtonMask(u32 mask) +{ + s_Button.mask = mask; + s_Button.enable = true; +} + +myResult Gui::PanelSet(const tPanel *panel) +{ + if (panel->id >= PANEL_MAX)return RESULT_BAD_PARAM; + s_Panel[panel->id].pos.x = panel->x; + s_Panel[panel->id].pos.y = panel->y; + s_Panel[panel->id].size.x = panel->width; + s_Panel[panel->id].size.y = panel->height; + //if (panel->caption[0] != 0 ) + s_Panel[panel->id].caption = panel->caption; + s_Panel[panel->id].SetCallback(panel->callback); + s_Panel[panel->id].scr = panel->scr; + s_Panel[panel->id].visible = false; + s_Panel[panel->id].enable = false; + return RESULT_OK; +} + +myResult Gui::PanelEffective(u8 id,bool enable,bool visible) +{ + if (id >= PANEL_MAX)return RESULT_BAD_PARAM; + s_Panel[id].enable = enable; + s_Panel[id].visible = visible; + return RESULT_OK; +} + +myResult Gui::PanelLineStyle(u8 id,eColor col,u8 width) +{ + if (id >= PANEL_MAX)return RESULT_BAD_PARAM; + ColorFromCode(col,&s_Panel[id].style.color); + s_Panel[id].style.width = width; + return RESULT_OK; +} + + +myResult Gui::MessEffective(u8 id,bool enable,bool visible) +{ + if (id >= MESS_MAX)return RESULT_BAD_PARAM; + s_Message[id].enable = enable; + s_Message[id].visible = visible; + return RESULT_OK; +} + + +myResult Gui::MessSet(const tMessage *mes) +{ + if ((mes->parent >= PANEL_MAX) || (mes->id >= MESS_MAX))return RESULT_BAD_PARAM; + s_Message[mes->id].pos.x = mes->x; + s_Message[mes->id].pos.y = mes->y; + s_Message[mes->id].caption = mes->str; + s_Message[mes->id].parent = mes->parent; + s_Message[mes->id].style.width = mes->size; + ColorFromCode(mes->color,&s_Message[mes->id].style.color); + s_Message[mes->id].visible = false; + s_Message[mes->id].enable = false; + return RESULT_OK; +} + +myResult Gui::MessStr(u8 id,char *str) +{ + if (id >= MESS_MAX)return RESULT_BAD_PARAM; + s_Message[id].caption = str; + return RESULT_OK; +} + +myResult Gui::MessCol(u8 id,eColor col) +{ + if (id >= MESS_MAX)return RESULT_BAD_PARAM; + ColorFromCode(col,&s_Message[id].style.color); + return RESULT_OK; +} + +myResult Gui::MemoSet(const tMemo *m) +{ + if ((m->parent >= PANEL_MAX) || (m->id >= MEMO_MAX))return RESULT_BAD_PARAM; + if (m->lines > LINES_MAX)return RESULT_BAD_PARAM; + s_Memo[m->id].lines = m->lines; + s_Memo[m->id].pos.x = m->x; + s_Memo[m->id].pos.y = m->y; + s_Memo[m->id].parent = m->parent; + s_Memo[m->id].style.width = m->size; + ColorFromCode(m->color,&s_Memo[m->id].style.color); + s_Memo[m->id].clr(); + s_Memo[m->id].visible = false; + s_Memo[m->id].enable = false; + return RESULT_OK; +} + +myResult Gui::MemoStr(u8 id,char *str,u16 ln) +{ + if ((id < MEMO_MAX) && s_Memo[id].setline(str,ln) )return RESULT_OK; + return RESULT_BAD_PARAM; +} + + +myResult Gui::MemoEffective(u8 id,bool enable,bool visible) +{ + if (id >= MEMO_MAX)return RESULT_BAD_PARAM; + s_Memo[id].enable = enable; + s_Memo[id].visible = visible; + return RESULT_OK; +} + + + +void Gui::Draw() +{ + //s_drawFlag = true; + drawDisp(); +} + + +void Gui::DisableAll() +{ + for (int i=0;i +#include +#include "../my_defs.h" + +typedef struct +{ + uptr callback; + char* caption; + u16 x,y; + u16 width,height; + u8 id; + u8 scr;//0:up,else down screen + u8 padding[2]; +}tPanel; + +typedef enum { + COLOR_BLACK, + COLOR_GRAY, + COLOR_RED, + COLOR_GREEN, + COLOR_BLUE, + COLOR_YELLO, + COLOR_WHITE, + COLOR_PARPL, + COLOR_SKY +}eColor; + +typedef struct +{ + char* str; + u16 x,y;//親の始点との相対 + eColor color;// + u8 size;//文字サイズ + u8 id; + u8 parent;//親コンポーネント指定 +}tMessage; + +typedef struct +{ + u16 lines;//表示行数 + u16 x,y;//親の始点との相対 + eColor color;//文字色 + u8 size;//文字サイズ + u8 id; + u8 parent;//親コンポーネント指定 +}tMemo; + + + +class Gui +{ +private: + bool Initialized; + +public: + Gui(){}; + ~Gui(); + bool Initialize(uptr pHeap,u32 size,nn::os::LightEvent* pEvnt); + void Finalize(); + void ButtonCallback(uptr adrs); + void ButtonMask(u32 mask); + myResult PanelSet(const tPanel *panel); + myResult MessSet(const tMessage *mes); + myResult MemoSet(const tMemo *m); + void Draw(); + void DisableAll(); + myResult PanelEffective(u8 id,bool enable=true,bool visible=true); + myResult MessEffective(u8 id,bool enable=true,bool visible=true); + myResult MemoEffective(u8 id,bool enable=true,bool visible=true); + myResult MessStr(u8 id,char *str); + myResult MessCol(u8 id,eColor col); + myResult MemoStr(u8 id,char *str,u16 ln); + myResult PanelLineStyle(u8 id,eColor col=COLOR_WHITE,u8 width = 2); + //void thUpdate(); +}; + + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/shfnt.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/shfnt.cpp new file mode 100644 index 0000000..db503c2 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/shfnt.cpp @@ -0,0 +1,350 @@ + +#include +#include +#include +#include +#include +#include + +#include "demo.h" + +const char s_ShaderBinaryFilePath[] = "rom:/nnfont_RectDrawerShader.shbin"; + +extern nn::fnd::ExpHeap appHeap; + +//--------------------------------------------------------------------------- +//! @brief シェーダの初期化を行います。 +//! +//! @param[in,out] pResource 描画用リソースを管理するオブジェクトへのポインタ。 +//--------------------------------------------------------------------------- +void* +InitShaders(nn::font::RectDrawer* pDrawer) +{ + const size_t ROMFS_BUFFER_SIZE = 1024 * 64; + static char buffer[ROMFS_BUFFER_SIZE]; + + nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE); + nn::fs::FileReader shaderReader(s_ShaderBinaryFilePath); + + const u32 fileSize = (u32)shaderReader.GetSize(); + + void* shaderBinary = appHeap.Allocate(fileSize); + NN_NULL_ASSERT(shaderBinary); + + shaderReader.Read(shaderBinary, fileSize); + + const u32 vtxBufCmdBufSize = + nn::font::RectDrawer::GetVertexBufferCommandBufferSize(shaderBinary, fileSize); + void *const vtxBufCmdBuf = appHeap.Allocate(vtxBufCmdBufSize); + NN_NULL_ASSERT(vtxBufCmdBuf); + pDrawer->Initialize(vtxBufCmdBuf, shaderBinary, fileSize); + + appHeap.Free(shaderBinary); + + shaderReader.Finalize(); + nn::fs::Unmount("rom:"); + return vtxBufCmdBuf; +} +/*---------------------------------------------------------------------------* + @brief グラフィックスの初期設定を行います。 + *---------------------------------------------------------------------------*/ +void +InitGX() +{ + glClearColor(0.3f, 0.3f, 0.3f, 1.0f); +} + + +//--------------------------------------------------------------------------- +//! @brief 描画の初期設定を行います。 +//! +//! @param[in] width 画面の幅。 +//! @param[in] height 画面の高さ。 +//--------------------------------------------------------------------------- +void +InitDraw( + int width, + int height +) +{ + // カラーバッファ情報 + // LCDの向きに合わせて、幅と高さを入れ替えています。 + const nn::font::ColorBufferInfo colBufInfo = { width, height, PICA_DATA_DEPTH24_STENCIL8_EXT }; + + const u32 screenSettingCommands[] = + { + + // ビューポートの設定 + NN_FONT_CMD_SET_VIEWPORT( 0, 0, colBufInfo.width, colBufInfo.height ), + + // シザー処理を無効 + NN_FONT_CMD_SET_DISABLE_SCISSOR( colBufInfo ), + + // wバッファの無効化 + // デプスレンジの設定 + // ポリゴンオフセットの無効化 + NN_FONT_CMD_SET_WBUFFER_DEPTHRANGE_POLYGONOFFSET( + 0.0f, // wScale : 0.0 でWバッファが無効 + 0.0f, // depth range near + 1.0f, // depth range far + 0, // polygon offset units : 0.0 で ポリゴンオフセットが無効 + colBufInfo), + }; + + nngxAdd3DCommand(screenSettingCommands, sizeof(screenSettingCommands), true); + + static const u32 s_InitCommands[] = + { + // カリングを無効 + NN_FONT_CMD_SET_CULL_FACE( NN_FONT_CMD_CULL_FACE_DISABLE ), + + // ステンシルテストを無効 + NN_FONT_CMD_SET_DISABLE_STENCIL_TEST(), + + // デプステストを無効 + // カラーバッファの全ての成分を書き込み可 + NN_FONT_CMD_SET_DEPTH_FUNC_COLOR_MASK( + false, // isDepthTestEnabled + 0, // depthFunc + true, // depthMask + true, // red + true, // green + true, // blue + true), // alpha + + // アーリーデプステストを無効 + NN_FONT_CMD_SET_ENABLE_EARLY_DEPTH_TEST( false ), + + // フレームバッファアクセス制御 + NN_FONT_CMD_SET_FBACCESS( + true, // colorRead + true, // colorWrite + false, // depthRead + false, // depthWrite + false, // stencilRead + false), // stencilWrite + }; + + nngxAdd3DCommand(s_InitCommands, sizeof(s_InitCommands), true); +} + +//--------------------------------------------------------------------------- +//! @brief ResFontを構築します。 +//! +//! @param[out] pFont 構築するフォントへのポインタ。 +//! @param[in] filePath ロードするフォントリソースファイル名。 +//! +//! @return ResFont構築の成否を返します。 +//--------------------------------------------------------------------------- +bool +InitFont( + nn::font::ResFont* pFont, + void* pBuffer +) +{ + // フォントリソースをセットします + bool bSuccess = pFont->SetResource(pBuffer); + + // 描画用バッファを設定します。 + const u32 drawBufferSize = nn::font::ResFont::GetDrawBufferSize(pBuffer); + void* drawBuffer = appHeap.Allocate(drawBufferSize, 4); + pFont->SetDrawBuffer(drawBuffer); + NN_NULL_ASSERT(drawBuffer); + + return bSuccess; +} + +//--------------------------------------------------------------------------- +//! @brief ResFontを破棄します。 +//! +//! @param[in] pFont 破棄するフォントへのポインタ。 +//--------------------------------------------------------------------------- +void +CleanupFont(nn::font::ResFont* pFont) +{ + // 描画用バッファの無効化 + // 描画用バッファがセットされているなら 構築時に SetDrawBuffer に渡したバッファへの + // ポインタが返ってきます。 + void *const drawBuffer = pFont->SetDrawBuffer(NULL); + if (drawBuffer != NULL) + { + appHeap.Free(drawBuffer); + } +} + +//--------------------------------------------------------------------------- +//! @brief 表示文字列用バッファを確保します。 +//! +//! @param[in] charMax 表示する文字列の最大文字数。 +//! +//! @return 確保した表示文字列用バッファへのポインタを返します。 +//--------------------------------------------------------------------------- +nn::font::DispStringBuffer* +AllocDispStringBuffer(int charMax) +{ + const u32 DrawBufferSize = nn::font::CharWriter::GetDispStringBufferSize(charMax); + void *const bufMem = appHeap.Allocate(DrawBufferSize); + NN_NULL_ASSERT(bufMem); + + return nn::font::CharWriter::InitDispStringBuffer(bufMem, charMax); +} + +//--------------------------------------------------------------------------- +//! @brief 文字列表示用にモデルビュー行列と射影行列を設定します。 +//! +//! @param[in] pDrawer RectDrawerオブジェクトへのポインタ。 +//! @param[in] width 画面の幅。 +//! @param[in] height 画面の高さ。 +//--------------------------------------------------------------------------- +void +SetupTextCamera( + nn::font::RectDrawer* pDrawer, + int width, + int height +) +{ + // 射影行列を正射影に設定 + { + // 左上原点とし、Y軸とZ軸の向きが逆になるように設定します。 + nn::math::MTX44 proj; + f32 znear = 0.0f; + f32 zfar = -1.0f; + f32 t = 0; + f32 b = static_cast(width); + f32 l = 0; + f32 r = static_cast(height); + nn::math::MTX44OrthoPivot(&proj, l, r, b, t, znear, zfar, nn::math::PIVOT_UPSIDE_TO_TOP); + pDrawer->SetProjectionMtx(proj); + } + + // モデルビュー行列を単位行列に設定 + { + nn::math::MTX34 mv; + nn::math::MTX34Identity(&mv); + pDrawer->SetViewMtxForText(mv); + } +} + +nn::font::RectDrawer drawer; +void *drawerBuf; +nn::font::DispStringBuffer *pDrawStringBuf0; +nn::font::DispStringBuffer *pDrawStringBuf1; +nn::font::ResFont font; +nn::font::TextWriter writer; +//--------------------------------------------------------------------------- +//! @brief ASCII文字列を描画します。 +//--------------------------------------------------------------------------- +void +shf_DrawText_0( u16 x,u16 y,char *s) +{ + writer.SetCursor(x, y); + + writer.StartPrint(); + (void)writer.Print(s); + writer.EndPrint(); + drawer.BuildTextCommand(&writer); + + + drawer.DrawBegin(); + + SetupTextCamera(&drawer, NN_GX_DISPLAY0_WIDTH, NN_GX_DISPLAY0_HEIGHT); + writer.UseCommandBuffer(); + + drawer.DrawEnd(); +} + +void shf_SetSize(f32 sz) +{ + writer.SetScale(sz/14,sz/20); +} + +void shf_SetScale(f32 h,f32 v) +{ + writer.SetScale(h,v); +} + + +void shf_SetFontSize(f32 sz) +{ + writer.SetFontSize(sz); +} + +f32 shf_GetFontWidth() +{ + return writer.GetFontWidth(); +} + +f32 shf_GetFontHeight() +{ + return writer.GetFontHeight(); +} + + +void shf_SetColor(f32 r,f32 g,f32 b,f32 a) +{ + writer.SetTextColor(nn::util::FloatColor(r,g,b,a)); +} + +//初期化 +//AppHeap確保、RenderSystem.Inititの後に呼ぶ +void SharedFontInit() +{ + + InitGX(); + + // 共有フォントの初期化 + NN_UTIL_PANIC_IF_FAILED(nn::pl::InitializeSharedFont()); + + // 共有フォントのロードが完了するまで待機 + while (nn::pl::GetSharedFontLoadState() != nn::pl::SHARED_FONT_LOAD_STATE_LOADED) + { + // 共有フォントのロードに失敗していないか確認 + if (nn::pl::GetSharedFontLoadState() == nn::pl::SHARED_FONT_LOAD_STATE_FAILED) + { + NN_TPANIC_("failed to load shared font!\n"); + } + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(1)); + } + + // 共有フォントの種類を取得 + //nn::pl::SharedFontType sharedFontType = nn::pl::GetSharedFontType(); + + // 共有フォントデータのアドレスを取得 + void* pFontBuffer = nn::pl::GetSharedFontAddress(); + + InitFont(&font, pFontBuffer); + + // 描画リソースの構築 + drawerBuf = InitShaders(&drawer); + + // 描画文字列用バッファの確保 + pDrawStringBuf0 = AllocDispStringBuffer(1024); + pDrawStringBuf1 = AllocDispStringBuffer(512); + + writer.SetDispStringBuffer(pDrawStringBuf0); + writer.SetFont(&font); + SetupTextCamera(&drawer, NN_GX_DISPLAY0_WIDTH, NN_GX_DISPLAY0_HEIGHT); + +} + + +void SharedFontFinalize() +{ + drawer.Finalize(); + + // 描画リソースの破棄 + appHeap.Free(drawerBuf); + + // フォントの破棄 + CleanupFont(&font); + + // 描画文字列用バッファの解放 + appHeap.Free(pDrawStringBuf1); + appHeap.Free(pDrawStringBuf0); + +} + + +/*---------------------------------------------------------------------------* + End of file + *---------------------------------------------------------------------------*/ diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/shfnt.h b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/shfnt.h new file mode 100644 index 0000000..912ae46 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/gui/shfnt.h @@ -0,0 +1,29 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: irp.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef GUI_SHFNT_H_ +#define GUI_SHFNT_H_ + +void SharedFontInit(); +void SharedFontFinalize(); +void shf_DrawText_0(u16 x,u16 y,char* s); +void shf_SetSize(f32 sz); +void shf_SetScale(f32 h,f32 v); +void shf_SetColor(f32 r,f32 g,f32 b,f32 a); +void shf_SetFontSize(f32 sz); +f32 shf_GetFontWidth(); +f32 shf_GetFontHeight(); + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/main.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/main.cpp new file mode 100644 index 0000000..f6b4d3a --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/main.cpp @@ -0,0 +1,1455 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: main.cpp + + Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include "./savefile/savefile.h" +#include "./savefile/savedata.h" +#ifdef BKUP_NOTMEM +#include "./savefile/exsave.h" +#else +#include "./savefile/membak.h" +#endif +#include "./screen/screen.h" +#include "../common/common.h" + +nn::fnd::ExpHeap appHeap; +uptr heapForGx; +//Gui gui; +myResult errRes; +#ifdef BKUP_NOTMEM +const u32 IconBuffSize = 1024*20; +uptr IconBuffer; +size_t IconSize; +#endif + +#ifdef DEBUG_ENABLE +cStrLst memo; +#endif +bool isDebugMode = false;//デバッグモード + +//char strBuff[128]; +//bool exist; + +SaveData savedata; +nn::os::LightEvent ejectEvnt(false); +nn::os::LightEvent insEvnt(false); +#ifdef BKUP_NOTMEM +ExSave exsave; +nn::os::LightEvent ejectEvntSd(false); +nn::os::LightEvent insEvntSd(false); +#else +MemBak exsave; +#endif + +//バックアップの状態 +bool Active,Formatted; +bool exActive,exFormatted; +tArcInfo arcInfo,arcInfo_ex;//アーカイブ情報 + +//プロダクトコードの一致 +bool isAgreePCode; +//ベリファイ結果 +//bool failveri; + +//Top画面エラー表示 +int tmerr; + + +#ifdef ENABLE_CRUSH +int CrashForDebug= 0; +#endif + + +//結果 +typedef enum { + SUCCESS + ,ERROR + ,CANCEL + ,INSEXIT +}RetCode; + +//挿抜イベント時に設定 +typedef enum { + InEx_None + ,InEx_InsCard + ,InEx_EjcCard +#ifdef BKUP_NOTMEM + ,InEx_InsSd + ,InEx_EjcSd +#endif +}tIsInsEject; + +tIsInsEject isInsEject; + +extern u8 scr_evnt; +void WaitUI(); +void PutError(ErcDev dev,int cd=0); + + +//終了処理 +void endfunc() +{ + + nn::fs::UnregisterCardEjectedEvent(); + nn::fs::UnregisterCardInsertedEvent(); + ejectEvnt.Finalize(); + insEvnt.Finalize(); +#ifdef BKUP_NOTMEM + nn::fs::UnregisterSdmcEjectedEvent(); + nn::fs::UnregisterSdmcInsertedEvent(); + ejectEvntSd.Finalize(); + insEvntSd.Finalize(); +#endif + + savedata.Finalize(); + exsave.Finalize(); + + ScrFinalize(); + +#ifdef BKUP_NOTMEM + appHeap.Free(reinterpret_cast(IconBuffer)); +#endif + +} + +//エラー停止 +void failstop() +{ + NN_LOG("fail %d,stop\n",errRes); + finish(); +} + +#ifdef DEBUG_ENABLE +//ログ追加&表示 +void LogAdd(char *s) +{ + memo.add(s); + if(isDebugMode){ + scr_DgbLog(&memo); + while(ScrGetDrawFlag()){ + nn::os::Thread::Yield();//表示 + } + } +} + +char dst[128],work[64]; +void LogAdd_Int(char *s,int i) +{ + sprintf(dst,s,i); + LogAdd(dst); +} + +void LogAdd_cat(char *s,char *s2) +{ + strcpy(dst,s); + strcat(dst,s2); + LogAdd(dst); +} + +void LogAdd_bytes(char *s,u8 *b,int n) +{ + int i; + for (i=0;i desc = %d",res.GetDescription()); +} + +void LogAdd_Fparam(tArcInfo *p) +{ + LogAdd_Int("FileCount %d",p->FileCount); + LogAdd_Int("DirCount %d",p->DirCount); + LogAdd_Int("FileEntry %d",p->FileEntry); + LogAdd_Int("DirEntry %d",p->DirEntry); +} + +void LogAdd_InfoParam(tArcInfo *p) +{ + LogAdd_Int("Version %d",p->Ver); + LogAdd_cat("> pcode = ",p->Pcode); + LogAdd_Fparam(p); +} +#else +void LogAdd(char *s) +{ + NN_UNUSED_VAR(s); +} + +void LogAdd_Int(char *s,int i) +{ + NN_UNUSED_VAR(s); + NN_UNUSED_VAR(i); +} + +void LogAdd_cat(char *s,char *s2) +{ + NN_UNUSED_VAR(s); + NN_UNUSED_VAR(s2); +} + +void LogAdd_bytes(char *s,u8 *b,int n) +{ + NN_UNUSED_VAR(s); + NN_UNUSED_VAR(b); + NN_UNUSED_VAR(n); +} + +void LogAdd_Res(nn::Result res) +{ + NN_UNUSED_VAR(res); +} + +void LogAdd_Fparam(tArcInfo *p) +{ + NN_UNUSED_VAR(p); +} + +void LogAdd_InfoParam(tArcInfo *p) +{ + NN_UNUSED_VAR(p); +} + +#endif + +char sts[64]; +//エラー表示 +void PutError(ErcDev dev,int cd) +{ + int desc,code; + nn::Result res; + switch (dev) + { + case ERC_DEV_CARD: res = savedata.LastNnResult;break; + case ERC_DEV_OUT: res = exsave.LastNnResult;break; + } + if(dev != ERC_DEV_OTHER)LogAdd_Res(res); + if(isDebugMode==false) + { + if ((cd ==0 ) && (dev != ERC_DEV_OTHER)) + { + desc = res.GetDescription(); + if (desc < 100 ) code = ERC_UNKNOWN;//キー検索完了 .. ありえない + else if (desc < 180 ) code = ERC_READ;//ファイルが見つからないか不正 + else if (desc < 200 ) code = ERC_WRITE_OW;//ファイルが存在 .. 削除失敗? + else if (desc < 220 ) code = ERC_WRITE_NS;//空きが無い + else if (desc < 260 ) code = ERC_ACCESS;//操作拒否 + else if (desc < 280 ) code = ERC_WRITE_PROTECT;//書き込み禁止 + else if (desc < 340 ) code = ERC_ACCESS;//アクセスエラー + else if (desc < 390 ) code = ERC_FORMAT;//フォーマットエラー + else if (desc < 400 ) code = ERC_SDK_VERIFI;//改竄 + else if (desc < 580 ) code = ERC_ROM;//ROM情報エラー + else if (desc < 590 ) code = ERC_RETRY;//リトライ要求 + else if (desc < 600 ) code = ERC_UNKNOWN;//CCI,CXI不正 .. ありえない + else if (desc < 900 ) code = ERC_EXEC;//実行時エラー、ソフトバグ + else code = ERC_FATAL;//本体に問題の可能性 + }else code = cd; + sprintf(sts,"ERROR %d",dev+code); + scr_Status(sts,COLOR_RED); + } + +} + + +//-------------------------------------------------- Verifi +wchar_t file_pathw[MAX_PATH_LENGTH]; +char file_path[MAX_PATH_LENGTH]; +//ドライバの仕様で速度的に4バイトアラインした方がいい(SDK 0.14.23 時点) +char fileBuffer[512] NN_ATTRIBUTE_ALIGN(4);//検証が512単位なので +char fileBuffer_ex[512] NN_ATTRIBUTE_ALIGN(4); +#define FILEBUFF_SIZE sizeof(fileBuffer) + +bool Verifi() +{ + myResult res; + int ct,i,msize,rsize; + s64 total=0; + + LogAdd("Verifi"); + + //セーブデータのマウント + LogAdd("Mount savedata"); + res = savedata.Mount(); + if(res != RESULT_OK){ + PutError(ERC_DEV_CARD); + return false; + } + +/* + if(isDebugMode==false) scr_Status("Ready to Verifi",COLOR_YELLO); + //情報ファイル + LogAdd("Directry Info"); + if(savedata.GetInfo(&arcInfo)==false) + { + LogAdd("> get fail");//有効な情報ファイルがない + savedata.Unmount(); + PutError(ERC_DEV_CARD); + return ERROR; + } + LogAdd_Fparam(&arcInfo); +*/ + + //出力デバイスのマウント +#ifdef BKUP_NOMEM //フラグ間違えチェック用に表示分け + LogAdd("Mount Device");//不揮発メディア +#else + LogAdd("memory setup");//メモリ保存 +#endif + + res = exsave.Mount(); + if(res != RESULT_OK){ + PutError(ERC_DEV_OUT); + return false; + } + + //情報ファイル + LogAdd("Directry Info(out)"); + if (exsave.GetInfo(&arcInfo_ex)) + { + //todo:フォーマット変更時はバージョンチェック入れる + LogAdd_InfoParam(&arcInfo_ex); + }else { + LogAdd("> get fail");//有効な情報ファイルがない + savedata.Unmount(); + exsave.Unmount(); + return false; + } + + //フォーマット情報の比較 + if ((arcInfo.DirEntry != arcInfo_ex.DirEntry) || + (arcInfo.FileEntry != arcInfo_ex.FileEntry) || + (arcInfo.Dup != arcInfo_ex.Dup)) + { + LogAdd("> verifi fail");//有効な情報ファイルがない + PutError(ERC_DEV_OUT,ERC_VERIFI); + savedata.Unmount(); + exsave.Unmount(); + return false; + } + + ct =0; + if (arcInfo.FileCount == 0)//ファイルが無い + { + LogAdd("> no files"); + savedata.Unmount(); + exsave.Unmount(); + return true;//フォーマット一致のみ + }else{ + LogAdd("-- file compair --"); + if(isDebugMode==false) scr_Status("file compairing",COLOR_YELLO); + savedata.ResetPath(); + exsave.ResetPath(); + s64 fsize; + res = RESULT_OK; + while(res==RESULT_OK){ + res = savedata.GetPath(file_pathw); + if (res != RESULT_OK) + { + LogAdd("failed to get path"); + if (res == RESULT_DIR_LEVEL_OVER){ + LogAdd("Dir Level Over"); + break; + } + if (res == RESULT_PATH_LENGTH_OVER){ + LogAdd("path name too long"); + break; + } + res = RESULT_FAIL_OPEN; + break; + } + if (file_pathw[0] == 0){LogAdd("end");break;}//root then end + if (ct>=arcInfo.FileCount) + {//カウンタ壊れ、メモリフローの可能性 + LogAdd("memory error"); + res = RESULT_FAIL; + break; + } +#ifdef DEBUG_ENABLE + wcstombs(file_path,file_pathw,510); + LogAdd(file_path); +#endif + if(isDebugMode==false) scr_CountPerMax(ct,arcInfo.FileCount); + if (savedata.Open(file_pathw)==false) + { + LogAdd("Open Error(card)"); + res = RESULT_FAIL_OPEN; + break; + } + fsize = savedata.FileSize; + total += fsize; + if (exsave.Open(file_pathw)==false) + { + LogAdd("Open Error(out)"); + res = RESULT_FAIL_OPENW; + //savedata.Close(); + break; + } + if (fsize != exsave.FileSize)//file size + { + res = RESULT_FAIL; + break; + } + msize=fsize; + if(msize <= FILEBUFF_SIZE ){//一回で読めるサイズならゲージは出さない + if(isDebugMode==false) scr_CountPerMax2(0,0,-1); + } + while(fsize) + { + if(msize > FILEBUFF_SIZE ){ + if(isDebugMode==false) scr_CountPerMax2(msize-fsize,msize,0); + } + if (fsize > FILEBUFF_SIZE) + { + rsize = FILEBUFF_SIZE; + fsize -= FILEBUFF_SIZE; + }else{ + rsize = fsize; + fsize = 0; + } + if(savedata.Read(fileBuffer,rsize) != rsize ) + { + //中身のデータが作成サイズに満たない場合に検証エラーとなる対策 + //読めないブロックは置き換える + //検証は512単位でされるので読めてるとこまで置き換えないよう + //リードサイズは512にしておく + if(nn::fs::ResultVerificationFailed::Includes(savedata.LastNnResult)) + { + for (i = 0; i < rsize; i++) + { + fileBuffer[i] = 0;//0埋め + } + }else{ + LogAdd("Read Error(card)"); + res = RESULT_FAIL_READ; + break; + } + } + if(exsave.Read(fileBuffer_ex,rsize) != rsize ) + { + LogAdd("Read Error(out)"); + res = RESULT_FAIL; + break; + } + } + savedata.Close(); + exsave.Close(); + //verifi + for (i = 0;i detect"); + if(exsave.Delete()) LogAdd("> deleted"); + else{ + savedata.Unmount(); + LogAdd("delete failed"); + PutError(ERC_DEV_OUT); + return ERROR; + } + }else{ + LogAdd("not found"); + } + + if(isDebugMode==false)scr_Status("Create Backup",COLOR_YELLO); + LogAdd("Create bkup"); +#ifdef BKUP_NOTMEM + res = exsave.Create((void*)IconBuffer,IconSize + ,arcInfo.DirEntry+1,arcInfo.FileEntry+1);//管理情報 +#else + res = exsave.Create(0,0,arcInfo.DirEntry+1,arcInfo.FileEntry+1);//管理情報 +#endif + + if (res != RESULT_OK){ + savedata.Unmount(); + PutError(ERC_DEV_OUT); + return ERROR; + } + + if (arcInfo.FileCount == 0)//ファイルが無い + { + LogAdd("> no files"); + if(isDebugMode==false)scr_Status("no files",COLOR_YELLO); + savedata.Unmount(); + exsave.Unmount(); + return SUCCESS;//フォーマットのみ + }else{ + LogAdd("-- file copy --"); + if(isDebugMode==false)scr_Status("file copying",COLOR_SKY); + savedata.ResetPath(); + s64 fsize; + res = RESULT_OK; + while(res==RESULT_OK){ + res = savedata.GetPath(file_pathw); + if (res != RESULT_OK) + { + LogAdd("failed to get path"); + if (res == RESULT_DIR_LEVEL_OVER){ + LogAdd("Dir Level Over"); + PutError(ERC_DEV_CARD,ERC_DIRDEPTH); + break; + } + if (res == RESULT_PATH_LENGTH_OVER){ + LogAdd("path name too long"); + PutError(ERC_DEV_CARD,ERC_PATH); + break; + } + res = RESULT_FAIL_OPEN; + break; + } + if (file_pathw[0] == 0){LogAdd("end");break;}//root then end + if (ct>=arcInfo.FileCount) + {//カウンタ壊れ、メモリフローの可能性 + LogAdd("memory error"); + res = RESULT_FAIL; + break; + } +#ifdef DEBUG_ENABLE + wcstombs(file_path,file_pathw,510); + LogAdd(file_path); +#endif + if(isDebugMode==false) scr_CountPerMax(ct,arcInfo.FileCount); + if (savedata.Open(file_pathw)==false) + { + LogAdd("Open Error(card)"); + res = RESULT_FAIL_OPEN; + break; + } + fsize = savedata.FileSize; + total += fsize; + if (exsave.OpenW(file_pathw,fsize)==false) + { + LogAdd("Open Error(sd)"); + res = RESULT_FAIL_OPENW; + //savedata.Close(); + break; + } + + msize=fsize; + while(fsize) + { + if(msize > FILEBUFF_SIZE * 2){ + if(isDebugMode==false) scr_CountPerMax2(msize-fsize,msize,0); + } + if (fsize>FILEBUFF_SIZE) + { + rsize = FILEBUFF_SIZE; + fsize -= FILEBUFF_SIZE; + }else{ + rsize = fsize; + fsize = 0; + } + if(savedata.Read(fileBuffer,rsize) != rsize ) + { + //中身のデータが作成サイズに満たない場合に検証エラーとなる対策 + //読めないブロックは置き換える + //検証は512単位でされるので読めてるとこまで置き換えないよう + //リードサイズは512にしておく + if(nn::fs::ResultVerificationFailed::Includes(savedata.LastNnResult)) + { + for (int i = 0; i < rsize; i++) + { + fileBuffer[i] = 0;//0埋め + } + }else{ + LogAdd("Read Error(card)"); + res = RESULT_FAIL_READ; + break; + } + } + if(exsave.Write(fileBuffer,rsize) != rsize ) + { + LogAdd("Write Error(bkup)"); + res = RESULT_FAIL_WRITE; + break; + } + } + savedata.Close(); + exsave.CloseW(); + //todo: ゲージ表示 + ct++; + } + savedata.Close(); + exsave.CloseW(); + } + + if (res == RESULT_OK){ + //フォーマット情報を記録 + //Exsaveに2重化が無いので情報取得APIでは不足 - 2011.1 現在 + //プロダクトコードを追加(2011.1.26) + //バージョンを追加(2011.1.27) + LogAdd("save systemfile"); + if (exsave.OpenSysW()) + { + strcpy(arcInfo.Pcode,savedata.PrdCode); + if(exsave.WriteSys(&arcInfo)){ + LogAdd("> done"); + }else{ + LogAdd("> write fail"); + res = RESULT_FAIL_WRITE; + } + }else{ + LogAdd("> open fail"); + res = RESULT_FAIL_OPENW; + } + exsave.CloseSysW(); + } + savedata.Unmount(); + //exsave.Commit(); Nandはコミット入れる(NAND未実装->MEM変更、今後も不要?) + exsave.Unmount(); + LogAdd_Int("> %d files",ct); + if(isDebugMode==false){ + scr_CountPerMax(ct,arcInfo.FileCount); + scr_CountPerMax2(0,0,total); + } + +//結果 + switch(res) + { + case RESULT_OK: + if (Verifi()==false)return ERROR; + if(isDebugMode==false) scr_Status("Complate",COLOR_WHITE); + return SUCCESS; + case RESULT_FAIL_WRITE: + case RESULT_FAIL_OPENW: + PutError(ERC_DEV_OUT); + exsave.Delete();//バックアップを削除 + return ERROR; + case RESULT_FAIL_READ: + case RESULT_FAIL_OPEN: + PutError(ERC_DEV_CARD); + exsave.Delete();//バックアップを削除 + return ERROR; + } + //その他、実行時エラー + PutError(ERC_DEV_OTHER); + return ERROR; +} + +bool mkdir; +//---------------------------------------------------------------- SD->CARD +RetCode Sd2Card() +{ + myResult res; + int ct=0,msize,rsize; + s64 total = 0; + + LogAdd("-- write savedata --"); + + if(isDebugMode == false){ + scr_RestoreYesNo();//実行確認 + WaitUI();//入力待ち + if(isInsEject != InEx_None ){//挿抜? + //isInsEject = InEx_None; + return INSEXIT;//挿抜による中断 + } + if (scr_evnt != EVNT_YES)return CANCEL;//キャンセル + } + if(isDebugMode==false){ + scr_Restore();//画面表示 + scr_Status("Check Backup",COLOR_YELLO); + } + //保存先のマウント + LogAdd("Mount bkup"); + res = exsave.Mount(); + if(res != RESULT_OK){ + PutError(ERC_DEV_OUT); + return ERROR; + } + + //セーブデータのフォーマット&マウント + if(isDebugMode==false)scr_Status("Card savedata Create",COLOR_YELLO); + LogAdd("Format savedata"); + res = savedata.Format(&arcInfo);//_exの方がいいかも + if(res != RESULT_OK){ + exsave.Unmount(); + PutError(ERC_DEV_CARD); + return ERROR; + } + + //パラメータはバックアップ時 + //Top画面開始時、挿入イベントで取得 + if (arcInfo.FileCount == 0)//ファイルが無い + { + LogAdd("> no files"); + savedata.Unmount(); + exsave.Unmount(); + return SUCCESS;//フォーマットのみ + }else{ + LogAdd("-- file restore --"); + if(isDebugMode==false)scr_Status("file copying",COLOR_PARPL); + exsave.ResetPath(); + s64 fsize; + res = RESULT_OK; + while(res==RESULT_OK){ + res = exsave.GetPath(file_pathw); + if (res != RESULT_OK) + { + LogAdd("failed to get path"); + if (res == RESULT_DIR_LEVEL_OVER){ + LogAdd("Dir Level Over"); + break; + } + if (res == RESULT_PATH_LENGTH_OVER){ + LogAdd("path name too long"); + break; + } + res = RESULT_FAIL_OPEN; + break; + } + if (file_pathw[0] == 0){LogAdd("end");break;}//root then end + if (ct>=arcInfo.FileCount) + {//カウンタ壊れ、メモリフローの可能性 + LogAdd("memory error"); + res = RESULT_FAIL; + break; + } +#ifdef DEBUG_ENABLE + wcstombs(file_path,file_pathw,510); + LogAdd(file_path);//todo:デバグ表示オーバ対策 +#endif + if(isDebugMode==false) scr_CountPerMax(ct,arcInfo.FileCount); + if (exsave.Open(file_pathw)==false) + { + LogAdd("Open Error(bkup)"); + res = RESULT_FAIL_OPEN; + break; + } + fsize = exsave.FileSize; + total += fsize; +#ifdef ENABLE_CRUSH + //デバグ用に違うファイル名にする + if (CrashForDebug & 2)wcscat(file_pathw,L"D"); +#endif + int rev = 0; + while(1){ + if (savedata.OpenW(file_pathw,fsize,&mkdir)==false) + { + if(mkdir)//ディレクトリのみ作成 + {//深い場合に作成が多いと画面が止まるので + LogAdd("Dir create"); + rev++; + if (rev & 1)scr_MessOnCount2("Create Directry -"); + else scr_MessOnCount2("Create Directry |"); + + }else{ + LogAdd("Open Error(card)"); + res = RESULT_FAIL_OPENW; + //exsave.Close(); + break; + } + }else break; + } + if (res != RESULT_OK)break; + + msize = fsize; + int itvl = 0; + while(fsize) + { + if(isDebugMode==false) + if(msize > FILEBUFF_SIZE * 2){ + scr_CountPerMax2(msize-fsize,msize,0); + if (++itvl & 1)scr_Status("file copying |",COLOR_PARPL); + else scr_Status("file copying -",COLOR_PARPL); + + }else scr_MessOnCount2(""); + + if (fsize>FILEBUFF_SIZE) + { + rsize = FILEBUFF_SIZE; + fsize -= FILEBUFF_SIZE; + }else{ + rsize = fsize; + fsize = 0; + } + if(exsave.Read(fileBuffer,rsize) != rsize ) + { + LogAdd("Read Error(bkup)"); + res = RESULT_FAIL_READ; + break; + } +#ifdef ENABLE_CRUSH + //デバグ用にデータを壊す + if (CrashForDebug & 1)//中身 + { + int i; + for (i = 0;i %d files",ct); + if(isDebugMode==false){ + scr_CountPerMax(ct,arcInfo.FileCount); + scr_CountPerMax2(0,0,total); + } + +//結果 + switch(res){ + case RESULT_OK: + if (Verifi()==false)return ERROR; +#ifdef SUCCESS_DELETE + if(exsave.Delete()){//バックアップを削除 + LogAdd("> deleted"); +#endif + if(isDebugMode==false) scr_Status("Complate",COLOR_WHITE); + return SUCCESS; +#ifdef SUCCESS_DELETE + }else{ + LogAdd("> delete fail"); + PutError(ERC_DEV_OUT); + return ERROR; + } +#endif + case RESULT_FAIL_WRITE: + case RESULT_FAIL_OPENW: + PutError(ERC_DEV_CARD); + return ERROR; + case RESULT_FAIL_READ: + case RESULT_FAIL_OPEN: + PutError(ERC_DEV_OUT); + return ERROR; + } + //その他、実行時エラー + PutError(ERC_DEV_OTHER); + return ERROR; +} + + +//メモリ保存では不要 +#ifdef BKUP_NOTMEM +//------------------------------------------------------------------ アイコンデータ +//NAND起動で失敗は無いはず +void ReadIcon() +{ + const size_t ROMFS_BUFFER_SIZE = 1024 * 64; + static char buffer[ROMFS_BUFFER_SIZE]; + nn::Result res; + + Active = false; + Formatted = false; + + //Iconデータ + //NN_LOG("ICON Data Read\n"); + LogAdd("Mount Rom"); + nn::fs::FileReader RomFsFile; + res = nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE); + if (res.IsFailure()) + { + //NN_LOG("failed :res.desc = %d\n",res.GetDescription()); + //failstop(); + LogAdd("> failed"); + LogAdd_Res(res); + return; + } + LogAdd("Read Icon data"); + res = RomFsFile.TryInitialize(L"rom:/def.icn"); + if (res.IsFailure()) + { + //NN_LOG("failed :res.desc = %d\n",res.GetDescription()); + nn::fs::Unmount("rom:"); + //failstop(); + LogAdd("> open failed"); + LogAdd_Res(res); + return; + } + //s32 gs = RomFsFile.GetSize(); + //NN_LOG("Icon Size = %d\n",gs); + res = RomFsFile.TryRead((s32*)&IconSize,(void*)IconBuffer,IconBuffSize); + if (res.IsFailure()) + { + //NN_LOG("failed :res.desc = %d\n",res.GetDescription()); + //RomFsFile.Finalize(); + nn::fs::Unmount("rom:"); + //failstop(); + LogAdd("> read failed"); + LogAdd_Res(res); + return; + } + //NN_LOG("Read Size = %d\n",IconSize); + RomFsFile.Finalize(); + nn::fs::Unmount("rom:"); + +} +#endif + +//--------------------------------------------------------------- セーブデータの情報取得 +//呼ぶ前に tmerr のクリアを忘れない事 +void CheckSaveDataState() +{ + myResult myres; + + + Formatted = false;//フォーマット + Active = false; + //failveri = false; + + LogAdd("get pcode"); + if (savedata.GetPrdCode()) + { + LogAdd_cat("> pcode = ",savedata.PrdCode); + LogAdd("check savedata"); + myres = savedata.IsExist(); + if (myres != RESULT_FAIL) + { + Active = true;//アクセス可能 + switch(myres){ + case RESULT_OK: + LogAdd("> exist"); + Formatted=true; + break; + case RESULT_NO_MEDIA: + LogAdd("> Media not found"); + tmerr |= SDATA_ERRPUT_MEDIA; + break; + case RESULT_NOT_FAUND: + LogAdd("> not Found"); + break; + case RESULT_SDK_VERIFI: + LogAdd("> sdk verifi err"); + //failveri = true; + tmerr |= SDATA_ERRPUT_VERIFI; + break; + default: + LogAdd("> Not/Bad Format"); + break; + } + }else{ + LogAdd("> Invalid state"); + LogAdd_Res(savedata.LastNnResult); + } + }else + { + LogAdd("> fail"); + } + scr_PrdCode(savedata.PrdCode); + //プロダクトコードのチェック + isAgreePCode = strcmp(savedata.PrdCode,arcInfo.Pcode)==0; +} + +void CheckExSaveState() +{ + LogAdd("check exsave"); +#ifdef BKUP_NOTMEM + exActive = nn::fs::IsSdmcInserted(); +#else + exActive = true; +#endif + if (exActive){ + exFormatted = exsave.IsExist(); + if (exFormatted){ + LogAdd("> exist"); + if (exsave.GetInfo(&arcInfo)) + { + LogAdd_InfoParam(&arcInfo); + //todo:フォーマット変更時はバージョンチェック入れる + }else { + LogAdd("> sysdata none");//有効な情報ファイルがない + //arcInfo.Pcode[0] = 0; + exFormatted = false; + } + exsave.Unmount(); + }else{ + LogAdd("> not found"); + //arcInfo.Pcode[0] = 0; + } + }else{ + LogAdd("> not inserted"); + //arcInfo.Pcode[0] = 0; + exFormatted = false; + } + if (exFormatted==false) arcInfo.Pcode[0] = 0; + scr_PrdCodeEx(arcInfo.Pcode); + //プロダクトコードのチェック + isAgreePCode = strcmp(savedata.PrdCode,arcInfo.Pcode)==0; +} + + +//---------------------------------------------------------------- 入力待ち +void WaitUI() +{ + tmerr = 0; + scr_Draw();//画面更新 + scr_evnt = EVNT_NONE; + while(scr_evnt == EVNT_NONE) + { + nn::os::Thread::Yield();//スレッド実行 + //scr_GetEvnt();//入力イベント + + CheckSysBreak();//中断処理 + + //挿抜を検知したら中断して抜ける + //トップ以外ではトップメニューへ戻るようする + if (ejectEvnt.TryWait()){ + LogAdd("Card Ejected");//状態表示:抜け + CheckSaveDataState(); + isInsEject = InEx_EjcCard; + return; + } + if (insEvnt.TryWait()){ + LogAdd("Card Inserted");//状態表示:挿入 + CheckSaveDataState(); + isInsEject = InEx_InsCard; + return; + } +#ifdef BKUP_NOTMEM + if (ejectEvntSd.TryWait()){ + LogAdd("SD Ejected");//状態表示:抜け + CheckExSaveState(); + isInsEject = InEx_EjcSd; + return; + } + if (insEvntSd.TryWait()){ + LogAdd("SD Inserted");//状態表示:挿入 + CheckExSaveState(); + isInsEject = InEx_InsSd; + return; + } +#endif + } + ScrClr();//画面消去 + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(500));//チャタ対策 +} + +tColStr mess_ReadError = {"[Read] is failed",COLOR_RED}; +tColStr mess_WriteError = {"[Write] is failed",COLOR_RED}; +tColStr mess_ReadOk = {"[Read] is Success",COLOR_GREEN}; +tColStr mess_WriteOk = {"[Write] is Success",COLOR_GREEN}; +tColStr mess_PullOut = {"Pull Out",COLOR_RED}; +tColStr mess_ChkDev = {"check device",COLOR_RED}; +tColStr mess_Insexit = {"Detect Insert or pull out",COLOR_RED}; +tColStr mess_WhenExc = {"When you exchange device",COLOR_WHITE}; +tColStr mess_PoffSys = {"PowerOff or return Top Menu",COLOR_WHITE}; + +//---------------------- main loop -------------------------- +void nnMain() +{ + int i; + myResult mres; + RetCode retc; + tColStr *colstr[4]; + colstr[2] = &mess_WhenExc; + colstr[3] = &mess_PoffSys; + isDebugMode = false; + isInsEject = InEx_None; + + //NN_LOG("Start\n"); + nn::os::Initialize(); + nn::fs::Initialize(); + + //DEA-SUPにて推奨のフリーズ暫定対策:無線デーモンを停止 (2011.3.1 現在) + //ただし、スリープ時の"いつのまに通信"は止まらない + //無線は使わないが念の為、本体スイッチで切っとくのが確実 + nn::ndm::SuspendScheduler(); + + //中断処理の準備 + InitSysBreak((uptr)endfunc); + // グラフィックスライブラリの初期化は、以降で行わなければならない + // 他、アプリケーションの初期化処理 + + //Heap + appHeap.Initialize(nn::os::GetDeviceMemoryAddress(), + nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR); + const u32 GxHeapSize = 0x800000; + heapForGx = reinterpret_cast(appHeap.Allocate(GxHeapSize)); +#ifdef BKUP_NOTMEM + IconBuffer = reinterpret_cast(appHeap.Allocate(IconBuffSize)); +#endif + //画面初期化 + if (ScrInitialize(heapForGx,GxHeapSize) == false)failstop(); +#ifdef DEBUG_ENABLE + memo.clr(); + memo.setbuttom(ScrDbgLogGetMax()-1);//表示行数でリスト数を制限 +#endif + ejectEvnt.ClearSignal(); + insEvnt.ClearSignal(); + nn::fs::RegisterCardEjectedEvent(&ejectEvnt); + nn::fs::RegisterCardInsertedEvent(&insEvnt); +#ifdef BKUP_NOTMEM + ejectEvntSd.ClearSignal(); + insEvntSd.ClearSignal(); + nn::fs::RegisterSdmcEjectedEvent(&ejectEvntSd); + nn::fs::RegisterSdmcInsertedEvent(&insEvntSd); + ReadIcon(); //アイコンデータの読込 +#endif + + // スリープ要求に対する返答を有効にする + // また、蓋の状態チェックを行い蓋が閉じられているならスリープ要求が発生する + nn::applet::EnableSleep(true); + + LogAdd("-- start --"); + + extern u8 scr_evnt; + while(1) + { + tmerr = 0; + CheckSaveDataState(); //セーブデータの状態取得 + CheckExSaveState(); //同バックアップ +#ifdef DEBUG_ENABLE + //トップメニュー + if (isDebugMode){ + scr_TopMenuDbg(Formatted,Active); + scr_DgbLog(&memo); + while(ScrGetDrawFlag()){ + nn::os::Thread::Yield();//表示 + } + }else +#endif + if (isAgreePCode==false) tmerr |= SDATA_ERRPUT_PCODE; +// scr_TopMenu(Formatted,Active,exFormatted,exActive,isAgreePCode,failveri); + scr_TopMenu(Formatted,Active,exFormatted,exActive,tmerr); + + + WaitUI();//入力待ち + if (isInsEject != InEx_None){ + ScrClr();//画面消去 + isInsEject= InEx_None; + }else + switch(scr_evnt) + { + case EVNT_PUSH_B: + case EVNT_NONE: + break; + case EVNT_PUSH_Y: +#ifdef ENABLE_CRUSH + CrashForDebug++; + CrashForDebug &= 3; +#endif + break; + case EVNT_SEL_READ://リード + NN_LOG("select read\n"); + retc = Card2Sd(); + switch (retc){ + case SUCCESS: + //CheckExSaveState(); //状態の更新 + if (isDebugMode){ + colstr[1] = &mess_ReadOk; + scr_SuccessQuitDbg(&colstr[1]);//成功とQuitボタン + }else scr_ResultQuit("Success",COLOR_GREEN);//成功とQuitボタン + break; + case INSEXIT: + //scr_InsExitQuit();//挿抜検知表示 & Quit + ScrClr();//画面消去 + scr_Backup(); +#ifdef DEBUG_ENABLE + if (isDebugMode){ + colstr[1] = &mess_PullOut; + scr_ErrorQuitDbg(&colstr[1]);//エラーとQuitボタン + }else +#endif + { + if (isInsEject == InEx_EjcCard)PutError(ERC_DEV_CARD,ERC_DEVICE); +#ifdef BKUP_NOTMEM + else if (isInsEject == InEx_EjcSd)PutError(ERC_DEV_OUT,ERC_DEVICE); +#endif + else PutError(ERC_DEV_OTHER); + scr_ResultQuit("Break",COLOR_RED);//エラーとQuitボタン + } + break; + case CANCEL: + //scr_ResultQuit("Canseled",COLOR_YELLO);//キャンセル + break; + default://errors +#ifdef DEBUG_ENABLE + if (isDebugMode){ + colstr[0] = &mess_ReadError; + colstr[1] = &mess_ChkDev; + scr_ErrorQuitDbg(colstr);//エラーとQuitボタン + }else +#endif + scr_ResultQuit("Failed",COLOR_RED);//エラーとQuitボタン + break; + } + if (retc == CANCEL)break; + //isInsEject = InEx_None; + while(1){ + WaitUI(); + if (isInsEject != InEx_None){ + isInsEject = InEx_None; + } + if(scr_evnt==EVNT_QUIT)break; + if(scr_evnt==EVNT_PUSH_B)break; + } + break; + case EVNT_SEL_WRITE://リストア + NN_LOG("select write\n"); + retc = Sd2Card(); + switch (retc){ + case SUCCESS: + //CheckSaveDataState(); //状態の更新 + //CheckExSaveState(); + if (isDebugMode){ + colstr[1] = &mess_WriteOk; + scr_SuccessQuitDbg(&colstr[1]);//成功とQuitボタン + }else scr_ResultQuit("Success",COLOR_GREEN);//成功とQuitボタン + break; + case INSEXIT: + //scr_InsExitQuit();//挿抜検知表示 & Quit + ScrClr();//画面消去 + scr_Backup(); +#ifdef DEBUG_ENABLE + if (isDebugMode){ + colstr[1] = &mess_PullOut; + scr_ErrorQuitDbg(&colstr[1]);//エラーとQuitボタン + }else +#endif + { + if (isInsEject == InEx_EjcCard)PutError(ERC_DEV_CARD,ERC_DEVICE); +#ifdef BKUP_NOTMEM + else if (isInsEject == InEx_EjcSd)PutError(ERC_DEV_OUT,ERC_DEVICE); +#endif + else PutError(ERC_DEV_OTHER); + scr_ResultQuit("Break",COLOR_RED);//エラーとQuitボタン + } + break; + case CANCEL: + //scr_ResultQuit("Canseled",COLOR_YELLO);//キャンセル + break; + default://errors +#ifdef DEBUG_ENABLE + if (isDebugMode){ + colstr[0] = &mess_WriteError; + colstr[1] = &mess_ChkDev; + scr_ErrorQuitDbg(colstr);//エラーとQuitボタン + }else +#endif + scr_ResultQuit("Failed",COLOR_RED);//エラーとQuitボタン + break; + } + if (retc == CANCEL)break; + while(1){ + WaitUI(); + if (isInsEject != InEx_None){ + isInsEject= InEx_None; + } + if(scr_evnt==EVNT_QUIT)break; + if(scr_evnt==EVNT_PUSH_B)break; + } + break; +/* case EVNT_SEL_END: + NN_LOG("select end\n"); + finish(); + break; + case EVNT_NO: + NN_LOG("select NO\n"); + break; + case EVNT_YES: + NN_LOG("select NO\n"); + break; +*/ + case EVNT_PUSH_L:// ----------------------------------------- 表示の切り替え + case EVNT_PUSH_DOWN_Y:// ----------------------------------------- 表示の切り替え +#ifdef DEBUG_ENABLE + isDebugMode = (isDebugMode == false); +#endif + break; + + case EVNT_PUSH_LEFT_X:// ------------------------------------- LEFT + X + //バックアップ削除 + scr_DelConf();//実行確認 + WaitUI(); + if (scr_evnt != EVNT_YES)break; + exsave.Delete(); + //CheckExSaveState(); //状態更新 + break; + + case EVNT_PUSH_R:// ------------------------------------------- R + //CARD(NAND)へテストファイル書き込み + //デバグモード時のみ + bool flg; + scr_ConfirmDbg("dummy savedata write OK?");//実行確認 + WaitUI(); + if (scr_evnt != EVNT_YES)break; + for ( i =0;i failed"); + LogAdd_Res(savedata.LastNnResult); + LogAdd_Int("%d",mres); + break; + } + + i= 2; + LogAdd("create"); + while(i){ + sprintf(file_path,"dir%d/file%d",i,i); + LogAdd(file_path); + mbstowcs(file_pathw,file_path,510); + if (savedata.OpenW(file_pathw,FILEBUFF_SIZE,&flg)==false) + { + LogAdd("> Open Error"); + break; + } + if(savedata.Write(fileBuffer,FILEBUFF_SIZE)!=FILEBUFF_SIZE) + { + LogAdd("> Write failed"); + break; + } + savedata.CloseW(); + i--; + } + i=2; + while(i){ + sprintf(file_path,"dir%d/dir%d/file%d",i,i,i); + LogAdd(file_path); + mbstowcs(file_pathw,file_path,510); + if (savedata.OpenW(file_pathw,FILEBUFF_SIZE,&flg)==false) + { + LogAdd("> Open Error"); + break; + } + if(savedata.Write(fileBuffer,FILEBUFF_SIZE)!=FILEBUFF_SIZE) + { + LogAdd("> Write failed"); + break; + } + savedata.CloseW(); + + sprintf(file_path,"dir%d/dir%d/file%d",i,i,i+2); + LogAdd(file_path); + mbstowcs(file_pathw,file_path,510); + if (savedata.OpenW(file_pathw,FILEBUFF_SIZE,&flg)==false) + { + LogAdd("> Open Error"); + break; + } + if(savedata.Write(fileBuffer,FILEBUFF_SIZE)!=FILEBUFF_SIZE) + { + LogAdd("> Write failed"); + break; + } + savedata.CloseW(); + i--; + } + savedata.CloseW(); + savedata.Commit(); + savedata.Unmount(); + //CheckSaveDataState(); //カード状態更新 + break; + default: + NN_LOG("menu error\n"); + failstop(); + break; + } + }//while() + +} + +/*---------------------------------------------------------------------------* + End of file + *---------------------------------------------------------------------------*/ + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/my_defs.h b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/my_defs.h new file mode 100644 index 0000000..c79645d --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/my_defs.h @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: irp.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef MYDEFS_H_ +#define MYDEFS_H_ + +//デバグモード有効化 +//#define DEBUG_ENABLE 1 + +//リストア成功時消去 +#define SUCCESS_DELETE 1 + +//SD使用時 +//#define BKUP_NOTMEM 1 + +//データ壊すモード有効 +//#define CRUSH_ENABLE 1 + + +//エラー表示コード +enum { +ERC_UNKNOWN = 0, //不明 +ERC_DEVICE, //デバイスが見つからない(カード抜け) +ERC_PRODCODE,//プロダクトコード不一致 +ERC_VERIFI,//ベリファイエラー +ERC_PATH,//パスが長すぎ +ERC_DIRDEPTH,//ディレクトリ深すぎ +ERC_MEDIA, //メディアが見つからない(サブ基盤外れなど) +//ERC_PULLOUT,//抜け検出 +ERC_READ = 10, //ファイルが見つからない +ERC_WRITE_OW = 20, //既に存在 +ERC_WRITE_NS, //空き容量がない +ERC_WRITE_PROTECT, //書込み禁止 +ERC_ACCESS = 30, //アクセスエラー +ERC_FORMAT = 50, //フォーマットエラー +ERC_SDK_VERIFI = 60, //検証に失敗、改竄 +ERC_ROM = 70, //ROM情報エラー +ERC_RETRY = 80, //リトライ要求 +ERC_EXEC = 90, //実行時エラー +ERC_FATAL = 99 //深刻なエラー +}; + +typedef enum{ +ERC_DEV_CARD = 100, +ERC_DEV_OUT = 200, +ERC_DEV_OTHER = 300 +}ErcDev; + + +//内部使用のエラー +typedef enum { + RESULT_OK, + RESULT_FAIL, + RESULT_FAIL_OPEN, + RESULT_FAIL_OPENW, + RESULT_FAIL_DELETE, + RESULT_FAIL_CREATE, + RESULT_FAIL_READ, + RESULT_FAIL_WRITE, + RESULT_FAIL_MOUNT, + RESULT_FAIL_FORMAT, + RESULT_FAIL_GETDIR, + RESULT_NOT_FAUND, + RESULT_NO_MEDIA, + RESULT_NOT_FORMAT, + RESULT_BAD_FORMAT, + RESULT_SDK_VERIFI, + RESULT_FILE_EXIST, + RESULT_NO_EXSAVE, + RESULT_ALREADY_MOUNT, + RESULT_INVALID_FILE, + RESULT_BAD_PARAM, + RESULT_DIR_LEVEL_OVER, + RESULT_PATH_LENGTH_OVER, + RESULT_MAX +}myResult; + + + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/exsave.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/exsave.cpp new file mode 100644 index 0000000..309ca80 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/exsave.cpp @@ -0,0 +1,301 @@ +#include +#include +#include +#include <../fs/fs_ResultPrivate.h> +#include "exsave.h" + +#define OWN_UID 0xf8014 +const char *exsaveName = "exsave:"; +const wchar_t *exsaveRoot_w = L"exsave:/save/"; +const char *exsaveRoot = "exsave:/save/"; +#define ROOTLENGTH_EX 8 +const wchar_t *exsaveSys_w = L"exsave:/ncl_sysdata.ncl";//暫定 +#define PATHLENGTH_MAX_EX 512 +wchar_t expath_w[PATHLENGTH_MAX_EX];//パス名 +wchar_t expathu_w[100][PATHLENGTH_MAX_EX];//上層パス名 +wchar_t expathw_w[PATHLENGTH_MAX_EX];//パス名ワーク +#define MAX_LEVEL_EX 128 +static nn::fs::DirectoryEntry exdcEntry[MAX_LEVEL_EX]; +static nn::fs::Directory exdc[MAX_LEVEL_EX]; + + +//拡張セーブデータ +//存在確認 +bool ExSave::IsExist() +{ + LastNnResult = nn::fs::MountExtSaveData(exsaveName,OWN_UID); + nn::fs::Unmount(exsaveName); + return LastNnResult.IsSuccess(); +} + +//パス検索位置のリセット +void ExSave::ResetPath() +{ + s_lv=0; + s_serch = false; + wcscpy(expath_w,exsaveRoot_w); + //wcscpy(expathu_w,expath_w); +} + + +myResult ExSave::GetPath(wchar_t *path) +{ + int n; + while(1){ + if (s_serch==false){ + LastNnResult = exdc[s_lv].TryInitialize(expath_w);//Open + if (LastNnResult.IsFailure()){ + return RESULT_FAIL; + } + } + while(1){ + n = (exdc[s_lv].Read(&exdcEntry[s_lv],1)); + if ( n==0 )//終端 + { + exdc[s_lv].Finalize(); + if (s_lv == 0){path[0]=0;return RESULT_OK;}// ---- rootなら終了 + s_lv--;//上の層に戻る + wcscpy(expath_w,expathu_w[s_lv]);//パス戻す + }else{ + if(exdcEntry[s_lv].attributes.isDirectory){//ディレクトリ + //m_info.DirCount++; + wcscpy(expathu_w[s_lv],expath_w);//パス保存 + wcscat(expath_w,exdcEntry[s_lv].entryName);//次のディレクトリパス + wcscat(expath_w,L"/"); + if (++s_lv == MAX_LEVEL_EX)return RESULT_DIR_LEVEL_OVER; + s_serch = false; + break; + }else{//ファイル + //m_info.FileCount++; + s_serch = true; + wcscpy(path,pPathTop); + wcscat(path,exdcEntry[s_lv].entryName); + return RESULT_OK; + } + } + } + } + +} + + +//削除 +bool ExSave::Delete() +{ + LastNnResult = nn::fs::DeleteExtSaveData(OWN_UID); + //if (nn::fs::ResultNotFound().Includes(LastNnResult))return RESULT_NOT_FOUND; + return LastNnResult.IsSuccess(); +} + +//セーブ作成、成功時はマウント状態 +myResult ExSave::Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile) +{ + if ( IsMounted )return RESULT_ALREADY_MOUNT; + LastNnResult = nn::fs::CreateExtSaveData(OWN_UID,icon,iconSize,entryDir,entryFile); + if (LastNnResult.IsFailure())return RESULT_FAIL_CREATE; + LastNnResult = nn::fs::MountExtSaveData(exsaveName,OWN_UID); + if (LastNnResult.IsFailure())return RESULT_FAIL_MOUNT; + LastNnResult = nn::fs::TryCreateDirectory(exsaveRoot_w); + if (LastNnResult.IsFailure()){ + nn::fs::Unmount(exsaveName); + return RESULT_FAIL_MOUNT; + } + IsMounted = true; + return RESULT_OK; +} +//マウント +myResult ExSave::Mount() +{ + if ( IsMounted )return RESULT_ALREADY_MOUNT; + LastNnResult = nn::fs::MountExtSaveData(exsaveName,OWN_UID); + if (LastNnResult.IsFailure()){ + return RESULT_FAIL_MOUNT; + } + IsMounted = true; + return RESULT_OK; +} +void ExSave::Unmount() +{ + IsMounted = false; + nn::fs::Unmount(exsaveName); +} +//ライト属性ファイルを閉じる +void ExSave::CloseW() +{ + writer.Finalize(); +} + +//ファイルライト +s32 ExSave::Write(char *buffer,size_t size) +{ + s32 ct; + LastNnResult = writer.TryWrite(&ct,(void*)buffer,size); + if(LastNnResult.IsFailure())ct=0; + return ct; +} + + +//管理用ファイル +//ライト属性で開く +bool ExSave::OpenSysW() +{ + LastNnResult = nn::fs::TryCreateFile(exsaveSys_w,sizeof(tArcInfo)); + LastNnResult = writerSys.TryInitialize(exsaveSys_w,false); + return LastNnResult.IsSuccess(); +} +//ライト属性ファイルを閉じる +void ExSave::CloseSysW() +{ + writerSys.Finalize(); +} +//システムファイルライト +bool ExSave::WriteSys(tArcInfo *pinfo) +{ + s32 ct; + pinfo->Ver = INFO_VERSION; + LastNnResult = writerSys.TryWrite(&ct,(void*)pinfo,sizeof(tArcInfo)); + return LastNnResult.IsSuccess(); +} +//リード属性で開く +bool ExSave::OpenSysR() +{ + LastNnResult = readerSys.TryInitialize(exsaveSys_w); + return LastNnResult.IsSuccess(); +} +//ライト属性ファイルを閉じる +void ExSave::CloseSysR() +{ + readerSys.Finalize(); +} +//ファイルリード +bool ExSave::ReadSys(tArcInfo *pinfo) +{ + s32 ct; + LastNnResult = readerSys.TryRead(&ct,(void*)pinfo,sizeof(tArcInfo)); + return LastNnResult.IsSuccess(); +} + + + + +//ライト属性ファイルを開く +bool ExSave::OpenW(wchar_t *path,s64 size) +{ + int pos,pos2; + + wcscpy(expath_w,exsaveRoot_w); + wcscat(expath_w,path); + while(1){ + LastNnResult = nn::fs::TryCreateFile(expath_w,size); + if(LastNnResult.IsSuccess())break; + //ディレクトリがなければディレクトリを作成 + pos = GetPosDelmLast(expath_w,ROOTLENGTH_EX);//ファイルが存在するディレクトリ + if (pos <= 0)return false;//rootかパスが不正 + //while (1){ + wcscpy(expathw_w,expath_w);//ワークにコピー + while (LastNnResult.IsFailure()){//ディレクトリ作成できるまで遡る + if(LastNnResult.GetDescription()!=nn::fs::DESCRIPTION_DBM_DIRECTORY_NOT_FOUND)return false; + pos2 = GetPosDelmLast(expathw_w,ROOTLENGTH_EX);//境界位置を探す + if (pos2 == 0)return false;//root到達 + expathw_w[pos2] = 0;//境界まで削除 (例) dir1/dir2/file -> dir1/dir2 -> dir1 + LastNnResult = nn::fs::TryCreateDirectory(expathw_w); + } + //if (pos2 == pos)break;//配置ディレクトリなら抜ける + //todo:ディレクトリが深いとき時間がかかるなら、無駄なTryCreateを省く + //案)直上から最初の成功までのデリミタ位置を記録 + //先に全ディレクトリ作っておくのがよさげ + //} + } + LastNnResult = writer.TryInitialize(expath_w,false); + return LastNnResult.IsSuccess(); +} + +//ファイルリード +s32 ExSave::Read(char *buffer,size_t size) +{ +// if (IsMounted==false)return 0; + s32 ct; + LastNnResult = reader.TryRead(&ct,(void*)buffer,size); + if(LastNnResult.IsFailure())ct=0; + return ct; +} + + +void ExSave::Close() +{ + reader.Finalize(); +} + + +//ファイルを開く +//パス指定はルート以降 +//(ex)data:/dir/file -> dir/file +bool ExSave::Open(wchar_t *path) +{ + wcscpy(expathw_w,exsaveRoot_w); + wcscat(expathw_w,path); + LastNnResult = reader.TryInitialize(expathw_w); + if (LastNnResult.IsSuccess()) + { + LastNnResult = reader.TryGetSize(&FileSize); + if (LastNnResult.IsSuccess())return true; + else Close(); + } + return false; +} + +//アーカイブ情報の取得 +bool ExSave::GetInfo(tArcInfo *pinfo) +{ + if(Mount()==RESULT_FAIL_MOUNT)return false; + //システムデータからフォーマット情報 + if (OpenSysR()) + { + if(ReadSys(pinfo) == false){ + pinfo->Pcode[0]=0; + CloseSysR();//クローズ + Unmount(); + return false; + } + }else{ + Unmount(); + return false; + } + CloseSysR();//クローズ +// Unmount(); +//#ifdef INFO_API_USE +//API情報と比較 +// LastNnResult = nn::fs::GetExtSaveDataFormatInfo(OWN_UID,&m_info.FileEntry,&m_info.DirEntry); +// if (m_info.FileEntry != pinfo->FileEntry)return false; +// if (m_info.DirEntry != pinfo->DirEntry)return false; +// //if (m_info.Dup != pinfo->Dup)return false; //ExSaveには無い +//#endif + return true; +} + + +//コンストラクタ +ExSave::ExSave() +{ + IsMounted = false; + s_lv=0; + m_info.DirCount = 0; + m_info.FileCount = 0; + m_info.DirEntry = 0; + m_info.FileEntry = 0; + wcscpy(expath_w,exsaveRoot_w); + //wcscpy(expathu_w,expath_w); + pPathTop = (wchar_t*)((u32)&expath_w+strlen(exsaveRoot)*2); +} + +void ExSave::Finalize() +{ + Close(); + Unmount(); +} +//デストラクタ +ExSave::~ExSave() +{ + Finalize(); +} + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/exsave.h b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/exsave.h new file mode 100644 index 0000000..0806d88 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/exsave.h @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: irp.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef EXSAVE_H_ +#define EXSAVE_H_ + +#include +#include +#include "../my_defs.h" +#include "savefile.h" + +class ExSave +{ +public: + s64 FileSize; + nn::Result LastNnResult; +private: + nn::fs::FileReader reader; + nn::fs::FileWriter writer; + nn::fs::FileReader readerSys; + nn::fs::FileWriter writerSys; + wchar_t *pPathTop; + tArcInfo m_info; + int s_lv; + int exrootlen; + bool IsMounted; + bool s_serch; +public: + ExSave(); + ~ExSave(); + void Finalize(); + myResult Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile); + myResult CreateSys(const void* icon,size_t iconSize); + myResult Mount(); + myResult MountSys(); + bool IsExist(); + void Unmount(); + bool Delete(); + void CloseW(); + bool OpenW(wchar_t *path,s64 size); + bool OpenSysW();//暫定 + void CloseSysW();//暫定 + bool OpenSysR();//暫定 + void CloseSysR();//暫定 + s32 Write(char *buffer,size_t size); + bool WriteSys(tArcInfo *pinfo); + bool ReadSys(tArcInfo *pinfo); + void ResetPath(); + s32 Read(char *buffer,size_t size); + void Close(); + bool Open(wchar_t *path); + myResult GetPath(wchar_t *path); + bool GetInfo(tArcInfo *pinfo); +}; + + + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/membak.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/membak.cpp new file mode 100644 index 0000000..cc54973 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/membak.cpp @@ -0,0 +1,228 @@ +#include +#include +#include +#include +#include "membak.h" + +using namespace nn; + +namespace +{ + const size_t BUFFER_SIZE = 10 * 1024 * 1024; + bit8 s_Buffer[BUFFER_SIZE] NN_ATTRIBUTE_ALIGN(32); +} + +bool info_alive; + +//-------------------------------------------------------------------- +// + + +//RXgN^ +MemBak::MemBak() +{ + m_Exists = false; + m_pBuffer = s_Buffer; + m_pBufferPos = s_Buffer; + m_pBufferSize = sizeof(s_Buffer); + LastNnResult = ResultSuccess(); + ResetPath(); + + info_alive = false; +} + +void MemBak::Finalize() +{ +} +//fXgN^ +MemBak::~MemBak() +{ +} + + + + + +//-------------------------------------------------------------------- +// mount, unmount, create, delete + +//gZ[uf[^ +//݊mF +bool MemBak::IsExist() +{ + return m_Exists; +} + +//Z[u쐬A̓}Eg +myResult MemBak::Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile) +{ + NN_UNUSED_VAR(icon); + NN_UNUSED_VAR(iconSize); + + if ( m_IsMounted ) + { + return RESULT_ALREADY_MOUNT; + } + + m_NumDirEntry = entryDir; + m_NumFileEntry = entryFile; + + m_Exists = true; + m_IsMounted = true; + return RESULT_OK; +} + +//폜 +bool MemBak::Delete() +{ + m_Exists = false; + info_alive = false; + m_pBufferPos = m_pBuffer; + return true; +} + +//}Eg +myResult MemBak::Mount() +{ + if ( m_IsMounted ) + { + return RESULT_ALREADY_MOUNT; + } + + m_IsMounted = true; + return RESULT_OK; +} +void MemBak::Unmount() +{ + m_IsMounted = false; +} + + + + +//-------------------------------------------------------------------- +// SetInfo, GetInfo + +//A[JCu̎擾 +bool MemBak::GetInfo(tArcInfo *pinfo) +{ + if (info_alive==false)return false; + *pinfo = m_ArcInfo; + return true; +} + + +//Ǘpt@C +//CgŊJ +bool MemBak::OpenSysW() +{ + return true; +} +//Cgt@C‚ +void MemBak::CloseSysW() +{ +} + +//VXet@CCg +bool MemBak::WriteSys(tArcInfo *pinfo) +{ + info_alive = true; + pinfo->Ver = INFO_VERSION; + m_ArcInfo = *pinfo; + return true; +} + + + + +//-------------------------------------------------------------------- +// Traverse + +//pXʒũZbg +void MemBak::ResetPath() +{ + m_pFind = reinterpret_cast(m_pBuffer); +} + + +myResult MemBak::GetPath(wchar_t *path) +{ + if( m_pFind->IsEnd() ) + { + path[0] = '\0'; + return RESULT_OK; + } + + std::wcscpy(path, m_pFind->GetName()); + m_pFind = m_pFind->GetNext(); + + return RESULT_OK; +} + + + + +//-------------------------------------------------------------------- +// Write + +//Cgt@C‚ +void MemBak::CloseW() +{ +} + +//t@CCg +s32 MemBak::Write(char *buffer,size_t size) +{ + return m_ForWrite.Write(buffer, size); +} + + + +//Cgt@CJ +bool MemBak::OpenW(wchar_t *path,s64 size) +{ + m_ForWrite.Init(reinterpret_cast(m_pBufferPos)); + m_ForWrite.Set(path, size); + m_pBufferPos = reinterpret_cast(m_ForWrite.GetNext()); + return true; +} + +//-------------------------------------------------------------------- +// Read + +//t@C[h +s32 MemBak::Read(char *buffer,size_t size) +{ + return m_ForRead.Read(buffer, size); +} + + +void MemBak::Close() +{ +} + + +//t@CJ +//pXw̓[gȍ~ +//(ex)data:/dir/file -> dir/file +bool MemBak::Open(wchar_t *path) +{ + EntryHeader* pE = reinterpret_cast(m_pBuffer); + + while( ! pE->IsEnd() ) + { + if( pE->Match(path) ) + { + m_ForRead.Init(pE); + FileSize = m_ForRead.GetSize(); + return true; + } + + pE = pE->GetNext(); + } + + return false; +} + +//-------------------------------------------------------------------- + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/membak.h b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/membak.h new file mode 100644 index 0000000..d3c8677 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/membak.h @@ -0,0 +1,189 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: irp.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef MEMBAK_H_ +#define MEMBAK_H_ + +#include +#include +#include "../my_defs.h" +#include "savefile.h" +#include + +class MemBak +{ +public: + s64 FileSize; + NN_PADDING4; + nn::Result LastNnResult; +private: + struct EntryHeader + { + s16 nameSize; + NN_PADDING2; + s32 dataSize; + s32 nextOffset; + + EntryHeader* GetNext() + { + return reinterpret_cast( + reinterpret_cast(this) + nextOffset); + } + bit8* GetDataPointer() + { + return reinterpret_cast(this + 1) + nameSize; + } + const wchar_t* GetName() const + { + return reinterpret_cast( + reinterpret_cast(this + 1)); + } + void SetName(const wchar_t* name) + { + s32 len = std::wcslen(name); + nameSize = len * 2 + 2; + std::memcpy(this + 1, name, nameSize); + } + void SetSize(size_t size) + { + dataSize = size; + } + s32 GetSize() const + { + return dataSize; + } + void SetNext() + { + nextOffset = nn::math::RoundUp(sizeof(*this) + nameSize + dataSize, 4); + } + bool Match(const wchar_t* p) + { + return std::wcscmp(p, GetName()) == 0; + } + bool IsEnd() const + { + return nameSize == 0; + } + }; + struct FileState + { + EntryHeader* pE; + s32 pos; + + void Init(EntryHeader* p) + { + pE = p; + pos = 0; + } + void Set(const wchar_t* name, size_t size) + { + pE->SetName(name); + pE->SetSize(size); + pE->SetNext(); + pE->GetNext()->nameSize = 0; + } + s32 GetSize() const { return pE->GetSize(); } + EntryHeader* GetNext() + { + return pE->GetNext(); + } + bit8* GetCurrentPointer() + { + return pE->GetDataPointer() + pos; + } + s32 GetRemain() const + { + return pE->dataSize - pos; + } + void Advance(s32 size) + { + pos += size; + } + s32 Write(const void* p, size_t size) + { + s32 remain = GetRemain(); + if( remain <= 0 ) + { + return 0; + } + + s32 copySize = nn::math::Min(remain, size); + std::memcpy(GetCurrentPointer(), p, copySize); + Advance(copySize); + + return copySize; + } + s32 Read(void* p, size_t size) + { + s32 remain = GetRemain(); + if( remain <= 0 ) + { + return 0; + } + + s32 copySize = nn::math::Min(remain, size); + std::memcpy(p, GetCurrentPointer(), copySize); + Advance(copySize); + + return copySize; + } + }; + + tArcInfo m_ArcInfo; + FileState m_ForRead; + FileState m_ForWrite; + + bool m_Exists; + bool m_IsMounted; + NN_PADDING2; + bit8* m_pBuffer; + size_t m_pBufferSize; + bit8* m_pBufferPos; + EntryHeader* m_pFind; + + u32 m_NumDirEntry; + u32 m_NumFileEntry; + +public: + MemBak(); + ~MemBak(); + void Finalize(); + myResult Create(const void* icon,size_t iconSize,u32 entryDir,u32 entryFile); + myResult CreateSys(const void* icon,size_t iconSize); + myResult Mount(); +// myResult MountSys(); + bool IsExist(); + void Unmount(); + bool Delete(); + void CloseW(); + bool OpenW(wchar_t *path,s64 size); + bool OpenSysW();//b + void CloseSysW();//b +// bool OpenSysR();//b +// void CloseSysR();//b + s32 Write(char *buffer,size_t size); + bool WriteSys(tArcInfo *pinfo); +// bool ReadSys(tArcInfo *pinfo); + void ResetPath(); + s32 Read(char *buffer,size_t size); + void Close(); + bool Open(wchar_t *path); + myResult GetPath(wchar_t *path); + bool GetInfo(tArcInfo *pinfo); +}; + + + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savedata.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savedata.cpp new file mode 100644 index 0000000..715bd7f --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savedata.cpp @@ -0,0 +1,445 @@ +#include +#include +#include +#include "savedata.h" +#include +//#include <../fs/fs_ApiSysSaveData.h> +//#include <../fs/ctr/mpcore/fs_FileSystemBasePrivate.h> +#include +#include +#include + +#define MAX_LEVEL 256 +//static nn::fs::DirectoryEntry dcEntry[MAX_LEVEL]; +//static nn::fs::Directory dc[MAX_LEVEL]; +int dc_readed[MAX_LEVEL];//リード済みエントリ数 + +//生成時のデバイス名を超えるとパス長上限をこえる +//可能性があるので1文字にする(無用な心配かも) +const wchar_t *sdataRoot_w = L"s:/"; +#define ROOTLENGTH 3 +const char *sdataName = "s:"; +const wchar_t *Dummy_w = L"ncltool"; +//char path[512];//パス名 +static bool IsMounted; +wchar_t path_w[MAX_PATH_LENGTH];//パス名 +wchar_t pathu_w[MAX_LEVEL][MAX_PATH_LENGTH];//パス名履歴 +wchar_t pathw_w[MAX_PATH_LENGTH];//パス名ワーク + +//#define SysSaveId 0x20300 + +//セーブ作成、成功時はマウント状態 +myResult SaveData::Format(tArcInfo *pinfo) +{ + if ( IsMounted )return RESULT_ALREADY_MOUNT; +#ifdef USE_SYS_SAVE + LastNnResult = nn::fs::CreateSystemSaveData( + SysSaveId,pinfo->FileEntry,pinfo->DirEntry,0x100000,pinfo->Dup); + if (LastNnResult.IsFailure())return RESULT_FAIL_FORMAT; +#else + LastNnResult = nn::fs::FormatCtrCardSaveData(pinfo->FileEntry,pinfo->DirEntry,pinfo->Dup); + if (LastNnResult.IsFailure())return RESULT_FAIL_FORMAT; +#endif + if ( Mount() != RESULT_OK )return RESULT_FAIL_MOUNT; + IsMounted = true; + return RESULT_OK; +} + +void SaveData::ResetPath() +{ + s_lv=0; + s_serch = false; + wcscpy(path_w,sdataRoot_w); + for (int n = 0;nMAX_PATH_LENGTH - 1)return RESULT_PATH_LENGTH_OVER; + wcscat(path,dcEntryl.entryName); + return RESULT_OK; + } + } + } + +} + +//アンマウント +void SaveData::Unmount() +{ + if(IsMounted){ + IsMounted = false; + nn::fs::Unmount(sdataName); + } +} + +//バックアップの存在チェック +myResult SaveData::IsExist(){ + myResult res; + res = Mount(); + Unmount(); + return res; +} +/* +//アーカイブ情報の取得 +bool SaveData::GetInfo(tArcInfo *pinfo) +{ + + //strcpy(path,readerRoot); + s_lv=0; + m_info.DirCount = 0; + m_info.FileCount = 0; + m_info.DirEntry = 0; + m_info.FileEntry = 0; + m_info.Dup = false; + wcscpy(path_w,sdataRoot_w); + //wcscpy(pathu_w,path_w); + + int n; + int lv = 0; + bool cont = true; + while(cont){ + LastNnResult = dc[lv].TryInitialize(path_w);//Open + if (LastNnResult.IsFailure())return false; + while(1){ + n = (dc[lv].Read(&dcEntry[lv],1)); + if ( n==0 )//終端 + { + dc[lv].Finalize(); + if (lv == 0){cont=false;break;}// ---- 終了 + lv--;//上の層に戻る + wcscpy(path_w,pathu_w[lv]);//パス戻す + }else{ + if(dcEntry[lv].attributes.isDirectory){//ディレクトリ + m_info.DirCount++; + wcscpy(pathu_w[lv],path_w);//パス保存 + wcscat(path_w,dcEntry[lv].entryName);//次のディレクトリパス + wcscat(path_w,L"/"); + if (++lv == MAX_LEVEL)return false; + break; + }else{//ファイル + m_info.FileCount++; + } + } + } + } + +#ifndef INFO_API_USE + //アーカイブのエントリ数 + // .. APIまでの暫定 + m_info.DirEntry = m_info.DirCount; + m_info.FileEntry = m_info.FileCount; +#else +//API使用 +#ifdef USE_SYS_SAVE + size_t sz; + LastNnResult = nn::fs::GetSystemSaveDataFormatInfo(SysSaveId, &m_info.FileEntry, &m_info.DirEntry, &sz, &m_info.Dup); +#else + //LastNnResult = nn::fs::GetSaveDataFormatInfo(&m_info.FileEntry,&m_info.DirEntry,&m_info.Dup); + LastNnResult = nn::fs::GetCtrCardSaveDataFormatInfo(&m_info.FileEntry,&m_info.DirEntry,&m_info.Dup); +#endif + if (LastNnResult.IsFailure())return false; + +#endif + + *pinfo = m_info;//構造体コピー + return true; + +} +*/ +//アーカイブ情報の取得 +bool SaveData::GetInfo(tArcInfo *pinfo) +{ +static nn::fs::DirectoryEntry dcEntryl; +static nn::fs::Directory dcl; + + //strcpy(path,readerRoot); + s_lv=0; + m_info.DirCount = 0; + m_info.FileCount = 0; + m_info.DirEntry = 0; + m_info.FileEntry = 0; + m_info.Dup = false; + wcscpy(path_w,sdataRoot_w); + //wcscpy(pathu_w,path_w); + + int n; + int lv = 0; + for (n = 0;n dir/file +bool SaveData::Open(wchar_t *path) +{ + wcscpy(pathw_w,sdataRoot_w); + wcscat(pathw_w,path); + LastNnResult = reader.TryInitialize(pathw_w); + if (LastNnResult.IsSuccess()) + { + LastNnResult = reader.TryGetSize(&FileSize); + if (LastNnResult.IsSuccess())return true; + else Close(); + } + return false; +} + +bool SaveData::OpenW(wchar_t *path,s64 size,bool *mkdir) +{ + int pos,pos2; + + wcscpy(path_w,sdataRoot_w); + wcscat(path_w,path); + *mkdir = false; + //while(1){ + LastNnResult = nn::fs::TryCreateFile(path_w,size); + if(LastNnResult.IsSuccess()) + { + LastNnResult = writer.TryInitialize(path_w,false); + return LastNnResult.IsSuccess(); + } + //ディレクトリがなければディレクトリを作成 + pos = GetPosDelmLast(path_w,ROOTLENGTH);//ファイルが存在するディレクトリ + if (pos <= 0)return false;//rootかパスが不正 + //while (1){ + wcscpy(pathw_w,path_w);//ワークにコピー + while (LastNnResult.IsFailure()){//ディレクトリ作成できるまで遡る + if(LastNnResult.GetDescription()!=nn::fs::DESCRIPTION_DBM_DIRECTORY_NOT_FOUND)return false; + pos2 = GetPosDelmLast(pathw_w,ROOTLENGTH);//境界位置を探す + if (pos2 == 0)return false;//root到達 + pathw_w[pos2] = 0;//境界まで削除 (例) dir1/dir2/file -> dir1/dir2 -> dir1 + LastNnResult = nn::fs::TryCreateDirectory(pathw_w); + } + //作成ディレクトリ多いと画面止まるので、作成ごとに抜ける + *mkdir = true; // 帰値:false で mkdir=true ならディレクトリ作成のみ + return false; + //if (pos2 == pos)break;//配置ディレクトリなら抜ける + //todo:ディレクトリが深いとき時間がかかるなら、無駄なTryCreateを省く + //案)直上から最初の成功までのデリミタ位置を記録 + //先に全ディレクトリ作っておくのがよさげ + //} + //} + //LastNnResult = writer.TryInitialize(path_w,false); + //return LastNnResult.IsSuccess(); +} + + +//ファイルライト +s32 SaveData::Write(char *buffer,size_t size) +{ + s32 ct; + LastNnResult = writer.TryWrite(&ct,(void*)buffer,size); + if(LastNnResult.IsFailure())ct=0; + return ct; +} + +//コミット +bool SaveData::Commit() +{ +#ifdef USE_SYS_SAVE + LastNnResult=nn::fs::CommitSystemSaveData(sdataName); +#else + LastNnResult=nn::fs::CommitSaveData(sdataName); +#endif + return LastNnResult.IsSuccess(); +} + + + +//コンストラクタ +SaveData::SaveData() +{ + IsMounted = false; + s_lv=0; + PrdCode[0] = 0; + m_info.DirCount = 0; + m_info.FileCount = 0; + m_info.DirEntry = 0; + m_info.FileEntry = 0; + wcscpy(path_w,sdataRoot_w); + //wcscpy(pathu_w,path_w); + pPathTop = (wchar_t*)((u32)&path_w+strlen(sdataName)*2+2); + +} + +void SaveData::Finalize() +{ + Close(); + Unmount(); +} +//デストラクタ +SaveData::~SaveData() +{ + Finalize(); +} + + + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savedata.h b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savedata.h new file mode 100644 index 0000000..1878008 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savedata.h @@ -0,0 +1,66 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: irp.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef SAVEDATA_H_ +#define SAVEDATA_H_ + +#include +#include +//#include +#include "../my_defs.h" +#include "savefile.h" + +#define MAX_PATH_LENGTH 512 + +class SaveData +{ +public: + s64 FileSize; + nn::Result LastNnResult; + char PrdCode[20]; +private: + nn::fs::FileReader reader; + nn::fs::FileWriter writer; + int s_lv; + wchar_t *pPathTop; + tArcInfo m_info; + bool s_serch; + u8 pad[3];//padding +public: + SaveData(); + ~SaveData(); + myResult Mount(); + void Unmount(); + myResult GetPath(wchar_t *path); + void ResetPath(); + bool Open(wchar_t *path); + void Finalize(); + void Close(); + void CloseW(); + s32 Read(char *buffer,size_t size); + myResult IsExist(); + bool GetInfo(tArcInfo *pinfo); + myResult Format(tArcInfo *pinfo); + bool OpenW(wchar_t *path,s64 size,bool *mkdir); + s32 Write(char *buffer,size_t size); + bool Commit(); + bool GetPrdCode(); +#ifdef USE_SYS_SAVE + void Delete(); +#endif +}; + + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savefile.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savefile.cpp new file mode 100644 index 0000000..8b050d2 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savefile.cpp @@ -0,0 +1,18 @@ +//ʊ֐ + +#include "savefile.h" + +//I[OŌ‚E("/"=0x2f)ʒuԂ +//top :͈͂̐擪w +int GetPosDelmLast(wchar_t *s,int top) +{ + size_t i = wcslen(s); + if (i < top)return -1; + if (i ==top)return 0; + i--; + while(i > top-1){ + if (s[i]==L'/')return i; + i--; + } + return -1; +} diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savefile.h b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savefile.h new file mode 100644 index 0000000..96775cd --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/savefile/savefile.h @@ -0,0 +1,35 @@ +#ifndef SAVEFILE_H_ +#define SAVEFILE_H_ + +#include +#include +#include + +//APIgpăA[JCu擾 +#define INFO_API_USE 1 + +//J[h̕ςɃVXeZ[ugp(APIΉ܂ł̎b) +//#define USE_SYS_SAVE 1 + +//SDۑ +//#define BKUP_NOTMEM 1 + +int GetPosDelmLast(wchar_t *s,int top); + +//t@C̃o[W +#define INFO_VERSION 1 + +//SDobNAbvɓ +//ύX̍ۂ͌݊Ƃ悤lĵ݂Ƃ +typedef struct{ + u32 DirEntry,FileEntry; + u32 DirCount,FileCount; + bool Dup; + u8 Ver;//o[W + char Pcode[20];//product code save,exsaveNXPrdCodeTCYȂ + u8 padding[3];//pfBO +}tArcInfo; + + + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen.cpp new file mode 100644 index 0000000..dfded5b --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen.cpp @@ -0,0 +1,759 @@ +#include +#include +#include "screen.h" +#include "../my_defs.h" +#include "../common/ver.h" + + +Gui gui; +u8 scr_evnt; + +enum{ +//PANEL_END, +PANEL_ERROR, +PANEL_SUCCESS, +PANEL_TOPMENU, +PANEL_TITLE, +PANEL_QUIT, +PANEL_READ, +PANEL_WRITE, +PANEL_YES, +PANEL_NO, +PANEL_CONFIRM, +PANEL_DELCONF, +PANEL_MENU, +PANEL_BKUP, +PANEL_INSEXIT, +PANEL_DBGLOG +}; + +enum{ +MESSAGE_VERSION, +MESSAGE_PRODUCT, +MESSAGE_PRODUCT2, +MESSAGE_ERROR_TITLE, +MESSAGE_ERROR_INFO, +MESSAGE_ERROR_INFO2, +MESSAGE_ERROR_INFO3, +MESSAGE_SUCCESS_TITLE, +MESSAGE_SUCCESS_INFO, +MESSAGE_SUCCESS_INFO2, +MESSAGE_CONFIRM_TITLE, +MESSAGE_CONFIRM_MSG, +MESSAGE_DELCONF_TITLE, +MESSAGE_DELCONF_MSG, +MESSAGE_DELCONF_MSG2, +MESSAGE_DELCONF_MSG3, +//MESSAGE_TOPMENU_HELP_TITLE, +MESSAGE_TOPMENU_HELP_READ, +MESSAGE_TOPMENU_HELP_WRITE, +MESSAGE_TOPMENU_HELP_END, +MESSAGE_TOPMENU_HELP_OPERATE, +MESSAGE_TITLE, +MESSAGE_MENU_READ, +MESSAGE_MENU_WRITE, +//MESSAGE_MENU_END, +MESSAGE_MENU_OPERATE, +MESSAGE_MENU_CAUTION, +MESSAGE_MENU_ERROR, +MESSAGE_MENU_DEBUG, +MESSAGE_INSEXT_1, +MESSAGE_INSEXT_2, +MESSAGE_INSEXT_3, +MESSAGE_OPERATE, +MESSAGE_RESULT, +MESSAGE_QUIT_OPERATE, +MESSAGE_CONF, +MESSAGE_COUNT, +MESSAGE_COUNT2, +MESSAGE_STATUS +}; + +enum{ +MEMO_DBGLOG +}; + + +//ʏAR|[lgfBZ[u +void ScrClr() +{ + gui.ButtonMask(0); + gui.DisableAll(); + gui.Draw(); +} + + +//---------------------------------CxgR[obN +//----------------PAD{^ +void pushButton(u32 button) +{ + //NN_LOG("button > %4x\n",button); + if (button & nn::hid::BUTTON_LEFT)// + { + if (button & nn::hid::BUTTON_X) + scr_evnt = EVNT_PUSH_LEFT_X; + } +#ifdef DEBUG_ENABLE + else if (button & nn::hid::BUTTON_DOWN)// + { + if (button & nn::hid::BUTTON_Y) + if (button & nn::hid::BUTTON_X) + scr_evnt = EVNT_PUSH_DOWN_Y; + } + else if (button & nn::hid::BUTTON_R)scr_evnt = EVNT_PUSH_R; + else if (button & nn::hid::BUTTON_L)scr_evnt = EVNT_PUSH_L; +#endif +#ifdef ENABLE_CRUSH + else if (button & nn::hid::BUTTON_Y)scr_evnt = EVNT_PUSH_Y; +#endif + else if (button & nn::hid::BUTTON_B)scr_evnt = EVNT_PUSH_B; +} + +//-----------------pl^b` +// ---- Top Menu :READ +void touchRead(u32 pos NN_IS_UNUSED_VAR) +{ + scr_evnt = EVNT_SEL_READ; +} +// ---- Top Menu :WRITE +void touchWrite(u32 pos NN_IS_UNUSED_VAR) +{ + scr_evnt = EVNT_SEL_WRITE; +} + +//---- Top Menu :END +//void touchEnd(u32 pos NN_IS_UNUSED_VAR) +//{ +// scr_evnt = EVNT_SEL_END; +//} + +//---- YES +void touchYes(u32 pos NN_IS_UNUSED_VAR) +{ + scr_evnt = EVNT_YES; +} + +//---- NO +void touchNo(u32 pos NN_IS_UNUSED_VAR) +{ + scr_evnt = EVNT_NO; +} + +void touchQuit(u32 pos NN_IS_UNUSED_VAR) +{ + scr_evnt = EVNT_QUIT; +} + +#define NULL_PTR 0 +#define NULL_STR 0 +#define SCREEN_UPPER 0 +#define SCREEN_LOWER 1 +#define LOC_CONF_X 60 +#define LOC_CONF_Y 20 +#define LOC_CONF_W (400 - LOC_CONF_X*2) +#define LOC_CONF_H 70 +#define LOC_LOG_X 50 +#define LOC_LOG_W (400 - LOC_LOG_X*2) +#define LOC_LOG_Y (LOC_CONF_Y + LOC_CONF_H + 10) +#define LOC_LOG_H (240 - LOC_LOG_Y - 10) +#define LOG_MAX 10 + +// -------------------------------------------------- R|[lg݌v +// + +//Top Menu +const tPanel panel_Read = {(uptr)touchRead,"Backup",80+20,30,160,80,PANEL_READ,SCREEN_LOWER}; +const tPanel panel_Write = {(uptr)touchWrite,"Restore",80+20,130,160,80,PANEL_WRITE,SCREEN_LOWER}; +//const tPanel panel_End = {(uptr)touchEnd,"End",80,180,160,30,PANEL_END,SCREEN_LOWER}; + +//Yes No +const tPanel panel_Yes = {(uptr)touchYes,"YES",40+10,60,80,120,PANEL_YES,SCREEN_LOWER}; +const tPanel panel_No = {(uptr)touchNo,"NO",200+30,60,80,120,PANEL_NO,SCREEN_LOWER}; + +//Quit +const tPanel panel_Quit = {(uptr)touchQuit,"Quit",80+20,60,160,120,PANEL_QUIT,SCREEN_LOWER}; + +// +//foOp +//G[\ +const tPanel panel_Error = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_ERROR,SCREEN_UPPER}; +const tMessage mess_Title_Err = {"title",10,10,COLOR_RED,8,MESSAGE_ERROR_TITLE,PANEL_ERROR}; +const tMessage mess_Info_Err = {"info",10,22,COLOR_RED,8,MESSAGE_ERROR_INFO,PANEL_ERROR}; +const tMessage mess_Info2_Err = {"info2",10,40,COLOR_RED,8,MESSAGE_ERROR_INFO2,PANEL_ERROR}; +const tMessage mess_Info3_Err = {"info3",10,50,COLOR_RED,8,MESSAGE_ERROR_INFO3,PANEL_ERROR}; + +// +const tPanel panel_Success = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_SUCCESS,SCREEN_UPPER}; +const tMessage mess_Title_Suc = {"title",10,10,COLOR_GREEN,8,MESSAGE_SUCCESS_TITLE,PANEL_SUCCESS}; +const tMessage mess_Info_Suc = {"info",10,40,COLOR_WHITE,8,MESSAGE_SUCCESS_INFO,PANEL_SUCCESS}; +const tMessage mess_Info2_Suc = {"info2",10,50,COLOR_WHITE,8,MESSAGE_SUCCESS_INFO2,PANEL_SUCCESS}; + +//smF +const tPanel panel_Confirm = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_CONFIRM,SCREEN_UPPER}; +const tMessage mess_conf_Title = {"title",10,10,COLOR_YELLO,8,MESSAGE_CONFIRM_TITLE,PANEL_CONFIRM}; +const tMessage mess_conf_Msg = {"Do you execute?",10,40,COLOR_WHITE,8,MESSAGE_CONFIRM_MSG,PANEL_CONFIRM}; + +//gbvj[ +const tPanel panel_topmenu_help = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_TOPMENU,SCREEN_UPPER}; +const tMessage mess_topmenu_help_read = {"[Backup] Card -> bkup",10,4,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_READ,PANEL_TOPMENU}; +const tMessage mess_topmenu_help_notread = {"[Backup] is Invalid",10,4,COLOR_RED,8,MESSAGE_TOPMENU_HELP_READ,PANEL_TOPMENU}; +const tMessage mess_topmenu_help_write = {"[Restore] bkup -> Card",10,16,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_WRITE,PANEL_TOPMENU}; +const tMessage mess_topmenu_help_notwrite = {"[Restore] is Invalid",10,16,COLOR_RED,8,MESSAGE_TOPMENU_HELP_WRITE,PANEL_TOPMENU}; +const tMessage mess_topmenu_help_end = {"[End] return to SystemMenu",10,28,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_END,PANEL_TOPMENU}; +const tMessage mess_topmenu_help_operate = {"touch below",10,48,COLOR_GREEN,8,MESSAGE_TOPMENU_HELP_OPERATE,PANEL_TOPMENU}; + +//O\ +const tPanel panel_dbglog = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_DBGLOG,SCREEN_UPPER}; +const tMemo memo_dbglog = {LOG_MAX,10,10,COLOR_WHITE,8,MEMO_DBGLOG,PANEL_DBGLOG}; + + +//ʏ펞 +//^Cg +#define FONT_SIZE_TITLE 12 +#define LOC_TITL_X (40-FONT_SIZE_TITLE*2) +#define LOC_TITL_Y 20 +#define LOC_TITL_W (400 - LOC_CONF_X*2) +#define LOC_TITL_H 50 +#define FONT_SIZE_PRODUCT 10 +const tPanel panel_title = {NULL_PTR,NULL_STR,LOC_TITL_X,LOC_TITL_Y,LOC_TITL_W,LOC_TITL_H,PANEL_TITLE,SCREEN_UPPER}; +const tMessage mess_title = {"title",0,0,COLOR_WHITE,FONT_SIZE_TITLE,MESSAGE_TITLE,PANEL_TITLE}; +const tMessage mess_product = {"product",0,LOC_TITL_H - 22,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_PRODUCT,PANEL_TITLE}; +const tMessage mess_product2 = {"product2",0,LOC_TITL_H - 10,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_PRODUCT2,PANEL_TITLE}; +const tMessage mess_version = {"version",LOC_TITL_W-FONT_SIZE_PRODUCT*6,FONT_SIZE_TITLE+2,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_VERSION,PANEL_TITLE}; + +#define LOC_MESS_X 20 +#define LOC_MESS_W (400 - LOC_MESS_X*2) +#define LOC_MESS_Y (LOC_TITL_Y + LOC_TITL_H + 10) +#define LOC_MESS_H (240 - LOC_MESS_Y - 10) +//TOPj[ +//\̓OƔr +#define FONT_SIZE 10 +#define STR_LINE(ln) (FONT_SIZE + 2)*ln +const tPanel panel_menu = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_MENU,SCREEN_UPPER}; +const tMessage mess_menu_read = {"[Backup] Card savedata Backup",10,STR_LINE(1),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_READ,PANEL_MENU}; +const tMessage mess_menu_write = {"[Restore] restore to Card",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_WRITE,PANEL_MENU}; +//const tMessage mess_menu_end = {"[End] close this apprication",10,STR_LINE(3),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_END,PANEL_MENU}; +const tMessage mess_menu_operate = {"touch below",10,STR_LINE(4),COLOR_GREEN,FONT_SIZE,MESSAGE_MENU_OPERATE,PANEL_MENU}; +const tMessage mess_bkuperr = {"Backup error",10,STR_LINE(6),COLOR_RED,FONT_SIZE,MESSAGE_MENU_ERROR,PANEL_MENU}; +const tMessage mess_carderr = {"CARD error",10,STR_LINE(7),COLOR_YELLO,FONT_SIZE,MESSAGE_MENU_CAUTION,PANEL_MENU}; +const tMessage mess_debug = {"Crush Mode",10,STR_LINE(3),COLOR_YELLO,FONT_SIZE,MESSAGE_MENU_DEBUG,PANEL_MENU}; + +//Backup +//const tPanel panel_bkup = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_BKUP,SCREEN_UPPER}; +const tPanel panel_bkup = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_BKUP,SCREEN_UPPER}; +const tMessage mess_quit_operate = {"touch [Quit],or Push B",10,STR_LINE(4),COLOR_SKY,FONT_SIZE,MESSAGE_QUIT_OPERATE,PANEL_BKUP}; +const tMessage mess_conf = {"Do you execute?",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_CONF,PANEL_BKUP}; +const tMessage mess_result = {"result",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_RESULT,PANEL_BKUP}; +const tMessage mess_operate = {"touch below",10,STR_LINE(4),COLOR_GREEN,FONT_SIZE,MESSAGE_OPERATE,PANEL_BKUP}; +const tMessage mess_status = {"status",10,STR_LINE(7),COLOR_WHITE,FONT_SIZE,MESSAGE_STATUS,PANEL_BKUP}; +const tMessage mess_count = {"count",10,STR_LINE(8),COLOR_WHITE,FONT_SIZE,MESSAGE_COUNT,PANEL_BKUP}; +const tMessage mess_count2 = {"count2",10,STR_LINE(9),COLOR_GREEN,FONT_SIZE,MESSAGE_COUNT2,PANEL_BKUP}; + + +//} +//const tPanel panel_insexit = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_INSEXIT,SCREEN_UPPER}; +const tPanel panel_insexit = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_INSEXIT,SCREEN_UPPER}; +const tMessage mess_insexit = {"device insert or pull out is detected",10,STR_LINE(3),COLOR_RED,8,MESSAGE_INSEXT_1,PANEL_INSEXIT}; +const tMessage mess_insexit2 = {"return to top menu",10,STR_LINE(5),COLOR_WHITE,8,MESSAGE_INSEXT_2,PANEL_INSEXIT}; +const tMessage mess_insexit3 = {"please touch or push B",10,STR_LINE(6),COLOR_WHITE,8,MESSAGE_INSEXT_3,PANEL_INSEXIT}; + +//폜mF +//const tPanel panel_delconf = {NULL_PTR,NULL_STR,LOC_CONF_X-10,LOC_CONF_Y,LOC_CONF_W+10,LOC_CONF_H*2,PANEL_DELCONF,SCREEN_UPPER}; +const tPanel panel_delconf = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y-36,LOC_MESS_W,LOC_MESS_H,PANEL_DELCONF,SCREEN_UPPER}; +const tMessage mess_delconf_Title = {" *** DELETE *** ",10,10,COLOR_YELLO,16,MESSAGE_DELCONF_TITLE,PANEL_DELCONF}; +const tMessage mess_delconf_Msg = {" caution!",10,50,COLOR_YELLO,12,MESSAGE_DELCONF_MSG,PANEL_DELCONF}; +const tMessage mess_delconf_Msg2 = {"this is delete backup",10,70,COLOR_YELLO,12,MESSAGE_DELCONF_MSG2,PANEL_DELCONF}; +const tMessage mess_delconf_Msg3 = {"Do you execute?",10,90,COLOR_YELLO,12,MESSAGE_DELCONF_MSG3,PANEL_DELCONF}; + + + +nn::os::LightEvent stopEvnt(true); + +char scr_ver[16]; +char scr_err[32]; +char scr_debug[32]; +//menu +bool ScrInitialize(uptr heap,u32 size) +{ + scr_evnt = EVNT_NONE; + + if (gui.Initialize(heap,size,&stopEvnt)==false)return false; + + + gui.ButtonCallback((uptr)pushButton); + //R|[lgo^ + gui.PanelSet(&panel_Read); + gui.PanelSet(&panel_Write); +// gui.PanelSet(&panel_End); + gui.PanelSet(&panel_Yes); + gui.PanelSet(&panel_No); + gui.PanelSet(&panel_Quit); + gui.PanelSet(&panel_Error); + gui.PanelSet(&panel_Success); + gui.PanelSet(&panel_Confirm); + gui.PanelSet(&panel_delconf); + gui.PanelSet(&panel_topmenu_help); + gui.PanelSet(&panel_title); + gui.PanelSet(&panel_menu); + gui.PanelSet(&panel_bkup); + gui.PanelSet(&panel_dbglog); + gui.PanelSet(&panel_insexit); + + gui.PanelLineStyle(PANEL_TITLE,COLOR_BLACK); + + + gui.MessSet(&mess_Title_Err); + gui.MessSet(&mess_Info_Err); + gui.MessSet(&mess_Info2_Err); + gui.MessSet(&mess_Info3_Err); + gui.MessSet(&mess_Title_Suc); + gui.MessSet(&mess_Info_Suc); + gui.MessSet(&mess_Info2_Suc); + gui.MessSet(&mess_conf_Title); + gui.MessSet(&mess_conf_Msg); + gui.MessSet(&mess_delconf_Title); + gui.MessSet(&mess_delconf_Msg); + gui.MessSet(&mess_delconf_Msg2); + gui.MessSet(&mess_delconf_Msg3); + + gui.MessSet(&mess_topmenu_help_read); + gui.MessSet(&mess_topmenu_help_write); + gui.MessSet(&mess_topmenu_help_end); + gui.MessSet(&mess_topmenu_help_operate); + + gui.MessSet(&mess_title); + gui.MessSet(&mess_version); + gui.MessSet(&mess_product); + gui.MessSet(&mess_product2); + gui.MessSet(&mess_menu_read); + gui.MessSet(&mess_menu_write); +// gui.MessSet(&mess_menu_end); + gui.MessSet(&mess_menu_operate); + gui.MessSet(&mess_quit_operate); + gui.MessSet(&mess_conf); + gui.MessSet(&mess_operate); + gui.MessSet(&mess_bkuperr); + gui.MessSet(&mess_carderr); + gui.MessSet(&mess_debug); + gui.MessSet(&mess_result); + gui.MessSet(&mess_status); + gui.MessSet(&mess_count); + gui.MessSet(&mess_count2); + + gui.MessSet(&mess_insexit); + gui.MessSet(&mess_insexit2); + gui.MessSet(&mess_insexit3); + + gui.MemoSet(&memo_dbglog); + + gui.MemoEffective(MESSAGE_PRODUCT); + gui.MessEffective(MESSAGE_ERROR_TITLE); + gui.MessEffective(MESSAGE_ERROR_INFO); + gui.MessEffective(MESSAGE_ERROR_INFO2); + gui.MessEffective(MESSAGE_ERROR_INFO3); + gui.MessEffective(MESSAGE_SUCCESS_TITLE); + gui.MessEffective(MESSAGE_SUCCESS_INFO); + gui.MessEffective(MESSAGE_SUCCESS_INFO2); + gui.MessEffective(MESSAGE_CONFIRM_TITLE); + gui.MessEffective(MESSAGE_CONFIRM_MSG); + gui.MessEffective(MESSAGE_DELCONF_TITLE); + gui.MessEffective(MESSAGE_DELCONF_MSG); + gui.MessEffective(MESSAGE_DELCONF_MSG2); + gui.MessEffective(MESSAGE_DELCONF_MSG3); + gui.MessEffective(MESSAGE_TOPMENU_HELP_READ); + gui.MessEffective(MESSAGE_TOPMENU_HELP_WRITE); + gui.MessEffective(MESSAGE_TOPMENU_HELP_END); + gui.MessEffective(MESSAGE_TOPMENU_HELP_OPERATE); + gui.MessEffective(MESSAGE_MENU_READ); + gui.MessEffective(MESSAGE_MENU_WRITE); +// gui.MessEffective(MESSAGE_MENU_END); + gui.MessEffective(MESSAGE_MENU_OPERATE); + gui.MessEffective(MESSAGE_INSEXT_1); + gui.MessEffective(MESSAGE_INSEXT_2); + gui.MessEffective(MESSAGE_INSEXT_3); + gui.MessEffective(MESSAGE_TITLE); + gui.MessEffective(MESSAGE_VERSION); + gui.MemoEffective(MEMO_DBGLOG); + + gui.PanelLineStyle(PANEL_DELCONF,COLOR_YELLO); + + sprintf(scr_ver,"ver %.2f",VERSION); + gui.MessStr(MESSAGE_VERSION,scr_ver); + gui.MessStr(MESSAGE_MENU_CAUTION,scr_err); + gui.MessStr(MESSAGE_MENU_ERROR,scr_err); + gui.MessStr(MESSAGE_MENU_DEBUG,scr_debug); + + return true; + +} + +void ScrFinalize() +{ + stopEvnt.Signal(); + while(stopEvnt.TryWait()){ + nn::os::Thread::Yield(); + + }; + gui.Finalize(); +} + +//YES-NO {^ +void YesNo() +{ + gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_B); + gui.PanelEffective(PANEL_YES); + gui.PanelEffective(PANEL_NO); + gui.Draw(); +} + +void Quit() +{ + gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_B); + gui.PanelEffective(PANEL_QUIT); + gui.Draw(); +} + + +//gbvj[ +//:J[h +void scr_TopMenuDbg(bool formatted,bool insertted)//fobOp +{ + scr_evnt = EVNT_NONE; + gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_R | nn::hid::BUTTON_L); + + if (formatted) + {//[h”\ + gui.MessSet(&mess_topmenu_help_read); + gui.PanelEffective(PANEL_READ); + }else{//[hs + gui.MessSet(&mess_topmenu_help_notread); + gui.PanelEffective(PANEL_READ,false); + } + if (insertted) + {//݉ + gui.MessSet(&mess_topmenu_help_write); + gui.PanelEffective(PANEL_WRITE); + }else{//ݕs + gui.MessSet(&mess_topmenu_help_notwrite); + gui.PanelEffective(PANEL_WRITE,false); + } + + gui.MessEffective(MESSAGE_TOPMENU_HELP_READ); + gui.MessEffective(MESSAGE_TOPMENU_HELP_WRITE); +// gui.PanelEffective(PANEL_END); + gui.PanelEffective(PANEL_TOPMENU); + gui.Draw(); +} + +//ʏ펞 + +//v_NgR[h +//:J[hAgZ[uɋL^ꂽ +char scr_pcode[32]; +void scr_PrdCode(char *s) +{ + strcpy(scr_pcode,"CARD : "); + if (s[0]==0) strcat(scr_pcode,"----"); + else strcat(scr_pcode,s); + gui.MessStr(MESSAGE_PRODUCT,scr_pcode); +} + +char scr_pcode2[64]; +void scr_PrdCodeEx(char *s) +{ + strcpy(scr_pcode2,"BKUP : "); + if (s[0]==0) strcat(scr_pcode2,"----"); + else strcat(scr_pcode2,s); + gui.MessStr(MESSAGE_PRODUCT2,scr_pcode2); +} + +//폜̎smF +void scr_DelConf() +{ + scr_evnt = EVNT_NONE; + gui.PanelEffective(PANEL_DELCONF); + YesNo(); +} + + +//Top menu +//:foCX +//arg : v_NgR[hv +void scr_TopMenu(bool formatted,bool inserted,bool exfm,bool bkupins,int err) +{ + + int i; + scr_evnt = EVNT_NONE; + + u32 mask = 0; +#ifdef DEBUG_ENABLE + mask | = ( nn::hid::BUTTON_DOWN | nn::hid::BUTTON_Y |nn::hid::BUTTON_X|nn::hid::BUTTON_L | nn::hid::BUTTON_R); +#endif +#ifdef CRUSH_ENABLE + extern bool CrashForDebug; + mask | = nn::hid::BUTTON_Y; + if (CrashForDebug==0) gui.MessEffective(MESSAGE_MENU_DEBUG,false,false); + else{ + sprintf(scr_debug,"Crush mode %d",CrashForDebug); + gui.MessEffective(MESSAGE_MENU_DEBUG); + } +#endif + + gui.MessStr(MESSAGE_TITLE," < CTR Card Savedata Mover >"); + + gui.MessEffective(MESSAGE_MENU_ERROR,false,false); + gui.MessEffective(MESSAGE_MENU_CAUTION,false,false); + gui.MessEffective(MESSAGE_MENU_OPERATE,false,false); + //Е̂ݗL + if (formatted && bkupins && (exfm == false)) + {//obNAbv + gui.MessEffective(MESSAGE_MENU_OPERATE); + gui.PanelEffective(PANEL_READ); + gui.PanelEffective(PANEL_WRITE,false,false); + }else if (exfm && inserted) + {//XgA + mask |= (nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X);//LEFT+X = Delete L + gui.PanelEffective(PANEL_READ,false,false); + i =0; + if (err & SDATA_ERRPUT_MEDIA) i = ERC_MEDIA + ERC_DEV_CARD;//obNAbvȂ + else + if (err & SDATA_ERRPUT_PCODE) i = ERC_DEV_OTHER + ERC_PRODCODE;//v_NgR[hsv + if (i !=0 ) + { + gui.PanelEffective(PANEL_WRITE,false,false); + sprintf(scr_err,"ERROR %d",i); + gui.MessEffective(MESSAGE_MENU_ERROR); + } + else{ + gui.MessEffective(MESSAGE_MENU_OPERATE); + gui.PanelEffective(PANEL_WRITE); + } + }else{//Ȃ + gui.PanelEffective(PANEL_WRITE,false,false); + gui.PanelEffective(PANEL_READ,false,false); + + if (inserted == false) + { + strcpy(scr_err,"Please Insert Card"); + gui.MessEffective(MESSAGE_MENU_CAUTION); + + }else{ + if (err & SDATA_ERRPUT_MEDIA) i = ERC_MEDIA + ERC_DEV_CARD;//obNAbvȂ + else + if (err & SDATA_ERRPUT_VERIFI) i = ERC_SDK_VERIFI + ERC_DEV_CARD;//f[^Ă + else if (bkupins == false) i = ERC_DEVICE + ERC_DEV_OUT;//ofoCX + else i = ERC_FORMAT + ERC_DEV_CARD;//tH[}bgG[ + sprintf(scr_err,"ERROR %d",i); + gui.MessEffective(MESSAGE_MENU_ERROR); + } + } + + gui.ButtonMask(mask); + + gui.MessEffective(MESSAGE_PRODUCT); + gui.MessEffective(MESSAGE_PRODUCT2); + + gui.PanelEffective(PANEL_TITLE); + gui.PanelEffective(PANEL_MENU); + + gui.Draw(); +} + +//fobOpA{^҂ +void ScrStep() +{ + scr_evnt = EVNT_NONE; + gui.ButtonMask(nn::hid::BUTTON_B); +} + + +void ClearBkupMess() +{ + gui.MessEffective(MESSAGE_CONF,false,false); + gui.MessEffective(MESSAGE_RESULT,false,false); + gui.MessEffective(MESSAGE_OPERATE,false,false); + gui.MessEffective(MESSAGE_QUIT_OPERATE,false,false); + gui.MessEffective(MESSAGE_STATUS,false,false); + gui.MessEffective(MESSAGE_COUNT,false,false); + gui.MessEffective(MESSAGE_COUNT2,false,false); + gui.PanelEffective(PANEL_BKUP); +} + +//Backup +void scr_Backup() +{ + scr_evnt = EVNT_NONE; + gui.PanelLineStyle(PANEL_BKUP,COLOR_SKY); + gui.MessStr(MESSAGE_TITLE," --- Backup Card Savedata ---"); + gui.PanelEffective(PANEL_TITLE); + ClearBkupMess(); + gui.Draw(); + +} +void scr_BackupYesNo() +{ + scr_Backup(); + gui.MessEffective(MESSAGE_CONF); + gui.MessEffective(MESSAGE_OPERATE); + YesNo(); +} + +//restore +void scr_Restore() +{ + scr_evnt = EVNT_NONE; + gui.PanelLineStyle(PANEL_BKUP,COLOR_PARPL); + gui.MessStr(MESSAGE_TITLE,"--- Restore Card Savedata ---"); + gui.PanelEffective(PANEL_TITLE); + ClearBkupMess();//backupƓplg + gui.Draw(); + +} +void scr_RestoreYesNo() +{ + scr_Restore(); + gui.MessEffective(MESSAGE_CONF); + gui.MessEffective(MESSAGE_OPERATE); + YesNo(); +} + + +void scr_Status(char *s,eColor col) +{ + gui.MessCol(MESSAGE_STATUS,col); + gui.MessStr(MESSAGE_STATUS,s); + gui.MessEffective(MESSAGE_STATUS); + gui.Draw(); +} + +void scr_ResultQuit(char *s,eColor col) +{ + gui.MessCol(MESSAGE_RESULT,col); + gui.MessStr(MESSAGE_RESULT,s); + gui.MessEffective(MESSAGE_RESULT); + gui.MessEffective(MESSAGE_QUIT_OPERATE); + Quit(); +} + + +void scr_InsExitQuit() +{ + ClearBkupMess(); + gui.PanelLineStyle(PANEL_INSEXIT,COLOR_RED); + gui.PanelEffective(PANEL_INSEXIT); + Quit(); +} + +// JEg/MAX \ +char str_Counter[128]; +char str_Counter2[128]; +void scr_CountPerMax(int ct,int max) +{ + sprintf(str_Counter,"%d / %d",ct,max); + gui.MessStr(MESSAGE_COUNT,str_Counter); + gui.MessEffective(MESSAGE_COUNT); + gui.Draw(); +} + +//Q[Wtotal +void scr_CountPerMax2(int ct,int max,int total) +{ + if (total == -1) str_Counter2[0]=0; + else if (total != 0){ +// gui.MessCol(MESSAGE_COUNT2,COLOR_WHITE); + sprintf(str_Counter2,"total size %d",total); + }else{ +// gui.MessCol(MESSAGE_COUNT2,COLOR_YELLO); + int i; + int lv = ct/(max/25); + for (i =0;i'; + while ( i < 25 )str_Counter2[i++] = '|'; + str_Counter2[i] = 0; + } + //sprintf(str_Counter2,"%d / %d",ct,max); + gui.MessStr(MESSAGE_COUNT2,str_Counter2); + gui.MessEffective(MESSAGE_COUNT2); + gui.Draw(); + +} + +void scr_MessOnCount2(char *str) +{ +// gui.MessCol(MESSAGE_COUNT2,COLOR_YELLO); + gui.MessStr(MESSAGE_COUNT2,str); + gui.MessEffective(MESSAGE_COUNT2); + gui.Draw(); +} + + +//smF +void scr_ConfirmDbg(char *str) +{ + scr_evnt = EVNT_NONE; + gui.MessStr(MESSAGE_CONFIRM_TITLE,str); + gui.PanelEffective(PANEL_CONFIRM); + YesNo(); +} + + +//G[\Quit{^ +void scr_ErrorQuitDbg(tColStr **s) +{ + scr_evnt = EVNT_NONE; + gui.MessStr(MESSAGE_ERROR_TITLE,s[0]->str); + gui.MessCol(MESSAGE_ERROR_TITLE,s[0]->color); + gui.MessStr(MESSAGE_ERROR_INFO,s[1]->str); + gui.MessCol(MESSAGE_ERROR_INFO,s[1]->color); + gui.MessStr(MESSAGE_ERROR_INFO2,s[2]->str); + gui.MessCol(MESSAGE_ERROR_INFO2,s[2]->color); + gui.MessStr(MESSAGE_ERROR_INFO3,s[3]->str); + gui.MessCol(MESSAGE_ERROR_INFO3,s[3]->color); + gui.PanelEffective(PANEL_ERROR); + Quit(); +} + +//\Quit{^ +void scr_SuccessQuitDbg(tColStr **s) +{ + scr_evnt = EVNT_NONE; + gui.MessStr(MESSAGE_SUCCESS_TITLE,s[0]->str); + gui.MessCol(MESSAGE_SUCCESS_TITLE,s[0]->color); + gui.MessStr(MESSAGE_SUCCESS_INFO,s[1]->str); + gui.MessCol(MESSAGE_SUCCESS_INFO,s[1]->color); + gui.MessStr(MESSAGE_SUCCESS_INFO2,s[2]->str); + gui.MessCol(MESSAGE_SUCCESS_INFO2,s[2]->color); + gui.PanelEffective(PANEL_SUCCESS); + Quit(); +} + + +//fobOO +void scr_DgbLog(cStrLst *p) +{ + gui.PanelLineStyle(PANEL_DBGLOG,COLOR_BLUE); + + for (int i=0;igetpos()+1;i++)gui.MemoStr(MEMO_DBGLOG,p->line(i),i); + + gui.PanelEffective(PANEL_DBGLOG); + gui.Draw(); +} + + + +int ScrDbgLogGetMax() +{ + return LOG_MAX; +} + + +void scr_Draw() +{ + gui.Draw(); +} + +void scr_GetEvnt() +{ +// gui.thUpdate(); +} + + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen.h b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen.h new file mode 100644 index 0000000..4ecc79e --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen.h @@ -0,0 +1,115 @@ +#ifndef SCREEN_H_ +#define SCREEN_H_ + +#include +#include +#include "../gui/gui.h" + +//plID +enum { + EVNT_NONE, + EVNT_YES, + EVNT_NO, + EVNT_QUIT, + EVNT_PUSH_A, + EVNT_PUSH_B, + EVNT_PUSH_R, + EVNT_PUSH_L, + EVNT_PUSH_X, + EVNT_PUSH_Y, + EVNT_PUSH_LEFT_X, + EVNT_PUSH_DOWN_Y, + EVNT_SEL_READ, + EVNT_SEL_WRITE, + EVNT_SEL_END, + EVNT_ERROR, + EVNT_FATAL +}; + +typedef struct{ + char *str; + eColor color; + u8 pad[3]; +}tColStr; + + +#define LST_MAX 30 +#define LST_LENGTH 128 +class cStrLst { +private: + int pos; + int buttom; + char str[LST_MAX][LST_LENGTH]; +public: + cStrLst():pos(0){}; + void add(char *p){ + if (pos>=LST_MAX)return; + //char *s = &str[pos][0]; + int i; + if (pos == buttom) + { + i =0; + while(i < buttom){ strcpy(str[i],str[i+1]);i++;} + }else pos++; + i=0; + while(i < (LST_LENGTH-1)){ //I[o[[h΍ + if (p[i]!=0){ + str[pos][i] = p[i]; + i++; + }else break; + } + str[pos][i] = 0; + //strcpy(str[pos],p); + //for (i =0;i=LST_MAX))return false; + buttom = btm; + return true; + } +}; + + +//Topj[ł̃G[\p̃tO +//bit`FbN +#define SDATA_ERRPUT_PCODE 1 +#define SDATA_ERRPUT_MEDIA 2 +#define SDATA_ERRPUT_VERIFI 4 + + +bool ScrInitialize(uptr heap,u32 size); +void ScrFinalize(); +void ScrClr(); +int ScrDbgLogGetMax(); +void ScrStep(); +void scr_TopMenuDbg(bool formatted,bool insertted); +void scr_TopMenu(bool formatted,bool inserted,bool exfm,bool sdins,int err); +void scr_ErrorQuitDbg(tColStr **s); +void scr_SuccessQuitDbg(tColStr **s); +void scr_ConfirmDbg(char *str); +void scr_DgbLog(cStrLst *p); +void scr_BackupYesNo(); +void scr_Backup(); +void scr_RestoreYesNo(); +void scr_Restore(); +void scr_InsExitQuit(); +void scr_Status(char *s,eColor col); +void scr_ResultQuit(char *s,eColor col); +void scr_CountPerMax(int ct,int max); +void scr_CountPerMax2(int ct,int max,int total); +void scr_PrdCode(char *s); +void scr_PrdCodeEx(char *s); +void scr_DelConf(); +void scr_MessOnCount2(char *str); +void scr_Draw(); +void scr_GetEvnt(); + +#endif + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen_0.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen_0.cpp new file mode 100644 index 0000000..cedc552 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/body/source/screen/screen_0.cpp @@ -0,0 +1,791 @@ +#include +#include "screen.h" +#include +#include "../my_defs.h" +#include "../common/ver.h" + +//todo: dl̖c"SD"֐ϐ +// ɎcĂ̂ŋCɂȂȂ| + +Gui gui; +u8 scr_evnt; + +enum{ +//PANEL_END, +PANEL_ERROR, +PANEL_SUCCESS, +PANEL_TOPMENU, +PANEL_TITLE, +PANEL_QUIT, +PANEL_READ, +PANEL_WRITE, +PANEL_YES, +PANEL_NO, +PANEL_CONFIRM, +PANEL_DELCONF, +PANEL_MENU, +PANEL_BKUP, +PANEL_INSEXIT, +PANEL_DBGLOG +}; + +enum{ +MESSAGE_VERSION, +MESSAGE_PRODUCT, +MESSAGE_PRODUCT2, +MESSAGE_ERROR_TITLE, +MESSAGE_ERROR_INFO, +MESSAGE_ERROR_INFO2, +MESSAGE_ERROR_INFO3, +MESSAGE_SUCCESS_TITLE, +MESSAGE_SUCCESS_INFO, +MESSAGE_SUCCESS_INFO2, +MESSAGE_CONFIRM_TITLE, +MESSAGE_CONFIRM_MSG, +MESSAGE_DELCONF_TITLE, +MESSAGE_DELCONF_MSG, +MESSAGE_DELCONF_MSG2, +MESSAGE_DELCONF_MSG3, +//MESSAGE_TOPMENU_HELP_TITLE, +MESSAGE_TOPMENU_HELP_READ, +MESSAGE_TOPMENU_HELP_WRITE, +MESSAGE_TOPMENU_HELP_END, +MESSAGE_TOPMENU_HELP_OPERATE, +MESSAGE_TITLE, +MESSAGE_MENU_READ, +MESSAGE_MENU_WRITE, +//MESSAGE_MENU_END, +MESSAGE_MENU_OPERATE, +MESSAGE_MENU_CAUTION, +MESSAGE_MENU_ERROR, +MESSAGE_MENU_DEBUG, +MESSAGE_INSEXT_1, +MESSAGE_INSEXT_2, +MESSAGE_INSEXT_3, +MESSAGE_OPERATE, +MESSAGE_RESULT, +MESSAGE_QUIT_OPERATE, +MESSAGE_CONF, +MESSAGE_COUNT, +MESSAGE_COUNT2, +MESSAGE_STATUS +}; + +enum{ +MEMO_DBGLOG +}; + + +//ʏAR|[lgfBZ[u +void ScrClr() +{ + gui.ButtonMask(0); + gui.DisableAll(); + gui.Draw(); +} + + +//---------------------------------CxgR[obN +//----------------PAD{^ +void pushButton(u32 button) +{ + //NN_LOG("button > %4x\n",button); + if (button & nn::hid::BUTTON_LEFT)// + { + if (button & nn::hid::BUTTON_X) + scr_evnt = EVNT_PUSH_LEFT_X; + } +#ifdef DEBUG_ENABLE + else if (button & nn::hid::BUTTON_DOWN)// + { + if (button & nn::hid::BUTTON_Y) + if (button & nn::hid::BUTTON_X) + scr_evnt = EVNT_PUSH_DOWN_Y; + } + else if (button & nn::hid::BUTTON_R)scr_evnt = EVNT_PUSH_R; + else if (button & nn::hid::BUTTON_L)scr_evnt = EVNT_PUSH_L; +#endif +#ifdef ENABLE_CRUSH + else if (button & nn::hid::BUTTON_Y)scr_evnt = EVNT_PUSH_Y; +#endif + else if (button & nn::hid::BUTTON_B)scr_evnt = EVNT_PUSH_B; +} + +//-----------------pl^b` +// ---- Top Menu :READ +void touchRead(u32 pos NN_IS_UNUSED_VAR) +{ + scr_evnt = EVNT_SEL_READ; +} +// ---- Top Menu :WRITE +void touchWrite(u32 pos NN_IS_UNUSED_VAR) +{ + scr_evnt = EVNT_SEL_WRITE; +} + +//---- Top Menu :END +//void touchEnd(u32 pos NN_IS_UNUSED_VAR) +//{ +// scr_evnt = EVNT_SEL_END; +//} + +//---- YES +void touchYes(u32 pos NN_IS_UNUSED_VAR) +{ + scr_evnt = EVNT_YES; +} + +//---- NO +void touchNo(u32 pos NN_IS_UNUSED_VAR) +{ + scr_evnt = EVNT_NO; +} + +void touchQuit(u32 pos NN_IS_UNUSED_VAR) +{ + scr_evnt = EVNT_QUIT; +} + +#define NULL_PTR 0 +#define NULL_STR 0 +#define SCREEN_UPPER 0 +#define SCREEN_LOWER 1 +#define LOC_CONF_X 60 +#define LOC_CONF_Y 20 +#define LOC_CONF_W (400 - LOC_CONF_X*2) +#define LOC_CONF_H 70 +#define LOC_LOG_X 50 +#define LOC_LOG_W (400 - LOC_LOG_X*2) +#define LOC_LOG_Y (LOC_CONF_Y + LOC_CONF_H + 10) +#define LOC_LOG_H (240 - LOC_LOG_Y - 10) +#define LOG_MAX 10 + +// -------------------------------------------------- R|[lg݌v +// + +//Top Menu +const tPanel panel_Read = {(uptr)touchRead,"Backup",80,30,160,60,PANEL_READ,SCREEN_LOWER}; +const tPanel panel_Write = {(uptr)touchWrite,"Restore",80,150,160,60,PANEL_WRITE,SCREEN_LOWER}; +//const tPanel panel_End = {(uptr)touchEnd,"End",80,180,160,30,PANEL_END,SCREEN_LOWER}; + +//Yes No +const tPanel panel_Yes = {(uptr)touchYes,"YES",40,60,80,120,PANEL_YES,SCREEN_LOWER}; +const tPanel panel_No = {(uptr)touchNo,"NO",200,60,80,120,PANEL_NO,SCREEN_LOWER}; + +//Quit +const tPanel panel_Quit = {(uptr)touchQuit,"Quit",80,60,160,120,PANEL_QUIT,SCREEN_LOWER}; + +// +//foOp +//G[\ +const tPanel panel_Error = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_ERROR,SCREEN_UPPER}; +const tMessage mess_Title_Err = {"title",10,10,COLOR_RED,8,MESSAGE_ERROR_TITLE,PANEL_ERROR}; +const tMessage mess_Info_Err = {"info",10,22,COLOR_RED,8,MESSAGE_ERROR_INFO,PANEL_ERROR}; +const tMessage mess_Info2_Err = {"info2",10,40,COLOR_RED,8,MESSAGE_ERROR_INFO2,PANEL_ERROR}; +const tMessage mess_Info3_Err = {"info3",10,50,COLOR_RED,8,MESSAGE_ERROR_INFO3,PANEL_ERROR}; + +// +const tPanel panel_Success = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_SUCCESS,SCREEN_UPPER}; +const tMessage mess_Title_Suc = {"title",10,10,COLOR_GREEN,8,MESSAGE_SUCCESS_TITLE,PANEL_SUCCESS}; +const tMessage mess_Info_Suc = {"info",10,40,COLOR_WHITE,8,MESSAGE_SUCCESS_INFO,PANEL_SUCCESS}; +const tMessage mess_Info2_Suc = {"info2",10,50,COLOR_WHITE,8,MESSAGE_SUCCESS_INFO2,PANEL_SUCCESS}; + +//smF +const tPanel panel_Confirm = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_CONFIRM,SCREEN_UPPER}; +const tMessage mess_conf_Title = {"title",10,10,COLOR_YELLO,8,MESSAGE_CONFIRM_TITLE,PANEL_CONFIRM}; +const tMessage mess_conf_Msg = {"Do you execute?",10,40,COLOR_WHITE,8,MESSAGE_CONFIRM_MSG,PANEL_CONFIRM}; + +//gbvj[ +const tPanel panel_topmenu_help = {NULL_PTR,NULL_STR,LOC_CONF_X,LOC_CONF_Y,LOC_CONF_W,LOC_CONF_H,PANEL_TOPMENU,SCREEN_UPPER}; +const tMessage mess_topmenu_help_read = {"[Backup] Card -> bkup",10,4,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_READ,PANEL_TOPMENU}; +const tMessage mess_topmenu_help_notread = {"[Backup] is Invalid",10,4,COLOR_RED,8,MESSAGE_TOPMENU_HELP_READ,PANEL_TOPMENU}; +const tMessage mess_topmenu_help_write = {"[Restore] bkup -> Card",10,16,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_WRITE,PANEL_TOPMENU}; +const tMessage mess_topmenu_help_notwrite = {"[Restore] is Invalid",10,16,COLOR_RED,8,MESSAGE_TOPMENU_HELP_WRITE,PANEL_TOPMENU}; +const tMessage mess_topmenu_help_end = {"[End] return to SystemMenu",10,28,COLOR_WHITE,8,MESSAGE_TOPMENU_HELP_END,PANEL_TOPMENU}; +const tMessage mess_topmenu_help_operate = {"touch below",10,48,COLOR_GREEN,8,MESSAGE_TOPMENU_HELP_OPERATE,PANEL_TOPMENU}; + +//O\ +const tPanel panel_dbglog = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_DBGLOG,SCREEN_UPPER}; +const tMemo memo_dbglog = {LOG_MAX,10,10,COLOR_WHITE,8,MEMO_DBGLOG,PANEL_DBGLOG}; + + +//ʏ펞 +//^Cg +#define FONT_SIZE_TITLE 12 +#define LOC_TITL_X (40-FONT_SIZE_TITLE*2) +#define LOC_TITL_Y 20 +#define LOC_TITL_W (400 - LOC_CONF_X*2) +#define LOC_TITL_H 50 +#define FONT_SIZE_PRODUCT 10 +const tPanel panel_title = {NULL_PTR,NULL_STR,LOC_TITL_X,LOC_TITL_Y,LOC_TITL_W,LOC_TITL_H,PANEL_TITLE,SCREEN_UPPER}; +const tMessage mess_title = {"title",0,0,COLOR_WHITE,FONT_SIZE_TITLE,MESSAGE_TITLE,PANEL_TITLE}; +const tMessage mess_product = {"product",0,LOC_TITL_H - 20,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_PRODUCT,PANEL_TITLE}; +const tMessage mess_product2 = {"product2",0,LOC_TITL_H - 10,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_PRODUCT2,PANEL_TITLE}; +const tMessage mess_version = {"version",LOC_TITL_W-FONT_SIZE_PRODUCT*6,FONT_SIZE_TITLE+2,COLOR_WHITE,FONT_SIZE_PRODUCT,MESSAGE_VERSION,PANEL_TITLE}; + +#define LOC_MESS_X 20 +#define LOC_MESS_W (400 - LOC_MESS_X*2) +#define LOC_MESS_Y (LOC_TITL_Y + LOC_TITL_H + 10) +#define LOC_MESS_H (240 - LOC_MESS_Y - 10) +//TOPj[ +//\̓OƔr +#define FONT_SIZE 10 +#define STR_LINE(ln) (FONT_SIZE + 2)*ln +const tPanel panel_menu = {NULL_PTR,NULL_STR,LOC_MESS_X,LOC_MESS_Y,LOC_MESS_W,LOC_MESS_H,PANEL_MENU,SCREEN_UPPER}; +const tMessage mess_menu_read = {"[Backup] Card savedata Backup",10,STR_LINE(1),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_READ,PANEL_MENU}; +const tMessage mess_menu_write = {"[Restore] restore to Card",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_WRITE,PANEL_MENU}; +//const tMessage mess_menu_end = {"[End] close this apprication",10,STR_LINE(3),COLOR_WHITE,FONT_SIZE,MESSAGE_MENU_END,PANEL_MENU}; +const tMessage mess_menu_operate = {"touch below",10,STR_LINE(4),COLOR_GREEN,FONT_SIZE,MESSAGE_MENU_OPERATE,PANEL_MENU}; +const tMessage mess_sderr = {"Backup error",10,STR_LINE(6),COLOR_RED,FONT_SIZE,MESSAGE_MENU_ERROR,PANEL_MENU}; +const tMessage mess_carderr = {"CARD error",10,STR_LINE(7),COLOR_YELLO,FONT_SIZE,MESSAGE_MENU_CAUTION,PANEL_MENU}; +const tMessage mess_debug = {"Crush Mode",10,STR_LINE(3),COLOR_YELLO,FONT_SIZE,MESSAGE_MENU_DEBUG,PANEL_MENU}; + +//Backup +const tPanel panel_bkup = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_BKUP,SCREEN_UPPER}; +const tMessage mess_quit_operate = {"touch [Quit],or Push B",10,STR_LINE(4),COLOR_SKY,FONT_SIZE,MESSAGE_QUIT_OPERATE,PANEL_BKUP}; +const tMessage mess_conf = {"Do you execute?",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_CONF,PANEL_BKUP}; +const tMessage mess_result = {"result",10,STR_LINE(2),COLOR_WHITE,FONT_SIZE,MESSAGE_RESULT,PANEL_BKUP}; +const tMessage mess_operate = {"touch below",10,STR_LINE(4),COLOR_GREEN,FONT_SIZE,MESSAGE_OPERATE,PANEL_BKUP}; +const tMessage mess_status = {"status",10,STR_LINE(7),COLOR_WHITE,FONT_SIZE,MESSAGE_STATUS,PANEL_BKUP}; +const tMessage mess_count = {"count",10,STR_LINE(8),COLOR_WHITE,FONT_SIZE,MESSAGE_COUNT,PANEL_BKUP}; +const tMessage mess_count2 = {"count2",10,STR_LINE(9),COLOR_GREEN,FONT_SIZE,MESSAGE_COUNT2,PANEL_BKUP}; + + +//} +const tPanel panel_insexit = {NULL_PTR,NULL_STR,LOC_LOG_X,LOC_LOG_Y,LOC_LOG_W,LOC_LOG_H,PANEL_INSEXIT,SCREEN_UPPER}; +const tMessage mess_insexit = {"device insert or pull out is detected",10,STR_LINE(3),COLOR_RED,8,MESSAGE_INSEXT_1,PANEL_INSEXIT}; +const tMessage mess_insexit2 = {"return to top menu",10,STR_LINE(5),COLOR_WHITE,8,MESSAGE_INSEXT_2,PANEL_INSEXIT}; +const tMessage mess_insexit3 = {"please touch or push B",10,STR_LINE(6),COLOR_WHITE,8,MESSAGE_INSEXT_3,PANEL_INSEXIT}; + +//폜mF +const tPanel panel_delconf = {NULL_PTR,NULL_STR,LOC_CONF_X-10,LOC_CONF_Y,LOC_CONF_W+10,LOC_CONF_H*2,PANEL_DELCONF,SCREEN_UPPER}; +const tMessage mess_delconf_Title = {" *** DELETE *** ",10,10,COLOR_YELLO,16,MESSAGE_DELCONF_TITLE,PANEL_DELCONF}; +const tMessage mess_delconf_Msg = {" caution!",10,50,COLOR_YELLO,12,MESSAGE_DELCONF_MSG,PANEL_DELCONF}; +const tMessage mess_delconf_Msg2 = {"this is delete backup",10,70,COLOR_YELLO,12,MESSAGE_DELCONF_MSG2,PANEL_DELCONF}; +const tMessage mess_delconf_Msg3 = {"Do you execute?",10,90,COLOR_YELLO,12,MESSAGE_DELCONF_MSG3,PANEL_DELCONF}; + + + +nn::os::LightEvent stopEvnt(true); + +char scr_ver[16]; +char scr_err[32]; +char scr_debug[32]; +//menu +bool ScrInitialize(uptr heap,u32 size) +{ + scr_evnt = EVNT_NONE; + + if (gui.Initialize(heap,size,&stopEvnt)==false)return false; + + + gui.ButtonCallback((uptr)pushButton); + //R|[lgo^ + gui.PanelSet(&panel_Read); + gui.PanelSet(&panel_Write); +// gui.PanelSet(&panel_End); + gui.PanelSet(&panel_Yes); + gui.PanelSet(&panel_No); + gui.PanelSet(&panel_Quit); + gui.PanelSet(&panel_Error); + gui.PanelSet(&panel_Success); + gui.PanelSet(&panel_Confirm); + gui.PanelSet(&panel_delconf); + gui.PanelSet(&panel_topmenu_help); + gui.PanelSet(&panel_title); + gui.PanelSet(&panel_menu); + gui.PanelSet(&panel_bkup); + gui.PanelSet(&panel_dbglog); + gui.PanelSet(&panel_insexit); + + gui.PanelLineStyle(PANEL_TITLE,COLOR_BLACK); + + + gui.MessSet(&mess_Title_Err); + gui.MessSet(&mess_Info_Err); + gui.MessSet(&mess_Info2_Err); + gui.MessSet(&mess_Info3_Err); + gui.MessSet(&mess_Title_Suc); + gui.MessSet(&mess_Info_Suc); + gui.MessSet(&mess_Info2_Suc); + gui.MessSet(&mess_conf_Title); + gui.MessSet(&mess_conf_Msg); + gui.MessSet(&mess_delconf_Title); + gui.MessSet(&mess_delconf_Msg); + gui.MessSet(&mess_delconf_Msg2); + gui.MessSet(&mess_delconf_Msg3); + + gui.MessSet(&mess_topmenu_help_read); + gui.MessSet(&mess_topmenu_help_write); + gui.MessSet(&mess_topmenu_help_end); + gui.MessSet(&mess_topmenu_help_operate); + + gui.MessSet(&mess_title); + gui.MessSet(&mess_version); + gui.MessSet(&mess_product); + gui.MessSet(&mess_product2); + gui.MessSet(&mess_menu_read); + gui.MessSet(&mess_menu_write); +// gui.MessSet(&mess_menu_end); + gui.MessSet(&mess_menu_operate); + gui.MessSet(&mess_quit_operate); + gui.MessSet(&mess_conf); + gui.MessSet(&mess_operate); + gui.MessSet(&mess_sderr); + gui.MessSet(&mess_carderr); + gui.MessSet(&mess_debug); + gui.MessSet(&mess_result); + gui.MessSet(&mess_status); + gui.MessSet(&mess_count); + gui.MessSet(&mess_count2); + + gui.MessSet(&mess_insexit); + gui.MessSet(&mess_insexit2); + gui.MessSet(&mess_insexit3); + + gui.MemoSet(&memo_dbglog); + + gui.MemoEffective(MESSAGE_PRODUCT); + gui.MessEffective(MESSAGE_ERROR_TITLE); + gui.MessEffective(MESSAGE_ERROR_INFO); + gui.MessEffective(MESSAGE_ERROR_INFO2); + gui.MessEffective(MESSAGE_ERROR_INFO3); + gui.MessEffective(MESSAGE_SUCCESS_TITLE); + gui.MessEffective(MESSAGE_SUCCESS_INFO); + gui.MessEffective(MESSAGE_SUCCESS_INFO2); + gui.MessEffective(MESSAGE_CONFIRM_TITLE); + gui.MessEffective(MESSAGE_CONFIRM_MSG); + gui.MessEffective(MESSAGE_DELCONF_TITLE); + gui.MessEffective(MESSAGE_DELCONF_MSG); + gui.MessEffective(MESSAGE_DELCONF_MSG2); + gui.MessEffective(MESSAGE_DELCONF_MSG3); + gui.MessEffective(MESSAGE_TOPMENU_HELP_READ); + gui.MessEffective(MESSAGE_TOPMENU_HELP_WRITE); + gui.MessEffective(MESSAGE_TOPMENU_HELP_END); + gui.MessEffective(MESSAGE_TOPMENU_HELP_OPERATE); + gui.MessEffective(MESSAGE_MENU_READ); + gui.MessEffective(MESSAGE_MENU_WRITE); +// gui.MessEffective(MESSAGE_MENU_END); + gui.MessEffective(MESSAGE_MENU_OPERATE); + gui.MessEffective(MESSAGE_INSEXT_1); + gui.MessEffective(MESSAGE_INSEXT_2); + gui.MessEffective(MESSAGE_INSEXT_3); + gui.MessEffective(MESSAGE_TITLE); + gui.MessEffective(MESSAGE_VERSION); + gui.MemoEffective(MEMO_DBGLOG); + + gui.PanelLineStyle(PANEL_DELCONF,COLOR_YELLO); + + sprintf(scr_ver,"ver %.2f",VERSION); + gui.MessStr(MESSAGE_VERSION,scr_ver); + gui.MessStr(MESSAGE_MENU_CAUTION,scr_err); + gui.MessStr(MESSAGE_MENU_ERROR,scr_err); + gui.MessStr(MESSAGE_MENU_DEBUG,scr_debug); + + return true; + +} + +void ScrFinalize() +{ + stopEvnt.Signal(); + while(stopEvnt.TryWait()){ + nn::os::Thread::Yield(); + + }; + gui.Finalize(); +} + +//YES-NO {^ +void YesNo() +{ + gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_B); + gui.PanelEffective(PANEL_YES); + gui.PanelEffective(PANEL_NO); + gui.Draw(); +} + +void Quit() +{ + gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_B); + gui.PanelEffective(PANEL_QUIT); + gui.Draw(); +} + + +//gbvj[ +//:J[h +void scr_TopMenuDbg(bool formatted,bool insertted)//fobOp +{ + scr_evnt = EVNT_NONE; + gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_R | nn::hid::BUTTON_L); + + if (formatted) + {//[h”\ + gui.MessSet(&mess_topmenu_help_read); + gui.PanelEffective(PANEL_READ); + }else{//[hs + gui.MessSet(&mess_topmenu_help_notread); + gui.PanelEffective(PANEL_READ,false); + } + if (insertted) + {//݉ + gui.MessSet(&mess_topmenu_help_write); + gui.PanelEffective(PANEL_WRITE); + }else{//ݕs + gui.MessSet(&mess_topmenu_help_notwrite); + gui.PanelEffective(PANEL_WRITE,false); + } + + gui.MessEffective(MESSAGE_TOPMENU_HELP_READ); + gui.MessEffective(MESSAGE_TOPMENU_HELP_WRITE); +// gui.PanelEffective(PANEL_END); + gui.PanelEffective(PANEL_TOPMENU); + gui.Draw(); +} + +//ʏ펞 + +//v_NgR[h +//:J[hAgZ[uɋL^ꂽ +char scr_pcode[32]; +void scr_PrdCode(char *s) +{ + strcpy(scr_pcode,"CARD : "); + if (s[0]==0) strcat(scr_pcode,"----"); + else strcat(scr_pcode,s); + gui.MessStr(MESSAGE_PRODUCT,scr_pcode); +} + +char scr_pcode2[64]; +void scr_PrdCodeEx(char *s) +{ + strcpy(scr_pcode2,"BKUP : "); + if (s[0]==0) strcat(scr_pcode2,"----"); + else strcat(scr_pcode2,s); + gui.MessStr(MESSAGE_PRODUCT2,scr_pcode2); +} + +//폜̎smF +void scr_DelConf() +{ + scr_evnt = EVNT_NONE; + gui.PanelEffective(PANEL_DELCONF); + YesNo(); +} + + +//Top menu +//:foCX +//arg : v_NgR[hv +void scr_TopMenu(bool formatted,bool inserted,bool exfm,bool sdins,int err) +{ + + int i; + scr_evnt = EVNT_NONE; + //gui.ButtonMask(nn::hid::BUTTON_A | nn::hid::BUTTON_L nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X); + +#ifdef ENABLE_CRUSH + extern bool CrashForDebug; + //foOp Y-> NbV[h,L -> foO[h + gui.ButtonMask(nn::hid::BUTTON_Y | nn::hid::BUTTON_L | nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X); + if (CrashForDebug==0) gui.MessEffective(MESSAGE_MENU_DEBUG,false,false); + else{ + sprintf(scr_debug,"Crush mode %d",CrashForDebug); + gui.MessEffective(MESSAGE_MENU_DEBUG); + } +#else//DOWN+Y = debug + gui.ButtonMask( nn::hid::BUTTON_DOWN | nn::hid::BUTTON_LEFT | nn::hid::BUTTON_X | nn::hid::BUTTON_Y); +#endif + + //gui.PanelLineStyle(PANEL_MENU,COLOR_WHITE); + //gui.PanelLineStyle(PANEL_TITLE,COLOR_BLACK); + gui.MessStr(MESSAGE_TITLE," < CTR Card Savedata Mover >"); + //bool flg = formatted && sdins; +// gui.PanelEffective(PANEL_READ,flg,flg);//savedata & SD exist + //bool flg2= inserted && exfm; +// gui.PanelEffective(PANEL_WRITE,flg2,flg2);//CARD & exsave exist + + gui.MessEffective(MESSAGE_MENU_ERROR,false,false); + gui.MessEffective(MESSAGE_MENU_CAUTION,false,false); + gui.MessEffective(MESSAGE_MENU_OPERATE,false,false); + //Е̂ݗL + if (formatted && sdins && (exfm == false)) + {//obNAbv + gui.MessEffective(MESSAGE_MENU_OPERATE); + gui.PanelEffective(PANEL_READ); + gui.PanelEffective(PANEL_WRITE,false,false); + }else if (exfm && inserted) + {//XgA + gui.PanelEffective(PANEL_READ,false,false); + i =0; + if (err & SDATA_ERRPUT_MEDIA) i = ERC_MEDIA + ERC_DEV_CARD;//obNAbvȂ + else + if (err & SDATA_ERRPUT_PCODE) i = ERC_DEV_OTHER + ERC_PRODCODE;//v_NgR[hsv + if (i !=0 ) + { + gui.PanelEffective(PANEL_WRITE,false,false); + sprintf(scr_err,"ERROR %d",i); + gui.MessEffective(MESSAGE_MENU_ERROR); + } + else{ + gui.MessEffective(MESSAGE_MENU_OPERATE); + gui.PanelEffective(PANEL_WRITE); + } + }else{//Ȃ + gui.PanelEffective(PANEL_WRITE,false,false); + gui.PanelEffective(PANEL_READ,false,false); + + //if (inserted == false) i = ERC_DEVICE + ERC_DEV_CARD;//J[h + //else + if (inserted == false) + { + strcpy(scr_err,"Please Insert Card"); + gui.MessEffective(MESSAGE_MENU_CAUTION); + + }else{ + if (err & SDATA_ERRPUT_MEDIA) i = ERC_MEDIA + ERC_DEV_CARD;//obNAbvȂ + else + if (err & SDATA_ERRPUT_VERIFI) i = ERC_SDK_VERIFI + ERC_DEV_CARD;//f[^Ă + else if (sdins == false) i = ERC_DEVICE + ERC_DEV_OUT;//ofoCX + else i = ERC_FORMAT + ERC_DEV_CARD;//tH[}bgG[ + sprintf(scr_err,"ERROR %d",i); + gui.MessEffective(MESSAGE_MENU_ERROR); + } + //}else if ((flg ==false) || (flg2 == false)) + //{//ǂ_ + // if (formatted == false) i = ERC_FORMAT + ERC_DEV_CARD;//J[htI[}bg + // else i = ERC_FORMAT + ERC_DEV_OUT;//obNAbv悪tI[}bg + // sprintf(scr_err,"CAUTION %d",i); + // gui.MessEffective(MESSAGE_MENU_CAUTION); + //}else if(agr==false) + } + + + gui.MessEffective(MESSAGE_PRODUCT); + gui.MessEffective(MESSAGE_PRODUCT2); + +/* + eColor col; + if ((flg == false) && (flg2 == false))col = COLOR_RED; + else if ((flg == false) || (flg2 == false))col = COLOR_YELLO; + if (formatted) gui.MessEffective(MESSAGE_MENU_CARDERR,false,false); + else{ + gui.MessCol(MESSAGE_MENU_CARDERR,col); + if (inserted) gui.MessStr(MESSAGE_MENU_CARDERR,"savedata is not format or broken"); + else gui.MessStr(MESSAGE_MENU_CARDERR,"CARD is not found"); + gui.MessEffective(MESSAGE_MENU_CARDERR); + } + if (exfm) gui.MessEffective(MESSAGE_MENU_SDERR,false,false); + else{ + gui.MessCol(MESSAGE_MENU_SDERR,col); + if (sdins) gui.MessStr(MESSAGE_MENU_SDERR,"backup data is not in SD"); + else gui.MessStr(MESSAGE_MENU_SDERR,"SD is not found"); + gui.MessEffective(MESSAGE_MENU_SDERR); + } +*/ +// gui.PanelEffective(PANEL_END); + gui.PanelEffective(PANEL_TITLE); + gui.PanelEffective(PANEL_MENU); + + gui.Draw(); +} + +//fobOpA{^҂ +void ScrStep() +{ + scr_evnt = EVNT_NONE; + gui.ButtonMask(nn::hid::BUTTON_B); +} + + +void ClearBkupMess() +{ + gui.MessEffective(MESSAGE_CONF,false,false); + gui.MessEffective(MESSAGE_RESULT,false,false); + gui.MessEffective(MESSAGE_OPERATE,false,false); + gui.MessEffective(MESSAGE_QUIT_OPERATE,false,false); + gui.MessEffective(MESSAGE_STATUS,false,false); + gui.MessEffective(MESSAGE_COUNT,false,false); + gui.MessEffective(MESSAGE_COUNT2,false,false); + gui.PanelEffective(PANEL_BKUP); +} + +//Backup +void scr_Backup() +{ + scr_evnt = EVNT_NONE; + gui.PanelLineStyle(PANEL_BKUP,COLOR_SKY); + gui.MessStr(MESSAGE_TITLE," --- Backup Card Savedata ---"); + gui.PanelEffective(PANEL_TITLE); + ClearBkupMess(); + gui.Draw(); + +} +void scr_BackupYesNo() +{ + scr_Backup(); + gui.MessEffective(MESSAGE_CONF); + gui.MessEffective(MESSAGE_OPERATE); + YesNo(); +} + +//restore +void scr_Restore() +{ + scr_evnt = EVNT_NONE; + gui.PanelLineStyle(PANEL_BKUP,COLOR_PARPL); + gui.MessStr(MESSAGE_TITLE,"--- Restore Card Savedata ---"); + gui.PanelEffective(PANEL_TITLE); + ClearBkupMess();//backupƓplg + gui.Draw(); + +} +void scr_RestoreYesNo() +{ + scr_Restore(); + gui.MessEffective(MESSAGE_CONF); + gui.MessEffective(MESSAGE_OPERATE); + YesNo(); +} + + +void scr_Status(char *s,eColor col) +{ + gui.MessCol(MESSAGE_STATUS,col); + gui.MessStr(MESSAGE_STATUS,s); + gui.MessEffective(MESSAGE_STATUS); + gui.Draw(); +} + +void scr_ResultQuit(char *s,eColor col) +{ + gui.MessCol(MESSAGE_RESULT,col); + gui.MessStr(MESSAGE_RESULT,s); + gui.MessEffective(MESSAGE_RESULT); + gui.MessEffective(MESSAGE_QUIT_OPERATE); + Quit(); +} + + +void scr_InsExitQuit() +{ + ClearBkupMess(); + gui.PanelLineStyle(PANEL_INSEXIT,COLOR_RED); + gui.PanelEffective(PANEL_INSEXIT); + Quit(); +} + +// JEg/MAX \ +char str_Counter[128]; +char str_Counter2[128]; +void scr_CountPerMax(int ct,int max) +{ + sprintf(str_Counter,"%d / %d",ct,max); + gui.MessStr(MESSAGE_COUNT,str_Counter); + gui.MessEffective(MESSAGE_COUNT); + gui.Draw(); +} + +//Q[Wtotal +void scr_CountPerMax2(int ct,int max,int total) +{ + if (total == -1) str_Counter2[0]=0; + else if (total != 0){ +// gui.MessCol(MESSAGE_COUNT2,COLOR_WHITE); + sprintf(str_Counter2,"total size %d",total); + }else{ +// gui.MessCol(MESSAGE_COUNT2,COLOR_YELLO); + int i; + int lv = ct/(max/25); + for (i =0;i'; + while ( i < 25 )str_Counter2[i++] = '|'; + str_Counter2[i] = 0; + } + //sprintf(str_Counter2,"%d / %d",ct,max); + gui.MessStr(MESSAGE_COUNT2,str_Counter2); + gui.MessEffective(MESSAGE_COUNT2); + gui.Draw(); + +} + +void scr_MessOnCount2(char *str) +{ +// gui.MessCol(MESSAGE_COUNT2,COLOR_YELLO); + gui.MessStr(MESSAGE_COUNT2,str); + gui.MessEffective(MESSAGE_COUNT2); + gui.Draw(); +} + + +//smF +void scr_ConfirmDbg(char *str) +{ + scr_evnt = EVNT_NONE; + gui.MessStr(MESSAGE_CONFIRM_TITLE,str); + gui.PanelEffective(PANEL_CONFIRM); + YesNo(); +} + + +//G[\Quit{^ +void scr_ErrorQuitDbg(tColStr **s) +{ + scr_evnt = EVNT_NONE; + gui.MessStr(MESSAGE_ERROR_TITLE,s[0]->str); + gui.MessCol(MESSAGE_ERROR_TITLE,s[0]->color); + gui.MessStr(MESSAGE_ERROR_INFO,s[1]->str); + gui.MessCol(MESSAGE_ERROR_INFO,s[1]->color); + gui.MessStr(MESSAGE_ERROR_INFO2,s[2]->str); + gui.MessCol(MESSAGE_ERROR_INFO2,s[2]->color); + gui.MessStr(MESSAGE_ERROR_INFO3,s[3]->str); + gui.MessCol(MESSAGE_ERROR_INFO3,s[3]->color); + gui.PanelEffective(PANEL_ERROR); + Quit(); +} + +//\Quit{^ +void scr_SuccessQuitDbg(tColStr **s) +{ + scr_evnt = EVNT_NONE; + gui.MessStr(MESSAGE_SUCCESS_TITLE,s[0]->str); + gui.MessCol(MESSAGE_SUCCESS_TITLE,s[0]->color); + gui.MessStr(MESSAGE_SUCCESS_INFO,s[1]->str); + gui.MessCol(MESSAGE_SUCCESS_INFO,s[1]->color); + gui.MessStr(MESSAGE_SUCCESS_INFO2,s[2]->str); + gui.MessCol(MESSAGE_SUCCESS_INFO2,s[2]->color); + gui.PanelEffective(PANEL_SUCCESS); + Quit(); +} + + +//fobOO +void scr_DgbLog(cStrLst *p) +{ + gui.PanelLineStyle(PANEL_DBGLOG,COLOR_BLUE); + + for (int i=0;igetpos()+1;i++)gui.MemoStr(MEMO_DBGLOG,p->line(i),i); + + gui.PanelEffective(PANEL_DBGLOG); + gui.Draw(); +} + + + +int ScrDbgLogGetMax() +{ + return LOG_MAX; +} + + +void scr_Draw() +{ + gui.Draw(); +} + +void scr_GetEvnt() +{ +// gui.thUpdate(); +} + + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/common/common.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/common/common.cpp new file mode 100644 index 0000000..0abeace --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/common/common.cpp @@ -0,0 +1,187 @@ +#include +#include +#include "common.h" +#include "sleep.h" +#include "demo.h" + + +extern demo::RenderSystemDrawing s_RenderSystem; +extern nn::fnd::ExpHeap appHeap; +extern uptr heapForGx; + +// t@CVXeƑJڂX[vƂ̔rɗp +//nn::os::CriticalSection g_SleepCS; +// HOME {^Jڂƃt@CVXe̔rɗpi蓮Zbgj +nn::os::LightEvent g_TransitionEvent; +// X[vƃt@CVXe̔rɗpi蓮Zbgj +nn::os::LightEvent g_AwakeEvent; + +void restoreGraphicSetting() +{ + // GPU WX^ݒ̕A + // AL DMPGL API gpĐݒ肵Ԃ̕Â + // WX^ݒR}h͑SčĔsׂ + nngxUpdateState(NN_GX_STATE_ALL); + nngxValidateState(NN_GX_STATE_ALL,GL_TRUE); +} + +FUNCP end_func; +void InitSysBreak(uptr adrs){ + end_func = (FUNCP)adrs; + + SleepHandler::Initialize(); + + //g_SleepCS.Initialize(); + g_AwakeEvent.Initialize(true); + g_TransitionEvent.Initialize(true); + + // N͏ Signal ԂɂĂ + g_AwakeEvent.Signal(); + g_TransitionEvent.Signal(); + + // AvbgCuɊւ@\Lɂ + nn::applet::Enable(false); + // gx, snd, dsp eCu Initialize ֐ applet::Enable() ̌ɌĂ΂Ȃ΂ȂȂ + // ɁAgx ̏ł nngxInitialize ֐́AEnable() ̏Ǐɍsׂ + + // S\ɓd{^ꂽȂǁAɏIĂꍇAŃAvI + if ( nn::applet::IsExpectedToCloseApplication() ) + { + SleepHandler::Finalize(); + nn::Result result = nn::applet::PrepareToCloseApplication(); + NN_UTIL_PANIC_IF_FAILED( result ); + nn::applet::CloseApplication(); + } + // OtBbNXCȕ́Aȍ~ōsȂ΂ȂȂ + // AAvP[V̏ + +} + + +//I +void finish() +{ + + SleepHandler::Finalize();//SLEEP + //g_SleepCS.Finalize(); + + (*end_func)(); + + g_AwakeEvent.Finalize(); + g_TransitionEvent.Finalize(); + + nn::fs::Finalize(); + + + appHeap.Free(reinterpret_cast(heapForGx)); + appHeap.Finalize(); + + nn::os::SetDeviceMemorySize(0); + nn::os::SetHeapSize(0); + + NN_LOG("End\n"); + nn::applet::PrepareToCloseApplication(); + nn::applet::CloseApplication(); +} + + +void CheckSysBreak(){ + // X[v̋ŃA1t[̕`抮҂Ă LCD Lɂ + if ( SleepHandler::s_IsAfterWakeUp ) { + nn::gx::StartLcdDisplay(); + SleepHandler::s_IsAfterWakeUp = false; + } + + // GPU ̃WX^ݒ̐lꍇA + // eJځAX[vvւ̕ԓ͕`Iɍsׂ + + // {̃X[v + if ( SleepHandler::IsSleepRequested() ) + { + SleepHandler::SleepSystem(); + } + + // Iv`FbN + if ( nn::applet::IsExpectedToCloseApplication() ) + { + finish(); + } + + // AvP[V̑Jڏs + + // HOME{^iOtBbNXCuς݂łȂ΂ȂȂj + if ( nn::applet::IsExpectedToProcessHomeButton() ) + { + // ŃtOȂǂ𔻒肵ăubN𔲂悤ɂ HOME {^֎~Ԃł + // nn::applet::ClearHomeButtonState() ɂ HOME {^tO폜Kv + + g_TransitionEvent.ClearSignal(); + + // t@CVXe͑Jڂ҂ + //if ( g_SleepCS.TryEnter() ) + { + // X[vv REJECT 悤 + nn::applet::DisableSleep(); + + //nngxWaitCmdlistDone(); + nn::applet::ProcessHomeButton(); + nn::applet::AppletWakeupState wState = nn::applet::WaitForStarting(); + NN_UNUSED_VAR(wState); + + //g_SleepCS.Leave(); + g_TransitionEvent.Signal(); + + // HOME j[̒fobe[s̗vɂ + // AvIƔfꂽꍇAAṽC[v𔲂ďI + if ( nn::applet::IsExpectedToCloseApplication() ) + { + // `挠͓nĂȂ + finish(); + } + + nn::applet::EnableSleep(true); + + // OtBbN̐ݒ߂ + restoreGraphicSetting(); + } + + } + + + // d{^iOtBbNXCuς݂łȂ΂ȂȂj + if ( nn::applet::IsExpectedToProcessPowerButton() ) + { + g_TransitionEvent.ClearSignal(); + + // t@CVXe͑Jڂ҂ + //if ( g_SleepCS.TryEnter() ) + { + nn::applet::DisableSleep(); + //nngxWaitCmdlistDone(); + nn::applet::ProcessPowerButton(); + nn::applet::AppletWakeupState wState = nn::applet::WaitForStarting(); + + NN_UNUSED_VAR(wState); + + //g_SleepCS.Leave(); + g_TransitionEvent.Signal(); + + // AvIƔfꂽꍇAAṽC[v𔲂ďI + if ( nn::applet::IsExpectedToCloseApplication() ) + { + // `挠͓nĂȂ + finish(); + } + + nn::applet::EnableSleep(true); + + // OtBbN̐ݒ߂ + restoreGraphicSetting(); + } + + } + + + + +} diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/common/common.h b/branches/0thNUP_No_NUP/CardSaveDataMover/common/common.h new file mode 100644 index 0000000..730fb6c --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/common/common.h @@ -0,0 +1,11 @@ +#ifndef COMMON_H_ +#define COMMON_H_ + +typedef void (*FUNCP)(); + +void finish(); +void CheckSysBreak(); +void InitSysBreak(uptr adrs); + + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/common/shfnt.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/common/shfnt.cpp new file mode 100644 index 0000000..65ca877 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/common/shfnt.cpp @@ -0,0 +1,368 @@ + +#include +#include +#include +#include +#include +#include + +#include "demo.h" + +const char s_ShaderBinaryFilePath[] = "rom:/nnfont_RectDrawerShader.shbin"; + +extern nn::fnd::ExpHeap appHeap; + +//--------------------------------------------------------------------------- +//! @brief シェーダの初期化を行います。 +//! +//! @param[in,out] pResource 描画用リソースを管理するオブジェクトへのポインタ。 +//--------------------------------------------------------------------------- +void* +InitShaders(nn::font::RectDrawer* pDrawer) +{ + const size_t ROMFS_BUFFER_SIZE = 1024 * 64; + static char buffer[ROMFS_BUFFER_SIZE]; + + nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE); + nn::fs::FileReader shaderReader(s_ShaderBinaryFilePath); + + const u32 fileSize = (u32)shaderReader.GetSize(); + + void* shaderBinary = appHeap.Allocate(fileSize); + NN_NULL_ASSERT(shaderBinary); + + shaderReader.Read(shaderBinary, fileSize); + + const u32 vtxBufCmdBufSize = + nn::font::RectDrawer::GetVertexBufferCommandBufferSize(shaderBinary, fileSize); + void *const vtxBufCmdBuf = appHeap.Allocate(vtxBufCmdBufSize); + NN_NULL_ASSERT(vtxBufCmdBuf); + pDrawer->Initialize(vtxBufCmdBuf, shaderBinary, fileSize); + + appHeap.Free(shaderBinary); + + shaderReader.Finalize(); + nn::fs::Unmount("rom:"); + return vtxBufCmdBuf; +} +/*---------------------------------------------------------------------------* + @brief グラフィックスの初期設定を行います。 + *---------------------------------------------------------------------------*/ +void +InitGX() +{ + glClearColor(0.3f, 0.3f, 0.3f, 1.0f); +} + + +//--------------------------------------------------------------------------- +//! @brief 描画の初期設定を行います。 +//! +//! @param[in] width 画面の幅。 +//! @param[in] height 画面の高さ。 +//--------------------------------------------------------------------------- +void +InitDraw( + int width, + int height +) +{ + // カラーバッファ情報 + // LCDの向きに合わせて、幅と高さを入れ替えています。 + const nn::font::ColorBufferInfo colBufInfo = { width, height, PICA_DATA_DEPTH24_STENCIL8_EXT }; + + const u32 screenSettingCommands[] = + { + + // ビューポートの設定 + NN_FONT_CMD_SET_VIEWPORT( 0, 0, colBufInfo.width, colBufInfo.height ), + + // シザー処理を無効 + NN_FONT_CMD_SET_DISABLE_SCISSOR( colBufInfo ), + + // wバッファの無効化 + // デプスレンジの設定 + // ポリゴンオフセットの無効化 + NN_FONT_CMD_SET_WBUFFER_DEPTHRANGE_POLYGONOFFSET( + 0.0f, // wScale : 0.0 でWバッファが無効 + 0.0f, // depth range near + 1.0f, // depth range far + 0, // polygon offset units : 0.0 で ポリゴンオフセットが無効 + colBufInfo), + }; + + nngxAdd3DCommand(screenSettingCommands, sizeof(screenSettingCommands), true); + + static const u32 s_InitCommands[] = + { + // カリングを無効 + NN_FONT_CMD_SET_CULL_FACE( NN_FONT_CMD_CULL_FACE_DISABLE ), + + // ステンシルテストを無効 + NN_FONT_CMD_SET_DISABLE_STENCIL_TEST(), + + // デプステストを無効 + // カラーバッファの全ての成分を書き込み可 + NN_FONT_CMD_SET_DEPTH_FUNC_COLOR_MASK( + false, // isDepthTestEnabled + 0, // depthFunc + true, // depthMask + true, // red + true, // green + true, // blue + true), // alpha + + // アーリーデプステストを無効 + NN_FONT_CMD_SET_ENABLE_EARLY_DEPTH_TEST( false ), + + // フレームバッファアクセス制御 + NN_FONT_CMD_SET_FBACCESS( + true, // colorRead + true, // colorWrite + false, // depthRead + false, // depthWrite + false, // stencilRead + false), // stencilWrite + }; + + nngxAdd3DCommand(s_InitCommands, sizeof(s_InitCommands), true); +} + +//--------------------------------------------------------------------------- +//! @brief ResFontを構築します。 +//! +//! @param[out] pFont 構築するフォントへのポインタ。 +//! @param[in] filePath ロードするフォントリソースファイル名。 +//! +//! @return ResFont構築の成否を返します。 +//--------------------------------------------------------------------------- +bool +InitFont( + nn::font::ResFont* pFont, + void* pBuffer +) +{ + // フォントリソースをセットします + bool bSuccess = pFont->SetResource(pBuffer); + + // 描画用バッファを設定します。 + const u32 drawBufferSize = nn::font::ResFont::GetDrawBufferSize(pBuffer); + void* drawBuffer = appHeap.Allocate(drawBufferSize, 4); + pFont->SetDrawBuffer(drawBuffer); + NN_NULL_ASSERT(drawBuffer); + + return bSuccess; +} + +//--------------------------------------------------------------------------- +//! @brief ResFontを破棄します。 +//! +//! @param[in] pFont 破棄するフォントへのポインタ。 +//--------------------------------------------------------------------------- +void +CleanupFont(nn::font::ResFont* pFont) +{ + // 描画用バッファの無効化 + // 描画用バッファがセットされているなら 構築時に SetDrawBuffer に渡したバッファへの + // ポインタが返ってきます。 + void *const drawBuffer = pFont->SetDrawBuffer(NULL); + if (drawBuffer != NULL) + { + appHeap.Free(drawBuffer); + } +} + +//--------------------------------------------------------------------------- +//! @brief 表示文字列用バッファを確保します。 +//! +//! @param[in] charMax 表示する文字列の最大文字数。 +//! +//! @return 確保した表示文字列用バッファへのポインタを返します。 +//--------------------------------------------------------------------------- +nn::font::DispStringBuffer* +AllocDispStringBuffer(int charMax) +{ + const u32 DrawBufferSize = nn::font::CharWriter::GetDispStringBufferSize(charMax); + void *const bufMem = appHeap.Allocate(DrawBufferSize); + NN_NULL_ASSERT(bufMem); + + return nn::font::CharWriter::InitDispStringBuffer(bufMem, charMax); +} + +//--------------------------------------------------------------------------- +//! @brief 文字列表示用にモデルビュー行列と射影行列を設定します。 +//! +//! @param[in] pDrawer RectDrawerオブジェクトへのポインタ。 +//! @param[in] width 画面の幅。 +//! @param[in] height 画面の高さ。 +//--------------------------------------------------------------------------- +void +SetupTextCamera( + nn::font::RectDrawer* pDrawer, + int width, + int height +) +{ + // 射影行列を正射影に設定 + { + // 左上原点とし、Y軸とZ軸の向きが逆になるように設定します。 + nn::math::MTX44 proj; + f32 znear = 0.0f; + f32 zfar = -1.0f; + f32 t = 0; + f32 b = static_cast(width); + f32 l = 0; + f32 r = static_cast(height); + nn::math::MTX44OrthoPivot(&proj, l, r, b, t, znear, zfar, nn::math::PIVOT_UPSIDE_TO_TOP); + pDrawer->SetProjectionMtx(proj); + } + + // モデルビュー行列を単位行列に設定 + { + nn::math::MTX34 mv; + nn::math::MTX34Identity(&mv); + pDrawer->SetViewMtxForText(mv); + } +} + +nn::font::RectDrawer drawer; +void *drawerBuf; +nn::font::DispStringBuffer *pDrawStringBuf0; +nn::font::DispStringBuffer *pDrawStringBuf1; +nn::font::ResFont font; +nn::font::TextWriter writer; +//--------------------------------------------------------------------------- +//! @brief ASCII文字列を描画します。 +//--------------------------------------------------------------------------- +void shf_DrawText_0( u16 x,u16 y,char *s) +{ + writer.SetCursor(x, y); + + writer.StartPrint(); + (void)writer.Print(s); + writer.EndPrint(); + drawer.BuildTextCommand(&writer); + + + drawer.DrawBegin(); + + SetupTextCamera(&drawer, NN_GX_DISPLAY0_WIDTH, NN_GX_DISPLAY0_HEIGHT); + writer.UseCommandBuffer(); + + drawer.DrawEnd(); +} + +void shf_DrawText_1( u16 x,u16 y,char *s) +{ + writer.SetCursor(x, y); + + writer.StartPrint(); + (void)writer.Print(s); + writer.EndPrint(); + drawer.BuildTextCommand(&writer); + + + drawer.DrawBegin(); + + SetupTextCamera(&drawer, NN_GX_DISPLAY1_WIDTH, NN_GX_DISPLAY1_HEIGHT); + writer.UseCommandBuffer(); + + drawer.DrawEnd(); +} + + +void shf_SetSize(f32 sz) +{ + writer.SetScale(sz/14,sz/20); +} + +void shf_SetScale(f32 h,f32 v) +{ + writer.SetScale(h,v); +} + + +void shf_SetFontSize(f32 sz) +{ + writer.SetFontSize(sz); +} + +f32 shf_GetFontWidth() +{ + return writer.GetFontWidth(); +} + +f32 shf_GetFontHeight() +{ + return writer.GetFontHeight(); +} + + +void shf_SetColor(f32 r,f32 g,f32 b,f32 a) +{ + writer.SetTextColor(nn::util::FloatColor(r,g,b,a)); +} + +//初期化 +//AppHeap確保、RenderSystem.Inititの後に呼ぶ +void SharedFontInit() +{ + + InitGX(); + + // 共有フォントの初期化 + NN_UTIL_PANIC_IF_FAILED(nn::pl::InitializeSharedFont()); + + // 共有フォントのロードが完了するまで待機 + while (nn::pl::GetSharedFontLoadState() != nn::pl::SHARED_FONT_LOAD_STATE_LOADED) + { + // 共有フォントのロードに失敗していないか確認 + if (nn::pl::GetSharedFontLoadState() == nn::pl::SHARED_FONT_LOAD_STATE_FAILED) + { + NN_TPANIC_("failed to load shared font!\n"); + } + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(1)); + } + + // 共有フォントの種類を取得 + //nn::pl::SharedFontType sharedFontType = nn::pl::GetSharedFontType(); + + // 共有フォントデータのアドレスを取得 + void* pFontBuffer = nn::pl::GetSharedFontAddress(); + + InitFont(&font, pFontBuffer); + + // 描画リソースの構築 + drawerBuf = InitShaders(&drawer); + + // 描画文字列用バッファの確保 + pDrawStringBuf0 = AllocDispStringBuffer(1024); + pDrawStringBuf1 = AllocDispStringBuffer(512); + + writer.SetDispStringBuffer(pDrawStringBuf0); + writer.SetFont(&font); + SetupTextCamera(&drawer, NN_GX_DISPLAY0_WIDTH, NN_GX_DISPLAY0_HEIGHT); + +} + + +void SharedFontFinalize() +{ + drawer.Finalize(); + + // 描画リソースの破棄 + appHeap.Free(drawerBuf); + + // フォントの破棄 + CleanupFont(&font); + + // 描画文字列用バッファの解放 + appHeap.Free(pDrawStringBuf1); + appHeap.Free(pDrawStringBuf0); + +} + + +/*---------------------------------------------------------------------------* + End of file + *---------------------------------------------------------------------------*/ diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/common/shfnt.h b/branches/0thNUP_No_NUP/CardSaveDataMover/common/shfnt.h new file mode 100644 index 0000000..e168087 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/common/shfnt.h @@ -0,0 +1,30 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: irp.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef GUI_SHFNT_H_ +#define GUI_SHFNT_H_ + +void SharedFontInit(); +void SharedFontFinalize(); +void shf_DrawText_0(u16 x,u16 y,char* s); +void shf_DrawText_1(u16 x,u16 y,char* s); +void shf_SetSize(f32 sz); +void shf_SetScale(f32 h,f32 v); +void shf_SetColor(f32 r,f32 g,f32 b,f32 a); +void shf_SetFontSize(f32 sz); +f32 shf_GetFontWidth(); +f32 shf_GetFontHeight(); + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/common/sleep.cpp b/branches/0thNUP_No_NUP/CardSaveDataMover/common/sleep.cpp new file mode 100644 index 0000000..67d32cc --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/common/sleep.cpp @@ -0,0 +1,110 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: sleep.cpp + + Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include + +#include "sleep.h" + +//extern nn::os::CriticalSection g_SleepCS; +extern nn::os::LightEvent g_TransitionEvent; +extern nn::os::LightEvent g_AwakeEvent; + +volatile bool SleepHandler::s_IsAfterWakeUp = false; + +/*------------------------------------------------------------------------*/ +void SleepHandler::Initialize( void ) +{ + nn::applet::SetSleepQueryCallback(SleepQueryCallback, 0); + nn::applet::SetAwakeCallback(AwakeCallback, 0); +// nn::applet::SetSleepCancelCallback(NULL, 0); // CancelCallback は使わないことを推奨します +} + +/*------------------------------------------------------------------------*/ +void SleepHandler::Finalize( void ) +{ + nn::applet::SetSleepQueryCallback(NULL, 0); + nn::applet::SetAwakeCallback(NULL, 0); + + nn::applet::DisableSleep(); +} + +/*------------------------------------------------------------------------* + システムスリープの指示が来ているかどうかを返します。 + *------------------------------------------------------------------------*/ +bool SleepHandler::IsSleepRequested( void ) +{ + if ( nn::applet::IsExpectedToReplySleepQuery() ) + return true; + + return false; +} + +/*------------------------------------------------------------------------* + 本体スリープ状態に移行させるための処理を行います。 + グラフィックスなどの処理がスリープに入っても問題ない + 適切なタイミングで呼び出す必要があります。 + *------------------------------------------------------------------------*/ +void SleepHandler::SleepSystem( void ) +{ + // SleepHandler::IsSleepRequested() == true における呼び出しが前提 + + // 何らかの理由で SleepQuery に対して REJECT を返す場合は、ここで判定して + // REJECT を返し、この関数を抜ける + + // ファイルシステム処理中はスリープをしない + //if ( g_SleepCS.TryEnter() ) + { + // スリープ前処理 + + nn::applet::ReplySleepQuery(nn::applet::REPLY_ACCEPT); + + g_AwakeEvent.Wait(); + + // スリープ復帰時の処理 + + // g_SleepCS.Leave(); + } +} + +/*------------------------------------------------------------------------* + スリープ問い合わせ時に呼ばれるコールバック + *------------------------------------------------------------------------*/ +AppletQueryReply SleepHandler::SleepQueryCallback( uptr arg ) +{ + NN_UNUSED_VAR(arg); + g_AwakeEvent.ClearSignal(); + + if ( !nn::applet::IsActive() ) + { + // Inactive なとき、メインスレッドは applet::WaitForStarting() で停止状態であり、 + // 他のスレッドも停止状態になっているはず(アプリケーション側の実装依存) + return nn::applet::REPLY_ACCEPT; + } + else + { + return nn::applet::REPLY_LATER; + } +} + +/*------------------------------------------------------------------------* + スリープ復帰時に呼ばれるコールバック + *------------------------------------------------------------------------*/ +void SleepHandler::AwakeCallback( uptr arg ) +{ + NN_UNUSED_VAR(arg); + g_AwakeEvent.Signal(); + + s_IsAfterWakeUp = true; +} diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/common/sleep.h b/branches/0thNUP_No_NUP/CardSaveDataMover/common/sleep.h new file mode 100644 index 0000000..15a14f1 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/common/sleep.h @@ -0,0 +1,46 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: sleep.h + + Copyright (C)2010 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef NN_SAMPLE_DEMOS_DEMO2_SLEEP_H_ +#define NN_SAMPLE_DEMOS_DEMO2_SLEEP_H_ + +/*------------------------------------------------------------------------* + 本体スリープに関連する処理 + *------------------------------------------------------------------------*/ + class SleepHandler + { + public: + SleepHandler() {} + ~SleepHandler() {} + + static void Initialize( void ); + static void Finalize( void ); + static bool IsSleepRequested( void ); + static void SleepSystem( void ); + + static AppletQueryReply SleepQueryCallback( uptr arg ); + static void AwakeCallback( uptr arg ); + static void CancelCallback( uptr arg ); + + // スリープからの復帰後、1フレーム分描画を待ってから LCD を有効にするためのフラグ + static volatile bool s_IsAfterWakeUp; + + private: + static nn::os::LightEvent s_AwakeEvent; + static bool s_IsInitialized; + }; + + +#endif // NN_SAMPLE_DEMOS_DEMO2_SLEEP_H_ diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/common/ver.h b/branches/0thNUP_No_NUP/CardSaveDataMover/common/ver.h new file mode 100644 index 0000000..e638593 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/common/ver.h @@ -0,0 +1,22 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: irp.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef VER_H_ +#define VER_H_ + +#define VERSION 1.02 + + +#endif diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/docs/Error_code.txt b/branches/0thNUP_No_NUP/CardSaveDataMover/docs/Error_code.txt new file mode 100644 index 0000000..0920809 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/docs/Error_code.txt @@ -0,0 +1,37 @@ + +//エラー表示コードの下位2桁 +0, //不明 +1, //デバイスが見つからない +2,//プロダクトコード不一致 +3,//ベリファイエラー +4,//パスが長すぎ +5,//ディレクトリ深すぎ +6, //メディアが見つからない(サブ基盤外れなど) +10, //ファイルが見つからない +20, //既に存在 +21, //空き容量がない +22, //書込み禁止 +30, //アクセスエラー +50, //フォーマットエラー +60, //検証に失敗、改竄 +70, //ROM情報エラー +80, //リトライ要求 +90, //実行時エラー +99 //深刻なエラー + + +//上位 +CARD = 100, +BKUP DEVICE = 200, +OTHER = 300 + + +これらの合成で表示される +例えば、カードが刺さっていない場合は 101 となる + + +通常時に発生しやすいと思われるもの + +302 .. プロダクトコードが一致しない +101 .. カードが見つからない + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/docs/HowToビルド.txt b/branches/0thNUP_No_NUP/CardSaveDataMover/docs/HowToビルド.txt new file mode 100644 index 0000000..4733c02 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/docs/HowToビルド.txt @@ -0,0 +1,24 @@ +mF‹F +ARM RVC_Nintendo 4.1 +omake 0.9.8.5 +CTR SDK2.0 + RepairtoolvCx[gpb` +SDK2.0pSampledemos common,gxrhĂ + +vFSDKȍ~̃o[WɃVXeAbvf[gꂽ{ + +omakeroot̂fBNgomake +•ʂ̏ꍇ +bodyŃrhocia AImpomakeŎw +rhNANDC|[gpccił + +C|[g: +ciarcC|[g -> SD .. DevMenuKv +J[hNC|[g -> NAND + +ʎY@ł̎sɂ̓}X^OK{ +cia OLStŃ}X^O +ciaō쐬cci}X^O + +J[hC|[gŎsꍇcia`FbN +ciã}X^OSDC|[g”ۂŊmFł + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/docs/release.txt b/branches/0thNUP_No_NUP/CardSaveDataMover/docs/release.txt new file mode 100644 index 0000000..eb95a35 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/docs/release.txt @@ -0,0 +1,55 @@ +//////////////////////////////////////////////////////////////// +{c[ uNintendo for 3DSvѐpJ[hpł +J[h̃Z[uf[^obNAbvyуXgA܂ +//////////////////////////////////////////////////////////////// + +NANDC|[gĂAAvl̎菇ŋN + +(C|[g菇) +EfobK̓C^"cci"J[hɏ +EHomej[J[hNj[Inports +Ej[ImportI +EId{^Z ->"d؂"^b` +dȂȂƃACRj[Ɍ܂ + + +(NAND폜) +N܂ł̓C|[gƓl +Ej[Deletes +I̓j[ɖ߂܂ + +(eXgp^[) +J[h̃obNAbvɃeXgf[^݂܂ +茳ɎgQ[J[hꍇ̓mFpł +N܂ł̓C|[gƓl +EfobK̓C^"cci"J[hɏ +EJ[h{̂ɍj[Test Datas +EJ[\œeIAAŃCgAXŃxt@C +ʂCasual Test IԁA̓[X̃`FbNɎgx + + +CgɈUIHomej[ɂǂ +Nand̃c[NA[hXgA +Home{^ȂǂŃc[IAJ[hNxt@C + + +c[{̂̑͑}jAQ + + +[Histry] +1.02 Remaster 2.0.6(\) + SDK_2.0 Ńrh + Nɖf[OFF -> DEA-SUPŏoĂt[Yb΍A{c[ł͔Ėꉞ + i‚̂܂ɒʐM͐؂ȂASȒ~͖{̃XCb`j + oi[AACRftHgύX + Homej[‹œmF + tHg{̓tHgɕύX +1.01 Remaster 2.0.5 + Home{^Adł̒fIɑΉ + I肵Ȃ̂ŕ\Xbh֐R[ɕύX + ޶ނȂȂǃfBAFłȂꍇ̃G[lj + +1.00 [X:Remaser 2.0.4 + fobO[h̖ + + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/docs/マスタリング.txt b/branches/0thNUP_No_NUP/CardSaveDataMover/docs/マスタリング.txt new file mode 100644 index 0000000..a7d2309 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/docs/マスタリング.txt @@ -0,0 +1,9 @@ +ʎY@ł̓ɂ̓}X^OKv + +cia̓T[oF؁iOLSjK{ +擾ɂ͑O擾胊}X^o[WグKv(2011/2) +W[rsfŎw(Remasterversion) +}Ciƃ}CNOmakefile +MAKECIAFLAGS = -minor 0 -micro 1 +̏ꍇ *.0.1 (*rsfRemasterversion) + diff --git a/branches/0thNUP_No_NUP/CardSaveDataMover/docs/操作説明.txt b/branches/0thNUP_No_NUP/CardSaveDataMover/docs/操作説明.txt new file mode 100644 index 0000000..5ae7423 --- /dev/null +++ b/branches/0thNUP_No_NUP/CardSaveDataMover/docs/操作説明.txt @@ -0,0 +1,41 @@ + +<상j[> + +삪oԂ̂ƂʂɃ{^\ + +EobNAbvԂŃJ[h +obNAbvL + +EobNAbvԂł +XgAL + +(obNAbv) +^b`Ďs +J[h{̓ɓǂݏo܂ + +(XgA) +^b`Ďs +obNAbveJ[h֏܂ +Ǝŏ +s̏ꍇ͏܂ + +(obNAbvf[g) +擪ʂ L[ LEFT + X + + + +ȉArhɃtOL(my_dess.h )ɂꍇ̂ݎg + +//NbV[h +߂ۂɃf[^󂷁Axt@CŕKG[ +擪ʂŁ@x@{^ + +//foO[h +擪ʂ +x(0.09܂) +擪ʂ +X+x(1.00ȍ~) + +NbV[hLF@L {^ + +//eXgf[^ +foO[hɐ擪ʂłq{^ + diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.bsf b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.bsf new file mode 100644 index 0000000000000000000000000000000000000000..104a94da96cd5d963d349ca5c6fcce26ae7e3cbb GIT binary patch literal 2302 zcmb7@%}&BV6ov0r6Q4m6H@Z+KhJ|rsM6B@-iN&}UA&7ugsXvL2;Tss=z?CbPK7-HU z)`;f}40Xb^b~0(1PS3sfyQi1I&zzJblt2oys8<2cr*etalpCCea)sR)c7e2|i~WpD z%Rcro7N2+UHiF)~Uy~`R|H-i|w|LvZ70EsBD^ipPeP2RkjQky)vxJ;2?`%a`MK<2; zYzL^;09`kOt2fp#wk|zHu)7fFWNu`{_Q#rGY=0EX_#@P9p&Pog2InT%2DrMq)-it1 z5bM@4GJuy|>5rV>09lO8Ax`gbHW_E@jjjxRjO#yrP0mrF2RAOE<`)kz2d6kOwUp*I z93`+s$UK?1hPc}iwV4q^!TDfENmN43p675qs~7dEzSM{MR`2Q)_czs1k9R9iC+b3# z6`dZs&Cc53ZE5GPQMHZQ&9SRVZt6E>3%bKUwF@%riEnqMis|N;Ye~iGdv;(iqYmL% zgnF^1x3#kaqppIk4p-ag{~U}rnxmrmV?1-}BHb4wwvf|Jvo7{BYB!CoUDx@U+m9xI zZ~1Ac&QC+NAI&!0$)cen)MPOjjbG&*sbyA9+-82Nvlu4Tel%g~#LiszPN!@7sdh7@sr_j7@Sk?igDXGP`DhB-LF)Z@%5t2-lYH^vj#EOln +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "demo.h" + +#include +#include + +#include "ConsoleBackup.h" +#include "DrawSystemState.h" +#include "FileName.h" +#include "Controller.h" +#include "SimplePlayer.h" +#include "Exporter.h" +#include "CommonLogger.h" +#include "SDMountManager.h" +#include "HeapManager.h" +#include "PlayHistoryManager.h" +#include "common_Types.h" +#include "VersionDetect.h" +#include "HardwareInfo.h" + +// svnリビジョン埋め込み用 +#include "version.h" +#ifndef BACKUP_VERSION_NUM +#define BACKUP_VERSION_NUM 0 +#endif + +namespace { + +// グラフィックスに割り当てるメモリ +const size_t s_GxHeapSize = 0x800000; + + +// バッテリ残量 +u8 batteryRemain = 100; + +// シリアルナンバー +u8 s_SerialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN]; + +// デバイスID +bit32 s_DeviceId; + +// シリアルナンバーが読めるかどうか +bool s_CanReadSerialNumber = false; + +// IVSへのポインタ +void* sp_Ivs; + +size_t s_SizeofIvs; + +// IVSが読めるかどうか +bool s_CanReadIvs = false; + +// バージョン情報 +common::VerDef s_VerData; + +nn::Handle s_McuSession; + +} // namespace + +namespace ConsoleBackup{ + +bool IsAdapterConnected() +{ + return nn::ptm::CTR::GetAdapterState() == nn::ptm::CTR::ADAPTERSTATE_CONNECTED; +} + +bool IsBatteryLower() +{ + return batteryRemain <= 10; +} + +bool CanReadIVS() +{ + return s_CanReadIvs; +} + +bool CanReadSerialNumber() +{ + return s_CanReadSerialNumber; +} + +void GetSerialNumber(u8** serial, size_t* size) +{ + *serial = s_SerialNo; + *size = nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN; +} + +void GetIvs(void** ivs, size_t* size) +{ + *ivs = sp_Ivs; + *size = s_SizeofIvs; +} + +bit32 GetDeviceId() +{ + return s_DeviceId; +} + +void GetVersionData(common::VerDef* version) +{ + *version = s_VerData; +} + +nn::Handle GetMcuHandle() +{ + return s_McuSession; +} + + +extern "C" void nnMain(void) +{ + nn::Result result; + + // os の初期化 + nn::os::Initialize(); + + // fs の初期化 + nn::fs::Initialize(); + + // appletの初期化 + nn::applet::Enable( false ); + + // hid の初期化 + result = nn::hid::Initialize(); + NN_UTIL_PANIC_IF_FAILED(result); + + // ndmの初期化 + result = nn::ndm::Initialize(); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + + // デーモンの自律動作を停止 + result = nn::ndm::Suspend(nn::ndm::DN_CEC); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + result = nn::ndm::Suspend(nn::ndm::DN_BOSS); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + result = nn::ndm::Suspend(nn::ndm::DN_FRIENDS); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + result = nn::ndm::Suspend(nn::ndm::DN_NIM); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + + // cfg の初期化 + nn::cfg::CTR::init::Initialize(); + nn::cfg::CTR::system::Initialize(); + + // 時計設定用ptm初期化 + nn::ptm::CTR::InitializeForSystemMenu(); + + // ps の初期化 + nn::ps::Initialize(); + + // friendsの初期化 + result = nn::friends::detail::Initialize(); + + // mcuの初期化 + nn::mcu::CTR::InitializeHwCheck(&s_McuSession); + + nn::mcu::CTR::HwCheck mcu(s_McuSession); + + // ヒープの確保 + common::HeapManager::GetHeap()->Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR); + + // RenderSystem の準備 + uptr heapForGx = reinterpret_cast(common::HeapManager::GetHeap()->Allocate(s_GxHeapSize)); + demo::RenderSystemDrawing s_RenderSystem; + s_RenderSystem.Initialize(heapForGx, s_GxHeapSize); + + // サウンドスレッドの起動 + common::InitializeSimplePlayer(); + + // ログ描画の初期化 + common::Logger::GetLoggerInstance()->Initialize(CONSOLE_WIDTH, CONSOLE_HEIGHT, CONSOLE_MAX_LINE, &s_RenderSystem); + + // RenderSystemを作ってからログが出せる + common::Logger::InitializeEjectThread(); + common::Logger::SetEjectHandler(OnSdEjected); + // 起動時に削除 + common::Logger::GetLoggerInstance()->ClearLog(); + + COMMON_LOGGER("\n"); + COMMON_LOGGER("CTR Console Backup start\n"); + + // ボタン入力 + nn::hid::PadReader s_PadReader; + nn::hid::PadStatus padStatus; + + // データの準備 + + // 完全性検証SEEDの取得 + result = nn::fs::MountSpecialArchive(common::NAND_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_CTR_NAND); + if (result.IsSuccess()) + { + nn::fs::FileInputStream fis; + + result = fis.TryInitialize(common::IVS_NAND_PATHNAME); + if (result.IsSuccess()) + { + s64 fileSize = fis.GetSize(); + s32 ret; + void* addr = NULL; + addr = common::HeapManager::GetHeap()->Allocate(fileSize); + if (addr != NULL) + { + sp_Ivs = addr; + s_SizeofIvs = fileSize; + result = fis.TryRead(&ret, addr, fileSize); + if (result.IsSuccess()) + { + s_CanReadIvs = true; + } + // 後でIVSを参照するのでFreeしない + } + } + fis.Finalize(); + } + // 一旦アンマウントしておく + nn::fs::Unmount(common::NAND_ARCHIVE_NAME); + + // リージョンの取得 + nn::cfg::CTR::CfgRegionCode region; + region = nn::cfg::CTR::GetRegion(); + + // シリアルナンバーの取得 + std::memset(s_SerialNo, '\0', + nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN); + result = nn::cfg::CTR::system::GetSerialNo(s_SerialNo); + if(result.IsSuccess()) + { + s_CanReadSerialNumber = true; + } + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + common::HardwareInfo hwInfo; + hwInfo.AddCheckDigit(reinterpret_cast(s_SerialNo)); + + // デバイスIDの取得 + result = nn::ps::CTR::GetDeviceId(&s_DeviceId); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + bit64 infraDeviceId; + result = nn::nim::CTR::InitializeForShop(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::nim::CTR::Shop::GetInfraDeviceId(s_DeviceId, &infraDeviceId); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::nim::CTR::FinalizeForShop(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // MACアドレスの取得 + nn::nwm::Mac mac; + char8 macAddress[nn::nwm::Mac::MAC_STRING_SIZE]; + + result = nn::nwm::GetMacAddress(mac); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + mac.GetString(macAddress); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // フレンドコードの取得 + nn::friends::CTR::FriendKey friendKey; + result = nn::friends::CTR::GetMyFriendKey(&friendKey); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + u64 friendCode = nn::friends::CTR::FriendKeyToFriendCode(friendKey); + + // バージョンの取得 + common::GetSystemVersion(&s_VerData, region); + + // 情報出力 + COMMON_LOGGER("CTR Console Backup %s Rev.%s\n", __DATE__, BACKUP_VERSION_NUM); + COMMON_LOGGER("System Ver. %d.%d.%d-%d\n", s_VerData.cup.majorVersion, s_VerData.cup.minorVersion, s_VerData.cup.microVersion, + s_VerData.nup.majorVersion); + COMMON_LOGGER("System Region %s\n", nn::cfg::CTR::GetRegionCodeA3(region)); + COMMON_LOGGER("Serial Number %s\n", s_SerialNo); + COMMON_LOGGER("Device ID %llu\n", infraDeviceId); + COMMON_LOGGER("MAC Address %s\n", macAddress); + COMMON_LOGGER("Friend Code %04u-%04u-%04u\n", + static_cast(friendCode / 100000000ULL % 10000ULL), + static_cast(friendCode / 10000ULL % 10000ULL), + static_cast(friendCode % 10000ULL) ); + + + bool flip = false; + bool continueBackup = false; + + for(;;) + { + bool nextStep = false; + s_PadReader.ReadLatest(&padStatus); + + // AまたはSTARTボタンで進行 + if(padStatus.trigger & nn::hid::BUTTON_A || + padStatus.trigger & nn::hid::BUTTON_START) + { + nextStep = true; + } + + // LまたはRボタンで上下画面フリップ + if(padStatus.trigger & nn::hid::BUTTON_R || + padStatus.trigger & nn::hid::BUTTON_L) + { + flip = !flip; + } + + // コンソールスクロール + if(padStatus.hold & nn::hid::BUTTON_UP) + { + common::Logger::GetLoggerInstance()->ScrollUp(); + } + + // コンソールスクロール + if(padStatus.hold & nn::hid::BUTTON_DOWN) + { + common::Logger::GetLoggerInstance()->ScrollDown(); + } + + if(padStatus.hold & nn::hid::BUTTON_LEFT) + { + common::Logger::GetLoggerInstance()->ScrollToBegin(); + } + + if(padStatus.hold & nn::hid::BUTTON_RIGHT) + { + common::Logger::GetLoggerInstance()->ScrollToEnd(); + } + + + // 情報更新 + // バッテリ + mcu.GetBatteryRemain(&batteryRemain); + // ACアダプタ + std::string adapterState; + if(IsAdapterConnected()) + { + adapterState += ::std::string("Connected"); + } + else + { + adapterState += ::std::string("Not Connected"); + } + + // 操作用メッセージ + // 進捗確認メッセージを兼ねる? + ::std::vector operationMessage; + + ControlState(operationMessage, nextStep, continueBackup); + + nn::util::FloatColor titleColor; + + titleColor.r = 0.3f; + titleColor.g = 0.f; + titleColor.b = 0.2f; + + // 上画面表示 + common::DrawSystemState("CTR Console Backup", + s_RenderSystem, + titleColor, + flip, + adapterState, + BACKUP_VERSION_NUM, + &s_VerData, + batteryRemain, + infraDeviceId, + friendCode, + GetProgress(), + macAddress, + operationMessage, + region, + s_SerialNo + ); + + s_RenderSystem.SwapBuffers(); + + // デフォルトで下画面に描画するもの + s_RenderSystem.SetRenderTarget(common::GetRenderTarget(NN_GX_DISPLAY1, flip)); + if(IsBackupSucceeded()) + { + s_RenderSystem.SetClearColor(common::GetRenderTarget(NN_GX_DISPLAY1, flip), SUCCESS_COLOR); + } + if(IsBackupFailed()) + { + s_RenderSystem.SetClearColor(common::GetRenderTarget(NN_GX_DISPLAY1, flip), FAIL_COLOR); + } + s_RenderSystem.Clear(); + s_RenderSystem.SetColor(1.f, 1.f, 1.f); + + common::Logger::GetLoggerInstance()->DrawConsole(); + s_RenderSystem.SwapBuffers(); + + + s_RenderSystem.WaitVsync(NN_GX_DISPLAY_BOTH); + + // 電源長押しで終了 + if ( nn::applet::IsExpectedToCloseApplication()) + { + common::Logger::GetLoggerInstance()->Finalize(); + // アンマウント + nn::fs::Unmount(common::NAND_ARCHIVE_NAME); + nn::fs::Unmount(common::SDMC_ARCHIVE_NAME); + s_RenderSystem.Finalize(); + + nn::mcu::CTR::FinalizeHwCheck(&s_McuSession); + nn::friends::detail::Finalize(); + nn::ps::Finalize(); + nn::ptm::CTR::FinalizeForSystemMenu(); + nn::cfg::CTR::system::Finalize(); + nn::cfg::CTR::init::Finalize(); + nn::hid::Finalize(); + nn::fs::Finalize(); + + nn::applet::PrepareToCloseApplication(); + nn::applet::CloseApplication(); + } + } +} + + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.h new file mode 100644 index 0000000..92a2588 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.h @@ -0,0 +1,42 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: ConsoleBackup.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef NN_CONSOLEBACKUP_H_ +#define NN_CONSOLEBACKUP_H_ + +#include +#include "VersionDetect.h" + +namespace ConsoleBackup +{ + +bool IsAdapterConnected(); +bool IsBatteryLower(); +bool CanReadIVS(); +bool CanReadSerialNumber(); +void GetSerialNumber(u8** serial, size_t* size); +void GetIvs(void** ivs, size_t* size); +nn::Handle GetMcuHandle(); +void GetVersionData(common::VerDef* version); +bit32 GetDeviceId(); + +const u32 CONSOLE_WIDTH = 38; +const u32 CONSOLE_HEIGHT = 24; +const u32 CONSOLE_MAX_LINE = 1000; + +} + +/* NN_CONSOLEBACKUP_H_ */ +#endif diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.rsf b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.rsf new file mode 100644 index 0000000..a30132a --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.rsf @@ -0,0 +1,52 @@ +BasicInfo: + Title : ConsoleBackup + ProductCode: ConsoleBackup + BackupMemoryType: None + +TitleInfo: + Use: Evaluation + Category: Application + UniqueId: 0xf8021 + Version: 0 + +SystemControlInfo: + AppType : Application + StackSize : 0x4000 + Dependency : + - gpio + - pdn + - spi + - i2c + - mcu + - ptm + - codec + - cfg + - hid + - gsp + - friends + - nim + - ac + - ndm + +AccessControlInfo: + Priority : 16 + DisableDebug : true + + FileSystemAccess: + - DirectSdmc + - Debug + - Core + - CategoryFileSystemTool + + IoAccessControl: + - FsMountCardSpi + - FsMountNand + - FsMountTwln + +Option: + FreeProductCode: true + + +Rom: + # ROM に含めるファイルシステムのルートパスを指定します。 + HostRoot: "$(ROMFS_ROOT)" \ No newline at end of file diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Controller.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Controller.cpp new file mode 100644 index 0000000..32cd6b5 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Controller.cpp @@ -0,0 +1,313 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Controller.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include "Controller.h" +#include "FileChecker.h" +#include "ConsoleBackup.h" +#include "Exporter.h" +#include "SimplePlayer.h" +#include "CommonLogger.h" + +#include + +namespace ConsoleBackup +{ + +namespace +{ + +typedef enum BackupState +{ + STARTUP, // 初期値 + EXPORT_TWL_SOUND, // TWLサウンド領域の吸出し中 + EXPORT_TWL_PHOTO, // TWL写真領域の吸出し中 + EXPORT_CTR_NAND, // 吸出し中 + DELETE_NIM, // nimのシステムセーブデータ削除 + DONE, // 吸出し完了 + FINISHED, // SDカード抜き完了 + FAIL // 失敗 +} BackupState; + + +// APSettingの書式が無い警告サウンドを鳴らしたかどうか +bool s_ExistAPSettingAnnotation = false; +// SDに書き込みできない警告サウンドを鳴らしたかどうか +bool s_SdWriteProetctAnnotation = false; + +BackupState s_BackupState = STARTUP; +bool s_PlayedStartCursor = false; +bool s_PlayedSdPullOutCursor = false; +bool s_PlayedFinishedSound = false; +bool s_PlayedFailSound = false; + +} // namespace + +bool NeedsAcAdateper() +{ + return IsBatteryLower() && !IsAdapterConnected(); +} + +void ControlState(::std::vector& operationMessage, bool& nextStep, bool& continueBackup) +{ + // 状態遷移Controller + switch (s_BackupState) + { + + // 起動時 + case STARTUP: + { + bool error = false; + // 完全性検証SEEDを読めるか? + if (CanReadIVS()) + { + // SDカードが挿入されているか? + if (nn::fs::IsSdmcInserted()) + { + // SDカードに書き込みできるか? + if (!nn::fs::IsSdmcWritable()) + { + if (!s_SdWriteProetctAnnotation) + { + s_SdWriteProetctAnnotation = true; + common::PlaySound(common::SOUND_ANNOTATION); + } + operationMessage.push_back(::std::string("Can*t Write SD Card!!\n")); + break; + } + + // 無線設定ファイルがあるか? + if (common::ExistsAPSetting()) + { + // 書き込み中に抜かないように + if (nextStep) + { + // シリアルナンバーを読み取れるか? + if (!CanReadSerialNumber()) + { + common::PlaySound(common::SOUND_ANNOTATION); + COMMON_LOGGER("Can't Read Serial Number\n"); + } + } + } + else + { + error = true; + if (!s_ExistAPSettingAnnotation) + { + s_ExistAPSettingAnnotation = true; + common::PlaySound(common::SOUND_ANNOTATION); + } + operationMessage.push_back(::std::string("Accsess_Point_Setting does not exist!")); + } + } + else + { + error = true; + operationMessage.push_back(::std::string("Insert SD Card!!")); + } + } + else + { + error = true; + operationMessage.push_back(::std::string("Can't Read IVS!!")); + } + + // ACアダプタが必要か? + if (NeedsAcAdateper()) + { + error = true; + operationMessage.push_back(::std::string("Connect AC Adapter!!")); + } + + // エラーが無ければ進行用メッセージ表示 + if(!error) + { + operationMessage.push_back(::std::string("Push A or START Button")); + if(!s_PlayedStartCursor) + { + common::PlaySound(common::SOUND_CURSOR); + s_PlayedStartCursor = true; + } + } + + if (nextStep && !error) + { + COMMON_LOGGER("Start Export Data\n"); + s_BackupState = EXPORT_TWL_SOUND; + } + } + break; + + // TWLサウンド領域の吸出し中 + case EXPORT_TWL_SOUND: + { + static bool init = true; + if(init) + { + // データを書き込む + ExportTwlSoundData(); + init = false; + } + + // 処理が完了した + if (IsExportFinished()) + { + FinalizeExportThread(); + s_BackupState = EXPORT_TWL_PHOTO; + } + } + break; + + // TWL写真領域の吸出し中 + case EXPORT_TWL_PHOTO: + { + static bool init = true; + if(init) + { + // データを書き込む + ExportTwlPhotoData(); + init = false; + } + + // 処理が完了した + if (IsExportFinished()) + { + FinalizeExportThread(); + s_BackupState = EXPORT_CTR_NAND; + } + } + break; + + // 吸出し中 + case EXPORT_CTR_NAND: + { + continueBackup = true; + + // ACアダプタが必要か? + if (NeedsAcAdateper()) + { + continueBackup = false; + operationMessage.push_back(::std::string("Connect AC Adapter!!")); + } + + // データを書き込む + ExportData(); + + // 処理が完了した + if (continueBackup && IsExportFinished()) + { + FinalizeExportThread(); + COMMON_LOGGER("Export NAND Data Finished.\n"); + + if(GetProgress() > 99) + { + s_BackupState = DELETE_NIM; + } + else + { + s_BackupState = FAIL; + } + + } + } + break; + + // nimのシステムセーブデータ削除 + case DELETE_NIM: + { + DeleteNimSaveData(); + s_BackupState = DONE; + } + break; + + // 吸出し完了 + case DONE: + { + operationMessage.push_back(::std::string("Backup Done. Pull Out SD Card.")); + if(!s_PlayedSdPullOutCursor) + { + common::PlaySound(common::SOUND_CURSOR); + s_PlayedSdPullOutCursor = true; + } + } + break; + + // SDカード抜き完了 + case FINISHED: + { + operationMessage.push_back(::std::string("Backup Succeeded!!\n")); + if(!s_PlayedFinishedSound) + { + common::PlaySound(common::SOUND_OK); + s_PlayedFinishedSound = true; + } + } + break; + + // 吸出し失敗 + case FAIL: + { + operationMessage.push_back(::std::string("Backup Failed.")); + if(!s_PlayedFailSound) + { + common::PlaySound(common::SOUND_NG); + s_PlayedFailSound = true; + } + } + break; + + } +} + +bool InProgress() +{ + return s_BackupState == EXPORT_CTR_NAND; +} + +bool IsBackupSucceeded() +{ + return s_BackupState == FINISHED; +} + +bool IsBackupFailed() +{ + return s_BackupState == FAIL; +} + +void OnSdEjected() +{ + if(s_BackupState == DONE || s_BackupState == FINISHED) + { + s_BackupState = FINISHED; + } + else + { + common::InitializeFileCheck(); + InitializeState(); + } +} + +void InitializeState() +{ + s_BackupState = STARTUP; + s_PlayedFailSound = false; + s_PlayedFinishedSound = false; + s_ExistAPSettingAnnotation = false; + s_PlayedStartCursor = false; + s_PlayedSdPullOutCursor = false; + s_SdWriteProetctAnnotation = false; +} + +} // namespace ConsoleBackup diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Controller.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Controller.h new file mode 100644 index 0000000..d7f2cbf --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Controller.h @@ -0,0 +1,34 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Contoroller.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef CONTOROLLER_H_ +#define CONTOROLLER_H_ + +#include +#include + +namespace ConsoleBackup +{ + +void ControlState(::std::vector& operationMessage, bool& nextStep, bool& continueBackup); +bool InProgress(); +bool IsBackupSucceeded(); +bool IsBackupFailed(); +void OnSdEjected(); +void InitializeState(); + +} + +#endif /* CONTOROLLER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Exporter.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Exporter.cpp new file mode 100644 index 0000000..766650e --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Exporter.cpp @@ -0,0 +1,564 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Exporter.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include // cfg:norの初期化に必要 +#include +#include +#include +#include +#include + +#include "Exporter.h" +#include "CommonLogger.h" +#include "SDMountManager.h" +#include "ConsoleBackup.h" +#include "HeapManager.h" +#include "SdReaderWriter.h" +#include "FileName.h" +#include "FileTransfer.h" +#include "common_Types.h" +#include "Aes_define.h" +#include "PlayHistoryManager.h" +#include "VersionDetect.h" + +namespace ConsoleBackup +{ + +namespace +{ + +common::SdReaderWriter s_SdWriter; +common::NtrNorData s_NtrNorData; +common::CfgCountryLanguage s_CountryLanguage; + +::std::string s_SysSaveRoot; + +const size_t EXPORT_THREAD_STACK_SIZE = 0x4000; +nn::os::Thread s_ExportThread; +nn::os::StackBuffer s_ExportThreadStack; + +wchar_t s_RootName[256]; + +} + +void DeleteTrash(std::wstring currentDirectory) +{ + // TODO: リードオンリーのファイルが消去できない + + COMMON_LOGGER("Delete Trash.\n"); + + nn::fs::FileInputStream fis; + nn::fs::Directory dir; + nn::Result result; + std::vector entryList; //カレントディレクトリのエントリ一覧を格納 + std::vector::iterator entryIndex; + + common::SdMountManager::Mount(); + + result = dir.TryInitialize(currentDirectory.c_str()); + + if (result.IsSuccess()) + { + nn::fs::DirectoryEntry entry; + s32 numEntry; + for (;;) + { + result = dir.TryRead(&numEntry, &entry, 1); + if (result.IsFailure()) + { + dir.Finalize(); + } + if (numEntry == 0) + { + // ルートディレクトリを閉じる + dir.Finalize(); + + // ルートディレクトリの子を開く + for (entryIndex = entryList.begin(); entryIndex != entryList.end(); entryIndex++) + { + // ディレクトリなら削除する + if (entryIndex->attributes.isDirectory) + { + NN_LOG("Try Delete %ls%ls/\n", currentDirectory.c_str(), entryIndex->entryName); + result = nn::fs::TryDeleteDirectoryRecursively((currentDirectory + ::std::wstring( + entryIndex->entryName)).c_str()); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + } + // ファイルならログとAP設定以外は削除する + else + { + if (std::wcscmp(entryIndex->entryName, common::AP_SETTING_FILENAME) != 0 && std::wcscmp( + entryIndex->entryName, common::LOG_FILENAME) != 0) + { + NN_LOG("Try Delete %ls%ls\n", currentDirectory.c_str(), entryIndex->entryName); + result = nn::fs::TryDeleteFile( + (currentDirectory + ::std::wstring(entryIndex->entryName)).c_str()); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + } + } + } + + // 削除完了 + break; + } + else + { + // vectorに保存する + entryList.push_back(entry); + if (entry.attributes.isDirectory) + { + NN_LOG("%ls%ls/\n", currentDirectory.c_str(), entry.entryName); + } + else + { + NN_LOG("%ls%ls\n", currentDirectory.c_str(), entry.entryName); + } + } + } + } + else + { + NN_LOG("failed initialize directory\n"); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + dir.Finalize(); + } + + common::SdMountManager::Unmount(); +} + +void WriteRegionData() +{ + COMMON_LOGGER("Export Region Data.\n"); + + nn::cfg::CTR::CfgRegionCode region; + region = nn::cfg::CTR::GetRegion(); + + s_SdWriter.WriteBufWithCmac(common::REGION_DATA_PATHNAME, ®ion, sizeof(nn::cfg::CTR::CfgRegionCode)); +} + +void WriteCountryLanguageData() +{ + COMMON_LOGGER("Export Country and Language Data.\n"); + + nn::Result result; + + nn::cfg::nor::CTR::Initialize(); + + // 国設定 + s_CountryLanguage.country = nn::cfg::CTR::GetCountry(); + if (s_CountryLanguage.country != nn::cfg::CTR::CFG_COUNTRY_UNKNOWN) + { + // 言語設定 + s_CountryLanguage.language = nn::cfg::CTR::GetLanguage(); + + s_SdWriter.WriteBufWithCmac(common::COUNTRY_SETTING_PATHNAME, &s_CountryLanguage, sizeof(s_CountryLanguage)); + } +} + +void WriteNorData() +{ + COMMON_LOGGER("Export NOR Data.\n"); + + nn::Result result; + + nn::cfg::nor::CTR::Initialize(); + + NN_LOG("Get NTR User Setting\n"); + + // NTR設定 + result = nn::cfg::nor::CTR::GetNtrSetting(&s_NtrNorData.ntrConfig.ncd, &s_NtrNorData.ntrConfig.ncd_ex); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // TWL WiFi設定 + result = nn::cfg::nor::CTR::ReadTwlWifiSetting(0, s_NtrNorData.TwlWiFiSetting, common::TWL_WIFI_SETTING_SIZE); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // NTR WiFi設定 + result = nn::cfg::nor::CTR::ReadNtrWifiSetting(0, s_NtrNorData.NtrWiFiSetting, common::NTR_WIFI_SETTING_SIZE); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + s_SdWriter.WriteBufWithCmac(common::NOR_PATHNAME, &s_NtrNorData, sizeof(common::NtrNorData)); +} + +void WriteSerialNumber() +{ + COMMON_LOGGER("Export Serial Number.\n"); + + u8* serial; + size_t size; + GetSerialNumber(&serial, &size); + + s_SdWriter.WriteBufWithCmac(common::SERIAL_PATHNAME, serial, size); +} + +void WriteDeviceId() +{ + COMMON_LOGGER("Export Device ID.\n"); + + bit32 deviceId = GetDeviceId(); + + s_SdWriter.WriteBufWithCmac(common::DEVICE_ID_PATHNAME, &deviceId, sizeof(deviceId)); +} + +void WriteIvs() +{ + COMMON_LOGGER("Export IVS.\n"); + + void* ivs; + size_t size; + GetIvs(&ivs, &size); + + void* enc; + nn::Result result; + enc = common::HeapManager::GetHeap()->Allocate(size); + if(enc != NULL) + { + // AES暗号化する + nn::crypto::Initialize(); + + nn::crypto::SwAesCtrContext swAesCtrContest; + + swAesCtrContest.Initialize(common::iv, common::key, sizeof(common::key)); + swAesCtrContest.Encrypt(enc, ivs, size); + + s_SdWriter.WriteBufWithCmac(common::IVS_PATHNAME, enc, size); + + common::HeapManager::GetHeap()->Free(enc); + } +} + +// IVSからセーブデータディレクトリ名を生成する +void GetSaveDataDirectoryRoot() +{ + nn::Result result; + using namespace nn::dbg; + + const size_t SEED_SIZE = 16; + bit8 hash[nn::crypto::Sha256Context::HASH_SIZE]; + const size_t SYS_SAVE_ROOT_LENGTH = 16; + char rootHash[SYS_SAVE_ROOT_LENGTH]; + char rootStr[SYS_SAVE_ROOT_LENGTH * 2 + 1]; + + void* addr; + size_t size; + GetIvs(&addr, &size); + + // 最後の16バイトのハッシュを使う + nn::crypto::CalculateSha256(hash, &reinterpret_cast (addr)[size - SEED_SIZE], SEED_SIZE); + + for (u8 i = 0; i < SEED_SIZE / 4; i++) + { + for (u8 j = 0; j < SEED_SIZE / 4; j++) + { + rootHash[i * 4 + j] = hash[i * 4 + 3 - j]; + } + } + + // 得られたハッシュから文字列を生成 + for (s32 k = 0; k < SEED_SIZE; k++) + { + for (s32 i = 6; i < 8; ++i) + { + bit32 n = (rootHash[k] >> ((7 - i) * 4)) & 0xf; + NN_TASSERT_(n < 16); + rootStr[i - 6 + k * 2] = static_cast (n < 10 ? '0' + n : 'a' + (n - 10)); + } + } + rootStr[SYS_SAVE_ROOT_LENGTH * 2] = '\0'; + + // セーブデータディレクトリ名を保存する + s_SysSaveRoot = ::std::string(rootStr); + + NN_LOG("%s\n", s_SysSaveRoot.c_str()); +} + +void CreateTwlDirectory(enum common::TWL_PATH_INDEX path) +{ + NN_ASSERT(path < common::TWL_PATHNAME_MAX); + + s_SdWriter.CreateDirectory((::std::wstring(common::SDMC_ROOT_DIRECTORY_PATH) + + std::wstring(common::SD_TWL_ROOTNAME_TABLE[path])).c_str()); +} + +void WriteTwlData(enum common::TWL_PATH_INDEX path) +{ + NN_ASSERT(path < common::TWL_PATHNAME_MAX); + + nn::Result result; + + result = nn::fs::MountSpecialArchive(common::TWL_ARCHIVE_NAME_TABLE[path], common::TWL_FS_ARCHIVE_KIND[path]); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = common::SdMountManager::Mount(); + + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + NN_LOG("AllocatableSize = %d\n", bufSize); + + u32 fileNum = 0; + u32 fileSize = 0; + common::CalculateFileNum(::std::wstring(common::NAND_TWL_ROOT_PATHNAME_WITH_SLASH_TABLE[path]), fileNum, fileSize); + + nn::fs::Unmount(common::NAND_ARCHIVE_NAME); + + NN_LOG("File Number = %d\n", fileNum); + NN_LOG("File Size = %d\n", fileSize); + // 進捗表示用 + common::InitializeTransferProgress(fileSize); + + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize, AES_BLOCK_SIZE); + if (buf != NULL) + { + wchar_t archiveName[256]; + ::std::mbstowcs(archiveName, common::TWL_ARCHIVE_NAME_TABLE[path], std::strlen(common::TWL_ARCHIVE_NAME_TABLE[path]) + 1); + std::wstring archiveString(archiveName); + common::CopyDirectory( + (archiveString + ::std::wstring(L"/")).c_str(), + (common::SDMC_ROOT_DIRECTORY_PATH + ::std::wstring(common::SD_TWL_ROOTNAME_TABLE[path])).c_str(), + buf, bufSize, true); + + common::HeapManager::GetHeap()->Free(buf); + } + + common::SdMountManager::Unmount(); + nn::fs::Unmount(common::TWL_ARCHIVE_NAME_TABLE[path]); + +} + +void WriteTwlPhotoData() +{ + COMMON_LOGGER("Export Twl Photo Data.\n"); + CreateTwlDirectory(common::TWL_PHOTO); + WriteTwlData(common::TWL_PHOTO); +} + +void WriteTwlSoundData() +{ + COMMON_LOGGER("Export Twl Sound Data.\n"); + CreateTwlDirectory(common::TWL_SOUND); + WriteTwlData(common::TWL_SOUND); +} + +void ExportTwlPhotoData() +{ + s_ExportThread.Start(WriteTwlPhotoData, s_ExportThreadStack); +} + +void ExportTwlSoundData() +{ + // 不要なデータを削除する + DeleteTrash(common::SDMC_ROOT_DIRECTORY_PATH); + + s_ExportThread.Start(WriteTwlSoundData, s_ExportThreadStack); +} + + +void WriteMcuRtcData() +{ + COMMON_LOGGER("Export RTC Data.\n"); + nn::Result result; + nn::Handle handle = GetMcuHandle(); + + if(handle.IsValid()) + { + nn::mcu::CTR::HwCheck mcu(handle); + + nn::mcu::CTR::RtcData rtc; + result = mcu.GetRtcAll(&rtc); + NN_LOG("RTC = 20%02d/%02d/%02d %02d:%02d:%02d\n", rtc.m_Year, rtc.m_Month, rtc.m_Day, rtc.m_Hour, rtc.m_Minute, rtc.m_Second); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + s_SdWriter.WriteBufWithCmac(common::MCU_RTC_PATHNAME, &rtc, sizeof(rtc)); + } + else + { + NN_LOG("invalid handle\n"); + } +} + +void ExportThreadFunc() +{ + nn::Result result; + + result = nn::fs::MountSpecialArchive(common::NAND_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_CTR_NAND); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = common::SdMountManager::Mount(); + + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + NN_LOG("AllocatableSize = %d\n", bufSize); + + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize, AES_BLOCK_SIZE); + if (buf != NULL) + { + + common::CopyDirectory( + (::std::wstring(common::NAND_DATA_ROOT_PATHNAME_WITH_SLASH) + ::std::wstring(s_RootName) + ::std::wstring(L"/")).c_str(), + (common::SDMC_ROOT_DIRECTORY_PATH + ::std::wstring(common::SD_SAVEDATA_ROOT_NAME) + ::std::wstring(s_RootName) + ::std::wstring(L"/")).c_str(), + buf, bufSize, true); + + common::HeapManager::GetHeap()->Free(buf); + } + + common::SdMountManager::Unmount(); + nn::fs::Unmount(common::NAND_ARCHIVE_NAME); + + NN_LOG("Export Thread Finalize\n"); +} + +nn::Result WriteSaveData() +{ + // NANDからSDカードに書き出し + nn::Result result; + + result = nn::fs::MountSpecialArchive(common::NAND_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_CTR_NAND); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + u32 fileNum = 0; + u32 fileSize = 0; + common::CalculateFileNum(::std::wstring(common::NAND_DATA_ROOT_PATHNAME_WITH_SLASH), fileNum, fileSize); + + nn::fs::Unmount(common::NAND_ARCHIVE_NAME); + + NN_LOG("File Number = %d\n", fileNum); + NN_LOG("File Size = %d\n", fileSize); + // 進捗表示用 + common::InitializeTransferProgress(fileSize); + + ::std::mbstowcs(s_RootName, s_SysSaveRoot.c_str(), s_SysSaveRoot.size() + 1); + + NN_LOG("%ls\n", (::std::wstring(common::NAND_DATA_ROOT_PATHNAME_WITH_SLASH) + ::std::wstring(s_RootName) + ::std::wstring(L"/")).c_str()); + + // セーブデータディレクトリ以下のデータをSDカードにコピー + // コピー用ディレクトリ作成 + s_SdWriter.CreateDirectory((::std::wstring(common::SDMC_ROOT_DIRECTORY_PATH) + ::std::wstring( + common::SD_SAVEDATA_ROOT_NAME)).c_str()); + s_SdWriter.CreateDirectory((::std::wstring(common::SDMC_ROOT_DIRECTORY_PATH) + ::std::wstring( + common::SD_SAVEDATA_ROOT_NAME) + ::std::wstring(s_RootName) + ::std::wstring(L"/")).c_str()); + + COMMON_LOGGER("Export NAND Data Start...\n"); + + // SDにコピーするためのスレッドの作成 + s_ExportThread.Start(ExportThreadFunc, s_ExportThreadStack); + + return result; +} + +void FinalizeExportThread() +{ + s_ExportThread.Join(); + s_ExportThread.Finalize(); +} + +void WriteVersionData() +{ + COMMON_LOGGER("Export Version Data.\n"); + + common::VerDef versionData; + GetVersionData(&versionData); + + s_SdWriter.WriteBufWithCmac(common::VERSION_DATA_PATHNAME, &versionData, sizeof(common::VerDef)); +} + +void WritePlayHistory() +{ + common::PlayHistoryManager historyManager; + + COMMON_LOGGER("Export PlayHistory\n"); + historyManager.Export(); +} + +void DeleteNimSaveData() +{ + nn::Result result; + ::std::wstring nimSaveDataPath = + ::std::wstring(common::SDMC_ROOT_DIRECTORY_PATH) + + ::std::wstring(common::SD_SAVEDATA_ROOT_NAME) + + ::std::wstring(s_RootName) + + ::std::wstring(L"/") + + std::wstring(common::NIM_SAVEDATA_DIRECTORY_NAME); + + common::SdMountManager::Mount(); + + NN_LOG("%ls\n", nimSaveDataPath.c_str()); + result = nn::fs::TryDeleteDirectoryRecursively(nimSaveDataPath.c_str()); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + common::SdMountManager::Unmount(); +} + + +void ExportData() +{ + static bool init = true; + + if (init) + { + // リージョンデータをSDに書き込む + WriteRegionData(); + + // 国データと言語データをSDに書き込む + WriteCountryLanguageData(); + + // NORデータをSDカードに書き込む + WriteNorData(); + + // シリアルナンバーをSDカードに書き込む + WriteSerialNumber(); + + // デバイスIDをSDカードに書き込む + WriteDeviceId(); + + // 完全性検証SEEDをSDカードに書き込む + WriteIvs(); + + // IVSからセーブデータディレクトリ名を計算 + GetSaveDataDirectoryRoot(); + + // プレイ履歴をSDに書き出す + //WritePlayHistory(); + + // RTCをSDに書き出す + WriteMcuRtcData(); + + // バージョン情報をSDに書き出す + WriteVersionData(); + + // NANDのセーブデータをSDに書き出す + WriteSaveData(); + + init = false; + } +} + +u32 GetProgress() +{ + return common::GetProgress(); +} + +bool IsExportFinished() +{ + return s_ExportThread.IsValid() && !s_ExportThread.IsAlive(); +} + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Exporter.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Exporter.h new file mode 100644 index 0000000..216a277 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/Exporter.h @@ -0,0 +1,36 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Exporter.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef EXPORTER_H_ +#define EXPORTER_H_ + +#include + +namespace ConsoleBackup +{ + +void ExportTwlPhotoData(); +void ExportTwlSoundData(); +void ExportData(); +void DeleteNimSaveData(); + +u32 GetProgress(); +bool IsExportFinished(); +void FinalizeExportThread(); + + +} + +#endif /* EXPORTER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/OMakefile b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/OMakefile new file mode 100644 index 0000000..b152d3d --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/OMakefile @@ -0,0 +1,84 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakefile +# +# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Rev$ +#---------------------------------------------------------------------------- +SUPPORTED_TARGETS = CTR-T*.Process.MPCore.* +#MAKECSU = true +#INSTALL_SDK_TOOL = true +CTR_APPTYPE = BOTH +CTR_MAKE_DEVELOPMENT_IMAGE = true + +TARGET_PROGRAM = ConsoleBackup + +SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir $(HORIZON_ROOT)/../CTR/SampleDemos/common/include) +INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR) \ + ../common + +SOURCES[] = + ConsoleBackup.cpp + Controller.cpp + Exporter.cpp + ../common/HardwareInfo.cpp + ../common/DrawSystemState.cpp + ../common/FileTransfer.cpp + ../common/FileChecker.cpp + ../common/SdReaderWriter.cpp + ../common/HeapManager.cpp + ../common/SdLogger.cpp + ../common/wave.cpp + ../common/SimplePlayer.cpp + ../common/LogConsole.cpp + ../common/CommonLogger.cpp + ../common/SdMountManager.cpp + ../common/PlayHistoryManager.cpp + ../common/VersionDetect.cpp + +CTR_BANNER_SPEC = $(TARGET_PROGRAM).bsf + +ROMFS_ROOT = ../common/romfiles + +LIBS += libnn_cfg \ + libnn_driversEeprom \ + libnn_driversi2c \ + libnn_driversCal \ + libnn_crypto \ + libnn_driversCodec \ + libnn_spi \ + libnn_gpio \ + libnn_pdn \ + libnn_mcu \ + libnn_i2c \ + libnn_driversCamera \ + libnn_ps \ + libnn_driversRsa \ + lib_demo \ + libnn_nwm \ + libnn_friends \ + libnn_nim \ + +INSTALL_SDK_TOOL = true + +ROM_SPEC_FILE = $(TARGET_PROGRAM).rsf +DESCRIPTOR = $(HORIZON_ROOT)/resources/specfiles/_private/RepairTool.desc + +include $(ROOT_OMAKE)/modulerules + +VERSION_H = $(file version.h) + +$(VERSION_H): $(SOURCES) + section + bash genversion.sh + +RequireSetup($(VERSION_H)) +build: $(VERSION_H) $(DEFAULT_TARGETS) diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/banner/model.cbmd b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleBackup/banner/model.cbmd new file mode 100644 index 0000000000000000000000000000000000000000..f1c7b6279e13f5278c419d615d7d03d5660005e5 GIT binary patch literal 198785 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 MDvwobWH ./ConsoleBackup/version.h diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.bsf b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.bsf new file mode 100644 index 0000000000000000000000000000000000000000..104a94da96cd5d963d349ca5c6fcce26ae7e3cbb GIT binary patch literal 2302 zcmb7@%}&BV6ov0r6Q4m6H@Z+KhJ|rsM6B@-iN&}UA&7ugsXvL2;Tss=z?CbPK7-HU z)`;f}40Xb^b~0(1PS3sfyQi1I&zzJblt2oys8<2cr*etalpCCea)sR)c7e2|i~WpD z%Rcro7N2+UHiF)~Uy~`R|H-i|w|LvZ70EsBD^ipPeP2RkjQky)vxJ;2?`%a`MK<2; zYzL^;09`kOt2fp#wk|zHu)7fFWNu`{_Q#rGY=0EX_#@P9p&Pog2InT%2DrMq)-it1 z5bM@4GJuy|>5rV>09lO8Ax`gbHW_E@jjjxRjO#yrP0mrF2RAOE<`)kz2d6kOwUp*I z93`+s$UK?1hPc}iwV4q^!TDfENmN43p675qs~7dEzSM{MR`2Q)_czs1k9R9iC+b3# z6`dZs&Cc53ZE5GPQMHZQ&9SRVZt6E>3%bKUwF@%riEnqMis|N;Ye~iGdv;(iqYmL% zgnF^1x3#kaqppIk4p-ag{~U}rnxmrmV?1-}BHb4wwvf|Jvo7{BYB!CoUDx@U+m9xI zZ~1Ac&QC+NAI&!0$)cen)MPOjjbG&*sbyA9+-82Nvlu4Tel%g~#LiszPN!@7sdh7@sr_j7@Sk?igDXGP`DhB-LF)Z@%5t2-lYH^vj#EOln +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "demo.h" + +#include +#include + +#include "ConsoleRestore.h" +#include "DrawSystemState.h" +#include "Controller.h" +#include "SimplePlayer.h" +#include "CommonLogger.h" +#include "SDMountManager.h" +#include "HeapManager.h" +#include "VersionDetect.h" +#include "HardwareInfo.h" + +// svnリビジョン埋め込み用 +#include "version.h" +#ifndef RESTORE_VERSION_NUM +#define RESOTRE_VERSION_NUM 0 +#endif + +namespace { + +// グラフィックスに割り当てるメモリ +const size_t s_GxHeapSize = 0x800000; + +demo::RenderSystemDrawing s_RenderSystem; +nn::Handle s_McuSession; + +// バッテリ残量 +u8 batteryRemain = 100; + +// シリアルナンバー +u8 s_SerialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN]; + +// デバイスID +bit32 s_DeviceId; + +// シリアルナンバーが読めるかどうか +bool s_CanReadSerialNumber = false; + +// IVSへのポインタ +void* sp_Ivs; + +size_t s_SizeofIvs; + +// IVSが読めるかどうか +bool s_CanReadIvs = false; + +// バージョン情報 +common::VerDef s_VerData; + +} // namespace + +namespace ConsoleRestore{ + +bool IsAdapterConnected() +{ + return nn::ptm::CTR::GetAdapterState() == nn::ptm::CTR::ADAPTERSTATE_CONNECTED; +} + +bool IsBatteryLower() +{ + return batteryRemain <= 10; +} + +bool CanReadIVS() +{ + return s_CanReadIvs; +} + +bool CanReadSerialNumber() +{ + return s_CanReadSerialNumber; +} + +void GetSerialNumber(u8** serial, size_t* size) +{ + *serial = s_SerialNo; + *size = nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN; +} + +void GetIvs(void** ivs, size_t* size) +{ + *ivs = sp_Ivs; + *size = s_SizeofIvs; +} + +bit32 GetDeviceId() +{ + return s_DeviceId; +} + +void GetVersionData(common::VerDef* version) +{ + *version = s_VerData; +} + +void FinalizeAll() +{ + common::Logger::GetLoggerInstance()->Finalize(); + // アンマウント + nn::fs::Unmount("nand:"); + nn::fs::Unmount("sdmc:"); + s_RenderSystem.Finalize(); + + nn::mcu::CTR::FinalizeHwCheck(&s_McuSession); + nn::friends::detail::Finalize(); + nn::ps::Finalize(); + nn::ptm::CTR::FinalizeForSystemMenu(); + nn::cfg::CTR::system::Finalize(); + nn::cfg::CTR::init::Finalize(); + nn::hid::Finalize(); + nn::fs::Finalize(); + + nn::applet::PrepareToCloseApplication(); + nn::applet::CloseApplication(); +} + +nn::Handle GetMcuHandle() +{ + return s_McuSession; +} + +extern "C" void nnMain(void) +{ + nn::Result result; + + // os の初期化 + nn::os::Initialize(); + + // fs の初期化 + nn::fs::Initialize(); + + // appletの初期化 + nn::applet::Enable( false ); + + // hid の初期化 + result = nn::hid::Initialize(); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + + // ndmの初期化 + result = nn::ndm::Initialize(); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + + // デーモンの自律動作を停止 + result = nn::ndm::Suspend(nn::ndm::DN_CEC); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + result = nn::ndm::Suspend(nn::ndm::DN_BOSS); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + result = nn::ndm::Suspend(nn::ndm::DN_FRIENDS); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + result = nn::ndm::Suspend(nn::ndm::DN_NIM); + NN_ERR_THROW_FATAL_IF_FATAL_ONLY(result); + + // cfg の初期化 + nn::cfg::CTR::init::Initialize(); + nn::cfg::CTR::system::Initialize(); + + // 時計設定用ptm初期化 + nn::ptm::CTR::InitializeForSystemMenu(); + + // ps の初期化 + nn::ps::Initialize(); + + // friendsの初期化 + result = nn::friends::detail::Initialize(); + + // mcuの初期化 + nn::mcu::CTR::InitializeHwCheck(&s_McuSession); + nn::mcu::CTR::HwCheck mcu(s_McuSession); + + // amの初期化 + nn::am::InitializeForSystemMenu(); + + // ヒープの確保 + common::HeapManager::GetHeap()->Initialize(nn::os::GetDeviceMemoryAddress(), nn::os::GetDeviceMemorySize(), nn::os::ALLOCATE_OPTION_LINEAR); + + // RenderSystem の準備 + uptr heapForGx = reinterpret_cast(common::HeapManager::GetHeap()->Allocate(s_GxHeapSize)); + s_RenderSystem.Initialize(heapForGx, s_GxHeapSize); + + // サウンドスレッドの起動 + common::InitializeSimplePlayer(); + + // ログ描画の初期化 + common::Logger::GetLoggerInstance()->Initialize(CONSOLE_WIDTH, CONSOLE_HEIGHT, CONSOLE_MAX_LINE, &s_RenderSystem); + + // RenderSystemを作ってからログが出せる + common::Logger::InitializeEjectThread(); + common::Logger::SetEjectHandler(OnSdEjected); + COMMON_LOGGER("\n"); + COMMON_LOGGER("CTR Console Restore start\n"); + + // ボタン入力 + nn::hid::PadReader s_PadReader; + nn::hid::PadStatus padStatus; + + // データの準備 + + // 完全性検証SEEDの取得 + result = nn::fs::MountSpecialArchive("nand:", nn::fs::CTR::ARCHIVE_TYPE_CTR_NAND); + if (result.IsSuccess()) + { + nn::fs::FileInputStream fis; + + result = fis.TryInitialize(L"nand:/private/movable.sed"); + if (result.IsSuccess()) + { + s64 fileSize = fis.GetSize(); + s32 ret; + void* addr = NULL; + addr = common::HeapManager::GetHeap()->Allocate(fileSize); + if (addr != NULL) + { + sp_Ivs = addr; + s_SizeofIvs = fileSize; + result = fis.TryRead(&ret, addr, fileSize); + if (result.IsSuccess()) + { + s_CanReadIvs = true; + } + } + } + fis.Finalize(); + } + // 一旦アンマウントしておく + nn::fs::Unmount("nand:"); + + // リージョンの取得 + nn::cfg::CTR::CfgRegionCode region; + region = nn::cfg::CTR::GetRegion(); + + // シリアルナンバーの取得 + std::memset(s_SerialNo, '\0', + nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN); + result = nn::cfg::CTR::system::GetSerialNo(s_SerialNo); + common::HardwareInfo hwInfo; + hwInfo.AddCheckDigit(reinterpret_cast(s_SerialNo)); + if(result.IsSuccess()) + { + s_CanReadSerialNumber = true; + } + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // デバイスIDの取得 + result = nn::ps::CTR::GetDeviceId(&s_DeviceId); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + bit64 infraDeviceId; + result = nn::nim::CTR::InitializeForShop(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::nim::CTR::Shop::GetInfraDeviceId(s_DeviceId, &infraDeviceId); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + result = nn::nim::CTR::FinalizeForShop(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // MACアドレスの取得 + nn::nwm::Mac mac; + char8 macAddress[nn::nwm::Mac::MAC_STRING_SIZE]; + + result = nn::nwm::GetMacAddress(mac); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + mac.GetString(macAddress); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // フレンドコードの取得 + nn::friends::CTR::FriendKey friendKey; + result = nn::friends::CTR::GetMyFriendKey(&friendKey); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + u64 friendCode = nn::friends::CTR::FriendKeyToFriendCode(friendKey); + + // バージョンの取得 + common::GetSystemVersion(&s_VerData, region); + + // 情報出力 + COMMON_LOGGER("CTR Console Restore %s Rev.%s\n", __DATE__, RESTORE_VERSION_NUM); + COMMON_LOGGER("System Ver. %d.%d.%d-%d\n", s_VerData.cup.majorVersion, s_VerData.cup.minorVersion, s_VerData.cup.microVersion, + s_VerData.nup.majorVersion); + COMMON_LOGGER("System Region %s\n", nn::cfg::CTR::GetRegionCodeA3(region)); + COMMON_LOGGER("Serial Number %s\n", s_SerialNo); + COMMON_LOGGER("Device ID %llu\n", infraDeviceId); + COMMON_LOGGER("MAC Address %s\n", macAddress); + COMMON_LOGGER("Friend Code %04u-%04u-%04u\n", + static_cast(friendCode / 100000000ULL % 10000ULL), + static_cast(friendCode / 10000ULL % 10000ULL), + static_cast(friendCode % 10000ULL) ); + + + bool flip = false; + bool continueRestore = false; + + for(;;) + { + bool nextStep = false; + + s_PadReader.ReadLatest(&padStatus); + + // AまたはSTARTボタンで進行 + if(padStatus.trigger & nn::hid::BUTTON_A || + padStatus.trigger & nn::hid::BUTTON_START) + { + nextStep = true; + } + + // LまたはRボタンで上下画面フリップ + if(padStatus.trigger & nn::hid::BUTTON_R || + padStatus.trigger & nn::hid::BUTTON_L) + { + flip = !flip; + } + + // コンソールスクロール + if(padStatus.hold & nn::hid::BUTTON_UP) + { + common::Logger::GetLoggerInstance()->ScrollUp(); + } + + // コンソールスクロール + if(padStatus.hold & nn::hid::BUTTON_DOWN) + { + common::Logger::GetLoggerInstance()->ScrollDown(); + } + + if(padStatus.hold & nn::hid::BUTTON_LEFT) + { + common::Logger::GetLoggerInstance()->ScrollToBegin(); + } + + if(padStatus.hold & nn::hid::BUTTON_RIGHT) + { + common::Logger::GetLoggerInstance()->ScrollToEnd(); + } + + // 情報更新 + // バッテリ + mcu.GetBatteryRemain(&batteryRemain); + // ACアダプタ + std::string adapterState; + if(IsAdapterConnected()) + { + adapterState += ::std::string("Connected"); + } + else + { + adapterState += ::std::string("Not Connected"); + } + + // 操作用メッセージ + // 進捗確認メッセージを兼ねる? + ::std::vector operationMessage; + + ControlState(operationMessage, nextStep, continueRestore); + + nn::util::FloatColor titleColor; + + if(GetRestoreMode() == RESTORE_MODE_RESTORE) + { + titleColor.r = 0.1f; + titleColor.g = 0.25f; + titleColor.b = 0.1f; + } + else if(GetRestoreMode() == RESTORE_MODE_NUP_ONLY) + { + titleColor.r = 0.35f; + titleColor.g = 0.35f; + titleColor.b = 0.f; + } + + // 上画面表示 + common::DrawSystemState("CTR Console Restore", + s_RenderSystem, + titleColor, + flip, + adapterState, + RESTORE_VERSION_NUM, + &s_VerData, + batteryRemain, + infraDeviceId, + friendCode, + GetProgress(), + macAddress, + operationMessage, + region, + s_SerialNo + ); + + if (GetRestoreMode() == RESTORE_MODE_NUP_ONLY) + { + const u8 spaceSize = 10; + const u8 lineBottom = 23; + const u32 screenWidth = 400; + + s_RenderSystem.SetColor(1.f, 1.f, 1.f); + s_RenderSystem.DrawText(0, lineBottom * spaceSize, "NUP-Only Mode"); + s_RenderSystem.SetColor(titleColor.r, titleColor.g, titleColor.b); + s_RenderSystem.FillRectangle(0, lineBottom * spaceSize, screenWidth, spaceSize); + s_RenderSystem.SetColor(1.f, 1.f, 1.f); + } + + s_RenderSystem.SwapBuffers(); + + // デフォルトで下画面に描画するもの + s_RenderSystem.SetRenderTarget(common::GetRenderTarget(NN_GX_DISPLAY1, flip)); + if(IsRestoreSucceeded()) + { + s_RenderSystem.SetClearColor(common::GetRenderTarget(NN_GX_DISPLAY1, flip), SUCCESS_COLOR); + } + else if(IsRestoreFailed()) + { + s_RenderSystem.SetClearColor(common::GetRenderTarget(NN_GX_DISPLAY1, flip), FAIL_COLOR); + } + else + { + s_RenderSystem.SetClearColor(common::GetRenderTarget(NN_GX_DISPLAY1, flip), NORMAL_COLOR); + } + s_RenderSystem.Clear(); + s_RenderSystem.SetColor(1.f, 1.f, 1.f); + + common::Logger::GetLoggerInstance()->DrawConsole(); + s_RenderSystem.SwapBuffers(); + + + s_RenderSystem.WaitVsync(NN_GX_DISPLAY_BOTH); + + // 電源長押しで終了 + if ( nn::applet::IsExpectedToCloseApplication()) + { + FinalizeAll(); + } + } +} + + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.h new file mode 100644 index 0000000..ae779d2 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.h @@ -0,0 +1,54 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: ConsoleRestore.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef NN_CONSOLERESTORE_H_ +#define NN_CONSOLERESTORE_H_ + +#include +#include "VersionDetect.h" + +namespace ConsoleRestore +{ + +bool IsAdapterConnected(); +bool IsBatteryLower(); +bool CanReadIVS(); +bool CanReadSerialNumber(); +void GetSerialNumber(u8** serial, size_t* size); +void GetIvs(void** ivs, size_t* size); +nn::Handle GetMcuHandle(); +void GetVersionData(common::VerDef* version); +bit32 GetDeviceId(); + +void FinalizeAll(); + +const u32 CONSOLE_WIDTH = 38; +const u32 CONSOLE_HEIGHT = 24; +const u32 CONSOLE_MAX_LINE = 1000; + +} + +// 描画色の定義 +#define WHITE_COLOR 1.f, 1.f, 1.f, 1.f +#define GRAY_COLOR 0.5, 0.5, 0.5, 1.f +#define RED_COLOR 1.f, 0.f, 0.f, 1.f +#define GREEN_COLOR 0.f, 1.f, 0.f, 1.f +#define BLUE_COLOR 0.f, 0.f, 1.f, 1.f +#define SUCCESS_COLOR 0.f, 0.6f,0.f, 1.f +#define FAIL_COLOR 0.6f, 0.f,0.f, 1.f +#define NORMAL_COLOR 0.f, 0.f, 0.f, 1.f + +/* NN_CONSOLERESTORE_H_ */ +#endif diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.rsf b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.rsf new file mode 100644 index 0000000..be9685f --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.rsf @@ -0,0 +1,52 @@ +BasicInfo: + Title : ConsoleRestore + ProductCode: ConsoleRestore + BackupMemoryType: None + +TitleInfo: + Use: Evaluation + Category: Application + UniqueId: 0xf8022 + Version: 0 + +SystemControlInfo: + AppType : Application + StackSize : 0x4000 + Dependency : + - gpio + - pdn + - spi + - i2c + - mcu + - ptm + - codec + - cfg + - hid + - gsp + - friends + - nim + - ac + - ndm + +AccessControlInfo: + Priority : 16 + DisableDebug : true + + FileSystemAccess: + - DirectSdmc + - Debug + - Core + - CategoryFileSystemTool + + IoAccessControl: + - FsMountCardSpi + - FsMountNand + - FsMountTwln + +Option: + FreeProductCode: true + + +Rom: + # ROM に含めるファイルシステムのルートパスを指定します。 + HostRoot: "$(ROMFS_ROOT)" \ No newline at end of file diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Controller.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Controller.cpp new file mode 100644 index 0000000..b456d5c --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Controller.cpp @@ -0,0 +1,940 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Controller.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Controller.h" +#include "FileChecker.h" +#include "ConsoleRestore.h" +#include "SimplePlayer.h" +#include "CommonLogger.h" +#include "Importer.h" +#include "Updater.h" +#include "NtpClient.h" + +namespace ConsoleRestore +{ + +namespace +{ + +typedef enum RestoreState +{ + STARTUP, // 初期値 + SERIAL_IS_NOT_IN_SD, // シリアルナンバーファイルがSDカードにないことを表示 + SERIAL_IN_SD, // シリアルナンバーの情報を表示 + UPDATE_IN_PROGRESS, // アップデート中 + UPDATE_DONE, // アップデート完了 + NUP_ONLY_WAIT_SD_EJECT, // NUP_ONLYモードでSDカード抜き待ち + NUP_ONLY_WAIT_NEXT, // NUP_ONLYモードでキー入力待ち + RESTORE_TWL_SOUND, // TWLサウンドの書き込み中 + RESTORE_TWL_PHOTO, // TWL写真の書き込み中 + RESTORE_IN_PROGRESS, // 書き込み中 + POST_RESTORE, // 書き込み後の処理 + RESTORE_DONE, // 書き込み完了 + REBOOTING, // 再起動を行う + ERASE, // 削除処理を行う + HISTORY_RECOVER, // プレイ履歴の書き戻しを行う + TIME_ADJUST, // 時計あわせを行う + WAIT_SD_EJECT, // SDカードぬき待ち + ALL_DONE, // すべて完了 + SHUTDOWN, // シャットダウン中 + FAIL // 失敗 +} RestoreState; + +// Restore状態管理 +RestoreState s_RestoreState = STARTUP; +// Restoreモード管理 +RestoreMode s_RestoreMode = RESTORE_MODE_RESTORE; + +// インターネット設定を読んだかどうか +bool s_ReadSettingDone = false; +// インターネット設定を読んだ結果 +bool s_ReadSettingSuccess = false; +// NUP専用モードかどうか +bool s_NupOnlyMode = false; + +// APSettingの書式が無い警告サウンドを鳴らしたかどうか +bool s_ExistAPSettingAnnotation = false; +// APSettingの書式が違っている警告サウンドを鳴らしたかどうか +bool s_APSettingAnnotation = false; +// シリアルナンバーがない警告サウンドを鳴らしたかどうか +bool s_SerialNumberAnnotation = false; +// 失敗サウンドを鳴らしたかどうか +bool s_PlayedFailSound = false; +// 操作開始サウンドを鳴らしたかどうか +bool s_PlayedStartCursor = false; +// リブート開始前サウンドを鳴らしたかどうか +bool s_PlayedRebootCursor = false; +// SD抜き出し前サウンドを鳴らしたかどうか +bool s_PlayedSdPullOutCursor = false; +// バージョンデータが無い警告サウンドを鳴らしたかどうか +bool s_ExistsVersionDataAnnotation = false; +// バージョンデータを読んだかどうか +bool s_ReadVersionDone = false; +// バージョンデータを読んだ結果 +nn::Result s_ReadVersionResult = nn::ResultSuccess(); +// SDに書き込みできない警告サウンドを鳴らしたかどうか +bool s_SdWriteProetctAnnotation = false; + +// ネットワークアップデートを開始したかどうか +bool s_ExecuteFgNup = false; +// FGNUPを何回リトライしたか +u32 s_FgNupRetryCount = 0; + + +} // namespace + +bool NeedsAcAdater() +{ + return IsBatteryLower() && !IsAdapterConnected(); +} + +bool CheckAndReadAPSetting(::std::vector& operationMessage) +{ + using namespace common; + + if (!ExistsAPSetting()) + { + if(!s_ExistAPSettingAnnotation) + { + s_ExistAPSettingAnnotation = true; + common::PlaySound(common::SOUND_ANNOTATION); + } + operationMessage.push_back(::std::string("Accsess_Point_Setting does not exist!")); + return false; + } + + // 設定ファイルからAP設定を読み込む + if (!s_ReadSettingDone) + { + s_ReadSettingDone = true; + s_ReadSettingSuccess = ReadSetting(&s_NupOnlyMode); + } + + if(s_NupOnlyMode) + { + s_RestoreMode = RESTORE_MODE_NUP_ONLY; + } + + if (!s_ReadSettingSuccess) + { + operationMessage.push_back(::std::string("Invalid Accsess_Point_Setting format!")); + if(!s_APSettingAnnotation) + { + s_APSettingAnnotation = true; + common::PlaySound(common::SOUND_ANNOTATION); + } + + } + + return s_ReadSettingSuccess; +} + +nn::Result CheckAndReadVersionData(::std::vector& operationMessage) +{ + using namespace common; + + if (!ExistsVersionData()) + { + if(!s_ExistsVersionDataAnnotation) + { + s_ExistsVersionDataAnnotation = true; + common::PlaySound(common::SOUND_ANNOTATION); + } + operationMessage.push_back(::std::string("Version Data does not exist!")); + return nn::Result(nn::Result::LEVEL_PERMANENT, nn::Result::SUMMARY_NOT_FOUND, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_NOT_FOUND); + } + + // バージョン情報ファイルを読み込む + if (!s_ReadVersionDone) + { + s_ReadVersionDone = true; + s_ReadVersionResult = ReadVersionData(); + } + + return s_ReadVersionResult; +} + +void PutAliveMessage(::std::vector& operationMessage, const char* str) +{ + std::string message = std::string(str); + static u8 i = 0; + if (i < 0xff / 4) + { + operationMessage.push_back(message + std::string(" /")); + } + else if (i < 0xff * 2 / 4) + { + operationMessage.push_back(message + std::string(" |")); + } + else if (i < 0xff * 3 / 4) + { + operationMessage.push_back(message + std::string(" \\")); + } + else + { + operationMessage.push_back(message + std::string(" -")); + } + i += 4; +} + +nn::Result ExecSyncMcuRtc() +{ + nn::Result result = nn::ResultSuccess(); + if(!common::ExistsRtcSyncFinishedFile()) + { + result = ImportMcuRtc(); + if(result.IsSuccess()) + { + // RTCを同期完了ファイルを作る + CreateRtcSyncFinishedFile(); + } + } + + return result; +} + +// Zero NUP限定コード +bool NeedsNup() +{ + if(AlreadyExecutedNup() || s_NupOnlyMode) + { + return !common::ExistsUpdateCheckedFile(); + } + else + { + return false; + } +} + +void ControlState(::std::vector& operationMessage, bool& nextStep, bool& continueRestore) +{ + using namespace common; + nn::Result result; + + // 状態遷移Controller + switch (s_RestoreState) + { + // 起動時 + case STARTUP: + { + bool error = false; + bool needsUpdate = false; + bool needsErase = false; + bool validApSetting = false; + + // SDカードが挿入されているか? + if (nn::fs::IsSdmcInserted()) + { + // SDカードに書き込みできるか? + if (!nn::fs::IsSdmcWritable()) + { + if (!s_SdWriteProetctAnnotation) + { + s_SdWriteProetctAnnotation = true; + PlaySound(SOUND_ANNOTATION); + } + operationMessage.push_back(::std::string("Can*t Write SD Card!!\n")); + break; + } + + result = CheckAndReadVersionData(operationMessage); + if(result.IsFailure()) + { + // バージョン情報の取得に失敗 + error = true; + s_RestoreState = FAIL; + } + + validApSetting = CheckAndReadAPSetting(operationMessage); + if (!validApSetting) + { + error = true; + } + else + { + // NUPが必要か? + if (!NeedsNup()) + { + if (s_NupOnlyMode) + { + s_RestoreState = NUP_ONLY_WAIT_SD_EJECT; + + // リストア状態チェックファイルをすべて削除 + DeleteAllCheckFiles(); + + break; + } + + // SDカードに書き込み完了ファイルがあるか? + if (!ExistsWriteFinishedFile()) + { + // IVSを読めるか? + if (CanReadIVS()) + { + // 本体初期化完了ファイルがあるか? + if (ExistsConsoleInitializedFile()) + { + // SDカードにシリアルナンバーがあるか? + if (!ExistsSerialNumberFile()) + { + COMMON_LOGGER("Can't Read Serial Number in SD Card!!\n"); + error = true; + s_RestoreState = SERIAL_IS_NOT_IN_SD; + } + else + { + u8 serial[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN]; + result = ReadSerialNumber(serial); + if(result.IsSuccess()) + { + ::std::string serialStr(reinterpret_cast (serial)); + operationMessage.push_back(::std::string("Serial Number in SD : ") + serialStr); + } + else + { + error = true; + s_RestoreState = FAIL; + } + } + + + // SDカードにリージョンデータがあるか? + if (ExistsRegionData()) + { + // リージョンデータは一致しているか? + if (EqualsRegionDataandRegion().IsFailure()) + { + COMMON_LOGGER("Current Region and Region in SD differ!!\n"); + error = true; + s_RestoreState = FAIL; + } + } + else + { + // 移行不能なのでFAIL + COMMON_LOGGER("Can't Read Region in SD Card!!\n"); + error = true; + s_RestoreState = FAIL; + } + + } + else + { + if (!ExistsIVSFile()) + { + // 移行不能なのでFAIL + COMMON_LOGGER("Can't Read IVS in SD Card!!\n"); + error = true; + s_RestoreState = FAIL; + } + else + { + COMMON_LOGGER("Initialize Console\n"); + + // 本体初期化完了ファイルを作る + CreateConsoleInitializedFile(); + + // ファイルシステムの初期化を行う + InitializeFileSystem(); + error = true; + s_RestoreState = REBOOTING; + } + } + } + else + { + error = true; + operationMessage.push_back(::std::string("Can't Read IVS!!")); + } + } + else + { + if (validApSetting) + { + // 削除処理を行う + needsErase = true; + } + } + } + else + { + if (validApSetting) + { + // ネットワークアップデートを行う + needsUpdate = true; + } + } + + } + } + else + { + error = true; + operationMessage.push_back(::std::string("Insert SD Card!!")); + } + + // ACアダプタが必要か? + if (NeedsAcAdater()) + { + error = true; + operationMessage.push_back(::std::string("Connect AC Adapter!!")); + } + + // エラーが無ければ進行用メッセージ表示 + if (!error) + { + operationMessage.push_back(::std::string("Push A or START Button")); + if(needsUpdate) + { + operationMessage.push_back(::std::string("Network Update Mode")); + } + else if(needsErase) + { + operationMessage.push_back(::std::string("Clock Sync Mode")); + } + else + { + operationMessage.push_back(::std::string("Import Data Mode")); + } + + if(!s_PlayedStartCursor) + { + PlaySound(SOUND_CURSOR); + s_PlayedStartCursor = true; + } + } + + if (nextStep && !error) + { + if (needsUpdate) + { + COMMON_LOGGER("Start Network Update\n"); + s_RestoreState = UPDATE_IN_PROGRESS; + } + else if(needsErase) + { + COMMON_LOGGER("Erase Trash\n"); + s_RestoreState = ERASE; + } + else + { + COMMON_LOGGER("Start Import Data\n"); + // Zero NUP限定 + // RTC同期を行う + // NUPされない場合があるのでここで同期 + result = ExecSyncMcuRtc(); + if(result <= nn::fs::ResultVerificationFailed()) + { + s_RestoreState = FAIL; + } + else + { + s_RestoreState = RESTORE_TWL_SOUND; + } + } + } + } + break; + + // シリアルナンバーがSDカードにないこと警告 + case SERIAL_IS_NOT_IN_SD: + { + operationMessage.push_back(::std::string("Serial Number Is Not In SD Card")); + operationMessage.push_back(::std::string("Push A or START Button")); + operationMessage.push_back(::std::string("Import Data Mode")); + + if (!s_SerialNumberAnnotation) + { + s_SerialNumberAnnotation = true; + PlaySound(SOUND_ANNOTATION); + } + + if (nextStep) + { + s_RestoreState = RESTORE_TWL_SOUND; + } + } + break; + + // アップデート中 + case UPDATE_IN_PROGRESS: + { + continueRestore = true; + + // ACアダプタが必要か? + if (NeedsAcAdater()) + { + continueRestore = false; + operationMessage.push_back(::std::string("Connect AC Adapter!!")); + } + + // アップデートを行う + if(!s_ExecuteFgNup) + { + if(ImportCountryLanguageData().IsSuccess()) + { + StartFGNetworkUpdate(); + s_ExecuteFgNup = true; + } + else + { + s_RestoreState = FAIL; + } + } + + // 動いていることを表示 + { + PutAliveMessage(operationMessage, "Updating"); + } + + + if (IsNetworkUpdateFinished()) + { + FinishFGNetworkUpdate(); + // エラーがあったら表示する + if(GetUpdateResult().IsFailure()) + { + // APが見つからない + if(GetUpdateResult() == nn::ac::ResultNotFoundAccessPoint()) + { + COMMON_LOGGER("No Access Point Found!"); + } + } + + if (GetUpdateResult().IsSuccess()) + { + COMMON_LOGGER("Network Update Finished.\n"); + // アップデート完了ファイルを作成 + CreateUpdateFinishedFile(); + + s_RestoreState = UPDATE_DONE; + + } + else + { + if (s_FgNupRetryCount++ < RETRY_MAX) + { + // エラーのためやり直す + COMMON_LOGGER_RESULT_IF_FAILED(GetUpdateResult()); + COMMON_LOGGER("Network Update Failed. Retrying... %d\n", s_FgNupRetryCount); + + // FGNUP用のスレッドを作るとこからやり直し + s_ExecuteFgNup = false; + } + else + { + s_RestoreState = FAIL; + } + } + + } + } + break; + + // アップデート完了 + case UPDATE_DONE: + { + operationMessage.push_back(::std::string("Network Update Done.")); + operationMessage.push_back(::std::string("Press A or START Button to Reboot")); + + if(!s_PlayedRebootCursor) + { + PlaySound(SOUND_CURSOR); + s_PlayedRebootCursor = true; + } + + if (nextStep) + { + s_RestoreState = REBOOTING; + } + } + break; + + + // TWLサウンド領域の書き込み中 + case RESTORE_TWL_SOUND: + { + static bool init = true; + if (init) + { + // データを書き込む + ImportTwlSoundData(); + init = false; + } + + // 処理が完了した + if (IsImportFinished()) + { + FinalizeImportThread(); + s_RestoreState = RESTORE_TWL_PHOTO; + } + } + break; + + // TWL写真領域の書き込み + case RESTORE_TWL_PHOTO: + { + static bool init = true; + if (init) + { + // データを書き込む + ImportTwlPhotoData(); + init = false; + } + + // 処理が完了した + if (IsImportFinished()) + { + FinalizeImportThread(); + s_RestoreState = RESTORE_IN_PROGRESS; + } + } + break; + + + // 書き込み中 + case RESTORE_IN_PROGRESS: + { + continueRestore = true; + + // ACアダプタが必要か? + if (NeedsAcAdater()) + { + continueRestore = false; + operationMessage.push_back(::std::string("Connect AC Adapter!!")); + } + + // データを読み込む + if(ImportData().IsFailure()) + { + s_RestoreState = FAIL; + } + + // 処理が完了した + if (continueRestore && IsImportFinished()) + { + COMMON_LOGGER("Import NAND Data Finished.\n"); + + if (GetProgress() > 99) + { + s_RestoreState = POST_RESTORE; + } + else + { + s_RestoreState = FAIL; + } + + } + } + break; + + // リブート中 + case REBOOTING: + { + static bool init = true; + + if (init) + { + // ErrDispから引用 + result = nn::ns::CTR::InitializeForShell(); + if (result.IsSuccess()) + { + COMMON_LOGGER("System Reboot.\n"); + + nn::ns::CTR::HardwareResetAsync(nn::CTR::MEMORY_ARRANGE_NORMAL); + while (!nn::applet::IsExpectedToCloseApplication()) + { + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(5)); + } + + nn::ns::CTR::FinalizeForShell(); + + // INFO: リブートは非同期のため処理は継続 + } + init = false; + } + } + break; + + // 書き込み後の処理 + case POST_RESTORE: + { + operationMessage.push_back(::std::string("Post Process...")); + // 書き込み完了ファイルを作成 + CreateWriteFinishedFile(); + + s_RestoreState = RESTORE_DONE; + } + break; + + // 書き込み完了 + case RESTORE_DONE: + { + operationMessage.push_back(::std::string("Restore Done.")); + operationMessage.push_back(::std::string("Press A or START Button to Reboot")); + + if(!s_PlayedRebootCursor) + { + PlaySound(SOUND_CURSOR); + s_PlayedRebootCursor = true; + } + + if (nextStep) + { + s_RestoreState = REBOOTING; + } + } + break; + + // 削除処理 + case ERASE: + { + Cleanup(); + s_RestoreState = HISTORY_RECOVER; + } + break; + + // 削除処理 + case HISTORY_RECOVER: + { + static bool init = true; + if (init) + { + // ptmのセーブデータ移行後に時計を無効化する + nn::ptm::CTR::InvalidateSystemTime(); + + // cfgの本体固有値をcal値で初期化する + InitializeHardwareDependentSetting(); + + init = false; + } + + s_RestoreState = TIME_ADJUST; + } + + + // 時計あわせ + case TIME_ADJUST: + { + static bool init = true; + if(init) + { + COMMON_LOGGER("Adjust Time\n"); + AdjustTime(); + init = false; + } + + // 動いていることを表示 + { + PutAliveMessage(operationMessage, "Sync Clock"); + } + + if(IsTimeAdjustFinished()) + { + if(IsTimeAdjustSuccessed()) + { + s_RestoreState = WAIT_SD_EJECT; + } + else + { + s_RestoreState = FAIL; + } + + // リストア状態チェックファイルをすべて削除 + DeleteAllCheckFiles(); + } + } + break; + + // すべて完了 + case WAIT_SD_EJECT: + { + operationMessage.push_back(::std::string("ALL Done. Pull Out SD Card.")); + // SDカード抜けのみで次の状態に遷移する + + if (!s_PlayedSdPullOutCursor) + { + common::PlaySound(common::SOUND_CURSOR); + s_PlayedSdPullOutCursor = true; + } + + } + break; + + // すべて完了 + case ALL_DONE: + { + operationMessage.push_back(::std::string("Restore Succeeded!!")); + static bool init = true; + if (init) + { + PlaySound(SOUND_OK); + init = false; + } + } + break; + + // 書き込み失敗 + case FAIL: + { + static bool init = true; + if(init) + { + // 状態初期化 + DeleteAllCheckFiles(); + init = false; + } + + operationMessage.push_back(::std::string("Failed.")); + if (!s_PlayedFailSound) + { + PlaySound(SOUND_NG); + s_PlayedFailSound = true; + } + } + break; + + case NUP_ONLY_WAIT_SD_EJECT: + { + operationMessage.push_back(::std::string("Update Done. Pull Out SD Card.")); + + // SDカード抜けのみで次の状態に遷移する + if (!s_PlayedSdPullOutCursor) + { + common::PlaySound(common::SOUND_CURSOR); + s_PlayedSdPullOutCursor = true; + } + } + break; + + case NUP_ONLY_WAIT_NEXT: + { + operationMessage.push_back(::std::string("A or START Button to Shutdown.")); + + if(nextStep) + { + s_RestoreState = SHUTDOWN; + } + } + break; + + case SHUTDOWN: + { + // 本体初期化を行う + InitializeFileSystem(); + + // シャットダウンする + nn::ptm::CTR::ShutdownAsync(0, nn::fnd::TimeSpan::FromSeconds(0)); + } + break; + + } +} + +bool InProgress() +{ + return s_RestoreState == RESTORE_IN_PROGRESS; +} + +bool IsRestoreSucceeded() +{ + return s_RestoreState == ALL_DONE; +} + +bool IsRestoreFailed() +{ + return s_RestoreState == FAIL; +} + +void OnSdEjected() +{ + if(s_RestoreState == WAIT_SD_EJECT || s_RestoreState == ALL_DONE) + { + s_RestoreState = ALL_DONE; + } + else if(s_RestoreState == NUP_ONLY_WAIT_SD_EJECT || s_RestoreState == NUP_ONLY_WAIT_NEXT) + { + s_RestoreState = NUP_ONLY_WAIT_NEXT; + } + // FAILのときは一旦電源を切らないと動かないようにしておく + else if(s_RestoreState != FAIL) + { + InitializeState(); + ClearFileReadResult(); + } +} + +void InitializeState() +{ + s_RestoreState = STARTUP; + s_RestoreMode = RESTORE_MODE_RESTORE; + + common::InitializeFileCheck(); + + s_ExistAPSettingAnnotation = false; + s_ReadSettingDone = false; + s_ReadSettingSuccess = false; + s_APSettingAnnotation = false; + s_SerialNumberAnnotation = false; + s_PlayedFailSound = false; + s_ExecuteFgNup = false; + s_FgNupRetryCount = 0; + s_PlayedStartCursor = false; + s_PlayedRebootCursor = false; + s_PlayedSdPullOutCursor = false; + s_NupOnlyMode = false; + s_ReadVersionDone = false; + s_SdWriteProetctAnnotation = false; + s_ReadVersionResult = nn::ResultSuccess(); +} + +u32 GetProgress() +{ + if(s_RestoreState == RESTORE_TWL_SOUND || + s_RestoreState == RESTORE_TWL_PHOTO || + s_RestoreState == RESTORE_IN_PROGRESS || + s_RestoreState == POST_RESTORE || + s_RestoreState == RESTORE_DONE) + { + return GetImportProgress(); + } + else if(s_RestoreState == UPDATE_IN_PROGRESS || + s_RestoreState == UPDATE_DONE) + { + return GetUpdateProgress(); + } + else + { + return 0; + } + +} + +RestoreMode GetRestoreMode() +{ + return s_RestoreMode; +} + +} // namespace ConsoleRestore diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Controller.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Controller.h new file mode 100644 index 0000000..d2b802b --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Controller.h @@ -0,0 +1,46 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Contoroller.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef CONTOROLLER_H_ +#define CONTOROLLER_H_ + +#include +#include +#include + +namespace ConsoleRestore +{ + +typedef enum RestoreMode +{ + RESTORE_MODE_RESTORE, + RESTORE_MODE_NUP_ONLY +} RestoreMode; + +const u32 RETRY_MAX = 3; + +void ControlState(::std::vector& operationMessage, bool& nextStep, bool& continueRestore); +bool InProgress(); +bool IsRestoreSucceeded(); +bool IsRestoreFailed(); +u32 GetProgress(); + +void OnSdEjected(); +void InitializeState(); +RestoreMode GetRestoreMode(); + +} + +#endif /* CONTOROLLER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.cpp new file mode 100644 index 0000000..10c5e58 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.cpp @@ -0,0 +1,1551 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Importer.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include // cfg:norの初期化に必要 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "FileName.h" +#include "Importer.h" +#include "SdMountManager.h" +#include "ConsoleRestore.h" +#include "HeapManager.h" +#include "SdReaderWriter.h" +#include "CommonLogger.h" +#include "FileTransfer.h" +#include "common_Types.h" +#include "Aes_define.h" +#include "configLoader.h" +#include "PlayHistoryManager.h" +#include "FileChecker.h" +#include "VersionDetect.h" + +#include +#include + +namespace ConsoleRestore +{ +namespace +{ +const size_t IMPORT_THREAD_STACK_SIZE = 0x4000; +nn::os::Thread s_ImportThread; +nn::os::StackBuffer s_ImportThreadStack; + +const size_t TIME_ZONE_LENGTH = 9; // "+23:45" +char s_TimeZoneStr[TIME_ZONE_LENGTH]; + +TimeZone s_TimeZone; +const size_t NTP_SERVER_NAME_LENGTH = 256; +char s_NtpServerName[NTP_SERVER_NAME_LENGTH]; + +bool s_CheckedEqualsDeviceIdFileandDeviceId = false; +bool s_CheckedEqualsRegionDataandRegion = false; +bool s_ReadSerialNumber = false; + +// シリアルナンバー +u8 s_SerialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN]; + +// 空のファイルを作成する +bool CreateEmptyFile(const wchar_t* path); +// SDからNANDにセーブデータをコピーする +void ImportSaveData(); +// SDからNORにNORデータをコピーする +nn::Result ImportNorData(); + +// SDカードに保存してあるバージョン情報 +common::VerDef s_SDVersionData; + +} + +CheckedNetworkSetting s_CurrentNetowrkSetting1; + +void ConvertTimeZoneString(const char* str) +{ + s_TimeZone.hour = 0; + s_TimeZone.minutes = 0; + s_TimeZone.isMinus = false; + + bool hour = true; + bool ten = true; + u32 count = 0; + for(u32 i = 0; i < TIME_ZONE_LENGTH && count < 2; i++) + { + switch (str[i]) + { + case ':': + { + hour = false; + } + break; + + case '"': + { + // 2回読んだら終了 + count++; + } + break; + + case '+': + { + s_TimeZone.isMinus = false; + } + break; + + case '-': + { + s_TimeZone.isMinus = true; + } + break; + + default: + { + if(hour) + { + if(ten) + { + s_TimeZone.hour += (str[i] - '0') * 10; + ten = false; + } + else + { + s_TimeZone.hour += str[i] - '0'; + ten = true; + } + } + else + { + if(ten) + { + s_TimeZone.minutes += (str[i] - '0') * 10; + ten = false; + } + else + { + s_TimeZone.minutes += str[i] - '0'; + ten = true; + } + } + } + break; + } + } + + + NN_LOG("Converted TimeZone = "); + if(s_TimeZone.isMinus) + { + NN_LOG("-"); + } + NN_LOG("%02d:%02d\n", s_TimeZone.hour, s_TimeZone.minutes); + +} + +namespace +{ + +bool CreateEmptyFile(const wchar_t* path) +{ + nn::Result result; + bool create = false; + result = common::SdMountManager::Mount(); + + if (result.IsSuccess()) + { + nn::fs::FileOutputStream fos; + + result = fos.TryInitialize(path, true); + if(result.IsSuccess()) + { + fos.TryFlush(); + create = true; + } + fos.Finalize(); + } + + common::SdMountManager::Unmount(); + + return create; +} + +} + +nn::Result ReadSerialNumber(u8* serial) +{ + static nn::Result result = nn::ResultSuccess(); + + if(s_ReadSerialNumber) + { + std::memcpy(serial, s_SerialNo, sizeof(s_SerialNo)); + return result; + } + + COMMON_LOGGER("Read Serial Number in SD.\n"); + + size_t readSize; + common::SdReaderWriter sdReader; + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize); + if(buf != NULL) + { + result = sdReader.ReadBufWithCmac(common::SERIAL_PATHNAME, buf, bufSize, &readSize); + if(result.IsSuccess()) + { + std::memcpy(s_SerialNo, buf, sizeof(s_SerialNo)); + std::memcpy(serial, s_SerialNo, sizeof(s_SerialNo)); + s_ReadSerialNumber = true; + } + common::HeapManager::GetHeap()->Free(buf); + } + else + { + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); + } + return result; +} + +nn::Result EqualsDeviceIdFileandDeviceId() +{ + static nn::Result result = nn::ResultSuccess(); + + if(s_CheckedEqualsDeviceIdFileandDeviceId) + { + return result; + } + + COMMON_LOGGER("Check Device Id\n"); + + bit32 sdDeviceId; + common::SdReaderWriter sdReader; + size_t totalSize; + result = sdReader.ReadBufWithCmac(common::DEVICE_ID_PATHNAME, &sdDeviceId, sizeof(sdDeviceId), &totalSize); + s_CheckedEqualsDeviceIdFileandDeviceId = true; + if(result.IsSuccess()) + { + if(GetDeviceId() == sdDeviceId) + { + result = nn::ResultSuccess(); + return result; + } + + result = nn::Result(nn::Result::LEVEL_STATUS, nn::Result::SUMMARY_INVALID_RESULT_VALUE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_INVALID_RESULT_VALUE); + return result; + } + else + { + return result; + } +} + +nn::Result EqualsRegionDataandRegion() +{ + static nn::Result result = nn::ResultSuccess(); + + if(s_CheckedEqualsRegionDataandRegion) + { + return result; + } + + COMMON_LOGGER("Check Region\n"); + + nn::cfg::CTR::CfgRegionCode region; + region = nn::cfg::CTR::GetRegion(); + + nn::cfg::CTR::CfgRegionCode sdRegion; + common::SdReaderWriter sdReader; + size_t readSize; + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize); + if (buf != NULL) + { + result = sdReader.ReadBufWithCmac(common::REGION_DATA_PATHNAME, buf, bufSize, &readSize); + if (result.IsSuccess()) + { + std::memcpy(&sdRegion, buf, sizeof(sdRegion)); + s_CheckedEqualsRegionDataandRegion = true; + if(region == sdRegion) + { + result = nn::ResultSuccess(); + } + else + { + result = nn::Result(nn::Result::LEVEL_STATUS, nn::Result::SUMMARY_INVALID_RESULT_VALUE, + nn::Result::MODULE_COMMON, nn::Result::DESCRIPTION_INVALID_RESULT_VALUE); + } + } + common::HeapManager::GetHeap()->Free(buf); + } + else + { + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); + } + + return result; +} + +void SetCountry(nn::cfg::CTR::CfgCountryCode countryCode) +{ + using namespace nn::cfg::CTR; + using namespace nn::cfg::CTR::detail; + + SimpleAddressIdCfgData simpleAddressId; + TwlCountryCodeCfgData countryData; + + nn::cfg::CTR::system::Initialize(); + + NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::system::GetConfig(&simpleAddressId, sizeof(SimpleAddressIdCfgData), GET_CFG_KEY(NN_CFG_SIMPLE_ADDRESS, NN_CFG_SIMPLE_ADDRESS_ID))); + NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::system::GetConfig(&countryData, sizeof(TwlCountryCodeCfgData), GET_CFG_KEY(NN_CFG_TWL, NN_CFG_TWL_COUNTRY_CODE))); + nn::cfg::CTR::system::Finalize(); + + simpleAddressId.id = (countryCode << CFG_SIMPLE_ADDRESS_ID_COUNTRY_SHIFT) | (1 + << CFG_SIMPLE_ADDRESS_ID_REGION_SHIFT); + countryData.country = countryCode; + + nn::cfg::CTR::system::Initialize(); + NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::system::SetConfig(GET_CFG_KEY(NN_CFG_SIMPLE_ADDRESS, NN_CFG_SIMPLE_ADDRESS_ID), &simpleAddressId, sizeof(SimpleAddressIdCfgData))); + NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::system::SetConfig(GET_CFG_KEY(NN_CFG_TWL, NN_CFG_TWL_COUNTRY_CODE), &countryData, sizeof(TwlCountryCodeCfgData))); + nn::cfg::CTR::system::FlushConfig(); + nn::cfg::CTR::system::Finalize(); +} + +void SetLanguage(nn::cfg::CTR::CfgLanguageCode languageCode) +{ + NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::init::SetConfig( + GET_CFG_KEY(nn::cfg::CTR::detail::NN_CFG_USER_INFO, + nn::cfg::CTR::detail::NN_CFG_USER_INFO_LANGUAGE), + &languageCode, + sizeof(nn::cfg::CTR::detail::LanguageCfgData))); + NN_UTIL_PANIC_IF_FAILED(nn::cfg::CTR::init::FlushConfig()); + nn::cfg::nor::CTR::Initialize(); + NN_UTIL_PANIC_IF_FAILED(nn::cfg::nor::CTR::SetLanguage(static_cast(languageCode))); + nn::cfg::nor::CTR::Finalize(); +} + +nn::Result ImportCountryLanguageData() +{ + nn::Result result = nn::ResultSuccess(); + + if (common::ExistsCountryLanguageFile()) + { + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize); + if (buf != NULL) + { + common::SdReaderWriter sdReader; + + size_t readSize; + result = sdReader.ReadBufWithCmac(common::COUNTRY_SETTING_PATHNAME, buf, bufSize, &readSize); + if (result.IsSuccess()) + { + // SDから読み出し成功 + SetCountry(reinterpret_cast (buf)->country); + + SetLanguage(reinterpret_cast (buf)->language); + } + common::HeapManager::GetHeap()->Free(buf); + + NN_UTIL_RETURN_IF_FAILED(result); + } + } + else + { + // リージョンから適当な国を指定する + nn::cfg::CTR::CfgRegionCode region; + region = nn::cfg::CTR::GetRegion(); + NN_LOG("Country Setting does not exist. Use Default Setting\n"); + switch(region) + { + case nn::cfg::CTR::CFG_REGION_JAPAN: + { + SetCountry(nn::cfg::CTR::CFG_COUNTRY_JAPAN); + } + break; + + case nn::cfg::CTR::CFG_REGION_AMERICA: + { + SetCountry(nn::cfg::CTR::CFG_COUNTRY_UNITED_STATES); + } + break; + + case nn::cfg::CTR::CFG_REGION_EUROPE: + { + SetCountry(nn::cfg::CTR::CFG_COUNTRY_FRANCE); + } + break; + + case nn::cfg::CTR::CFG_REGION_AUSTRALIA: + { + SetCountry(nn::cfg::CTR::CFG_COUNTRY_AUSTRALIA); + } + break; + + case nn::cfg::CTR::CFG_REGION_CHINA: + { + SetCountry(nn::cfg::CTR::CFG_COUNTRY_CHINA); + } + break; + + case nn::cfg::CTR::CFG_REGION_KOREA: + { + SetCountry(nn::cfg::CTR::CFG_COUNTRY_SOUTH_KOREA); + } + break; + + case nn::cfg::CTR::CFG_REGION_TAIWAN: + { + SetCountry(nn::cfg::CTR::CFG_COUNTRY_TAIWAN); + } + break; + } + + } + + return result; +} + +inline u8 DecimalToBcd(u8 param) +{ + u8 theTen, theOne; + theTen = param / 10; + theOne = param - theTen * 10; + return (theTen << 4 | theOne); +} + +nn::Result ImportMcuRtc() +{ + COMMON_LOGGER("Import RTC Data.\n"); + nn::Result result = nn::ResultSuccess(); + nn::Handle handle = GetMcuHandle(); + + if(handle.IsValid()) + { + if (common::CheckFileExists(common::MCU_RTC_PATHNAME)) + { + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + NN_LOG("AllocatableSize = %d\n", bufSize); + + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize); + if (buf != NULL) + { + common::SdReaderWriter sdReader; + + size_t readSize; + result = sdReader.ReadBufWithCmac(common::MCU_RTC_PATHNAME, buf, bufSize, &readSize); + if (result.IsSuccess()) + { + // mcuを使ってセットする + nn::mcu::CTR::HwCheck mcu(handle); + nn::mcu::CTR::RtcData* rtc = reinterpret_cast (buf); + NN_LOG("RTC = 20%02d/%02d/%02d %02d:%02d:%02d\n", rtc->m_Year, rtc->m_Month, rtc->m_Day, rtc->m_Hour, rtc->m_Minute, rtc->m_Second); + + // BCD変換が必要 + + size_t RTC_PARAM_SIZE = sizeof(nn::mcu::CTR::RtcData); + u8 bcd[RTC_PARAM_SIZE]; + for (int i = 0; i < RTC_PARAM_SIZE; i++) + { + bcd[i] = DecimalToBcd(reinterpret_cast (rtc)[i]); + } + + result = mcu.WriteBySend(nn::drivers::mcu::CTR::MCU_RTC_SEC_ADDR, bcd, RTC_PARAM_SIZE); + + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + } + + common::HeapManager::GetHeap()->Free(buf); + NN_UTIL_RETURN_IF_FAILED(result); + } + else + { + COMMON_LOGGER("Failed Allocate Heap!!\n"); + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); + } + } + } + else + { + result = nn::Result(nn::Result::LEVEL_PERMANENT, nn::Result::SUMMARY_INVALID_STATE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_INVALID_HANDLE); + } + + return result; +} + +void InitializeFileSystem() +{ + nn::Result result; + + for (u32 i = 0; i < common::TWL_PATHNAME_MAX; i++) + { + result = nn::fs::MountSpecialArchive(common::TWL_ARCHIVE_NAME_TABLE[i], common::TWL_FS_ARCHIVE_KIND[i]); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + if (result.IsSuccess()) + { + nn::fs::Directory dir; + std::vector entryList; //カレントディレクトリのエントリ一覧を格納 + std::vector::iterator entryIndex; + + std::wstring currentDirectory = common::NAND_TWL_ROOT_PATHNAME_WITH_SLASH_TABLE[i]; + result = dir.TryInitialize(currentDirectory.c_str()); + + nn::fs::DirectoryEntry entry; + s32 numEntry; + for (;;) + { + result = dir.TryRead(&numEntry, &entry, 1); + if (result.IsFailure()) + { + dir.Finalize(); + } + if (numEntry == 0) + { + // ルートディレクトリを閉じる + dir.Finalize(); + + // ルートディレクトリの子を開く + for (entryIndex = entryList.begin(); entryIndex != entryList.end(); entryIndex++) + { + // ディレクトリなら削除する + if (entryIndex->attributes.isDirectory) + { + NN_LOG("Try Delete %ls%ls/\n", currentDirectory.c_str(), entryIndex->entryName); + result = nn::fs::TryDeleteDirectoryRecursively((currentDirectory + ::std::wstring( + entryIndex->entryName)).c_str()); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + } + // ファイルなら削除する + else + { + NN_LOG("Try Delete %ls%ls\n", currentDirectory.c_str(), entryIndex->entryName); + result = nn::fs::TryDeleteFile( + (currentDirectory + ::std::wstring(entryIndex->entryName)).c_str()); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + } + } + + // 削除完了 + break; + } + else + { + // vectorに保存する + entryList.push_back(entry); + if (entry.attributes.isDirectory) + { + NN_LOG("%ls%ls/\n", currentDirectory.c_str(), entry.entryName); + } + else + { + NN_LOG("%ls%ls\n", currentDirectory.c_str(), entry.entryName); + } + } + } + } + nn::fs::Unmount(common::TWL_ARCHIVE_NAME_TABLE[i]); + } + + nn::fs::InitializeCtrFileSystem(); +} + +nn::Result ImportIvs() +{ + nn::Result result = nn::ResultSuccess(); + nn::fs::FileOutputStream fos; + + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize() / 2; + void* enc = common::HeapManager::GetHeap()->Allocate(bufSize); + if (enc != NULL) + { + common::SdReaderWriter sdReader; + + size_t readSize; + result = sdReader.ReadBufWithCmac(common::IVS_PATHNAME, enc, bufSize, &readSize); + if(result.IsSuccess()) + { + // SDから読み出し成功 + result = nn::fs::MountSpecialArchive(common::NAND_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_CTR_NAND); + if (result.IsSuccess()) + { + void *dec = common::HeapManager::GetHeap()->Allocate(readSize); + if (dec != NULL) + { + // AES復号化する + nn::crypto::Initialize(); + nn::crypto::SwAesCtrContext swAesCtrContest; + + swAesCtrContest.Initialize(common::iv, common::key, sizeof(common::key)); + swAesCtrContest.Decrypt(dec, enc, readSize); + + // IVS書き込み + result = fos.TryInitialize(common::IVS_NAND_PATHNAME, true); + if (result.IsSuccess()) + { + if (result.IsSuccess()) + { + s32 writeSize; + result = fos.TryWrite(&writeSize, dec, readSize, true); + if (result.IsSuccess()) + { + COMMON_LOGGER("Import IVS.\n"); + } + } + } + common::HeapManager::GetHeap()->Free(dec); + } + else + { + COMMON_LOGGER("Failed Allocate Heap!!\n"); + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); + } + + } + nn::fs::Unmount(common::NAND_ARCHIVE_NAME); + } + else + { + return result; + } + common::HeapManager::GetHeap()->Free(enc); + } + else + { + COMMON_LOGGER("Failed Allocate Heap!!\n"); + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); + } + + return result; +} + +void ImportThreadFunc() +{ + nn::Result result; + + result = nn::fs::MountSpecialArchive(common::NAND_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_CTR_NAND); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = common::SdMountManager::Mount(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + NN_LOG("AllocatableSize = %d\n", bufSize); + + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize, AES_BLOCK_SIZE); + if (buf != NULL) + { + + common::CopyDirectory( + (::std::wstring(common::SDMC_ROOT_DIRECTORY_PATH) + ::std::wstring(common::SD_SAVEDATA_ROOT_NAME)).c_str(), + common::NAND_DATA_ROOT_PATHNAME_WITH_SLASH, + buf, bufSize, false); + + common::HeapManager::GetHeap()->Free(buf); + } + + common::SdMountManager::Unmount(); + nn::fs::Unmount(common::NAND_ARCHIVE_NAME); + + NN_LOG("Import Thread Finalize\n"); +} + +namespace +{ + +void ImportSaveData() +{ + // SDカードからNANDに読み込み + nn::Result result; + + // SDカードにあるセーブデータサイズを計算 + u32 fileNum = 0; + u32 fileSize = 0; + + common::SdMountManager::Mount(); + common::CalculateFileNum(::std::wstring(common::SDMC_ROOT_DIRECTORY_PATH) + ::std::wstring(common::SD_SAVEDATA_ROOT_NAME), fileNum, fileSize); + common::SdMountManager::Unmount(); + + // ファイルサイズ設定 + common::InitializeTransferProgress(fileSize); + + NN_LOG("File Number = %d\n", fileNum); + NN_LOG("File Size = %d\n", fileSize); + + // SDカードにあるセーブデータディレクトリ以下のデータをNANDにコピー + COMMON_LOGGER("Import NAND Data Start...\n"); + s_ImportThread.Start(ImportThreadFunc, s_ImportThreadStack); + +} + +nn::Result ImportNorData() +{ + COMMON_LOGGER("Import NOR Data.\n"); + + nn::Result result = nn::ResultSuccess(); + + nn::cfg::nor::CTR::Initialize(); + + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + NN_LOG("AllocatableSize = %d\n", bufSize); + + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize); + if (buf != NULL) + { + common::SdReaderWriter sdReader; + + size_t readSize; + result = sdReader.ReadBufWithCmac(common::NOR_PATHNAME, buf, bufSize, &readSize); + if(result.IsSuccess()) + { + // cfgを使ってセットする + result = nn::cfg::nor::CTR::SetNtrSetting(&reinterpret_cast(buf)->ntrConfig.ncd, + &reinterpret_cast(buf)->ntrConfig.ncd_ex); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // TWL WiFi設定 + result = nn::cfg::nor::CTR::WriteTwlWifiSetting(0, reinterpret_cast(buf)->TwlWiFiSetting, + common::TWL_WIFI_SETTING_SIZE); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // NTR WiFi設定 + result = nn::cfg::nor::CTR::WriteNtrWifiSetting(0, reinterpret_cast(buf)->NtrWiFiSetting, + common::NTR_WIFI_SETTING_SIZE); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + } + + common::HeapManager::GetHeap()->Free(buf); + + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + NN_UTIL_RETURN_IF_FAILED(result); + } + else + { + COMMON_LOGGER("Failed Allocate Heap!!\n"); + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); + } + + return result; +} + + +} + +nn::Result ReadVersionData() +{ + nn::Result result = nn::ResultSuccess(); + std::memset(&s_SDVersionData, 0, sizeof(common::VerDef)); + + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + NN_LOG("AllocatableSize = %d\n", bufSize); + + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize); + if (buf != NULL) + { + common::SdReaderWriter sdReader; + + size_t readSize; + result = sdReader.ReadBufWithCmac(common::VERSION_DATA_PATHNAME, buf, bufSize, &readSize); + if(result.IsSuccess()) + { + // バージョン情報を保持する + std::memcpy(&s_SDVersionData, buf, readSize); + NN_LOG("SD Version = %02d.%02d.%02d-%02d\n", s_SDVersionData.cup.majorVersion, + s_SDVersionData.cup.minorVersion, + s_SDVersionData.cup.microVersion, + s_SDVersionData.nup.majorVersion); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + } + + common::HeapManager::GetHeap()->Free(buf); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + NN_UTIL_RETURN_IF_FAILED(result); + } + else + { + COMMON_LOGGER("Failed Allocate Heap!!\n"); + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); + } + + return result; +} + +bool AlreadyExecutedNup() +{ + return s_SDVersionData.nup.majorVersion != 0; +} + +void Cleanup() +{ + nn::Result result; + bool execCleanup; + + result = nn::am::NeedsCleanup(&execCleanup, nn::fs::MEDIA_TYPE_NAND); + if(result.IsSuccess()) + { + if(execCleanup) + { + COMMON_LOGGER("Cleanup NAND\n"); + nn::am::DoCleanup(nn::fs::MEDIA_TYPE_NAND); + } + } + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); +} + +void DeleteAllCheckFiles() +{ + nn::Result result; + common::SdMountManager::Mount(); + + for(u32 i = 0; i < sizeof(CHECK_FILENAME_TABLE) / sizeof(CHECK_FILENAME_TABLE[0]); i++) + { + if(common::CheckFileExists(CHECK_FILENAME_TABLE[i])) + { + result = nn::fs::TryDeleteFile(CHECK_FILENAME_TABLE[i]); + COMMON_LOGGER_RESULT_IF_FAILED(result); + } + } + common::SdMountManager::Unmount(); +} + +void FinalizeImportThread() +{ + s_ImportThread.Join(); + s_ImportThread.Finalize(); +} + +bool IsImportFinished() +{ + return s_ImportThread.IsValid() && !s_ImportThread.IsAlive(); +} + +void CreateWriteFinishedFile() +{ + CreateEmptyFile(common::WRITE_FINISHED_CHECK_PATHNAME); +} + +void CreateConsoleInitializedFile() +{ + CreateEmptyFile(common::INITIALIZED_CHECK_PATHNAME); +} + +void CreateUpdateFinishedFile() +{ + CreateEmptyFile(common::UPDATE_CHECK_PATHNAME); +} + +void CreateRtcSyncFinishedFile() +{ + CreateEmptyFile(common::RTC_SYNC_CHECK_PATHNAME); +} + +u32 GetImportProgress() +{ + return common::GetProgress(); +} + +bool UpdateNetworkSetting(nn::ac::NetworkSetting& networkSetting) +{ + nn::Result result; + bool retval = true; + + result = nn::ac::InitializeInternal(); + if(result.IsFailure()) + { + retval = false; + COMMON_LOGGER("Error: nn::ac::InitializeInternal() failed\n"); + } + else + { + //特に入力させる必要のない自動で設定する項目 + networkSetting.wireless.enable = true; + networkSetting.wireless.multiSsid.enable = false; + networkSetting.ip.enableDHCP = true; + networkSetting.scanlessConnect.hasConnected = false; + networkSetting.proxy.enable = false; + networkSetting.other.enableUPnP = false; + + // 現在のインターネット設定1を一時的に保持 + result = nn::ac::LoadNetworkSetting(0, s_CurrentNetowrkSetting1.setting); + if(result.IsSuccess()) + { + s_CurrentNetowrkSetting1.isValid = true; + } + else + { + s_CurrentNetowrkSetting1.isValid = false; + } + + result = nn::ac::UpdateNetworkSetting( 0, networkSetting ); + if(!result.IsSuccess()) + { + retval = false; + COMMON_LOGGER("Error: SetNetworkSetting (Update Error)\n"); + } + else + { + result = nn::ac::FinalizeInternal(); + if (!result.IsSuccess()) + { + retval = false; + COMMON_LOGGER("Error: SetNetworkSetting (Finalize Error)\n"); + } + } + } + + return retval; +} + +bool ReadSetting(bool* nupOnly) +{ + nn::Result result; + bool retval = true; + common::ConfigFileLoader configfileLoader; + + common::SdMountManager::Mount(); + size_t size = common::HeapManager::GetHeap()->GetAllocatableSize(); + void* heapAddr = common::HeapManager::GetHeap()->Allocate(size); + + if(heapAddr != NULL) + { + result = configfileLoader.Initialize(common::AP_SETTING_PATHNAME, heapAddr, size); + if (result.IsSuccess()) + { + nn::ac::NetworkSetting networkSetting; + + { + const char* ssid = configfileLoader.ReadAsChar(L"SSID"); // SSID + if(ssid == NULL) + { + COMMON_LOGGER("SSID: is missing\n"); + retval = false; + } + else + { + std::strncpy(reinterpret_cast (networkSetting.wireless.essidSecurity.ssid), ssid, 32); + networkSetting.wireless.essidSecurity.ssidLength = std::strlen(ssid) % 33; + COMMON_LOGGER("SSID = %s\n", networkSetting.wireless.essidSecurity.ssid); + } + } + + + { + const char* mode = configfileLoader.ReadAsChar(L"MODE"); // MODE + if(mode == NULL) + { + COMMON_LOGGER("MODE: is missing\n"); + retval = false; + } + else + { + if (std::strcmp(mode, "OPEN") == 0) + { + networkSetting.wireless.essidSecurity.securityMode = nn::ac::OPEN; + } + else if (std::strcmp(mode, "WEP40") == 0) + { + networkSetting.wireless.essidSecurity.securityMode = nn::ac::WEP_40BIT; + } + else if (std::strcmp(mode, "WEP104") == 0) + { + networkSetting.wireless.essidSecurity.securityMode = nn::ac::WEP_104BIT; + } + else if (std::strcmp(mode, "WEP128") == 0) + { + networkSetting.wireless.essidSecurity.securityMode = nn::ac::WEP_128BIT; + } + else if (std::strcmp(mode, "WPA-TKIP") == 0) + { + networkSetting.wireless.essidSecurity.securityMode = nn::ac::WPA_TKIP; + } + else if (std::strcmp(mode, "WPA2-TKIP") == 0) + { + networkSetting.wireless.essidSecurity.securityMode = nn::ac::WPA2_TKIP; + } + else if (std::strcmp(mode, "WPA-AES") == 0) + { + networkSetting.wireless.essidSecurity.securityMode = nn::ac::WPA_AES; + } + else if (std::strcmp(mode, "WPA2-AES") == 0) + { + networkSetting.wireless.essidSecurity.securityMode = nn::ac::WPA2_AES; + } + else + { + networkSetting.wireless.essidSecurity.securityMode = nn::ac::OPEN; + } + + switch (networkSetting.wireless.essidSecurity.securityMode) + { + case nn::ac::OPEN: + { + COMMON_LOGGER("MODE = OPEN\n"); + } + break; + + case nn::ac::WEP_40BIT: + { + COMMON_LOGGER("MODE = WEP_40BIT\n"); + } + break; + + case nn::ac::WEP_104BIT: + { + COMMON_LOGGER("MODE = WEP_104BIT\n"); + } + break; + + case nn::ac::WEP_128BIT: + { + COMMON_LOGGER("MODE = WEP_128BIT\n"); + } + break; + + case nn::ac::WPA_TKIP: + { + COMMON_LOGGER("MODE = WPA_TKIP\n"); + } + break; + + case nn::ac::WPA2_TKIP: + { + COMMON_LOGGER("MODE = WPA2_TKIP\n"); + } + break; + + case nn::ac::WPA_AES: + { + COMMON_LOGGER("MODE = WPA_AES\n"); + } + break; + + case nn::ac::WPA2_AES: + { + COMMON_LOGGER("MODE = WPA2_AES\n"); + } + break; + + } + + } + } + + { + const char* pass = configfileLoader.ReadAsChar(L"PASS"); // PASS + if(pass == NULL) + { + COMMON_LOGGER("PASS: is missing\n"); + retval = false; + } + else + { + switch (networkSetting.wireless.essidSecurity.securityMode) + { + case nn::ac::WEP_40BIT: + case nn::ac::WEP_104BIT: + case nn::ac::WEP_128BIT: + { + std::strncpy(reinterpret_cast (networkSetting.wireless.essidSecurity.passphrase), + pass, 64); + std::memcpy(networkSetting.wireless.essidSecurity.key, + networkSetting.wireless.essidSecurity.passphrase, 64); + } + break; + + case nn::ac::WPA_TKIP: + case nn::ac::WPA2_TKIP: + case nn::ac::WPA_AES: + case nn::ac::WPA2_AES: + { + std::strncpy(reinterpret_cast (networkSetting.wireless.essidSecurity.passphrase), + pass, 64); + size_t phrase_size = std::strlen( + reinterpret_cast (networkSetting.wireless.essidSecurity.passphrase)); + + nn::nwm::Ssid ssid(reinterpret_cast (networkSetting.wireless.essidSecurity.ssid)); + nn::nwm::ConvertPasswordToPsk( + reinterpret_cast (networkSetting.wireless.essidSecurity.passphrase), + phrase_size, ssid, networkSetting.wireless.essidSecurity.key); + } + break; + + case nn::ac::OPEN: + default: + { + //do nothing + } + break; + } + } + } + + + { + s32 dnsAuto; // DNS_AUTO + if(configfileLoader.ReadAsChar(L"DNS_AUTO") == NULL) + { + COMMON_LOGGER("DNS_AUTO: is missing\n"); + retval = false; + } + else + { + dnsAuto = configfileLoader.ReadAsInteger(L"DNS_AUTO"); + if (dnsAuto == 1) + { + networkSetting.ip.autoDNSSetting = true; + } + else + { + networkSetting.ip.autoDNSSetting = false; + } + + COMMON_LOGGER("DNS_AUTO = %d\n", networkSetting.ip.autoDNSSetting); + + } + } + + { + const char* dnsPrimary = configfileLoader.ReadAsChar(L"DNS_PRI"); // プライマリDNS + if(!networkSetting.ip.autoDNSSetting) + { + if (dnsPrimary == NULL) + { + COMMON_LOGGER("DNS_PRI: is missing\n"); + retval = false; + + } + else + { + u8 dns[4]; + nn::socket::InAddr addr; + if (1 == nn::socket::InetAtoN(dnsPrimary, &addr)) + { + dns[3] = (0xff & (addr.addr >> 24)); + dns[2] = (0xff & (addr.addr >> 16)); + dns[1] = (0xff & (addr.addr >> 8)); + dns[0] = (0xff & (addr.addr)); + } + std::memcpy(networkSetting.ip.dns[0], dns, 4); + COMMON_LOGGER("DNS_PRI = %03d.%03d.%03d.%03d\n", networkSetting.ip.dns[0][0], + networkSetting.ip.dns[0][1], + networkSetting.ip.dns[0][2], + networkSetting.ip.dns[0][3]); + + } + } + } + + { + const char* dnsSecondary = configfileLoader.ReadAsChar(L"DNS_SEC"); // セカンダリDNS + if(!networkSetting.ip.autoDNSSetting) + { + if(dnsSecondary == NULL) + { + COMMON_LOGGER("DNS_SEC: is missing\n"); + retval = false; + } + else + { + u8 dns[4]; + nn::socket::InAddr addr; + if (1 == nn::socket::InetAtoN(dnsSecondary, &addr)) + { + dns[3] = (0xff & (addr.addr >> 24)); + dns[2] = (0xff & (addr.addr >> 16)); + dns[1] = (0xff & (addr.addr >> 8)); + dns[0] = (0xff & (addr.addr)); + } + std::memcpy(networkSetting.ip.dns[1], dns, 4); + COMMON_LOGGER("DNS_SEC = %03d.%03d.%03d.%03d\n", networkSetting.ip.dns[1][0], + networkSetting.ip.dns[1][1], + networkSetting.ip.dns[1][2], + networkSetting.ip.dns[1][3]); + + } + } + } + + { + const char* ntpServerName = configfileLoader.ReadAsChar(L"NTPSRV"); // NTPサーバ + if(ntpServerName == NULL) + { + COMMON_LOGGER("NTPSRV: is missing\n"); + retval = false; + } + else + { + std::strlcpy(s_NtpServerName, ntpServerName, sizeof(s_NtpServerName)); + COMMON_LOGGER("NTPSRV = %s\n", s_NtpServerName); + } + + + } + + { + const char* timeZone = configfileLoader.ReadAsChar(L"TIMEZONE"); // タイムゾーン + if(timeZone == NULL) + { + COMMON_LOGGER("TIMEZONE: is missing\n"); + retval = false; + } + else + { + std::strlcpy(s_TimeZoneStr, timeZone, sizeof(s_TimeZoneStr)); + COMMON_LOGGER("TIMEZONE = %s\n", s_TimeZoneStr); + ConvertTimeZoneString(s_TimeZoneStr); + } + + } + + { + NN_NULL_ASSERT(nupOnly); + if (configfileLoader.ReadAsChar(L"NUP_ONLY") != NULL) + { + s32 num = configfileLoader.ReadAsInteger(L"NUP_ONLY"); + if (num == 1) + { + *nupOnly = true; + COMMON_LOGGER("NUP Only Mode.\n"); + } + } + } + + configfileLoader.Finalize(); + + // 書き込み完了しなければfalse + if(!UpdateNetworkSetting(networkSetting)) + { + retval = false; + } + + } + else + { + NN_LOG("configfileLoader Initialize Failed\n"); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + retval = false; + } + common::HeapManager::GetHeap()->Free(heapAddr); + } + else + { + NN_LOG("Can't Allocate Heap\n"); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + retval = false; + } + + common::SdMountManager::Unmount(); + return retval; +} + +char* GetNtpServerName() +{ + return s_NtpServerName; +} + +TimeZone GetTimeZone() +{ + return s_TimeZone; +} + +CheckedNetworkSetting* GetTempNetworkSetting() +{ + return &s_CurrentNetowrkSetting1; +} + +void ImportTwlData(enum common::TWL_PATH_INDEX path) +{ + NN_ASSERT(path < common::TWL_PATHNAME_MAX); + + nn::Result result; + + result = nn::fs::MountSpecialArchive(common::TWL_ARCHIVE_NAME_TABLE[path], common::TWL_FS_ARCHIVE_KIND[path]); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = common::SdMountManager::Mount(); + + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + NN_LOG("AllocatableSize = %d\n", bufSize); + + + u32 fileNum = 0; + u32 fileSize = 0; + + common::CalculateFileNum(::std::wstring(common::SDMC_ROOT_DIRECTORY_PATH) + ::std::wstring( + common::SD_TWL_ROOTNAME_TABLE[path]), fileNum, fileSize); + // ファイルサイズ設定 + common::InitializeTransferProgress(fileSize); + + NN_LOG("File Number = %d\n", fileNum); + NN_LOG("File Size = %d\n", fileSize); + + + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize, AES_BLOCK_SIZE); + if (buf != NULL) + { + wchar_t archiveName[256]; + ::std::mbstowcs(archiveName, common::TWL_ARCHIVE_NAME_TABLE[path], std::strlen(common::TWL_ARCHIVE_NAME_TABLE[path]) + 1); + std::wstring archiveString(archiveName); + common::CopyDirectory( + (::std::wstring(common::SDMC_ROOT_DIRECTORY_PATH) + ::std::wstring(common::SD_TWL_ROOTNAME_TABLE[path])).c_str(), + (archiveString + ::std::wstring(L"/")).c_str(), + buf, bufSize, false); + + common::HeapManager::GetHeap()->Free(buf); + } + + common::SdMountManager::Unmount(); + nn::fs::Unmount(common::TWL_ARCHIVE_NAME_TABLE[path]); + +} + +void ImportTwlPhotoDataFunc() +{ + COMMON_LOGGER("Import Twl Photo Data.\n"); + ImportTwlData(common::TWL_PHOTO); +} + +void ImportTwlSoundDataFunc() +{ + COMMON_LOGGER("Import Twl Sound Data.\n"); + ImportTwlData(common::TWL_SOUND); +} + +void ImportTwlPhotoData() +{ + s_ImportThread.Start(ImportTwlPhotoDataFunc, s_ImportThreadStack); +} + +void ImportTwlSoundData() +{ + s_ImportThread.Start(ImportTwlSoundDataFunc, s_ImportThreadStack); +} + + +void ClearFileReadResult() +{ + s_CheckedEqualsDeviceIdFileandDeviceId = false; + s_CheckedEqualsRegionDataandRegion = false; + s_ReadSerialNumber = false; +} + +void ImportPlayHistoryThreadFunc() +{ + common::PlayHistoryManager historyManager; + + COMMON_LOGGER("Import PlayHistory\n"); + historyManager.Import(); +} + +void ImportPlayHistory() +{ + s_ImportThread.Start(ImportPlayHistoryThreadFunc, s_ImportThreadStack); +} + +void ExportCalData() +{ + using namespace nn::cfg::CTR::detail; + + nn::Result result; + common::CfgCalData cfgCalData; + common::SdReaderWriter sdWriter; + + COMMON_LOGGER("Export CalData\n"); + + common::SdMountManager::Mount(); + + result = nn::cfg::CTR::init::GetConfig(&cfgCalData.touchPanelCfgData, sizeof(TouchPanelCfgData), + GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::GetConfig(&cfgCalData.lcdFlickerCfgData, sizeof(LcdFlickerCfgData), + GET_CFG_KEY(NN_CFG_LCD, NN_CFG_LCD_CAL_FLICKER)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::GetConfig(&cfgCalData.fcramCfgData, sizeof(FcramCfgData), + GET_CFG_KEY(NN_CFG_FCRAM, NN_CFG_FCRAM_CAL_DELAY)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::GetConfig(&cfgCalData.rtcCfgData, sizeof(RtcCfgData), + GET_CFG_KEY(NN_CFG_RTC, NN_CFG_RTC_CAL_COMPENSATION)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::GetConfig(&cfgCalData.gyroscopeCfgData, sizeof(GyroscopeCfgData), + GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_GYROSCOPE)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::GetConfig(&cfgCalData.accelCfgData, sizeof(AccelCfgData), + GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_ACCELEROMETER)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::GetConfig(&cfgCalData.codecCfgData, sizeof(CodecCfgData), + GET_CFG_KEY(NN_CFG_CODEC, NN_CFG_CODEC_CAL)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::GetConfig(&cfgCalData.mcuSlideVolumeRangeCfgData, sizeof(McuSlideVolumeRangeCfgData), + GET_CFG_KEY(NN_CFG_MCU, NN_CFG_MCU_SLIDE_VOLUME)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + sdWriter.WriteBufWithCmac(common::CFG_CALIBRATION_PATHNAME, &cfgCalData, sizeof(cfgCalData)); + + common::SdMountManager::Unmount(); +} + +nn::Result ImportCalData(common::CfgCalData *data) +{ + using namespace nn::cfg::CTR::detail; + + nn::Result result = nn::ResultSuccess(); + + COMMON_LOGGER("Import CalData\n"); + + common::SdMountManager::Mount(); + + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize); + if (buf != NULL) + { + common::SdReaderWriter sdReader; + + size_t readSize; + result = sdReader.ReadBufWithCmac(common::CFG_CALIBRATION_PATHNAME, buf, bufSize, &readSize); + if(result.IsSuccess()) + { + // SDから読み出し成功 + std::memcpy(data, buf, readSize); + } + common::HeapManager::GetHeap()->Free(buf); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + NN_UTIL_RETURN_IF_FAILED(result); + } + else + { + result = nn::Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_OUT_OF_MEMORY); + } + + common::SdMountManager::Unmount(); + return result; +} + +nn::Result InitializeHardwareDependentSetting() +{ + using namespace nn::cfg::CTR::detail; + nn::Result result = nn::ResultSuccess(); + + common::CfgCalData cfgCalData; + result = ImportCalData(&cfgCalData); + NN_UTIL_RETURN_IF_FAILED(result); + + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL), + &cfgCalData.touchPanelCfgData, sizeof(TouchPanelCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_LCD, NN_CFG_LCD_CAL_FLICKER), + &cfgCalData.lcdFlickerCfgData, sizeof(LcdFlickerCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_FCRAM, NN_CFG_FCRAM_CAL_DELAY), &cfgCalData.fcramCfgData, + sizeof(FcramCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_RTC, NN_CFG_RTC_CAL_COMPENSATION), + &cfgCalData.rtcCfgData, sizeof(RtcCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_GYROSCOPE), + &cfgCalData.gyroscopeCfgData, sizeof(GyroscopeCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_ACCELEROMETER), + &cfgCalData.accelCfgData, sizeof(AccelCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_CODEC, NN_CFG_CODEC_CAL), &cfgCalData.codecCfgData, + sizeof(CodecCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_MCU, NN_CFG_MCU_SLIDE_VOLUME), + &cfgCalData.mcuSlideVolumeRangeCfgData, sizeof(McuSlideVolumeRangeCfgData)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + NN_LOG("Set cfgCalData\n"); + + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + nn::cfg::CTR::init::ResetCameraCalibration(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + nn::cfg::CTR::init::ResetAnalogStickCalibration(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + return result; +} + +nn::Result ImportData() +{ + static nn::Result result = nn::ResultSuccess(); + static bool init = true; + if(init) + { + init = false; + + // NANDのごみを削除する + Cleanup(); + + // SDカードのIVSファイルを書き込む + result = ImportIvs(); + NN_UTIL_RETURN_IF_FAILED(result); + + // NORデータを書き込む + result = ImportNorData(); + NN_UTIL_RETURN_IF_FAILED(result); + + // 固体固有calLデータをSDカードに出力する + // 本体初期化後はcal値が設定されている + ExportCalData(); + + // SDカードのセーブデータをNANDに書き込む + ImportSaveData(); + } + + return result; +} + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.h new file mode 100644 index 0000000..8c31c75 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Importer.h @@ -0,0 +1,95 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Importer.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef IMPORTER_H_ +#define IMPORTER_H_ + +#include +#include "FileName.h" +#include + +namespace ConsoleRestore +{ + +nn::Result EqualsDeviceIdFileandDeviceId(); +nn::Result EqualsRegionDataandRegion(); +nn::Result ReadSerialNumber(u8* serial); + +void FinalizeImportThread(); +bool IsImportFinished(); +void ImportTwlSoundData(); +void ImportTwlPhotoData(); +nn::Result ImportData(); +void CreateWriteFinishedFile(); +void CreateUpdateFinishedFile(); +void CreateConsoleInitializedFile(); +void CreateRtcSyncFinishedFile(); +u32 GetImportProgress(); + +// NANDのごみを削除する +void Cleanup(); + +const wchar_t* const CHECK_FILENAME_TABLE[] = +{ + common::UPDATE_CHECK_PATHNAME, + common::INITIALIZED_CHECK_PATHNAME, + common::WRITE_FINISHED_CHECK_PATHNAME, + common::RTC_SYNC_CHECK_PATHNAME, +}; + +void DeleteAllCheckFiles(); + +struct TimeZone +{ + u32 hour; + u32 minutes; + bool isMinus; + NN_PADDING3; +}; + +bool ReadSetting(bool* nupOnly); +char* GetNtpServerName(); +TimeZone GetTimeZone(); + +struct CheckedNetworkSetting +{ + nn::ac::CTR::NetworkSetting setting; + bool isValid; + NN_PADDING3; +}; + +CheckedNetworkSetting* GetTempNetworkSetting(); +nn::Result ImportCountryLanguageData(); +nn::Result ImportMcuRtc(); + +// TWL写真領域を初期化してから本体初期化を行う +void InitializeFileSystem(); + +void ClearFileReadResult(); + +// プレイ履歴を読み込みます。ptmのセーブデータ移行後に呼び出す必要があります +void ImportPlayHistory(); + +// cfgのハードウェア固有領域をcal値で初期化します +nn::Result InitializeHardwareDependentSetting(); + +// SDカード上のバージョン情報を読みます +nn::Result ReadVersionData(); +// 移行元本体がNUP済みかどうか +bool AlreadyExecutedNup(); + +} + +#endif /* IMPORTER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/NtpClient.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/NtpClient.cpp new file mode 100644 index 0000000..f2a5114 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/NtpClient.cpp @@ -0,0 +1,376 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: NtpClient.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Importer.h" +#include "CommonLogger.h" + +namespace ConsoleRestore +{ + +namespace { + +const size_t NTP_THREAD_STACK_SIZE = 0x1000; +nn::os::Thread s_NtpThread; +nn::os::StackBuffer s_NtpThreadStack; +bool s_NtpSyncSuccessed = false; + + +struct NTP_Packet{ // NTPパケット + u32 controlWord; + u32 rootDelay; + u32 rootDispersion; + u32 referenceId; + s64 referenceTimestamp; + s64 startTimestamp; + s64 receiveTimestamp; + u32 transmitTimestampSeconds; + u32 transmitTimestampFractions; +}; + +const size_t TIMEOUT_MILLISECOND = 5000; // タイムアウト ミリ秒数 +NTP_Packet s_NTPSendPacket; // 送信するNTPパケット +NTP_Packet s_NTPRecvPacket; // 受信するNTPパケット +const u32 NTP_PORT_NUM = 123; + +nn::Result InitializeNetwork(void) +{ + nn::Result result; + nn::ac::Config config; + + result = nn::ac::Initialize(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // 接続要求用のパラメータを作成 + result = nn::ac::CreateDefaultConfig(&config); + if (result.IsFailure()) + { + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + return result; + } + + // デバッグ用に接続テストを無効化 + nn::ac::DebugSetNetworkArea(&config, nn::ac::NETWORK_AREA_LAN); + + // 接続要求を発行 + result = nn::ac::ConnectWithoutEula(config); + if (result.IsFailure()) + { + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + return result; + } + + return nn::ResultSuccess(); +} + +nn::Result FinalizeNetwork(void) +{ + nn::Result result; + + // 接続要求用のパラメータを作成 + result = nn::ac::Close(); + NN_UTIL_RETURN_IF_FAILED(result); + + result = nn::ac::Finalize(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + return nn::ResultSuccess(); +} + +bool GetNtpTime(u32* ntpTime) +{ + nn::Result result; + + bool retval = true; + NN_LOG("Initializing network.\n"); + + // 本体に書き込まれているネットワーク設定を使ってネットワーク接続を初期化 + result = InitializeNetwork(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + { + NN_LOG("Initializing socket..\n"); + + // 一つのスレッドからソケット API を利用する + const s32 sessionCount = 1; + // ソケットの送受信バッファとして 64 KB を割り当て + const size_t bufferSizeForSockets = 65536; + // ソケットライブラリに必要なワークサイズを求める + const size_t workSizeForLibrary = nn::socket::GetRequiredMemorySize(bufferSizeForSockets, sessionCount); + + // ワークメモリを確保して 4KB にアラインにする + u8* pWorkMemory = new u8[workSizeForLibrary + 4096]; + uptr workMemoryAddress = nn::math::RoundUp(reinterpret_cast (pWorkMemory), 4096); + + // ソケットライブラリの初期化 + result = nn::socket::Initialize(workMemoryAddress, workSizeForLibrary, bufferSizeForSockets, sessionCount); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + { + s32 ret; + nn::socket::InAddr addr, netmask; + ret = nn::socket::GetPrimaryAddress(reinterpret_cast (&addr), reinterpret_cast (&netmask)); + NN_ASSERT(ret == 0); + COMMON_LOGGER("host : %s\n", nn::socket::InetNtoA(addr)); + COMMON_LOGGER("netmask : %s\n", nn::socket::InetNtoA(netmask)); + + nn::socket::InAddr dns1, dns2; + ret = nn::socket::GetResolver(reinterpret_cast (&dns1), reinterpret_cast (&dns2)); + if (ret == 0) + { + COMMON_LOGGER("dns1 : %s\n", nn::socket::InetNtoA(dns1)); + COMMON_LOGGER("dns2 : %s\n", nn::socket::InetNtoA(dns2)); + } + + nn::socket::InAddr gateway; + ret = nn::socket::GetDefaultGateway(reinterpret_cast (&gateway)); + if (ret == 0) + { + COMMON_LOGGER("gateway : %s\n", nn::socket::InetNtoA(gateway)); + } + + COMMON_LOGGER("\n"); +#ifndef NN_SWITCH_DISABLE_DEBUG_PRINT + nn::socket::DumpRoutingTable(); +#endif + } + + { + s32 socket = nn::socket::Socket(nn::socket::PF_INET, nn::socket::SOCK_DGRAM, 0); + NN_LOG("socket = %d\n", socket); + + // クライアントアドレスの設定 + nn::socket::SockAddrIn host_addr; + host_addr.len = sizeof(nn::socket::SockAddrIn); + host_addr.family = nn::socket::AF_INET; + host_addr.addr.addr = 0; + host_addr.port = nn::socket::HtoNs(NTP_PORT_NUM); + + // ローカルアドレスをバインド + s32 ret = nn::socket::Bind(socket, &host_addr); + NN_LOG("bind = %d\n", ret); + + // ******************************************************************************** + // NTPパケットを生成して送る + // ******************************************************************************** + + // サーバアドレスの設定 + nn::socket::SockAddrIn serverSockAddrIn; + serverSockAddrIn.len = sizeof(nn::socket::SockAddrIn); + serverSockAddrIn.family = nn::socket::AF_INET; + + // GetHostByNameを使う場合 + nn::socket::HostEnt* serverHostent; + u64 serveraddr = 0; + serverHostent = nn::socket::GetHostByName(GetNtpServerName()); + if (serverHostent == NULL) + { + COMMON_LOGGER("Error: GetHostByName %s\n", GetNtpServerName()); + retval = false; + } + else + { + // サーバのホスト情報からIPアドレスをコピー + serveraddr = *(reinterpret_cast (serverHostent->addrList[0])); + } + serverSockAddrIn.addr.addr = serveraddr; + COMMON_LOGGER("Destination address: %s\n", nn::socket::InetNtoA(serverSockAddrIn.addr)); + serverSockAddrIn.port = nn::socket::HtoNs(NTP_PORT_NUM); // ポート番号 + + // NTPパケットをSNTP用に初期化する + s_NTPSendPacket.controlWord = nn::socket::HtoNl(0x0B000000); + s_NTPSendPacket.rootDelay = 0; + s_NTPSendPacket.rootDispersion = 0; + s_NTPSendPacket.referenceId = 0; + s_NTPSendPacket.referenceTimestamp = 0; + s_NTPSendPacket.startTimestamp = 0; + s_NTPSendPacket.receiveTimestamp = 0; + s_NTPSendPacket.transmitTimestampSeconds = 0; + s_NTPSendPacket.transmitTimestampFractions = 0; + + // サーバを指定してNTPパケットを送信する + if ((ret = nn::socket::SendTo(socket, reinterpret_cast (&s_NTPSendPacket), sizeof(s_NTPSendPacket), 0, + &serverSockAddrIn)) < 0) + { + COMMON_LOGGER("Error: Failed Send to Server, %d\n", ret); + retval = false; + } + + NN_LOG("SendTo finished\n"); + + // 受信待ち + nn::socket::PollFd pollFd; + pollFd.fd = socket; + pollFd.events = nn::socket::POLLRDNORM; + if ((ret = nn::socket::Poll(&pollFd, 1, TIMEOUT_MILLISECOND)) < 0) + { + COMMON_LOGGER("Error: recv error, %d\n", ret); + retval = false; + } + + NN_LOG("Poll Finished\n"); + + switch (pollFd.revents) + { + case nn::socket::POLLERR: // ソケットにエラーが発生しました。 + COMMON_LOGGER("Error: POLLERR %s %d\n", __FILE__, __LINE__); + retval = false; + break; + case nn::socket::POLLHUP: // ストリーム・ソケットが未接続です。 + COMMON_LOGGER("Error: POLLHUP %s %d\n", __FILE__, __LINE__); + retval = false; + break; + case nn::socket::POLLNVAL: // 不正なソケット記述子です。 + COMMON_LOGGER("Error: POLLNVAL %s %d\n", __FILE__, __LINE__); + retval = false; + break; + default: + break; + } + + // サーバから時刻情報を受信する + // サーバを指定して受信を行う + // 受信するまで待たされる + if ((ret = nn::socket::RecvFrom(socket, reinterpret_cast (&s_NTPRecvPacket), sizeof(s_NTPRecvPacket), nn::socket::MSG_DONTWAIT, + &serverSockAddrIn)) < 0) + { + COMMON_LOGGER("Error: RecvFrom, %d\n", ret); + retval = false; + } + + NN_LOG("RecvFrom finished\n"); + + // NTPサーバから取得した時刻を現地時間に変換する + *ntpTime = nn::socket::NtoHl(s_NTPRecvPacket.transmitTimestampSeconds) - 2208988800; /* 1970/01/01 からの秒数に変換 */ + NN_LOG("ntp_time = %d\n", ntpTime); + + nn::socket::Close(socket); + NN_UNUSED_VAR(ret); + } + + NN_LOG("Finalizing socket..\n"); + // ソケットライブラリの終了 + result = nn::socket::Finalize(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + } + + NN_LOG("Finalizing network.\n"); + result = FinalizeNetwork(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + return retval; +} + +void RestoreCurrentInternetSetting() +{ + COMMON_LOGGER("Restore Current Internet Setting\n"); + nn::Result result; + if (GetTempNetworkSetting()->isValid) + { + result = nn::ac::CTR::UpdateNetworkSetting(0, GetTempNetworkSetting()->setting); + COMMON_LOGGER_RESULT_IF_FAILED(result); + } + else + { + // 無効の場合は消去しておく + result = nn::ac::CTR::RemoveNetworkSetting(0); + COMMON_LOGGER_RESULT_IF_FAILED(result); + } + + result = nn::ac::FlushNetworkSetting(); + COMMON_LOGGER_RESULT_IF_FAILED(result); + + result = nn::ac::FinalizeInternal(); + COMMON_LOGGER_RESULT_IF_FAILED(result); +} + +} + +void NtpThreadFunc() +{ + // NTP時間を取得する + u32 ntpTime; + if (GetNtpTime(&ntpTime)) + { + // タイムゾーンを考慮してDateTimeに変換する + TimeZone timeZone = GetTimeZone(); + + // 1970/01/01 + nn::fnd::DateTime utc = nn::fnd::DateTime(1970, 1, 1, 0, 0, 0, 0); + nn::fnd::DateTime current = utc + nn::fnd::TimeSpan::FromSeconds(ntpTime); + + if (timeZone.isMinus) + { + current -= (nn::fnd::TimeSpan::FromHours(timeZone.hour) + nn::fnd::TimeSpan::FromMinutes(timeZone.minutes)); + } + else + { + current += nn::fnd::TimeSpan::FromHours(timeZone.hour) + nn::fnd::TimeSpan::FromMinutes(timeZone.minutes); + } + + // SWCを書き込む + nn::ptm::CTR::SetUserTime(current); + + COMMON_LOGGER("Set User Time %04d/%02d/%02d %02d:%02d:%02d\n", + current.GetYear(), current.GetMonth(), current.GetDay(), current.GetHour(), current.GetMinute(), current.GetSecond()); + + s_NtpSyncSuccessed = true; + } + else + { + COMMON_LOGGER("Failed Get Ntp Time\n"); + s_NtpSyncSuccessed = false; + } + + // インターネット設定を元に戻す + RestoreCurrentInternetSetting(); +} + +bool IsTimeAdjustFinished() +{ + // Initialize済みかつ終了 + return s_NtpThread.IsValid() && !s_NtpThread.IsAlive(); +} + +bool IsTimeAdjustSuccessed() +{ + return s_NtpSyncSuccessed; +} + +void AdjustTime() +{ + nn::Result result; + + result = nn::ac::CTR::InitializeInternal(); + COMMON_LOGGER_RESULT_IF_FAILED(result); + + if(IsTimeAdjustFinished()) + { + s_NtpThread.Join(); + s_NtpThread.Finalize(); + } + s_NtpThread.Start( NtpThreadFunc, s_NtpThreadStack); +} + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/NtpClient.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/NtpClient.h new file mode 100644 index 0000000..7c7bcf1 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/NtpClient.h @@ -0,0 +1,28 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: NtpClient.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef NTPCLIENT_H_ +#define NTPCLIENT_H_ + +namespace ConsoleRestore +{ + +u32 AdjustTime(); +bool IsTimeAdjustFinished(); +bool IsTimeAdjustSuccessed(); + +} + +#endif /* NTPCLIENT_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/OMakefile b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/OMakefile new file mode 100644 index 0000000..90b2103 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/OMakefile @@ -0,0 +1,89 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakefile +# +# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Rev$ +#---------------------------------------------------------------------------- +SUPPORTED_TARGETS = CTR-T*.Process.MPCore.* +#MAKECSU = true +#INSTALL_SDK_TOOL = true +CTR_APPTYPE = BOTH +CTR_MAKE_DEVELOPMENT_IMAGE = true + +TARGET_PROGRAM = ConsoleRestore + +SAMPLED_DEMOS_COMMON_INCLUDE_DIR = $(dir $(HORIZON_ROOT)/../CTR/SampleDemos/common/include) +INCLUDES += $(SAMPLED_DEMOS_COMMON_INCLUDE_DIR) \ + ../common + +SOURCES[] = + ConsoleRestore.cpp + Controller.cpp + Importer.cpp + Updater.cpp + Ntpclient.cpp + ../common/HardwareInfo.cpp + ../common/DrawSystemState.cpp + ../common/FileTransfer.cpp + ../common/FileChecker.cpp + ../common/SdReaderWriter.cpp + ../common/HeapManager.cpp + ../common/SdLogger.cpp + ../common/wave.cpp + ../common/SimplePlayer.cpp + ../common/LogConsole.cpp + ../common/CommonLogger.cpp + ../common/SdMountManager.cpp + ../common/configLoader.cpp + ../common/PlayHistoryManager.cpp + ../common/VersionDetect.cpp + +CTR_BANNER_SPEC = $(TARGET_PROGRAM).bsf + +ROMFS_ROOT = ../common/romfiles + +LIBS += libnn_cfg \ + libnn_driversEeprom \ + libnn_driversi2c \ + libnn_driversCal \ + libnn_crypto \ + libnn_driversCodec \ + libnn_spi \ + libnn_gpio \ + libnn_pdn \ + libnn_mcu \ + libnn_i2c \ + libnn_driversCamera \ + libnn_ps \ + libnn_driversRsa \ + lib_demo \ + libnn_nwm \ + libnn_friends \ + libnn_ns \ + libnn_am \ + libnn_nim \ + +INSTALL_SDK_TOOL = true + +ROM_SPEC_FILE = $(TARGET_PROGRAM).rsf +DESCRIPTOR = $(HORIZON_ROOT)/resources/specfiles/_private/RepairTool.desc + +include $(ROOT_OMAKE)/modulerules + +VERSION_H = $(file version.h) + +$(VERSION_H): $(SOURCES) + section + bash genversion.sh + +RequireSetup($(VERSION_H)) +build: version.h $(DEFAULT_TARGETS) diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Updater.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Updater.cpp new file mode 100644 index 0000000..5f0c4d8 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Updater.cpp @@ -0,0 +1,249 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Updater.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "CommonLogger.h" + +namespace ConsoleRestore +{ + +using namespace ES_NAMESPACE; +using namespace EC_NAMESPACE; + +/* ------------------------------------------------------------------- + GetCustomerSupportCode +-------------------------------------------------------------------- */ +#define NIM_UPDATER_RESULT_CHECK(result) \ +do { \ + if (result.IsFailure()) \ + { \ + ECCustomerSupportCode csc; \ + NN_UTIL_PANIC_IF_FAILED( \ + nn::nim::Updater::GetCustomerSupportCode(&csc)); \ + COMMON_LOGGER("CSCode: %d\n", csc); \ + nn::dbg::PrintResult(result); \ + s_Result = result; \ + goto LABEL_FINALIZE; \ + } \ +} while(0) + +namespace +{ + +nn::Result s_Result = nn::ResultSuccess(); + +const size_t UPDATER_THREAD_STACK_SIZE = 0x1000; +nn::os::Thread s_UpdaterThread; +nn::os::StackBuffer s_UpdaterThreadStack; + +u64 s_Progress = 0; + +} + +nn::Result PrintNetworkSetting() +{ + nn::ac::NetworkSetting networkSetting; + NN_UTIL_RETURN_IF_FAILED(nn::ac::LoadNetworkSetting(0, networkSetting)); + COMMON_LOGGER("SSID: %s\n", networkSetting.wireless.essidSecurity.ssid); + COMMON_LOGGER("DNS : %d.%d.%d.%d\n", + networkSetting.ip.dns[0][0], networkSetting.ip.dns[0][1], + networkSetting.ip.dns[0][2], networkSetting.ip.dns[0][3]); + return nn::ResultSuccess(); +} + + +nn::Result ConnectNetwork() +{ + nn::Result result = nn::ResultSuccess(); + nn::ac::Config config; + + result = nn::ac::CreateDefaultConfig(&config); + NN_UTIL_RETURN_IF_FAILED(result); + + result = nn::ac::ConnectWithoutEula(config); + NN_UTIL_RETURN_IF_FAILED(result); + + NN_LOG("Success nn::ac::ConnectWithoutEula\n"); + + NN_UTIL_RETURN_IF_FAILED(PrintNetworkSetting()); + + return nn::ResultSuccess(); +} + +nn::Result InitializeInternal() +{ + nn::Result result = nn::ResultSuccess(); + + result = nn::ac::InitializeInternal(); + NN_UTIL_RETURN_IF_FAILED(result); + + result = ConnectNetwork(); + NN_UTIL_RETURN_IF_FAILED(result); + + return nn::ResultSuccess(); +} + +nn::Result FinalizeInternal() +{ + nn::Result result = nn::ResultSuccess(); + + nn::ac::CloseAll(); + + result = nn::ac::FinalizeInternal(); + NN_UTIL_RETURN_IF_FAILED(result); + + return nn::ResultSuccess(); +} + +void UpdateThreadFunc() +{ + nn::Result result; + + NN_LOG("********************UpdateThreadFunc Start********************\n"); + nn::cfg::CTR::init::Initialize(); + nn::cfg::CfgCountryCode country; + nn::cfg::CfgRegionCode region; + const char *regionStr; + const char *countryStr; + NN_UNUSED_VAR(regionStr); + NN_UNUSED_VAR(countryStr); + + country = nn::cfg::GetCountry(); + region = nn::cfg::GetRegion(); + countryStr = nn::cfg::GetCountryCodeA2(country); + regionStr = nn::cfg::GetRegionCodeA3(region); + + COMMON_LOGGER("[Updater] country:%2d:%s\n", country, countryStr); + COMMON_LOGGER("[Updater] region :%2d:%s\n", region, regionStr); + + /* ------------------------------------------------------------------- + Initialize + -------------------------------------------------------------------- */ + NN_LOG("[Updater] nn::nim::InitializeForUpdater\n"); + result = nn::nim::InitializeForUpdater(); + NIM_UPDATER_RESULT_CHECK(result); + + NN_LOG("[Updater] InitializeInternal\n"); + result = InitializeInternal(); + NIM_UPDATER_RESULT_CHECK(result); + + + /* ------------------------------------------------------------------- + StartNetworkUpdate + -------------------------------------------------------------------- */ + NN_LOG("[Updater] nn::nim::Updater::StartNetworkUpdate()\n"); + result = nn::nim::Updater::StartNetworkUpdate(); + NIM_UPDATER_RESULT_CHECK(result); + + /* ------------------------------------------------------------------- + GetProgress + -------------------------------------------------------------------- */ + NN_LOG("[Updater] nn::nim::Updater::GetProgress()\n"); + + while(true) + { + nn::nim::NetworkUpdateProgress progress; + NIM_UPDATER_RESULT_CHECK(nn::nim::Updater::GetProgress(&progress)); + NIM_UPDATER_RESULT_CHECK(progress.lastResult); + NN_LOG("\x1b[1A\x1b[K"); + NN_LOG("Downloading %2lld/%2lld %8lld/%8lld (%d)\n", + progress.downloadedTitleNum, + progress.totalTitleNum, + progress.currentDownloadedSize, + progress.currentTotalSize, + progress.state); + + // ゼロ除算を防ぐ + if(progress.totalTitleNum == 0) + { + progress.totalTitleNum++; + progress.downloadedTitleNum++; + } + if(progress.state > nn::nim::CTR::NUP_STATE_CHECKING) + { + s_Progress = progress.downloadedTitleNum * 100 / progress.totalTitleNum; + } + + if (progress.state == nn::nim::NUP_STATE_NO_NEED) + { + COMMON_LOGGER("[Updater] No need to NetworkUpdate\n"); + s_Progress = 100; + break; + } + if (progress.state == nn::nim::NUP_STATE_FINISHED) + { + COMMON_LOGGER("[Updater] Finished NetworkUpdate\n"); + s_Progress = 100; + break; + } + + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(300)); + } + + LABEL_FINALIZE: + + /* ------------------------------------------------------------------- + Finalize + -------------------------------------------------------------------- */ + NN_LOG("[Updater] nn::nim::FinalizeForUpdater\n"); + result = nn::nim::FinalizeForUpdater(); + NIM_UPDATER_RESULT_CHECK(result); + + result = FinalizeInternal(); + NIM_UPDATER_RESULT_CHECK(result); + + NN_LOG("[Updater] Finish nim Updater demo.\n"); + +} + +void StartFGNetworkUpdate() +{ + NN_LOG("Start FGNetworkUpdate\n"); + s_Result = nn::ResultSuccess(); + s_UpdaterThread.Start(UpdateThreadFunc, s_UpdaterThreadStack); +} + +void FinishFGNetworkUpdate() +{ + NN_LOG("Finalize FGNetworkUpdate\n"); + s_UpdaterThread.Join(); + s_UpdaterThread.Finalize(); +} + +bool IsNetworkUpdateFinished() +{ + return s_UpdaterThread.IsValid() && !s_UpdaterThread.IsAlive(); +} + +u32 GetUpdateProgress() +{ + return s_Progress; +} + +nn::Result GetUpdateResult() +{ + return s_Result; +} + + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Updater.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Updater.h new file mode 100644 index 0000000..32e6798 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/Updater.h @@ -0,0 +1,32 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Updater.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef UPDATER_H_ +#define UPDATER_H_ + +#include + +namespace ConsoleRestore +{ + +void StartFGNetworkUpdate(); +void FinishFGNetworkUpdate(); +bool IsNetworkUpdateFinished(); +u32 GetUpdateProgress(); +nn::Result GetUpdateResult(); + +} + +#endif /* UPDATER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/banner/model.cbmd b/branches/0thNUP_No_NUP/ConsoleDataMigration/ConsoleRestore/banner/model.cbmd new file mode 100644 index 0000000000000000000000000000000000000000..f1c7b6279e13f5278c419d615d7d03d5660005e5 GIT binary patch literal 198785 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 MDvwobWH ./ConsoleRestore/version.h diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/OMakefile b/branches/0thNUP_No_NUP/ConsoleDataMigration/OMakefile new file mode 100644 index 0000000..203c656 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/OMakefile @@ -0,0 +1,24 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakefile +# +# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Rev$ +#---------------------------------------------------------------------------- + +#.SUBDIRS: $(glob D, *) +.SUBDIRS: $(exist-dirs \ + common \ + ConsoleBackup \ + ConsoleRestore \ + ) + +DefineDefaultRules() diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/OMakeroot b/branches/0thNUP_No_NUP/ConsoleDataMigration/OMakeroot new file mode 100644 index 0000000..7ee1cb5 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/OMakeroot @@ -0,0 +1,73 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakeroot +# +# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Rev:$ +#---------------------------------------------------------------------------- + +# fBNgCAEgɂ‚Ă̐ +# +# a) \[XR[h[gfBNgɔzuꍇ +# : +# /OMakeroot +# /foo/bar/OMakefile +# +# : +# OMakefile ƓfBNgȉ objects images ܂B +# +# /foo/bar/objects/... +# /foo/bar/images/.. +# +# +# b) \[XR[h sources ȉɔzuꍇ +# : +# /OMakeroot +# /sources/foo/bar/OMakefile +# +# : +# [gfBNgȉ objects images ܂B +# +# /objects/foo/bar/... +# /images/foo/bar/... +# +# + +# [g‹ϐ̎擾 +public.HORIZON_ROOT = +if $(defined-env HORIZON_ROOT) + HORIZON_ROOT = $(absname $(getenv HORIZON_ROOT)) + export + +if $(defined-env CTRSDK_ROOT) + CTRSDK_ROOT = $(absname $(getenv CTRSDK_ROOT)) + if $(and $(defined-env HORIZON_ROOT), $(not $(equal $(HORIZON_ROOT), $(CTRSDK_ROOT)))) + eprintln(HORIZON_ROOT CTRSDK_ROOT v܂BpXݒ肷邩Aǂ炩`ĉB) + exit(1) + HORIZON_ROOT = $(CTRSDK_ROOT) + export + +if $(not $(HORIZON_ROOT)) + eprintln($"$$CTRSDK_ROOT `Ă܂") + exit(1) + +include $(HORIZON_ROOT)/build/omake/commondefs + +DefineCommandVars() + +.PHONY: all build clean clobber +.PHONY: run run-scripts run-emumem + +# +# OMakefile ̓ǂݍ +# +.SUBDIRS: . + diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/Readme.txt b/branches/0thNUP_No_NUP/ConsoleDataMigration/Readme.txt new file mode 100644 index 0000000..2f2f0d5 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/Readme.txt @@ -0,0 +1,10 @@ +yrh‹z + +ESDK +Horizon 0_14 branch r33437 + + Horizon trunk r33597cfgCu̕ύX}[W + + Horizon 1_0 branch r33839RepairTool.desc}[W + +Ecygwin +Esvnversion + diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/Aes_define.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/Aes_define.h new file mode 100644 index 0000000..d6fadcb --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/Aes_define.h @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: Aes_define.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef AES_DEFINE_H_ +#define AES_DEFINE_H_ + +//マスタリング用ビルド時に有効にする +//#define USE_PROD_KEY + +#include + +namespace common +{ + +#ifndef USE_PROD_KEY + + const bit8 key[AES_KEY_SIZE] NN_ATTRIBUTE_ALIGN(4) = + { + 0x81, 0x35, 0xc6, 0x54, 0x19, 0x1a, 0x47, 0x2a, + 0x6b, 0x78, 0xbe, 0x25, 0x90, 0xf6, 0xee, 0x74 + }; + + const bit8 cmacKey[AES_KEY_SIZE] = + { + 0x87, 0xdd, 0xc6, 0xd6, 0xf2, 0xe0, 0x2c, 0xa6, + 0x04, 0x21, 0x9c, 0x5e, 0x33, 0x8c, 0x3d, 0xaa + }; + + const bit8 iv[AES_BLOCK_SIZE] NN_ATTRIBUTE_ALIGN(4) = + { + 0xdf, 0x0f, 0xf9, 0x1b, 0x34, 0x47, 0x70, 0x7f, + 0x7d, 0x06, 0x85, 0xe6, 0xe7, 0xb6, 0x4e, 0xe9 + }; + +#else + const bit8 key[AES_KEY_SIZE] NN_ATTRIBUTE_ALIGN(4) = + { + 0x64, 0x02, 0x6d, 0xbd, 0x9f, 0xb6, 0x62, 0x39, + 0x86, 0x90, 0x67, 0x8a, 0xe2, 0xfa, 0xe1, 0x6e + }; + + const bit8 cmacKey[AES_KEY_SIZE] = + { + 0xdf, 0x3c, 0x58, 0xeb, 0xeb, 0xbf, 0x45, 0x6d, + 0xc9, 0xbe, 0xe3, 0x10, 0xe2, 0x23, 0xfc, 0x30 + }; + + const bit8 iv[AES_BLOCK_SIZE] NN_ATTRIBUTE_ALIGN(4) = + { + 0xe4, 0xcf, 0x58, 0xe5, 0xc9, 0xd6, 0xac, 0x7d, + 0xf1, 0xb9, 0x82, 0xf9, 0xa2, 0xd8, 0xda, 0x7b + }; +#endif + + +} + +#endif /* AES_DEFINE_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/CommonLogger.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/CommonLogger.cpp new file mode 100644 index 0000000..ffc63b1 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/CommonLogger.cpp @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: CommonLogger.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include "CommonLogger.h" +#include "LogConsole_Private.h" + +namespace common +{ + +namespace Logger +{ + +namespace +{ + static CommonLogger s_CommonLogger; + +} + +CommonLogger::CommonLogger() +{ + // TODO 自動生成されたコンストラクター・スタブ + +} + +CommonLogger::~CommonLogger() +{ + // TODO Auto-generated destructor stub +} + +void CommonLogger::Initialize(u32 width, u32 height, u32 maxLine, demo::RenderSystemDrawing* renderSystem) +{ + m_CriticalSection.Initialize(); + GetConsoleInstance()->Initialize(width, height, maxLine, renderSystem); +} + +void CommonLogger::Finalize() +{ + +} + +void CommonLogger::Print(const char* fmt, ...) +{ + nn::os::CriticalSection::ScopedLock lock(m_CriticalSection); + va_list vlist; + + va_start(vlist, fmt); + + nn::dbg::detail::VPrintf(fmt, vlist); + GetSdInstance()->Print(fmt, vlist); + GetConsoleInstance()->AddText(fmt, vlist); + + va_end(vlist); +} + +void CommonLogger::PrintResult(const char* fmt, ...) +{ + nn::os::CriticalSection::ScopedLock lock(m_CriticalSection); + va_list vlist; + + va_start(vlist, fmt); + + GetSdInstance()->Print(fmt, vlist); + + va_end(vlist); +} + +void CommonLogger::ClearLog() +{ + nn::os::CriticalSection::ScopedLock lock(m_CriticalSection); + GetSdInstance()->Clear(); +} + +void CommonLogger::ScrollUp() +{ + GetConsoleInstance()->ScrollUp(); +} + +void CommonLogger::ScrollDown() +{ + GetConsoleInstance()->ScrollDown(); +} + +void CommonLogger::ScrollToBegin() +{ + GetConsoleInstance()->ScrollToBegin(); +} + +void CommonLogger::ScrollToEnd() +{ + GetConsoleInstance()->ScrollToEnd(); +} + +void CommonLogger::DrawConsole() +{ + GetConsoleInstance()->Print(); +} + +CommonLogger* GetLoggerInstance() +{ + return &s_CommonLogger; +} + +} + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/CommonLogger.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/CommonLogger.h new file mode 100644 index 0000000..2105eae --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/CommonLogger.h @@ -0,0 +1,84 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: CommonLogger.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef COMMONLOGGER_H_ +#define COMMONLOGGER_H_ + +#include +#include "demo.h" + +#include "SdLogger.h" +#include "LogConsole.h" + +#define COMMON_LOGGER( ... ) (void)common::Logger::GetLoggerInstance()->Print(__VA_ARGS__) +#define COMMON_LOGGER_RESULT(result, func) \ + (void)nn::dbg::PrintResult(result); \ + (void)common::Logger::GetLoggerInstance()->PrintResult("Func = %s\n", func); \ + (void)common::Logger::GetLoggerInstance()->PrintResult("Result = %X\n", result.GetPrintableBits()); \ + +#define COMMON_LOGGER_RESULT_WITH_LINE(result, line, func) \ + (void)nn::dbg::detail::Printf("%s\n", func); \ + (void)nn::dbg::detail::Printf("%d\n", line); \ + (void)nn::dbg::PrintResult(result); \ + (void)common::Logger::GetLoggerInstance()->PrintResult("Func = %s\n", func); \ + (void)common::Logger::GetLoggerInstance()->PrintResult("line = %d\n", line); \ + (void)common::Logger::GetLoggerInstance()->PrintResult("Result = %X\n", result.GetPrintableBits()); \ + +#define COMMON_LOGGER_RESULT_IF_FAILED(result) \ + if(result.IsFailure()) \ + { \ + COMMON_LOGGER_RESULT(result, __func__); \ + } \ + +#define COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result) \ + if(result.IsFailure()) \ + { \ + COMMON_LOGGER_RESULT_WITH_LINE(result, __LINE__, __func__); \ + } \ + +namespace common +{ + +namespace Logger +{ + +class CommonLogger +{ +public: + CommonLogger(); + ~CommonLogger(); + + void Initialize(u32 width, u32 height, u32 maxLine, demo::RenderSystemDrawing* renderSystem); + void Finalize(); + + void Print(const char* fmt, ...); + void PrintResult(const char* fmt, ...); + void ClearLog(); + void ScrollUp(); + void ScrollDown(); + void ScrollToBegin(); + void ScrollToEnd(); + void DrawConsole(); +private: + nn::os::CriticalSection m_CriticalSection; +}; + +CommonLogger* GetLoggerInstance(); + +} + +} + +#endif /* COMMONLOGGER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/DrawSystemState.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/DrawSystemState.cpp new file mode 100644 index 0000000..b0206a0 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/DrawSystemState.cpp @@ -0,0 +1,120 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: DrawSystemState.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include "DrawSystemState.h" + +const u16 PROGRESS_MAX_LINES = 129; + +namespace common +{ + +u32 GetRenderTarget(u32 target, bool flip) +{ + if(flip) + { + if(target == NN_GX_DISPLAY0) + { + return NN_GX_DISPLAY1; + } + else + { + return NN_GX_DISPLAY0; + } + } + else + { + return target; + } +} + +void DrawSystemState +( + const char* toolName, + demo::RenderSystemDrawing& renderSystem, + nn::util::FloatColor titleColor, + bool flip, + std::string& adapterState, + const char* toolVersion, + common::VerDef* mVerData, + u8 batteryRemain, + u64 deviceId, + u64 friendCode, + u32 progress, + char8* macAddress, + ::std::vector& operationMessage, + nn::cfg::CTR::CfgRegionCode region, + u8* s_SerialNo +) +{ + // デフォルトで上画面に描画するもの + renderSystem.SetRenderTarget(GetRenderTarget(NN_GX_DISPLAY0, flip)); + renderSystem.SetClearColor(GetRenderTarget(NN_GX_DISPLAY0, flip), NORMAL_COLOR); + + + renderSystem.Clear(); + renderSystem.SetColor(1.f, 1.f, 1.f); + u32 line = 0; + + size_t fontSize = 8; + size_t spaceSize = fontSize + 2; + renderSystem.SetFontSize(fontSize); + + renderSystem.DrawText(0, line++ * spaceSize, "%s %s Rev.%s", toolName, __DATE__, toolVersion); + renderSystem.SetColor(titleColor.r, titleColor.g, titleColor.b); + renderSystem.FillRectangle(0, (line - 1) * spaceSize, 400, spaceSize); + renderSystem.SetColor(1.f, 1.f, 1.f); + renderSystem.DrawText(0, line++ * spaceSize, ""); + + fontSize += 2; + spaceSize = fontSize + 2; + renderSystem.SetFontSize(fontSize); + renderSystem.DrawText(0, line++ * spaceSize, "System Ver. %d.%d.%d-%d", mVerData->cup.majorVersion, mVerData->cup.minorVersion, mVerData->cup.microVersion, + mVerData->nup.majorVersion); + renderSystem.DrawText(0, line++ * spaceSize, "System Region %s", nn::cfg::CTR::GetRegionCodeA3(region)); + renderSystem.DrawText(0, line++ * spaceSize, "Serial No. %s", s_SerialNo); + renderSystem.DrawText(0, line++ * spaceSize, "Device ID %llu", deviceId); + renderSystem.DrawText(0, line++ * spaceSize, "MAC Address %s", macAddress); + renderSystem.DrawText(0, line++ * spaceSize, "Friend Code %04u-%04u-%04u", static_cast (friendCode + / 100000000ULL % 10000ULL), static_cast (friendCode / 10000ULL % 10000ULL), + static_cast (friendCode % 10000ULL)); + + renderSystem.DrawText(0, line++ * spaceSize, "Battery %d%%", batteryRemain); + renderSystem.DrawText(0, line++ * spaceSize, "AC Adaper %s", adapterState.c_str()); + renderSystem.DrawText(0, line++ * spaceSize, "Progress %02d%%", progress); + renderSystem.SetColor(0.f, 0.2f, 0.f); + renderSystem.DrawLine(19 * fontSize, (line - 1) * spaceSize, 19 * fontSize + PROGRESS_MAX_LINES, (line - 1) + * spaceSize); + renderSystem.DrawLine(19 * fontSize, (line - 1) * spaceSize, 19 * fontSize, (line) * spaceSize); + renderSystem.DrawLine(19 * fontSize, (line) * spaceSize, 19 * fontSize + PROGRESS_MAX_LINES, (line) * spaceSize); + renderSystem.DrawLine(19 * fontSize + PROGRESS_MAX_LINES, (line - 1) * spaceSize, 19 * fontSize + + PROGRESS_MAX_LINES, (line) * spaceSize + 1); + renderSystem.SetColor(0.f, 0.5f, 0.f); + renderSystem.FillRectangle(19 * fontSize, (line - 1) * spaceSize, progress * PROGRESS_MAX_LINES / 100 + 1, + spaceSize); + + renderSystem.SetColor(1.f, 1.f, 1.f); + renderSystem.DrawText(0, line++ * spaceSize, ""); + + ::std::vector::iterator it; + for (it = operationMessage.begin(); it != operationMessage.end(); it++) + { + renderSystem.DrawText(0, line++ * spaceSize, "%s", it->c_str()); + } + + fontSize -= 2; + renderSystem.SetFontSize(fontSize); +} + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/DrawSystemState.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/DrawSystemState.h new file mode 100644 index 0000000..b1240a2 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/DrawSystemState.h @@ -0,0 +1,70 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: DrawSystemState.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef DRAWSYSTEMSTATE_H_ +#define DRAWSYSTEMSTATE_H_ + +#include +#include "demo.h" +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "common_Types.h" + +// 描画色の定義 +#define WHITE_COLOR 1.f, 1.f, 1.f, 1.f +#define GRAY_COLOR 0.5, 0.5, 0.5, 1.f +#define RED_COLOR 1.f, 0.f, 0.f, 1.f +#define GREEN_COLOR 0.f, 1.f, 0.f, 1.f +#define BLUE_COLOR 0.f, 0.f, 1.f, 1.f +#define SUCCESS_COLOR 0.f, 0.6f,0.f, 1.f +#define FAIL_COLOR 0.6f, 0.f,0.f, 1.f +#define NORMAL_COLOR 0.f, 0.f, 0.f, 1.f + +namespace common +{ + +u32 GetRenderTarget(u32 target, bool flip = false); + +void DrawSystemState +( + const char* toolName, + demo::RenderSystemDrawing& renderSystem, + nn::util::FloatColor titleColor, + bool flip, + std::string& adapterState, + const char* toolVersion, + common::VerDef* mVerData, + u8 batteryRemain, + u64 deviceId, + u64 friendCode, + u32 progress, + char8* macAddress, + ::std::vector& operationMessage, + nn::cfg::CTR::CfgRegionCode region, + u8* s_SerialNo +); + +} + + +#endif /* DRAWSYSTEMSTATE_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileChecker.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileChecker.cpp new file mode 100644 index 0000000..05f8b41 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileChecker.cpp @@ -0,0 +1,128 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: FileChecker.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include "FileChecker.h" +#include "SdMountManager.h" + +namespace common +{ + +bool s_FileExistsChecked[EXISTS_MAX]; +bool s_FileExistsCheckeResult[EXISTS_MAX]; + +bool CheckFileExists(const wchar_t* path) +{ + nn::Result result; + bool exist = false; + result = common::SdMountManager::Mount(); + + if (result.IsSuccess()) + { + nn::fs::FileInputStream fis; + + result = fis.TryInitialize(path); + if(result.IsSuccess()) + { + exist = true; + } + fis.Finalize(); + } + + common::SdMountManager::Unmount(); + + + return exist; +} + +bool ExistsFile(FileExistsCheck index) +{ + if(index > EXISTS_MAX) + { + NN_LOG("Invalid File index!!\n"); + return false; + } + + if(s_FileExistsChecked[index]) + { + return s_FileExistsCheckeResult[index]; + } + + s_FileExistsChecked[index] = true; + s_FileExistsCheckeResult[index] = CheckFileExists(FILENAME_TABLE[index]); + return s_FileExistsCheckeResult[index]; +} + +bool ExistsUpdateCheckedFile() +{ + return ExistsFile(EXISTS_UPDATE_FINISHED); +} + +bool ExistsSerialNumberFile() +{ + return ExistsFile(EXISTS_SERIAL_NUMBER); +} + +bool ExistsIVSFile() +{ + return ExistsFile(EXISTS_IVS); +} + +bool ExistsConsoleInitializedFile() +{ + // どちらかのファイルがあれば初期化済み + return ExistsFile(EXISTS_CONSOLE_INTIALIZED); +} + +bool ExistsWriteFinishedFile() +{ + return ExistsFile(EXISTS_WRITE_FINISHED); +} + +bool ExistsAPSetting() +{ + return ExistsFile(EXISTS_AP_SETTING); +} + +bool ExistsRtcSyncFinishedFile() +{ + return ExistsFile(EXISTS_RTC_SYNC_FINISHED); +} + +bool ExistsCountryLanguageFile() +{ + return ExistsFile(EXISTS_COUNTRY_LANGUAGE); +} + +bool ExistsVersionData() +{ + return ExistsFile(EXISTS_VERSION_DATA); +} + +bool ExistsRegionData() +{ + return ExistsFile(EXISTS_REGION_DATA); +} + +void InitializeFileCheck() +{ + for(u32 i = 0; i < EXISTS_MAX; i++) + { + s_FileExistsChecked[i] = false; + } +} + + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileChecker.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileChecker.h new file mode 100644 index 0000000..96b189c --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileChecker.h @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: FileChecker.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef FILECHECKER_H_ +#define FILECHECKER_H_ + +#include "FileName.h" + +namespace common +{ + +typedef enum FILE_EXISTS_CHECK +{ + EXISTS_UPDATE_FINISHED, + EXISTS_SERIAL_NUMBER, + EXISTS_IVS, + EXISTS_CONSOLE_INTIALIZED, + EXISTS_WRITE_FINISHED, + EXISTS_AP_SETTING, + EXISTS_RTC_SYNC_FINISHED, + EXISTS_COUNTRY_LANGUAGE, + EXISTS_VERSION_DATA, + EXISTS_REGION_DATA, + EXISTS_MAX +} FileExistsCheck; + +const wchar_t* const FILENAME_TABLE[EXISTS_MAX] = +{ + common::UPDATE_CHECK_PATHNAME, + common::SERIAL_PATHNAME, + common::IVS_PATHNAME, + common::INITIALIZED_CHECK_PATHNAME, + common::WRITE_FINISHED_CHECK_PATHNAME, + common::AP_SETTING_PATHNAME, + common::RTC_SYNC_CHECK_PATHNAME, + common::COUNTRY_SETTING_PATHNAME, + common::VERSION_DATA_PATHNAME, + common::REGION_DATA_PATHNAME +}; + +bool CheckFileExists(const wchar_t* path); +bool ExistsUpdateCheckedFile(); +bool ExistsSerialNumberFile(); +bool ExistsIVSFile(); +bool ExistsConsoleInitializedFile(); +bool ExistsWriteFinishedFile(); +bool ExistsAPSetting(); +bool ExistsRtcSyncFinishedFile(); +bool ExistsCountryLanguageFile(); +bool ExistsVersionData(); +bool ExistsRegionData(); + +void InitializeFileCheck(); + +} + +#endif /* FILECHECKER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileName.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileName.h new file mode 100644 index 0000000..2aeda6f --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileName.h @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: FileName.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef FILENAME_H_ +#define FILENAME_H_ + +#include + +namespace common +{ + +const char* const NAND_ARCHIVE_NAME = "nand:"; +const char* const SDMC_ARCHIVE_NAME = "sdmc:"; +const char* const NAND_TWL_PHOTO_ARCHIVE_NAME = "twlp:"; +const char* const NAND_TWL_SOUND_ARCHIVE_NAME = "twls:"; + +const wchar_t* const LOG_ROOT_DIRECTORY_PATH = L"sdmc:/CTR_Console_Repair"; +const wchar_t* const SD_SAVEDATA_ROOT_NAME = L"CTR_Console_Repair/CTRBackup/"; +const wchar_t* const SD_SAVEDATA_TWL_PHOTO_ROOT_NAME = L"CTR_Console_Repair/TWLPhotoBackup/"; +const wchar_t* const SD_SAVEDATA_TWL_SOUND_ROOT_NAME = L"CTR_Console_Repair/TWLSoundBackup/"; +const wchar_t* const NIM_SAVEDATA_DIRECTORY_NAME = L"sysdata/0001002c"; +const wchar_t* const LOG_PATHNAME = L"CTR_Console_Repair/Migration_Log.txt"; +const wchar_t* const LOG_FILENAME = L"Migration_Log.txt"; +const wchar_t* const COUNTRY_SETTING_PATHNAME = L"sdmc:/CTR_Console_Repair/CountrySetting.bin"; +const wchar_t* const AP_SETTING_FILENAME = L"CTR_Repair_Accsess_Point_Setting.txt"; +const wchar_t* const AP_SETTING_PATHNAME = L"sdmc:/CTR_Repair_Accsess_Point_Setting.txt"; +const wchar_t* const NOR_PATHNAME = L"sdmc:/CTR_Console_Repair/NtrNorSetting.bin"; +const wchar_t* const SERIAL_PATHNAME = L"sdmc:/CTR_Console_Repair/serial.bin"; +const wchar_t* const MCU_RTC_PATHNAME = L"sdmc:/CTR_Console_Repair/rtc.bin"; +const wchar_t* const IVS_NAND_PATHNAME = L"nand:/private/movable.sed"; +const wchar_t* const IVS_PATHNAME = L"sdmc:/CTR_Console_Repair/movable.sed"; +const wchar_t* const NAND_DATA_ROOT_PATHNAME_WITH_SLASH = L"nand:/data/"; +const wchar_t* const NAND_TWL_PHOTO_DATA_ROOT_PATHNAME_WITH_SLASH = L"twlp:/"; +const wchar_t* const NAND_TWL_SOUND_DATA_ROOT_PATHNAME_WITH_SLASH = L"twls:/"; +const wchar_t* const SDMC_ROOT_DIRECTORY_PATH = L"sdmc:/"; +const wchar_t* const WRITE_FINISHED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/WriteFinished"; +const wchar_t* const UPDATE_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/UpdateFinished"; +const wchar_t* const INITIALIZED_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/ConsoleInitialized"; +const wchar_t* const RTC_SYNC_CHECK_PATHNAME = L"sdmc:/CTR_Console_Repair/RtcSyncFinished"; +const wchar_t* const PLAYHISTORY_PATHNAME = L"sdmc:/CTR_Console_Repair/playhistory.bin"; +const wchar_t* const PLAYHISTORY_COUNT_PATHNAME = L"sdmc:/CTR_Console_Repair/playhistoryCount.bin"; +const wchar_t* const CFG_CALIBRATION_PATHNAME = L"sdmc:/CTR_Console_Repair/cfgCalibration.bin"; +const wchar_t* const VERSION_DATA_PATHNAME = L"sdmc:/CTR_Console_Repair/version.bin"; +const wchar_t* const REGION_DATA_PATHNAME = L"sdmc:/CTR_Console_Repair/Region.bin"; +const wchar_t* const DEVICE_ID_PATHNAME = L"sdmc:/CTR_Console_Repair/deviceId.bin"; + +enum TWL_PATH_INDEX +{ + TWL_PHOTO = 0, + TWL_SOUND, + TWL_PATHNAME_MAX +}; + +const char* const TWL_ARCHIVE_NAME_TABLE[TWL_PATHNAME_MAX] = +{ + common::NAND_TWL_PHOTO_ARCHIVE_NAME, + common::NAND_TWL_SOUND_ARCHIVE_NAME +}; + +const wchar_t* const SD_TWL_ROOTNAME_TABLE[TWL_PATHNAME_MAX] = +{ + common::SD_SAVEDATA_TWL_PHOTO_ROOT_NAME, + common::SD_SAVEDATA_TWL_SOUND_ROOT_NAME +}; + +const wchar_t* const NAND_TWL_ROOT_PATHNAME_WITH_SLASH_TABLE[TWL_PATHNAME_MAX] = +{ + common::NAND_TWL_PHOTO_DATA_ROOT_PATHNAME_WITH_SLASH, + common::NAND_TWL_SOUND_DATA_ROOT_PATHNAME_WITH_SLASH +}; + +const u32 TWL_FS_ARCHIVE_KIND[TWL_PATHNAME_MAX] = +{ + nn::fs::CTR::ARCHIVE_TYPE_TWL_PHOTO, + nn::fs::CTR::ARCHIVE_TYPE_TWL_SOUND +}; + +} + +#endif /* FILENAME_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileTransfer.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileTransfer.cpp new file mode 100644 index 0000000..7ce23f6 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileTransfer.cpp @@ -0,0 +1,534 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: FileTransfer.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include + +#include +#include +#include +#include + +#include "Aes_define.h" +#include "FileTransfer.h" +#include "CommonLogger.h" +#include "common_Types.h" + +namespace common +{ + +namespace +{ + +u64 s_TotalFileSize; +u64 s_FinishedFileSize = 0; +u64 s_Progress = 0; + +} + +bool VerifyMac(nn::fs::FileInputStream* file, s64 filesize, void* buf, size_t bufSize); + +const char* GetCharStr(const wchar_t* path) +{ + static char filename[256]; + std::memset(filename, 0, sizeof(filename)); + std::wcstombs(filename, path, sizeof(filename)); + filename[sizeof(filename) - 1] = '\0'; + return filename; +} + +nn::Result CalculateFileNum(std::wstring currentDirectory, u32& fileNum, u32& fileSize) +{ + nn::fs::FileInputStream fis; + nn::fs::Directory dir; + nn::Result result; + std::vector entryList; //カレントディレクトリのエントリ一覧を格納 + std::vector::iterator entryIndex; + + result = dir.TryInitialize(currentDirectory.c_str()); + + if(result.IsSuccess()) + { + nn::fs::DirectoryEntry entry; + s32 numEntry; + for(;;) + { + result = dir.TryRead(&numEntry, &entry, 1); + if(result.IsFailure()) + { + dir.Finalize(); + return result; + } + if(numEntry == 0) + { + // カレントディレクトリを閉じる + dir.Finalize(); + + // カレントディレクトリの子を開く + for(entryIndex = entryList.begin(); entryIndex != entryList.end(); entryIndex++) + { + if(entryIndex->attributes.isDirectory) + { + CalculateFileNum(currentDirectory + std::wstring(entryIndex->entryName) + std::wstring(L"/"), fileNum, fileSize); + } + } + + return nn::ResultSuccess(); + } + + entryList.push_back(entry); + fileNum++; + fileSize+= entry.entrySize; + } + } + else + { + NN_LOG("failed initialize directory\n"); + dir.Finalize(); + return result; + } + +} + +// ディレクトリ間のコピー +// アーカイブ越しのコピーが可能 +// アーカイブにマウントした状態で呼び出す必要あり +// 書き込み先のディレクトリはあらかじめ消去しておくこと。 +// 引数はスラッシュ付き +// TODO:分割して短くする +bool CopyDirectory(const wchar_t * from_path, const wchar_t * to_path, void* buf, const size_t bufSize, bool encode) +{ + nn::fs::Directory from_dir; + nn::fs::DirectoryEntry entry; + s32 numread = 0; + std::wostringstream target_from; + std::wostringstream target_to; + bool ret_value = true; + + nn::Result result = from_dir.TryInitialize(from_path); + + if (result.IsFailure()) + { + nn::dbg::PrintResult(result); + return false; + } + + while (1) + { + result = from_dir.TryRead(&numread, &entry, 1); + if (result.IsFailure() || numread != 1) + { + break; + } + + if (std::wcscmp(entry.entryName, L".") == 0 || std::wcscmp(entry.entryName, L"..") == 0) + { + continue; + } + + target_from.str(L""); + target_from.clear(std::stringstream::goodbit); + target_from << from_path << entry.entryName; + + target_to.str(L""); + target_to.clear(std::stringstream::goodbit); + target_to << to_path << entry.entryName; + + // ディレクトリの場合 + if (entry.attributes.isDirectory) + { + // ディレクトリ作成 + NN_LOG("Create Directory %ls\n", target_to.str().c_str()); + result = nn::fs::TryCreateDirectory(target_to.str().c_str()); + if (result.IsFailure()) + { + nn::dbg::PrintResult(result); + ret_value = false; + } + else + { + target_from << L"/"; + target_to << L"/"; + // 再帰処理 + if (!CopyDirectory(target_from.str().c_str(), target_to.str().c_str(), buf, bufSize, encode)) + { + ret_value = false; + } + } + } + // ファイルの場合 + else + { + // ファイル作成 + nn::fs::FileInputStream from_file; + nn::fs::FileOutputStream to_file; + s64 filesize; + s64 fileSizeWithoutHeaderAndFooter; + s32 readsize; + s32 writesize; + + NN_LOG("Copy File %ls\n", target_from.str().c_str()); + + // 読み込み対象ファイル開く + result = from_file.TryInitialize(target_from.str().c_str()); + + if (result.IsFailure()) + { + nn::dbg::PrintResult(result); + ret_value = false; + } + else + { + // 読み込み対象ファイルのサイズ取得 + result = from_file.TryGetSize(&filesize); + if (result.IsFailure()) + { + nn::dbg::PrintResult(result); + ret_value = false; + } + else + { + // 復号するならまず検証する + if(!encode) + { + NN_LOG("Verify CMAC %ls\n", target_from.str().c_str()); + if(!VerifyMac(&from_file, filesize, buf, bufSize)) + { + COMMON_LOGGER("Verification Failed %s\n", GetCharStr(target_from.str().c_str())); + ret_value = false; + break; + } + } + + nn::crypto::SwAesCtrContext swAesCtrContext; + swAesCtrContext.Initialize(iv, common::key, sizeof(key)); + + size_t totalReadSize = 0; + nn::crypto::Sha256Context context; + context.Initialize(); + + // ファイルサイズをヘッダに書いておく + if (encode) + { + // 書き込み対象ファイル作成 + result = nn::fs::TryCreateFile(target_to.str().c_str(), filesize); + result = to_file.TryInitialize(target_to.str().c_str(), false); + if (result.IsFailure()) + { + nn::dbg::PrintResult(result); + ret_value = false; + } + + BackupDataHeader header; + BackupDataHeader enc; + header.size = filesize; + result = swAesCtrContext.Encrypt(&enc, &header, sizeof(header)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + context.Update(&enc, sizeof(enc)); + s32 writeSize; + result = to_file.TryWrite(&writeSize, &enc, sizeof(enc), false); + if (result.IsFailure()) + { + ret_value = false; + continue; + } + } + else + { + // ヘッダを読む + // ハッシュの計算は終わっているので復号化のみ + BackupDataHeader header; + BackupDataHeader dec; + s32 readSize; + result = from_file.TryRead(&readSize, &header, sizeof(header)); + if (result.IsFailure()) + { + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + ret_value = false; + continue; + } + s_FinishedFileSize += sizeof(header); + swAesCtrContext.Decrypt(&dec, &header, sizeof(header)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + fileSizeWithoutHeaderAndFooter = dec.size; + + // 書き込み対象ファイル作成 + result = nn::fs::TryCreateFile(target_to.str().c_str(), fileSizeWithoutHeaderAndFooter); + result = to_file.TryInitialize(target_to.str().c_str(), false); + if (result.IsFailure()) + { + nn::dbg::PrintResult(result); + ret_value = false; + } + } + + while (1) + { + // バッファの後半半分を暗号・復号用に使う + result = from_file.TryRead(&readsize, buf, bufSize / 2); + totalReadSize += readsize; + + if (result.IsFailure()) + { + nn::dbg::PrintResult(result); + ret_value = false; + break; + } + else + { + if (readsize == 0) + { + if (encode) + { + NN_LOG("Add CMAC %ls\n", target_from.str().c_str()); + // SHA256を計算してCMACを付加する + bit8 sha256Hash[nn::crypto::Sha256Context::HASH_SIZE]; + context.GetHash(sha256Hash); + + bit8 cmac[nn::crypto::AES_CMAC_MAC_SIZE]; + result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, + nn::crypto::Sha256Context::HASH_SIZE, common::cmacKey); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = to_file.TryWrite(&writesize, cmac, sizeof(cmac)); + if (result.IsFailure()) + { + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + ret_value = false; + } + } + + result = to_file.TryFlush(); + if (result.IsFailure()) + { + nn::dbg::PrintResult(result); + ret_value = false; + } + break; + } + else + { + if (encode) + { + NN_LOG("EncryptSize = %d\n", readsize); + + u8 paddingSize = 0; + // 最後の書き込み時にはPKCS5でパディングする + if (readsize < bufSize / 2) + { + if ((readsize % AES_BLOCK_SIZE) != 0) + { + paddingSize = AES_BLOCK_SIZE - readsize % AES_BLOCK_SIZE; + std::memset(reinterpret_cast (buf) + readsize, paddingSize, + paddingSize); + readsize += paddingSize; + } + } + + // 暗号化後SHA256を計算しつつ書き込み + result = swAesCtrContext.Encrypt(reinterpret_cast (buf) + bufSize / 2, buf, + readsize); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + context.Update(reinterpret_cast (buf) + bufSize / 2, readsize); + + result = to_file.TryWrite(&writesize, reinterpret_cast (buf) + bufSize / 2, + readsize, false); + + // 事前計算したファイルサイズに一致させるためパディング分減算 + readsize -= paddingSize; + + s_FinishedFileSize += readsize; + s_Progress = s_FinishedFileSize * 100 / s_TotalFileSize; + NN_LOG("finish = %lld, total = %lld, progress = %lld\n", s_FinishedFileSize, s_TotalFileSize, s_Progress); + } + else + { + // ハッシュ検証は通っているので復号化しつつ書き込み + // パディング以降は書き込まないよう書き込みサイズを変更する + + NN_LOG("DecryptSize = %d\n", readsize); + result = swAesCtrContext.Decrypt(reinterpret_cast (buf) + bufSize / 2, buf, + readsize); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + // パディングまで読んだかどうか + bool readDone = false; + // パディングまで読んでいたら書き込みサイズを減らす + if (fileSizeWithoutHeaderAndFooter < totalReadSize) + { + readsize -= totalReadSize - fileSizeWithoutHeaderAndFooter; + readDone = true; + s_FinishedFileSize += totalReadSize - fileSizeWithoutHeaderAndFooter; + } + + result = to_file.TryWrite(&writesize, reinterpret_cast (buf) + bufSize / 2, + readsize, false); + s_FinishedFileSize += readsize; + s_Progress = s_FinishedFileSize * 100 / s_TotalFileSize; + NN_LOG("finish = %lld, total = %lld, progress = %lld\n", s_FinishedFileSize, s_TotalFileSize, s_Progress); + + // 読みきったので次のファイルへ + if (readDone) + { + result = to_file.TryFlush(); + if (result.IsFailure()) + { + ret_value = false; + } + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + break; + } + } + + if (result.IsFailure()) + { + nn::dbg::PrintResult(result); + ret_value = false; + } + + } + } + } + to_file.Finalize(); + } + } + from_file.Finalize(); + } + } + + from_dir.Finalize(); + return ret_value; +} + +u32 GetProgress() +{ + return s_Progress; +} + +void InitializeTransferProgress(u64 totalSize) +{ + s_TotalFileSize = totalSize; + s_FinishedFileSize = 0; +} + +bool CalculateAndCompareCmac(nn::crypto::Sha256Context* context, bit8* sdCmac) +{ + nn::Result result; + bit8 sha256Hash[nn::crypto::Sha256Context::HASH_SIZE]; + bit8 cmac[nn::crypto::AES_CMAC_MAC_SIZE]; + + context->GetHash(sha256Hash); + context->Finalize(); + + result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, sizeof(sha256Hash), common::cmacKey); + if (result.IsFailure()) + { + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + return false; + } + + return std::memcmp(cmac, sdCmac, sizeof(cmac)) == 0; +} + + +bool VerifyMac(nn::fs::FileInputStream* file, s64 filesize, void* buf, size_t bufSize) +{ + nn::Result result; + bit8 sdCmac[nn::crypto::AES_CMAC_MAC_SIZE]; + + // ハッシュが付加されていないとエラー + if(filesize < nn::crypto::AES_CMAC_MAC_SIZE) + { + return false; + } + + s32 readSize; + // ハッシュを取得する + nn::crypto::Initialize(); + result = file->TrySetPosition(filesize - nn::crypto::AES_CMAC_MAC_SIZE); + if (result.IsSuccess()) + { + result = file->TryRead(&readSize, sdCmac, sizeof(sdCmac)); + if(result.IsFailure()) + { + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + return false; + } + } + else + { + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + return false; + } + + file->SetPosition(0); + + // ハッシュを計算する + nn::crypto::Sha256Context context; + context.Initialize(); + bool ret_value = false; + + size_t totalReadSize = 0; + while (1) + { + result = file->TryRead(&readSize, buf, bufSize); + totalReadSize += readSize; + + if (result.IsFailure()) + { + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + ret_value = false; + break; + } + else + { + if (readSize == 0) + { + ret_value = CalculateAndCompareCmac(&context, sdCmac); + break; + } + else + { + bool readDone = false; + // ハッシュ部分まで読んでいたらハッシュ検証サイズを減らす + size_t fileSizeWithoutCmac = filesize - nn::crypto::AES_CMAC_MAC_SIZE; + if (fileSizeWithoutCmac < totalReadSize) + { + readSize -= totalReadSize - fileSizeWithoutCmac; + readDone = true; + } + + context.Update(buf, readSize); + if(readDone) + { + ret_value = CalculateAndCompareCmac(&context, sdCmac); + break; + } + + if (result.IsFailure()) + { + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + ret_value = false; + } + } + } + } + nn::crypto::Finalize(); + + file->SetPosition(0); + + return ret_value; +} + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileTransfer.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileTransfer.h new file mode 100644 index 0000000..7af37f2 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/FileTransfer.h @@ -0,0 +1,33 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: FileTransfer.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef FILETRANSFER_H_ +#define FILETRANSFER_H_ + +#include +#include +#include + +namespace common +{ + +nn::Result CalculateFileNum(std::wstring currentDirectory, u32& fileNum, u32& fileSize); +bool CopyDirectory(const wchar_t * from_path, const wchar_t * to_path, void* buf, const size_t bufSize, bool encode); +u32 GetProgress(); +void InitializeTransferProgress(u64 totalSize); + +} + +#endif /* FILETRANSFER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HardwareInfo.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HardwareInfo.cpp new file mode 100644 index 0000000..abf3edd --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HardwareInfo.cpp @@ -0,0 +1,69 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: HardwareInfo.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include "HardwareInfo.h" + +#include + +namespace common +{ + +HardwareInfo::HardwareInfo() +{ + // TODO 自動生成されたコンストラクター・スタブ + +} + +HardwareInfo::~HardwareInfo() +{ + // TODO Auto-generated destructor stub +} + +// NULL終端されたシリアルナンバーを受け取る +// NULL終端された場所にチェックデジットを付加して新たにNULL終端する +void HardwareInfo::AddCheckDigit(char* serial) +{ + size_t len = std::strlen(serial); + + u8 digit = 0; + bool odd = true; + for(u8 i = len - 1; i > 0 && std::isdigit(serial[i]); i--) + { + if(odd) + { + digit += (serial[i] - '0') * 3; + } + else + { + digit += (serial[i] - '0'); + } + odd = !odd; + } + + if(digit % 10 != 0) + { + serial[len] = 10 - (digit % 10) + '0'; + } + else + { + serial[len] = '0'; + } + + serial[len + 1] = '\0'; +} + + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HardwareInfo.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HardwareInfo.h new file mode 100644 index 0000000..e6406cf --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HardwareInfo.h @@ -0,0 +1,33 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: HardwareInfo.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef HARDWAREINFO_H_ +#define HARDWAREINFO_H_ + +namespace common +{ + +class HardwareInfo +{ +public: + HardwareInfo(); + virtual ~HardwareInfo(); + + void AddCheckDigit(char* serial); +}; + +} + +#endif /* HARDWAREINFO_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HeapManager.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HeapManager.cpp new file mode 100644 index 0000000..29f4367 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HeapManager.cpp @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: HeapManager.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include "HeapManager.h" + +namespace common +{ + +nn::fnd::ThreadSafeExpHeap HeapManager::s_AppHeap; + +HeapManager::HeapManager() +{ + // TODO 自動生成されたコンストラクター・スタブ + +} + +HeapManager::~HeapManager() +{ + // TODO Auto-generated destructor stub +} + +nn::fnd::ThreadSafeExpHeap* HeapManager::GetHeap() +{ + return &s_AppHeap; +} + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HeapManager.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HeapManager.h new file mode 100644 index 0000000..b9fc469 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/HeapManager.h @@ -0,0 +1,40 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: HeapManager.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef HEAPMANAGER_H_ +#define HEAPMANAGER_H_ + +#include + +namespace common +{ + +class HeapManager +{ +public: + HeapManager(); + virtual ~HeapManager(); + + static nn::fnd::ThreadSafeExpHeap* GetHeap(); + +private: + // デバイスメモリ管理用拡張ヒープ + static nn::fnd::ThreadSafeExpHeap s_AppHeap; + +}; + +} // namespace common + +#endif /* HEAPMANAGER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole.cpp new file mode 100644 index 0000000..b77d6d0 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole.cpp @@ -0,0 +1,171 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: LogConsole.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include "LogConsole.h" +#include + +namespace common +{ + +const size_t FONT_WIDTH = 8; +const size_t FONT_HEIGHT = 10; + +static LogConsole s_LogConsole; + +LogConsole* GetConsoleInstance() +{ + return &s_LogConsole; +} + +LogConsole::LogConsole() +{ + +} + +LogConsole::~LogConsole() +{ + +} + +void LogConsole::Initialize(u32 width, u32 height, u32 maxLine, demo::RenderSystemDrawing* renderSystem) +{ + m_Width = width; + m_Height = height; + m_MaxLine = maxLine; + m_RenderSystem = renderSystem; + m_CurrentViewLine = 0; + m_LineNum = 0; +} + +void LogConsole::AddText(const char* fmt, ::std::va_list arg) +{ + s32 stringSize; + const size_t STRING_BUFFER_SIZE = 256; + char formatStr[STRING_BUFFER_SIZE]; + + stringSize = nn::nstd::TVSNPrintf(formatStr, sizeof(formatStr), fmt, arg); + ::std::string str(formatStr); + + size_t addedText = 0; + while (addedText < stringSize) + { + if(m_LineNum >= m_MaxLine) + { + // 満杯なので先頭を削除する + ::std::vector::iterator it; + it = m_Log.begin(); + m_Log.erase(it); + m_LineNum--; + } + + // 部分文字列を追加 + AddWrapedText(str.substr(addedText, m_Width).c_str()); + m_LineNum++; + + // 画面領域以上追加したら末尾にスクロールする + if(m_LineNum > m_Height) + { + ScrollToEnd(); + } + + + if(stringSize - addedText > m_Width) + { + addedText += m_Width; + } + else + { + addedText += stringSize - addedText; + } + } +} + +void LogConsole::ScrollUp() +{ + if(m_CurrentViewLine > 0) + { + m_CurrentViewLine--; + } +} + + + +void LogConsole::ScrollDown() +{ + if (m_LineNum > m_Height) + { + if (m_CurrentViewLine < m_LineNum - m_Height) + { + m_CurrentViewLine++; + } + + } +} + +void LogConsole::ScrollToBegin() +{ + m_CurrentViewLine = 0; +} + +void LogConsole::ScrollToEnd() +{ + if(m_LineNum > m_Height) + { + m_CurrentViewLine = m_LineNum - m_Height; + } +} + + +void LogConsole::Print() +{ + ::std::vector::iterator it; + + it = m_Log.begin(); + it += m_CurrentViewLine; + + u32 count = 0; + for(; it != m_Log.end() && count < m_Height && count < m_MaxLine; it++) + { + m_RenderSystem->DrawText(0, count++ * 10, "%s", it->c_str()); + } + + if(m_LineNum > m_Height) + { + DrawScrollBar(); + } +} + + +void LogConsole::AddWrapedText(const char* str) +{ + m_Log.push_back(::std::string(str)); +} + +void LogConsole::DrawScrollBar() +{ + m_RenderSystem->SetColor(0.4f, 0.4f, 0.4f); + m_RenderSystem->DrawLine((m_Width + 1) * FONT_WIDTH, 0, (m_Width + 2) * FONT_WIDTH - 1, 0); + m_RenderSystem->DrawLine((m_Width + 1)* FONT_WIDTH, 0, (m_Width + 1)* FONT_WIDTH, m_Height * FONT_HEIGHT); + m_RenderSystem->DrawLine((m_Width + 2) * FONT_WIDTH - 1, 0, (m_Width + 2) * FONT_WIDTH - 1, m_Height * FONT_HEIGHT); + m_RenderSystem->DrawLine((m_Width + 1)* FONT_WIDTH, m_Height * FONT_HEIGHT - 1, (m_Width + 2) * FONT_WIDTH - 1, m_Height * FONT_HEIGHT - 1); + + u32 y = (m_Height * FONT_HEIGHT - 2) * m_CurrentViewLine / m_MaxLine; + m_RenderSystem->SetColor(0.7f, 0.7f, 0.7f); + m_RenderSystem->FillRectangle((m_Width + 1) * FONT_WIDTH, y + 1, FONT_WIDTH - 1, FONT_HEIGHT - 4); + + m_RenderSystem->SetColor(1.f, 1.f, 1.f); +} + +} //namespace ConsoleBackup diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole.h new file mode 100644 index 0000000..b8a7d52 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole.h @@ -0,0 +1,68 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: LogConsole.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef LOGCONSOLE_H_ +#define LOGCONSOLE_H_ + +#include +#include +#include +#include "demo.h" + +namespace common +{ + +//! @brief 画面にテキストコンソールを描画します +class LogConsole +{ + +public: + LogConsole(); + ~LogConsole(); + + void Initialize(u32 width, u32 height, u32 maxLine, demo::RenderSystemDrawing* renderSystem); + + void AddText(const char* fmt, ::std::va_list arg); + void ScrollUp(); + void ScrollDown(); + void ScrollToBegin(); + void ScrollToEnd(); + void Print(); + +private: + void AddWrapedText(const char* str); + void DrawScrollBar(); + + ::std::vector m_Log; + + //! @brief コンソールの列数 + u32 m_Width; + //! @brief コンソールの行数 + u32 m_Height; + //! @brief コンソールのログの最大行数 + u32 m_MaxLine; + //! @brief 描画のためのRenderSystemDrawingへのポインタ + demo::RenderSystemDrawing* m_RenderSystem; + //! @brief 追加したログの行数 + u32 m_LineNum; + //! @brief 表示を開始するログの行数 + u32 m_CurrentViewLine; + + +}; + +} + +#endif /* LOGCONSOLE_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole_Private.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole_Private.h new file mode 100644 index 0000000..8fbdd42 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/LogConsole_Private.h @@ -0,0 +1,28 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: LogConsole_Private.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef LOGCONSOLE_PRIVATE_H_ +#define LOGCONSOLE_PRIVATE_H_ + +#include "LogConsole.h" + +namespace common +{ + +LogConsole* GetConsoleInstance(); + +} + +#endif /* LOGCONSOLE_PRIVATE_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/OMakefile b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/OMakefile new file mode 100644 index 0000000..e874cbc --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/OMakefile @@ -0,0 +1,18 @@ +#!/usr/bin/env omake +#---------------------------------------------------------------------------- +# Project: Horizon +# File: OMakefile +# +# Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. +# +# These coded instructions, statements, and computer programs contain +# proprietary information of Nintendo of America Inc. and/or Nintendo +# Company Ltd., and are protected by Federal copyright law. They may +# not be disclosed to third parties or copied or duplicated in any form, +# in whole or in part, without the prior written consent of Nintendo. +# +# $Rev$ +#---------------------------------------------------------------------------- +include $(ROOT_OMAKE)/modulerules + +DefineDefaultRules() diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/PlayHistoryManager.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/PlayHistoryManager.cpp new file mode 100644 index 0000000..b10d4b7 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/PlayHistoryManager.cpp @@ -0,0 +1,224 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: PlayHistoryManager.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include + +#include "PlayHistoryManager.h" +#include "HeapManager.h" +#include "SdMountManager.h" +#include "SdReaderWriter.h" +#include "CommonLogger.h" +#include "FileName.h" +#include "ProgramId.h" + +namespace common +{ + +PlayHistoryManager::PlayHistoryManager() +{ + // TODO 自動生成されたコンストラクター・スタブ + +} + +PlayHistoryManager::~PlayHistoryManager() +{ + // TODO Auto-generated destructor stub +} + +void PlayHistoryManager::Export() +{ + nn::Result result; + SdMountManager::Mount(); + SdReaderWriter sd; + + size_t historyNum = nn::pl::CTR::GetPlayHistoryLength(); + if ( historyNum == 0) + { + NN_LOG("No Play Event\n"); + return; + } + + // SDに書き込む + result = sd.WriteBufWithCmac(common::PLAYHISTORY_COUNT_PATHNAME, reinterpret_cast(&historyNum), + sizeof(historyNum)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + nn::pl::CTR::PlayEvent* pEvent; + pEvent = reinterpret_cast (HeapManager::GetHeap()->Allocate( + sizeof(nn::pl::CTR::PlayEvent) * historyNum)); + if ( pEvent == NULL ) + { + NN_LOG("Failed to Allocate Heap\n"); + return; + } + + // 一番古いデータから素直に全部読み込む + nn::pl::CTR::GetPlayHistory(pEvent, 0, historyNum); + + // SDに書き込む + result = sd.WriteBufWithCmac(common::PLAYHISTORY_PATHNAME, reinterpret_cast(pEvent), + sizeof(nn::pl::CTR::PlayEvent) * historyNum); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + HeapManager::GetHeap()->Free(pEvent); + + SdMountManager::Unmount(); +} + +nn::Result PlayHistoryManager::GetPlayHistoryNums(size_t* nums) +{ + nn::Result result = nn::ResultSuccess(); + + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize); + if (buf != NULL) + { + common::SdReaderWriter sdReader; + + size_t readSize; + result = sdReader.ReadBufWithCmac(common::PLAYHISTORY_COUNT_PATHNAME, buf, bufSize, &readSize); + if (result.IsSuccess()) + { + *nums = *reinterpret_cast (buf); + } + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + HeapManager::GetHeap()->Free(buf); + } + return result; +} + +nn::Result PlayHistoryManager::Import() +{ + nn::Result result = nn::ResultSuccess(); + SdMountManager::Mount(); + SdReaderWriter sd; + + SdMountManager::Mount(); + + // プレイ履歴の件数を取得する + size_t historyNum = 0; + + GetPlayHistoryNums(&historyNum); + + if(historyNum == 0) + { + NN_LOG("No PlayHistory found\n"); + return nn::Result(nn::Result::LEVEL_PERMANENT, nn::Result::SUMMARY_NOT_FOUND, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_NOT_FOUND); + } + + size_t bufSize = common::HeapManager::GetHeap()->GetAllocatableSize(); + void* buf = common::HeapManager::GetHeap()->Allocate(bufSize); + if (buf != NULL) + { + common::SdReaderWriter sdReader; + + size_t readSize; + result = sdReader.ReadBufWithCmac(common::PLAYHISTORY_PATHNAME, buf, bufSize, &readSize); + if(result.IsSuccess()) + { + nn::pl::CTR::PlayEvent* pEvent = reinterpret_cast(buf); + NN_LOG("history num = %d\n", historyNum); + + // プレイ履歴を無効化する + nn::pl::CTR::ClearPlayHistory(); + + // データ移行ツールを無視して書き込む + for(u32 i = 0; i < historyNum; i++) + { + COMMON_LOGGER("Importing PlayHistory %d/%d", i, historyNum); + if ((pEvent[i].GetProgramId() & WITHOUT_VALIATION_MASK) != CONSOLE_BACKUP_PROGRAM_ID + && (pEvent[i].GetProgramId() & WITHOUT_VALIATION_MASK) != CONSOLE_RESTORE_PROGRAM_ID) + { + NN_LOG("%05d 0x%16llx : %X : %d\n", i, pEvent[i].GetProgramId(), pEvent[i].GetEventType(), + pEvent[i].minutes); + + nn::pl::CTR::NotifyPlayEvent(pEvent[i].GetEventType(), pEvent[i].GetProgramId(), + pEvent[i].GetEventTime()); + } + else + { + NN_LOG("Skipped\n"); + } + } + + } + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + common::HeapManager::GetHeap()->Free(buf); + } + else + { + NN_LOG("Failed Allocate Heap!! %s, %d", __FILE__, __LINE__); + return result; + } + + SdMountManager::Unmount(); + + return result; +} + +void PlayHistoryManager::Dump() +{ + nn::Result result; + + s32 playEventLength = nn::pl::CTR::GetPlayHistoryLength(); + if ( playEventLength == 0 ) + { + NN_LOG("No Play Event\n"); + return; + } + + nn::pl::CTR::PlayEvent* playEvent = reinterpret_cast (HeapManager::GetHeap()->Allocate( + sizeof(nn::pl::CTR::PlayEvent) * playEventLength)); + if ( playEvent == NULL ) + { + NN_LOG("Failed to Allocate Heap\n"); + return; + } + + // 一番古いデータから素直に全部読み込む + (void)nn::pl::CTR::GetPlayHistory(playEvent, 0, playEventLength); + + // 取得したデータを順番にすべて表示していく + s32 restPlayEventLength = playEventLength; + s32 displayCount = 0; + + nn::pl::CTR::PlayEvent* pEvent; + while ( restPlayEventLength > 0 ) + { + // 一気に表示できるところまで表示する + int line; + for ( line = 0; line < 24; line++ ) + { + pEvent = &playEvent[displayCount]; + NN_LOG("0x%16llx : %X : %d\n", pEvent->GetProgramId(), pEvent->eventType, pEvent->minutes); + restPlayEventLength--; + displayCount++; + if(restPlayEventLength <= 0) + { + break; + } + } + } + NN_UNUSED_VAR(pEvent); + + HeapManager::GetHeap()->Free(playEvent); + return; +} + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/PlayHistoryManager.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/PlayHistoryManager.h new file mode 100644 index 0000000..73afb52 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/PlayHistoryManager.h @@ -0,0 +1,45 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: PlayHistoryManager.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef PLAYHISTORYMANAGER_H_ +#define PLAYHISTORYMANAGER_H_ + +namespace common +{ + +//! @brief データ移行ツールの履歴を消しながらプレイ履歴を移行するためのクラスです。 +class PlayHistoryManager +{ +public: + PlayHistoryManager(); + virtual ~PlayHistoryManager(); + + //! @brief SDカードに出力します。 + void Export(); + + //! @brief SDカードからプレイ履歴に書き込みます + nn::Result Import(); + + //! @brief デバッグ用。プレイ履歴をデバッグ出力します。 + void Dump(); + +private: + nn::Result GetPlayHistoryNums(size_t* nums); + +}; + +} + +#endif /* PLAYHISTORYMANAGER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/ProgramId.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/ProgramId.h new file mode 100644 index 0000000..c565f11 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/ProgramId.h @@ -0,0 +1,28 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: ProgramId.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef PROGRAMID_H_ +#define PROGRAMID_H_ + +namespace common +{ + +const u64 CONSOLE_BACKUP_PROGRAM_ID = 0x000400000f802200L; +const u64 CONSOLE_RESTORE_PROGRAM_ID = 0x000400000f802300L; +const u64 WITHOUT_VALIATION_MASK = 0xffffffffffffff00L; + +} + +#endif /* PROGRAMID_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdLogger.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdLogger.cpp new file mode 100644 index 0000000..5fb7068 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdLogger.cpp @@ -0,0 +1,267 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: SdLogger.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include "SdLogger.h" +#include +#include "SDMountManager.h" +#include "FileName.h" + +namespace common +{ + +namespace Logger +{ + +static SdLogger s_SdLogger; +static nn::os::LightEvent s_SdEjectedEvent; +static nn::os::LightEvent s_SdInsertedEvent; + +const size_t SDMC_EVENT_THREAD_STACK_SIZE = 1024; +nn::os::Thread s_SdmcEjectedEventThread; +nn::os::StackBuffer s_SdmcEjectedEventThreadStack; + +nn::os::Thread s_SdmcInsertedEventThread; +nn::os::StackBuffer s_SdmcInsertedEventThreadStack; + +void (*s_SdEjectedEventFunc)() = NULL; +void (*s_SdInsertedEventFunc)() = NULL; + +void PrintResultIfFailed(nn::Result result, u32 line = 0) +{ + if (result.IsFailure()) + { + if(line != 0) + { + NN_LOG("%s, %d\n", __FILE__, line); + } + nn::dbg::PrintResult(result); + } +} + +void SdmcEjectedEventThreadFunc() +{ + NN_LOG("********************:SD Ejected Event Thread Start**********************\n"); + + for(;;) + { + s_SdEjectedEvent.Wait(); + NN_LOG("********************:SD Card Ejected**********************\n"); + + if(s_SdEjectedEventFunc != NULL) + { + s_SdEjectedEventFunc(); + } + SdMountManager::ForceUnmount(); + s_SdEjectedEvent.ClearSignal(); + s_SdLogger.Inactivate(); + } +} + +void SdmcInsertedEventThreadFunc() +{ + NN_LOG("********************:SD Inserted Event Thread Start**********************\n"); + + for(;;) + { + s_SdInsertedEvent.Wait(); + NN_LOG("********************:SD Card Inserted*********************\n"); + + if(s_SdInsertedEventFunc != NULL) + { + s_SdInsertedEventFunc(); + } + s_SdInsertedEvent.ClearSignal(); + } +} + +void InitializeEjectThread() +{ + s_SdEjectedEvent.Initialize(true); + s_SdInsertedEvent.Initialize(true); + nn::fs::RegisterSdmcEjectedEvent(&s_SdEjectedEvent); + nn::fs::RegisterSdmcInsertedEvent(&s_SdInsertedEvent); + + // SDカード抜けを検知するためのスレッド作成 + s_SdmcEjectedEventThread.Start(SdmcEjectedEventThreadFunc, s_SdmcEjectedEventThreadStack); + + // SDカード挿入を検知するためのスレッド作成 + s_SdmcInsertedEventThread.Start(SdmcInsertedEventThreadFunc, s_SdmcInsertedEventThreadStack); + +} +void SetEjectHandler(void (*func)()) +{ + s_SdEjectedEventFunc = func; +} + +void SetInsertHandler(void (*func)()) +{ + s_SdInsertedEventFunc = func; +} + +SdLogger::SdLogger() : m_TryActivate(false), m_Permitted(false) +{ + +} + +SdLogger* GetSdInstance() +{ + return &s_SdLogger; +} + +void SdLogger::Print(const char* fmt, ::std::va_list arg) +{ + Activate(); + if(!m_Permitted) + { + NN_LOG("SD Write Not Permitted\n"); + return; + } + + nn::Result result; + result = SdMountManager::Mount(); + if (result.IsFailure()) + { + PrintResultIfFailed(result, __LINE__); + } + + s32 stringSize; + const size_t STRING_BUFFER_SIZE = 256; + char str[STRING_BUFFER_SIZE]; + + stringSize = nn::nstd::TVSNPrintf(str, sizeof(str), fmt, arg); + + ::std::wstring log(common::SDMC_ROOT_DIRECTORY_PATH); + log += common::LOG_PATHNAME; + + // ディレクトリが無ければ作る + nn::fs::Directory dir; + result = dir.TryInitialize(common::LOG_ROOT_DIRECTORY_PATH); + if(result.IsFailure()) + { + result = nn::fs::TryCreateDirectory(common::LOG_ROOT_DIRECTORY_PATH); + } + + result = sd.TryInitialize(log.c_str(), true); + if (result.IsSuccess()) + { + // 追記する + // サイズ取得 + s64 fileSize; + result = sd.TryGetSize(&fileSize); + if (result.IsSuccess()) + { + // 末尾に移動 + result = sd.TrySetPosition(fileSize); + if (result.IsSuccess()) + { + s32 writeSize; + result = sd.TryWrite(&writeSize, str, stringSize, true); + if (result.IsSuccess()) + { + result = sd.TryFlush(); + if (result.IsFailure()) + { + NN_LOG("SD TryFlush failed\n"); + PrintResultIfFailed(result, __LINE__); + } + } + else + { + NN_LOG("SD TryWrite failed\n"); + PrintResultIfFailed(result, __LINE__); + } + } + else + { + NN_LOG("SD TrySetPosition failed\n"); + PrintResultIfFailed(result, __LINE__); + } + } + else + { + NN_LOG("SD TryGetSize failed\n"); + PrintResultIfFailed(result, __LINE__); + } + } + else + { + NN_LOG("SD TryInitialize failed, %s, %d\n", __FILE__, __LINE__); + PrintResultIfFailed(result, __LINE__); + } + + dir.Finalize(); + sd.Finalize(); + SdMountManager::Unmount(); +} + +void SdLogger::Clear() +{ + Activate(); + if(!m_Permitted) + { + return; + } + + nn::Result result; + SdMountManager::Mount(); + + ::std::wstring log(common::SDMC_ROOT_DIRECTORY_PATH); + log += common::LOG_PATHNAME; + + result = nn::fs::TryDeleteFile(log.c_str()); + if(result.IsFailure()) + { + nn::dbg::PrintResult(result); + } + + SdMountManager::Unmount(); +} + +void SdLogger::Inactivate() +{ + m_TryActivate = false; + m_Permitted = false; +} + +void SdLogger::Activate() +{ + if(m_TryActivate) + { + return; + } + + nn::Result result; + result = common::SdMountManager::Mount(); + + if (result.IsSuccess()) + { + nn::fs::FileInputStream fis; + + result = fis.TryInitialize(common::AP_SETTING_PATHNAME); + if(result.IsSuccess()) + { + m_Permitted = true; + } + fis.Finalize(); + } + + common::SdMountManager::Unmount(); + m_TryActivate = true; +} + +} // namespace Logger +} // namespace ConsoleBackup + + diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdLogger.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdLogger.h new file mode 100644 index 0000000..2dc736f --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdLogger.h @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: SdLogger.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef SDLOGGER_H_ +#define SDLOGGER_H_ + +#include + +namespace common +{ + +namespace Logger +{ + +class SdLogger +{ +public: + SdLogger(); + ~SdLogger() {}; + + void Print(const char* fmt, ::std::va_list arg); + void Clear(); + void Inactivate(); + +private: + void Activate(); + + nn::fs::FileOutputStream sd; + bool m_TryActivate; + bool m_Permitted; + NN_PADDING2; + +}; + +void InitializeEjectThread(); +// SDカードが抜けた時に呼ばれるコールバック +void SetEjectHandler(void (*func)()); +// SDカードが挿入された時に呼ばれるコールバック +void SetInsertHandler(void (*func)()); +SdLogger* GetSdInstance(); + +} // namespace Logger +} // namespace ConsoleBackup + +#endif /* SDLOGGER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdMountManager.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdMountManager.cpp new file mode 100644 index 0000000..336bebb --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdMountManager.cpp @@ -0,0 +1,67 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: SdMountManager.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include "SdMountManager.h" +#include "FileName.h" + +namespace common +{ + +u32 SdMountManager::m_MountCounter = 0; + +SdMountManager::SdMountManager() +{ + // TODO 自動生成されたコンストラクター・スタブ + +} + +SdMountManager::~SdMountManager() +{ + // TODO Auto-generated destructor stub +} + +nn::Result SdMountManager::Mount() +{ + nn::Result result = nn::ResultSuccess(); + + if(m_MountCounter == 0) + { + result = nn::fs::MountSdmc(); + } + m_MountCounter++; + + return result; +} + +nn::Result SdMountManager::Unmount() +{ + nn::Result result = nn::ResultSuccess(); + if(m_MountCounter != 0 && --m_MountCounter == 0) + { + result = nn::fs::Unmount(common::SDMC_ARCHIVE_NAME); + } + + return result; +} + +nn::Result SdMountManager::ForceUnmount() +{ + m_MountCounter = 0; + return nn::fs::Unmount(common::SDMC_ARCHIVE_NAME); +} + + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdMountManager.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdMountManager.h new file mode 100644 index 0000000..c4db65b --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdMountManager.h @@ -0,0 +1,42 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: SdMountManager.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef SDMOUNTMANAGER_H_ +#define SDMOUNTMANAGER_H_ + +namespace common +{ + +//! @brief SDカードのMount状態を管理するためのクラスです +class SdMountManager +{ +public: + SdMountManager(); + virtual ~SdMountManager(); + + //! @brief マウントが必要ならマウントします。 + static nn::Result Mount(); + //! @brief アンマウントが必要ならアンマウントします。 + static nn::Result Unmount(); + //! @brief 強制的にアンマウントします。 + static nn::Result ForceUnmount(); + +private: + static u32 m_MountCounter; +}; + +} + +#endif /* SDMOUNTMANAGER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdReaderWriter.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdReaderWriter.cpp new file mode 100644 index 0000000..4bea638 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdReaderWriter.cpp @@ -0,0 +1,249 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: SdReaderWriter.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include "SdReaderWriter.h" +#include "SdMountManager.h" +#include "CommonLogger.h" +#include "Aes_define.h" + +#include +#include +#include +#include + +#include + +namespace common +{ + +nn::Result SdReaderWriter::Initialize() +{ + nn::Result result; + + // 初期化済みなら何もしない + if(m_IsInitialized) + { + return nn::ResultSuccess(); + } + + result = SdMountManager::Mount(); + if(result.IsSuccess()) + { + m_IsInitialized = true; + return nn::ResultSuccess(); + } + else + { + return result; + } +} + + +nn::Result SdReaderWriter::Finalize() +{ + nn::Result result; + result = SdMountManager::Unmount(); + + m_IsInitialized = false; + return result; +} + +nn::Result SdReaderWriter::WriteBufCore(const wchar_t* path, void* buf, size_t size) +{ + NN_ASSERT(path != NULL); + NN_ASSERT(size > 0); + + nn::Result result = Initialize(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = file.TryInitialize(path, nn::fs::OPEN_MODE_WRITE | nn::fs::OPEN_MODE_CREATE); + + if (result.IsSuccess()) + { + s32 writeSize; + result = file.TryWrite(&writeSize, buf, size, false); + if (result.IsSuccess()) + { + // 何もしない + } + else + { + NN_LOG("SD TryWrite failed\n"); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + } + } + else + { + NN_LOG("SD TryInitialize failed\n"); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + } + + return result; +} + +nn::Result SdReaderWriter::WriteBuf(const wchar_t* path, void* buf, size_t size) +{ + nn::Result result; + + result = WriteBufCore(path, buf, size); + NN_UTIL_RETURN_IF_FAILED(result); + + result = file.TryFlush(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + file.Finalize(); + + result = Finalize(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + return result; +} + +nn::Result SdReaderWriter::WriteBufWithCmac(const wchar_t* path, void* buf, size_t size) +{ + nn::Result result; + + result = WriteBufCore(path, buf, size); + NN_UTIL_RETURN_IF_FAILED(result); + + nn::crypto::Initialize(); + bit8 sha256Hash[nn::crypto::Sha256Context::HASH_SIZE]; + nn::crypto::CalculateSha256(sha256Hash, buf, size); + + bit8 cmac[nn::crypto::AES_CMAC_MAC_SIZE]; + result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, nn::crypto::Sha256Context::HASH_SIZE, common::cmacKey); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + s32 writeSize; + result = file.TryWrite(&writeSize, cmac, sizeof(cmac), false); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = file.TryFlush(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + file.Finalize(); + + result = Finalize(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + return result; + +} + +nn::Result SdReaderWriter::ReadBufCore(const wchar_t* path, void* buf, size_t size, size_t* totalSize) +{ + NN_ASSERT(path != NULL); + NN_ASSERT(size > 0); + + nn::Result result; + + if(!m_IsInitialized) + { + Initialize(); + } + + result = file.TryInitialize(path, nn::fs::OPEN_MODE_READ); + if (result.IsSuccess()) + { + s32 readSize; + result = file.TryRead(&readSize, buf, size); + if (result.IsSuccess()) + { + // TODO バッファを超えるサイズのファイル読み込み + *totalSize = readSize; + } + else + { + NN_LOG("SD TryRead failed\n"); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + } + } + else + { + NN_LOG("SD TryInitialize failed\n"); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + } + + return result; +} + +nn::Result SdReaderWriter::ReadBuf(const wchar_t* path, void* buf, size_t size, size_t* totalSize) +{ + nn::Result result; + + result = ReadBufCore(path, buf, size, totalSize); + NN_UTIL_RETURN_IF_FAILED(result); + + file.Finalize(); + return result; +} + +nn::Result SdReaderWriter::ReadBufWithCmac(const wchar_t* path, void* buf, size_t size, size_t* totalSize) +{ + nn::Result result; + + NN_ASSERT(size > nn::crypto::AES_CMAC_MAC_SIZE); + + result = ReadBufCore(path, buf, size, totalSize); + NN_UTIL_RETURN_IF_FAILED(result); + + file.Finalize(); + // ハッシュが付加されていない + if(*totalSize < nn::crypto::AES_CMAC_MAC_SIZE) + { + return nn::fs::ResultVerificationFailed(); + } + *totalSize -= nn::crypto::AES_CMAC_MAC_SIZE; + + // CMACの検証を行う + nn::crypto::Initialize(); + bit8 sha256Hash[nn::crypto::Sha256Context::HASH_SIZE]; + nn::crypto::CalculateSha256(sha256Hash, buf, *totalSize); + + bit8 cmac[nn::crypto::AES_CMAC_MAC_SIZE]; + result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, nn::crypto::Sha256Context::HASH_SIZE, common::cmacKey); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + if(std::memcmp(reinterpret_cast(buf) + *totalSize, cmac, sizeof(cmac)) != 0) + { + // 無効なファイル + char filename[256]; + std::wcstombs(filename, path, sizeof(filename)); + filename[sizeof(filename) - 1] = '\0'; + COMMON_LOGGER("Verification Failed %s\n", filename); + return nn::fs::ResultVerificationFailed(); + } + + return result; +} + +void SdReaderWriter::CreateDirectory(const wchar_t* path) +{ + nn::Result result; + + if(!m_IsInitialized) + { + Initialize(); + } + + NN_LOG("Create Directory %ls\n", path); + result = nn::fs::TryCreateDirectory(path); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = Finalize(); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + +} + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdReaderWriter.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdReaderWriter.h new file mode 100644 index 0000000..81a10d7 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SdReaderWriter.h @@ -0,0 +1,80 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: SdReaderWriter.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef SDWRITER_H_ +#define SDWRITER_H_ + +#include + +namespace common +{ + +//! @brief SDカードに書き込むためのクラスです。 +class SdReaderWriter +{ +public : + SdReaderWriter() : m_IsInitialized(false) {}; + ~SdReaderWriter() {}; + + //! @brief 渡されたバッファからsizeバイト指定されたパス名で書きこみます。CMACが付加されます。 + //! @param[in] path sdmc:で始まる出力パス名。予めディレクトリを作っておく必要があります。 + //! @param[in] buf 入力データへのポインタ + //! @param[in] size 入力データのサイズ + nn::Result WriteBufWithCmac(const wchar_t* path, void* buf, size_t size); + + //! @brief 渡されたバッファへ(size - CMAC)バイト指定されたパス名から読み込みます + //! @param[in] path sdmc:で始まるCMAC付きの入力パス名 + //! @param[in] buf 出力バッファへのポインタ + //! @param[in] size バッファサイズ + //! @param[out] totalSize 読み込んだデータ - CMAC のサイズ + nn::Result ReadBufWithCmac(const wchar_t* path, void* buf, size_t size, size_t* totalSize); + + //! @brief 渡されたディレクトリ名のディレクトリを作成します + void CreateDirectory(const wchar_t* path); + +private: + //! @brief 渡されたバッファからサイズ分指定されたパス名で書きこみます + //! @param[in] path sdmc:で始まる出力パス名。予めディレクトリを作っておく必要があります。 + //! @param[in] buf 入力データへのポインタ + //! @param[in] size 入力データのサイズ + nn::Result WriteBuf(const wchar_t* path, void* buf, size_t size); + + nn::Result WriteBufCore(const wchar_t*path, void* buf, size_t size); + + //! @brief 渡されたバッファへサイズ分指定されたパス名から読み込みます + //! @param[in] path sdmc:で始まる入力パス名 + //! @param[in] buf 出力バッファへのポインタ + //! @param[in] size バッファサイズ + //! @param[out] totalSize 読み込んだデータのサイズ + nn::Result ReadBuf(const wchar_t* path, void* buf, size_t size, size_t* totalSize); + + nn::Result ReadBufCore(const wchar_t* path, void* buf, size_t size, size_t* totalSize); + + //! @brief 初期化します。 + nn::Result Initialize(); + + //! @brief 終了します。 + nn::Result Finalize(); + + nn::fs::FileStream file; + + NN_PADDING3; + bool m_IsInitialized; + +}; + +} + +#endif /* SDWRITER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SimplePlayer.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SimplePlayer.cpp new file mode 100644 index 0000000..97e8a76 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SimplePlayer.cpp @@ -0,0 +1,240 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: SimplePlayer.cpp + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include +#include +#include +#include +#include + +#include +#include "SimplePlayer.h" +#include "wave.h" +#include "HeapManager.h" + +namespace common +{ + +namespace +{ + const int nFiles = 4; // 使用できる voice の最大値は 24 + const char* apFileNames[nFiles] = + { + "rom:/ok.wav", + "rom:/ng.wav", + "rom:/cursor.wav", + "rom:/annotation.wav" + }; + + nn::snd::CTR::Voice* apVoice[nFiles]; + nn::snd::CTR::WaveBuffer aBuffer[nFiles]; + WaveFmt fmt[nFiles]; + WaveData data[nFiles]; + u8* apMemory[nFiles]; + + nn::os::CriticalSection s_CriticalSection; + bool s_SoundThreadInitialized = false; + + // サウンドスレッド関連 + const int SOUND_THREAD_STACK_SIZE = 4096; + nn::os::StackBuffer s_SoundThreadStack; + nn::os::Thread threadSound; + bool threadSoundFlag; + void SoundThreadFunc() + { + // サウンド出力をステレオに + nn::snd::SetSoundOutputMode(nn::snd::OUTPUT_MODE_STEREO); + + // マスターボリュームを設定 + nn::snd::SetMasterVolume( 1.0 ); + + NN_LOG("Loading wav files...\n"); + + // ファイルを開く + for (int i = 0; i < nFiles; i++) + { + if (apFileNames[i] == NULL) continue; + + nn::snd::Voice* pVoice = NULL; + + nn::fs::FileReader fileReader; + nn::Result result = fileReader.TryInitialize(apFileNames[i]); + NN_UTIL_PANIC_IF_FAILED(result); + if (::std::strcmp(::std::strrchr(apFileNames[i], '.'), ".wav") == false) + { + // 連続メモリ領域の取得、確認 + apMemory[i] = reinterpret_cast(HeapManager::GetHeap()->Allocate(GetWaveLength(fileReader), 32)); + if (apMemory[i] == NULL) + { + NN_LOG("Failed to allocate continuous memory\n"); + continue; + } + + + // Wave データを読み込み、キャッシュを無効に + data[i].buf = apMemory[i]; + LoadWave(fileReader, &fmt[i], &data[i]); + nn::snd::FlushDataCache(reinterpret_cast(apMemory[i]), data[i].size); + + NN_LOG("%s (%1dch, %5dHz, %2d-bit wav file)\n", + apFileNames[i], fmt[i].channel, fmt[i].sample_rate, fmt[i].quantum_bits); + + pVoice = apVoice[i] = nn::snd::AllocVoice(128, NULL, NULL); + NN_TASSERT_(pVoice); + + nn::snd::SampleFormat format = (fmt[i].quantum_bits == 8) ? + nn::snd::SAMPLE_FORMAT_PCM8 : + nn::snd::SAMPLE_FORMAT_PCM16; + + pVoice->SetChannelCount( fmt[i].channel ); + pVoice->SetSampleFormat( format ); + + nn::snd::InitializeWaveBuffer(&aBuffer[i]); + aBuffer[i].bufferAddress = apMemory[i]; + aBuffer[i].sampleLength = nn::snd::GetSampleLength(data[i].size, format, fmt[i].channel); + aBuffer[i].loopFlag = false; + + fileReader.Finalize(); + + // 音量の設定 + nn::snd::MixParam mix; + mix.mainBus[nn::snd::CHANNEL_INDEX_FRONT_LEFT ] = 0.707f; // メインボリューム (L) + mix.mainBus[nn::snd::CHANNEL_INDEX_FRONT_RIGHT] = 0.707f; // メインボリューム (R) + pVoice->SetMixParam(mix); + pVoice->SetVolume(1.0f); + + // pitch の設定 + pVoice->SetSampleRate(fmt[i].sample_rate); + pVoice->SetPitch(1.0f); + + } + } + + // 再生開始 + for (int i = 0; i < nFiles; i++) + { + if (apFileNames[i] != NULL) + { + apVoice[i]->SetState( nn::snd::Voice::STATE_PLAY ); + } + } + + s_SoundThreadInitialized = true; + + threadSoundFlag = true; + while (threadSoundFlag) + { + nn::snd::WaitForDspSync(); // DSP からのデータ受信を待つ。 + + + s_CriticalSection.Enter(); // メインスレッドとの排他制御 + nn::snd::SendParameterToDsp(); // パラメータを DSP に送信。 + s_CriticalSection.Leave(); // メインスレッドとの排他制御 + } + + // 再生終了 + for (int i = 0; i < nFiles; i++) + { + if (apVoice[i]) + { + nn::snd::FreeVoice(apVoice[i]); + } + } + } +} + +void InitializeSimplePlayer() +{ + NN_LOG("Initialize SimplePlayer\n"); + + nn::Result result; + + const size_t ROMFS_BUFFER_SIZE = 1024 * 64; + static char buffer[ROMFS_BUFFER_SIZE]; + NN_UTIL_PANIC_IF_FAILED( + nn::fs::MountRom(16, 16, buffer, ROMFS_BUFFER_SIZE)); + + // dsp, snd の初期化 + result = nn::dsp::Initialize(); + NN_UTIL_PANIC_IF_FAILED(result); + result = nn::dsp::LoadDefaultComponent(); + NN_UTIL_PANIC_IF_FAILED(result); + result = nn::snd::Initialize(); + NN_UTIL_PANIC_IF_FAILED(result); + + s_CriticalSection.Initialize(); + + // サウンドスレッドを起動(DSP 割り込みイベント待ち) + threadSound.Start(SoundThreadFunc, s_SoundThreadStack); +} + +void PlaySound(u8 index) +{ + NN_ASSERT(index <= nFiles); + + while(!s_SoundThreadInitialized) + { + nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(1)); + } + + nn::snd::CTR::Voice* pVoice = apVoice[index]; + + if (!pVoice->IsPlaying()) + { + nn::snd::InitializeWaveBuffer(&aBuffer[index]); + aBuffer[index].bufferAddress = apMemory[index]; + nn::snd::SampleFormat format = (fmt[index].quantum_bits == 8) ? nn::snd::SAMPLE_FORMAT_PCM8 + : nn::snd::SAMPLE_FORMAT_PCM16; + + aBuffer[index].sampleLength = nn::snd::GetSampleLength(data[index].size, format, fmt[index].channel); + aBuffer[index].loopFlag = false; + + pVoice->AppendWaveBuffer(&aBuffer[index]); + NN_LOG("[voice%d] %s (pitch = %f)\n", + index, + (pVoice->GetState() == nn::snd::Voice::STATE_PAUSE ? "pause" : "play "), + pVoice->GetPitch()); + } +} + +void FinalizeSimplePlayer() +{ + nn::Result result; + + // サウンドスレッドの破棄 + threadSoundFlag = false; + threadSound.Join(); + + // SND の終了処理 + result = nn::snd::Finalize(); + NN_UTIL_PANIC_IF_FAILED(result); + + s_CriticalSection.Finalize(); + + // DSP の終了処理 + result = nn::dsp::UnloadComponent(); + NN_UTIL_PANIC_IF_FAILED(result); + nn::dsp::Finalize(); + + + NN_LOG("Finalize SimplePlayer\n"); + +} + +} // namespace ConsoleBackup +/*---------------------------------------------------------------------------* + End of file + *---------------------------------------------------------------------------*/ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SimplePlayer.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SimplePlayer.h new file mode 100644 index 0000000..b7fe76e --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/SimplePlayer.h @@ -0,0 +1,37 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: SimplePlayer.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef SIMPLEPLAYER_H_ +#define SIMPLEPLAYER_H_ + +namespace common +{ + +enum SoundEffect +{ + SOUND_OK, + SOUND_NG, + SOUND_CURSOR, + SOUND_ANNOTATION +}; + +void InitializeSimplePlayer(); +void FinalizeSimplePlayer(); +void PlaySound(u8 index); + +} // namespace ConsoleBackup + + +#endif /* SIMPLEPLAYER_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/VersionDetect.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/VersionDetect.cpp new file mode 100644 index 0000000..f028569 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/VersionDetect.cpp @@ -0,0 +1,120 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: VersionDetect.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include +#include + +#include "VersionDetect.h" +#include "HeapManager.h" +#include "CommonLogger.h" + +namespace common +{ + +void GetCupVersion(nn::pl::CTR::CardUpdateVersion* cup, nn::cfg::CTR::CfgRegionCode region) +{ + nn::Result result; + const size_t BUF_SIZE = 1024; + u8 buf[BUF_SIZE]; + // CUPバージョン + { + result = nn::fs::MountContent("cver:", nn::fs::MEDIA_TYPE_NAND, common::cCupVerId[region], 0, 1, 1, buf, + BUF_SIZE); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + nn::fs::FileInputStream fis; + + result = fis.TryInitialize(L"cver:/version.bin"); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + if (result.IsSuccess()) + { + s64 fileSize = fis.GetSize(); + NN_LOG("version.bin size = %lld\n", fileSize); + s32 ret; + void* addr = NULL; + addr = common::HeapManager::GetHeap()->Allocate(fileSize); + if (addr != NULL) + { + result = fis.TryRead(&ret, addr, fileSize); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + if (result.IsSuccess()) + { + nn::pl::CTR::CardUpdateVersion* ver_buf = reinterpret_cast (addr); + + std::memcpy(cup, ver_buf, sizeof(nn::pl::CTR::CardUpdateVersion)); + } + common::HeapManager::GetHeap()->Free(addr); + } + } + fis.Finalize(); + + nn::fs::Unmount("cver:"); + } + +} + +void GetNupVersion(nn::pl::CTR::NetworkUpdateVersion* nup, nn::cfg::CTR::CfgRegionCode region) +{ + nn::Result result; + const size_t BUF_SIZE = 1024; + u8 buf[BUF_SIZE]; + + // NUPバージョン + { + result = nn::fs::MountContent("nver:", nn::fs::MEDIA_TYPE_NAND, common::cNupVerId[region], 0, 1, 1, buf, + BUF_SIZE); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + nn::fs::FileInputStream fis; + + result = fis.TryInitialize(L"nver:/version.bin"); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + if (result.IsSuccess()) + { + s64 fileSize = fis.GetSize(); + NN_LOG("version.bin size = %lld\n", fileSize); + s32 ret; + void* addr = NULL; + addr = common::HeapManager::GetHeap()->Allocate(fileSize); + if (addr != NULL) + { + result = fis.TryRead(&ret, addr, fileSize); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + if (result.IsSuccess()) + { + nn::pl::CTR::NetworkUpdateVersion* ver_buf = + reinterpret_cast (addr); + + std::memcpy(nup, ver_buf, sizeof(nn::pl::CTR::NetworkUpdateVersion)); + } + common::HeapManager::GetHeap()->Free(addr); + } + } + + fis.Finalize(); + nn::fs::Unmount("nver:"); + } + +} + +void GetSystemVersion(common::VerDef* mVerData, nn::cfg::CTR::CfgRegionCode region) +{ + GetCupVersion(&mVerData->cup, region); + GetNupVersion(&mVerData->nup, region); +} + +} + diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/VersionDetect.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/VersionDetect.h new file mode 100644 index 0000000..652ed09 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/VersionDetect.h @@ -0,0 +1,30 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: VersionDetect.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef VERSIONDETECT_H_ +#define VERSIONDETECT_H_ + +#include +#include "common_Types.h" + +namespace common +{ + +void GetSystemVersion(common::VerDef* mVerData, nn::cfg::CTR::CfgRegionCode region); + +} + + +#endif /* VERSIONDETECT_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/common_Types.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/common_Types.h new file mode 100644 index 0000000..2a354a3 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/common_Types.h @@ -0,0 +1,92 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: common_Types.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef COMMON_TYPES_H_ +#define COMMON_TYPES_H_ + +#include +#include +#include +#include +#include +#include + +namespace common +{ + +const u32 NTR_WIFI_SETTING_SIZE = 0x400; // NTR Wifi 設定のサイズ +const u32 TWL_WIFI_SETTING_SIZE = 0x600; // TWL Wifi 設定のサイズ + + +// NOR領域のみにある設定データ用構造体 +struct NtrNorData +{ + nn::cfg::CTR::NtrConfig ntrConfig; + u8 TwlWiFiSetting[TWL_WIFI_SETTING_SIZE]; + u8 NtrWiFiSetting[NTR_WIFI_SETTING_SIZE]; +}; + +struct CfgCountryLanguage +{ + enum nn::cfg::CTR::CfgCountryCode country; + enum nn::cfg::CTR::CfgLanguageCode language; + NN_PADDING1; +}; + +struct VerDef +{ + nn::pl::CTR::CardUpdateVersion cup; + nn::pl::CTR::NetworkUpdateVersion nup; +}; + +struct CfgCalData +{ + nn::cfg::CTR::detail::TouchPanelCfgData touchPanelCfgData; + nn::cfg::CTR::detail::LcdFlickerCfgData lcdFlickerCfgData; + nn::cfg::CTR::detail::FcramCfgData fcramCfgData; + nn::cfg::CTR::detail::RtcCfgData rtcCfgData; + nn::cfg::CTR::detail::GyroscopeCfgData gyroscopeCfgData; + nn::cfg::CTR::detail::AccelCfgData accelCfgData; + nn::cfg::CTR::detail::CodecCfgData codecCfgData; + nn::cfg::CTR::detail::McuSlideVolumeRangeCfgData mcuSlideVolumeRangeCfgData; + NN_PADDING2; + +}; + +// TODO:リージョン追加時に範囲外アクセスにならないよう注意 +const nn::ProgramId cCupVerId[] = +{ + nn::pl::CTR::SHAREDDATA_TITLEID_CUP_VERSION_JP, + nn::pl::CTR::SHAREDDATA_TITLEID_CUP_VERSION_US, + nn::pl::CTR::SHAREDDATA_TITLEID_CUP_VERSION_EU, +}; + +const nn::ProgramId cNupVerId[] = +{ + nn::pl::CTR::SHAREDDATA_TITLEID_NUP_VERSION_JP, + nn::pl::CTR::SHAREDDATA_TITLEID_NUP_VERSION_US, + nn::pl::CTR::SHAREDDATA_TITLEID_NUP_VERSION_EU, +}; + +struct BackupDataHeader +{ + s64 size; // パディングを含まないファイルサイズ + NN_PADDING4; + NN_PADDING4; +}; + +} + +#endif /* COMMON_TYPES_H_ */ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/configLoader.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/configLoader.cpp new file mode 100644 index 0000000..b262ba9 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/configLoader.cpp @@ -0,0 +1,181 @@ +#include +#include +#include +#include "configLoader.h" + +namespace common +{ + +Result ConfigFileLoader::Initialize(const wchar_t* fileName, void* buffer, const size_t bufferSize) +{ + s64 fileSize; + FileInputStream fi; + NN_UTIL_RETURN_IF_FAILED(fi.TryInitialize(fileName)); + NN_UTIL_RETURN_IF_FAILED(fi.TryGetSize(&fileSize)); + + // NULL終端ぶん読めるサイズを減らす + if (fileSize > bufferSize - sizeof(wchar_t)) + { + NN_TLOG_("Too Large File\n"); + return Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, nn::Result::DESCRIPTION_TOO_LARGE); + } + + m_Buffer = static_cast(buffer); + NN_UTIL_RETURN_IF_FAILED(fi.TryRead(&m_UsedBufferSize, m_Buffer, fileSize)); + NN_LOG("config size = %d\n", m_UsedBufferSize); + return ParseData(); +} + +void ConfigFileLoader::Finalize() +{ + m_Buffer = 0; + m_ParamNum = 0; +} + +Result ConfigFileLoader::ParseData() +{ + if (!m_Buffer) + { + return Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_INVALID_STATE, nn::Result::MODULE_COMMON, nn::Result::DESCRIPTION_NOT_INITIALIZED); + } + + int pos = 0; + + // ビッグエンディアンでないことを確認 + NN_ASSERTMSG(m_Buffer[0] != 0xfffe, "Invalid Config File's Endian\n"); + + if (m_Buffer[0] == 0xfeff) + { + // UTF-16 BOMの調整 + pos++; + } + + m_ParamNum = 0; + m_ParamName[m_ParamNum] = &(m_Buffer[pos]); + m_ParamValue[m_ParamNum] = L""; + m_Buffer[m_UsedBufferSize / sizeof(wchar_t)] = L'\0'; // NULL終端しておく + + // ダブルクウォート中なら : も文字として読み取る + bool inEscape = false; + // # で行末までコメント + bool inComment = false; + // : で行頭から:までがkey、:から行末までがvalue + bool inSettingKeyValue = false; + + while (pos < m_UsedBufferSize / sizeof(m_Buffer[0])) + { + switch (m_Buffer[pos]) + { + case L'"': + { + inEscape = !inEscape; + } + break; + + case L'#': + { + inComment = true; + } + break; + + case L':': + { + if (inEscape || inComment) + { + break; + } + + if (inSettingKeyValue) + { + break; + } + else + { + inSettingKeyValue = true; + } + m_Buffer[pos] = L'\0'; + m_ParamValue[m_ParamNum++] = &(m_Buffer[pos + 1]); + + } + + break; + case L'\r': + case L'\n': + { + if (inComment) + { + inComment = false; + } + if (inSettingKeyValue) + { + inSettingKeyValue = false; + } + + m_Buffer[pos] = L'\0'; + m_ParamName[m_ParamNum] = &(m_Buffer[pos + 1]); + m_ParamValue[m_ParamNum] = L""; + } + break; + + } + + if (PARAM_MAX_NUM <= m_ParamNum) + { + NN_TLOG_("Too Many Params\n"); + return Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, + nn::Result::DESCRIPTION_TOO_LARGE); + } + pos++; + } + + return ResultSuccess(); +} + +s32 ConfigFileLoader::SearchParamName(const wchar_t *paramName) +{ + if (!m_Buffer) + { + NN_TLOG_("ConfigFileLoader not initialized.\n"); + return -1; + } + + for (s32 i = 0; i < m_ParamNum; i++) + { + if (wcscmp(m_ParamName[i], paramName) == 0) + { + return i; + } + } + return -1; +} + +const wchar_t *ConfigFileLoader::ReadAsWChar(const wchar_t *paramName) +{ + s32 idx = SearchParamName(paramName); + if (idx < 0) + { + NN_LOG("Unknown Parameter Name %ls\n", paramName); + } + return (idx < 0) ? NULL : m_ParamValue[idx]; +} + +const char *ConfigFileLoader::ReadAsChar(const wchar_t *paramName) +{ + memset(m_ReadCharBuffer, 0, sizeof(m_ReadCharBuffer)); + const wchar_t *value = ReadAsWChar(paramName); + if(value == NULL) + { + return NULL; + } + wcstombs(m_ReadCharBuffer, value, sizeof(m_ReadCharBuffer)); + // NULL終端する + m_ReadCharBuffer[sizeof(m_ReadCharBuffer) - 1] = '\0'; + return m_ReadCharBuffer; +} + +int ConfigFileLoader::ReadAsInteger(const wchar_t *paramName) +{ + return atoi(ReadAsChar(paramName)); +} + +} diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/configLoader.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/configLoader.h new file mode 100644 index 0000000..67e1edf --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/configLoader.h @@ -0,0 +1,78 @@ +#ifndef NN_CONFIG_LOADER_H_ +#define NN_CONFIG_LOADER_H_ + + +namespace common +{ + using namespace nn; + using namespace nn::fs; + using namespace std; + +class ConfigFileLoader +{ +private: + static const int PARAM_VALUE_MAX_STRING_LENGTH = 128; + static const int PARAM_MAX_NUM = 64; + + char m_ReadCharBuffer[PARAM_VALUE_MAX_STRING_LENGTH]; + wchar_t *m_ParamName[PARAM_MAX_NUM]; + wchar_t *m_ParamValue[PARAM_MAX_NUM]; + wchar_t *m_Buffer; + + s32 m_UsedBufferSize; + s32 m_ParamNum; + +public: + ConfigFileLoader() : m_Buffer(0), m_UsedBufferSize(0), m_ParamNum(0) + { + } + +/* + @brief ConfigFileLoader を初期化します. + + 使用するファイルが存在するアーカイブは,あらかじめマウントしておく必要があります. + 読み込みに使用するバッファを確保し,引数 buffer に与える必要があります. + Finalize を呼ぶまでこのバッファは開放しないでください. + + 読み込ませることのできるフォーマット + ・エンコーディング:UTF-16 + ・バイトオーダ  :リトルエンディアン + ・改行記号    :不問 + + 半角コロンを含む行のみパラメータ記述行として読み込み,含まない行は無視します. + 半角コロンより前の文字はすべてパラメータ名として取得し, + 半角コロンより後の文字はすべてパラメータの値として取得します. + ParameterName : ParameterValue; + と記述すると + パラメータ名は L"ParameterName " + パラメータ値は L" ParameterValue;" + となります. + + @param[in] fileName 設定ファイル名 + @param[in] buffer ファイル読み込み用のバッファ + @param[in] bufferSize 上記 buffer の大きさ + + @return 結果を返します. + +*/ + Result Initialize(const wchar_t* fileName, void* buffer, const size_t bufferSize); + void Finalize(); + + // スレッドセーフです. + const wchar_t *ReadAsWChar(const wchar_t *paramName); + + // スレッドセーフではありません. + const char *ReadAsChar(const wchar_t *paramName); + + // スレッドセーフです. + int ReadAsInteger(const wchar_t *paramName); + +private: + Result ParseData(); + s32 SearchParamName(const wchar_t *paramName); +}; + +} + + +#endif // NN_CONFIG_LOADER_H_ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/annotation.wav b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/annotation.wav new file mode 100644 index 0000000000000000000000000000000000000000..b64f77b43ac9f34d7cd61d8e055e40aee4ba1e2b GIT binary patch literal 28636 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 literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/cursor.wav b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/cursor.wav new file mode 100644 index 0000000000000000000000000000000000000000..85765b3dead4eccac6cd33c601a68cd55dadd745 GIT binary patch literal 29996 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 X9RfQ9b_nbc*dee(V28l}l)(Q2mpGp_ literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/ng.wav b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/ng.wav new file mode 100644 index 0000000000000000000000000000000000000000..dc2f3efc71568e7c5856d8f9db1662051804f6c4 GIT binary patch literal 141180 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 G#Qz^H@u2nq literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/ok.wav b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/romfiles/ok.wav new file mode 100644 index 0000000000000000000000000000000000000000..bf5149fdbf4e7e1e1cbd4260c707d719eca447a2 GIT binary patch literal 158700 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%0AXBj)7&cZj8@1h8< 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

    u?kI$o1k0y}61QJtL!KgbYqfgt&;%p_a6 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 literal 0 HcmV?d00001 diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/wave.cpp b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/wave.cpp new file mode 100644 index 0000000..a897109 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/wave.cpp @@ -0,0 +1,150 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: wave.c + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------------*/ +/* includes */ +#include "wave.h" + +/*---------------------------------------------------------------------------*/ +/* functions */ + +/*---------------------------------------------------------------------------* + Name: LoadWave + + Description: Wave データを読み込む. + + Arguments: filepath : ファイルパス + fmt : Wave データの fmt チャンクを格納 + data : Wave データの data チャンクを格納 + + Returns: None. + *---------------------------------------------------------------------------*/ +void LoadWaveCore(nn::fs::FileReader& reader, WaveFmt * fmt, WaveData * data, bool isSizeOnly) +{ + reader.SetPosition(0); + + WaveRiff riff; // RIFF ヘッダ + WaveChunk chunk; // CHUNK + u32 readbyte = 0; // ファイル読み込みの判定に使用 + u32 fsize = reader.GetSize(); + + // RIFF ヘッダ読み込み + reader.Read((u8*)&riff, sizeof(WaveRiff)); + + // サイズを積算 + readbyte += sizeof(WaveRiff); + + // "RIFF" との一致を確認 + if (riff.tag != MAKE_WAVE_TAG_VALUE('R','I','F','F')) + { + NN_PANIC("Not RIFF format.\n"); + } + // "WAVE" との一致を確認 + if ( riff.type != MAKE_WAVE_TAG_VALUE('W','A','V','E') ) + { + NN_PANIC("Not Wave format.\n"); + } + + // ファイルサイズより大きくなるまで読み込む + while(fsize > readbyte) + { + // CHUNK の読み込み + reader.Read((u8*)&chunk, sizeof(WaveChunk)); + readbyte += sizeof(WaveChunk); + + // "fmt " + if (chunk.tag == MAKE_WAVE_TAG_VALUE('f','m','t',' ')) + { + reader.Read((u8*)fmt, sizeof(WaveFmt)); + readbyte += sizeof(WaveFmt); + + // 拡張領域があれば読み捨て + if (chunk.size > sizeof(WaveFmt)) + { + u16 ext_size; + + reader.Read((u8*)&ext_size, sizeof(ext_size)); + readbyte += sizeof(ext_size); + + readbyte += chunk.size; + if (readbyte == fsize) break; + + reader.Seek(ext_size, nn::fs::POSITION_BASE_CURRENT); + } + } + // "data" + else if (chunk.tag == MAKE_WAVE_TAG_VALUE('d','a','t','a')) + { + data->size = chunk.size; + + if (isSizeOnly) + { + return; + } + else + { + reader.Read((u8*)data->buf, data->size); + // 8-bit wav ファイルの場合は unsigned -> signed の変換が必要 + if (fmt->quantum_bits == 8) + { + s8* p = (s8*)data->buf; + for (int i = 0; i < data->size; i++) + { + p[i] -= 128; + } + } + } + readbyte += chunk.size; + } + // それ以外 + else + { + readbyte += chunk.size; + if (readbyte == fsize) break; + + // 読み飛ばす + reader.Seek(chunk.size, nn::fs::POSITION_BASE_CURRENT); + } + } +} + +#ifndef NN_BUILD_RELEASE // Release ビルドでは HostIO は使えません。 +void WriteWaveHeader(nn::hio::CTR::HostFile& hostFile, WaveFmt* fmt, s32 size) +{ + WaveRiff riff; + riff.tag = MAKE_WAVE_TAG_VALUE('R','I','F','F'); + riff.size = + + sizeof(WaveRiff) // riff header + + sizeof(WaveChunk) + sizeof(WaveFmt) // wave fmt header + + sizeof(WaveChunk) + size // wave data + - 8; + riff.type = MAKE_WAVE_TAG_VALUE('W','A','V','E'); + hostFile.Write(&riff, sizeof(WaveRiff)); + + WaveChunk chunk; + chunk.tag = MAKE_WAVE_TAG_VALUE('f','m','t',' '); + chunk.size = sizeof(WaveFmt); + hostFile.Write(&chunk, sizeof(WaveChunk)); + hostFile.Write(fmt, sizeof(WaveFmt)); + + chunk.tag = MAKE_WAVE_TAG_VALUE('d','a','t','a'); + chunk.size = size; + hostFile.Write(&chunk, sizeof(WaveChunk)); +} +#endif // NN_BUILD_RELEASE + +/*---------------------------------------------------------------------------*/ +/* end of file */ +/*---------------------------------------------------------------------------*/ diff --git a/branches/0thNUP_No_NUP/ConsoleDataMigration/common/wave.h b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/wave.h new file mode 100644 index 0000000..cbaf2f3 --- /dev/null +++ b/branches/0thNUP_No_NUP/ConsoleDataMigration/common/wave.h @@ -0,0 +1,148 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: wave.h + + Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef __WAVE_HEADER__ +#define __WAVE_HEADER__ + +/*---------------------------------------------------------------------------*/ +/* includes */ +#include +#include +#ifndef NN_BUILD_RELEASE // Release ビルドでは HostIO は使えません。 +#include +#endif // NN_BUILD_RELEASE + +/*---------------------------------------------------------------------------*/ +/* constants */ + +#define MAKE_WAVE_TAG_VALUE(c1, c2, c3, c4) \ + ( c1 | (c2<<8) | (c3<<16) | (c4<<24) ) + +#define MAKE_WAVE_TAG_STRING(str, val) \ + { \ + str[3] = (char) ( (val>>24)&0xff ) ; \ + str[2] = (char) ( (val>>16)&0xff ) ; \ + str[1] = (char) ( (val>> 8)&0xff ) ; \ + str[0] = (char) ( (val )&0xff ) ; \ + str[4] = (char) ( 0 ) ; \ + } + +#define MAKE_FMT_CHUNK(ch, s) \ + { \ + ch.tag = MAKE_WAVE_TAG_VALUE('f', 'm', 't', ' '); \ + ch.size = s; \ + } + +#define MAKE_DATA_CHUNK(ch, s) \ + { \ + ch.tag = MAKE_WAVE_TAG_VALUE('d', 'a', 't', 'a'); \ + ch.size = s; \ + } + +#define saturate(v, min, max) \ + { \ + if ( v < min ) {v = min;} \ + else if ( v > max ) {v = max;} \ + } + +#define swap(v,t) swap_##t##_(v) + +#define swap_u16_(v) \ + { \ + v = (u16)(((v)>> 8)&0x00ff | \ + ((v)<< 8)&0xff00); \ + } + +#define swap_s16_(v) \ + { \ + v = (s16)(((v)>> 8)&0x00ff | \ + ((v)<< 8)&0xff00); \ + } + +#define swap_u32_(v) \ + { \ + v = (u32)(((v)>>24)&0x000000ff | \ + ((v)>> 8)&0x0000ff00 | \ + ((v)<< 8)&0x00ff0000 | \ + ((v)<<24)&0xff000000); \ + } + +#define swap_s32_(v) \ + { \ + v = (s32)(((v)>>24)&0x000000ff | \ + ((v)>> 8)&0x0000ff00 | \ + ((v)<< 8)&0x00ff0000 | \ + ((v)<<24)&0xff000000); \ + } + +/*---------------------------------------------------------------------------*/ +/* typedef */ +typedef struct _riff +{ + u32 tag; + u32 size; + u32 type; +} +WaveRiff; + +typedef struct _chunk +{ + u32 tag; + u32 size; +} +WaveChunk; + +typedef struct _fmt +{ + u16 fmt_id; + u16 channel; + u32 sample_rate; + u32 trans_rate; + u16 block_size; + u16 quantum_bits; +} +WaveFmt; + +typedef struct _data +{ + u32 size; + u8* buf; +} +WaveData; + +/*---------------------------------------------------------------------------*/ +/* prototype */ + +void LoadWaveCore(nn::fs::FileReader&, WaveFmt*, WaveData*, bool); +static inline void LoadWave(nn::fs::FileReader& reader, WaveFmt* fmt, WaveData* data) +{ + LoadWaveCore(reader, fmt, data, false); +} +static inline int GetWaveLength(nn::fs::FileReader& reader) +{ + WaveFmt fmt; + WaveData data; + LoadWaveCore(reader, &fmt, &data, true); + return data.size; +} +#ifndef NN_BUILD_RELEASE // Release ビルドでは HostIO は使えません。 +void WriteWaveHeader(nn::hio::CTR::HostFile& hostFile, WaveFmt* fmt, s32 size); +#endif // NN_BUILD_RELEASE + +#endif // __WAVE_HEADER__ + +/*---------------------------------------------------------------------------*/ +/* end of file */ +/*---------------------------------------------------------------------------*/