From bef2fca9d69281c8f70fd92c1917d96333827c95 Mon Sep 17 00:00:00 2001 From: ravepossum Date: Wed, 10 Jan 2024 00:39:32 -0500 Subject: [PATCH] inital port of BSBob's map pop-ups --- graphics/interface/map_popup_palette.pal | 19 ++ graphics/interface/map_popup_tiles.png | Bin 0 -> 9321 bytes graphics/map_popup/brick.png | Bin 412 -> 0 bytes graphics/map_popup/brick_outline.png | Bin 461 -> 0 bytes graphics/map_popup/marble.png | Bin 509 -> 0 bytes graphics/map_popup/marble_outline.png | Bin 494 -> 0 bytes graphics/map_popup/stone.png | Bin 201 -> 0 bytes graphics/map_popup/stone2.png | Bin 201 -> 0 bytes graphics/map_popup/stone2_outline.png | Bin 407 -> 0 bytes graphics/map_popup/stone_outline.png | Bin 407 -> 0 bytes graphics/map_popup/underwater.pal | 19 -- graphics/map_popup/underwater.png | Bin 304 -> 0 bytes graphics/map_popup/underwater_outline.png | Bin 485 -> 0 bytes graphics/map_popup/wood.png | Bin 338 -> 0 bytes graphics/map_popup/wood_outline.png | Bin 391 -> 0 bytes include/graphics.h | 4 + include/menu.h | 9 +- include/rtc.h | 1 + include/strings.h | 4 + src/graphics.c | 4 + src/map_name_popup.c | 277 +++++----------------- src/menu.c | 64 ++++- src/rtc.c | 34 +++ src/strings.c | 2 + 24 files changed, 186 insertions(+), 251 deletions(-) create mode 100644 graphics/interface/map_popup_palette.pal create mode 100644 graphics/interface/map_popup_tiles.png delete mode 100644 graphics/map_popup/brick.png delete mode 100644 graphics/map_popup/brick_outline.png delete mode 100644 graphics/map_popup/marble.png delete mode 100644 graphics/map_popup/marble_outline.png delete mode 100644 graphics/map_popup/stone.png delete mode 100644 graphics/map_popup/stone2.png delete mode 100644 graphics/map_popup/stone2_outline.png delete mode 100644 graphics/map_popup/stone_outline.png delete mode 100644 graphics/map_popup/underwater.pal delete mode 100644 graphics/map_popup/underwater.png delete mode 100644 graphics/map_popup/underwater_outline.png delete mode 100644 graphics/map_popup/wood.png delete mode 100644 graphics/map_popup/wood_outline.png diff --git a/graphics/interface/map_popup_palette.pal b/graphics/interface/map_popup_palette.pal new file mode 100644 index 0000000000..696191f6ba --- /dev/null +++ b/graphics/interface/map_popup_palette.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +255 255 255 +41 49 90 +0 0 0 +238 230 238 +189 180 197 +139 139 164 +90 90 123 +41 49 90 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 diff --git a/graphics/interface/map_popup_tiles.png b/graphics/interface/map_popup_tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..546c4a420ccc18a6e8c3cd2558910251100d0cbb GIT binary patch literal 9321 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 i>979}ohRK?bYc+0003e zNklTrR425$^)D7MD22`R4K=OG;L^5>xH-s>LR&g%2UzYAe*uxygkyfUTL7l?{d>n*@0H_~#u_?m6=TLe zCyvD;rmtj<#~~$q3AHmJ&Dq1LTBXubYc+00044 zNklxvTp)6#+VtL)USL75#W$vQrEoQ1U-Q%9k$q9 zZh^*t@^ixA=5O5N8uTdRq8WiAbYGI)wV}%an!V_(ibw;`rCNdYmZH9bTI*Kphci4U zkUI1N9tkApzyrd(sx|U(22i62xVw^TTk9@ljpPR){t zN)VBNzk&Yr>0zrEEvhl96TVHnBuO=F#M6J9aKJX*;?vb-!X)8Y2&GOY??;7}K9DZ- z&?Ke`tYGj)2nVig(WMgsEEDKDA`u!$ZjMg6{aC6E-jKc_MZQjnY^0AK?Fq+K1%idG4jz$e;}9QE4(Q`it0^VVEM1=$(k2Y%KXBHIHILbqf?Duu zdq>h-d7W);)2;FO4;lOP*ivW(Prgt24S9_jmyh-p*s!Lyzakx5Z2nPiM&BZS-jJ@Q z1>38zXIZ~DI?pXWShY4IaZlzZAoa|0Q?~LCvp50lH|zr!00000NkvXXu0mjf12^qt diff --git a/graphics/map_popup/marble_outline.png b/graphics/map_popup/marble_outline.png deleted file mode 100644 index 54f3021ea53398f20d22fa703e7ce22a84d12a13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 494 zcmViYgq6iC}JrS!Wr7C6FnhP!YeQ|Qjsdb$^*2+MP>95r%WhI z(zT)k50E$LR_<&Ent?wnUld)O`}r>ZE<#NHCUFonI=u|`q|}L&@?6RzUP&pEize0L zJb3&CjyuLFFU_6+07)~%l$RMcU`1D(i!ukIeSsqBX?mM`jvjrWNKjuXUs5C?Z8om0 zhEc%;a}gzHs!~L9s$`I(<4Bqi9ofR5s30jcIf0E$NyzMS!yP~k>Lh$$YltaE1!qJM zyz=?)_)sZ>J!6U?fvciQHG#J~D-oPov#$u$8G*b3U{Fu{FhUd8hdU2af7^200hrI@ z+JW2>DokH$@#G}XRAuSDEy8ODt{qq)64;1r%3VbRIA7S-qfhX84@5R+xtSJFb&)HQ zORF~q%NCef=c#qSf?;>z?1A{6qHclyf6#Cf+37^a%}m?jn3N_?!=VlK><@HrcR$I4 kTMvJ)$Hu1LB>saw09ZWHJZ+F#TmS$707*qoM6N<$f{B~gE~$M vQw>ig<=Ky%oa9%L!rxu7??TUp?E?HBKFxEZG9O+7n$O_r>gTe~DWM4fplMK= diff --git a/graphics/map_popup/stone2.png b/graphics/map_popup/stone2.png deleted file mode 100644 index 261c3184ab5ff28081ce8decd1887878abe87079..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0YEIl!VDzmo21VNQU(D&A+E(omjIdX{{MG$tp5N1 z|CW3IyVqPzs$OI1)hr+p_5bRUXKSkO%_%+_Wx2&r0;pj3tOZYj8bUl>978lFzCClA z_kaNhbHFlQ=>)R_$6Hz{3+RMv2Z5QD2N(y4nVLLNgU8W9TwF46W8Vf?`Q=*UM|^;poXMd+T`dOIFYuJq znNWJcZ=kmD4n_voC(5|hg(OqgjUS6=c?Tt6Hz{3+RMv2Z5QD2N(y4nVLLNgU8W9TwF46W8Vf?`Q=*UM|^;poXMd+T`dOIFYuJq znNWJcZ=kmD4n_voC(5|hg(OqgjUS6=c?Tt2FZgLA*fWwYbYcvc8OK46==2BV&NK90~YZEQYI@{|lr_c)FrGI2&RH zvD!55w&I;n2`4q%s9qPdWn1n?Ae|q(*+hvNSHe%dR@UBPZ!2a10000X~5h3Lmt3D%N!y|*PTLtM+SEcUc_?%KBQ8L zrU~Gl!CnY$zks5y-}*%WQ&9ov#wUC%(|rRU!)+U03nqbhmhujRXRy^8dt$Z5YL;Lwe{ b|A#&RV;h-sJE+XH00000NkvXXu0mjfAnM?x diff --git a/graphics/map_popup/wood.png b/graphics/map_popup/wood.png deleted file mode 100644 index e846a6bcd5fd0774b094dc9d57e0d23aa9a4c0e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 338 zcmV-Y0j>UtP)A>$?Z&zZ;SX>$NM!N!11Gme`?XFJDcK`qY07*qoM6N<$f~{4PJ^%m! diff --git a/graphics/map_popup/wood_outline.png b/graphics/map_popup/wood_outline.png deleted file mode 100644 index d143dbc2f82ca3e536a6836db37c092dcca20268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmV;20eJq2P)8We)eA6EipPhlJ z6!nqfKMgmh;0@oQ&*Ixm15Z5V+ZQQ-qSSBfD2j1IM8A%4sr$cY>!TOF?f zZ>Q9r>5)-}GeUKoMUXsYrK#0%{VVL#f{RtState = STATE_SLIDE_IN; task->tPrintTimer = 0; ShowMapNamePopUpWindow(); + EnableInterrupts(INTR_FLAG_HBLANK); + SetHBlankCallback(HBlankCB_DoublePopupWindow); } break; case STATE_SLIDE_IN: @@ -270,7 +122,7 @@ static void Task_MapNamePopUpWindow(u8 taskId) { task->tYOffset = 0; task->tState = STATE_WAIT; - gTasks[sPopupTaskId].data[1] = 0; + gTasks[gPopupTaskId].tOnscreenTimer = 0; } break; case STATE_WAIT: @@ -303,24 +155,31 @@ static void Task_MapNamePopUpWindow(u8 taskId) } break; case STATE_ERASE: - ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE); + ClearStdWindowAndFrame(GetPrimaryPopUpWindowId(), TRUE); + ClearStdWindowAndFrame(GetSecondaryPopUpWindowId(), TRUE); task->tState = STATE_END; break; case STATE_END: HideMapNamePopUpWindow(); return; } - SetGpuReg(REG_OFFSET_BG0VOFS, task->tYOffset); } void HideMapNamePopUpWindow(void) { if (FuncIsActiveTask(Task_MapNamePopUpWindow)) { - ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE); - RemoveMapNamePopUpWindow(); + ClearStdWindowAndFrame(GetPrimaryPopUpWindowId(), TRUE); + ClearStdWindowAndFrame(GetSecondaryPopUpWindowId(), TRUE); + RemovePrimaryPopUpWindow(); + RemoveSecondaryPopUpWindow(); + DisableInterrupts(INTR_FLAG_HBLANK); + SetHBlankCallback(NULL); SetGpuReg_ForcedBlank(REG_OFFSET_BG0VOFS, 0); - DestroyTask(sPopupTaskId); + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND); + SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(8, 10)); + DestroyTask(gPopupTaskId); } } @@ -328,9 +187,22 @@ static void ShowMapNamePopUpWindow(void) { u8 mapDisplayHeader[24]; u8 *withoutPrefixPtr; - u8 x; + u8 mapNameX, timeX, mapNameY, timeY, mapNamePopUpWindowId, weatherPopUpWindowId; const u8 *mapDisplayHeaderSource; + mapNameX = 8; + mapNameY = 2; + timeX = 5; + timeY = 8; + + SetGpuRegBits(REG_OFFSET_WININ, WININ_WIN0_CLR); + + mapNamePopUpWindowId = AddMapNamePopUpWindow(); + weatherPopUpWindowId = AddWeatherPopUpWindow(); + + LoadMapNamePopUpWindowBgs(); + LoadPalette(gPopUpWindowBorder_Palette, 0xE0, 32); + if (InBattlePyramid()) { if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP) @@ -350,52 +222,23 @@ static void ShowMapNamePopUpWindow(void) withoutPrefixPtr = &(mapDisplayHeader[3]); GetMapName(withoutPrefixPtr, gMapHeader.regionMapSectionId, 0); } - AddMapNamePopUpWindow(); - LoadMapNamePopUpWindowBg(); - x = GetStringCenterAlignXOffset(FONT_NARROW, withoutPrefixPtr, 80); + mapDisplayHeader[0] = EXT_CTRL_CODE_BEGIN; mapDisplayHeader[1] = EXT_CTRL_CODE_HIGHLIGHT; mapDisplayHeader[2] = TEXT_COLOR_TRANSPARENT; - AddTextPrinterParameterized(GetMapNamePopUpWindowId(), FONT_NARROW, mapDisplayHeader, x, 3, TEXT_SKIP_DRAW, NULL); - CopyWindowToVram(GetMapNamePopUpWindowId(), COPYWIN_FULL); + + AddTextPrinterParameterized(mapNamePopUpWindowId, FONT_SHORT, mapDisplayHeader, mapNameX, mapNameY, TEXT_SKIP_DRAW, NULL); + FormatDecimalTimeWithoutSeconds(withoutPrefixPtr, gLocalTime.hours, gLocalTime.minutes, FALSE); + AddTextPrinterParameterized(weatherPopUpWindowId, FONT_SMALL, mapDisplayHeader, GetStringRightAlignXOffset(FONT_SMALL, mapDisplayHeader, DISPLAY_WIDTH) - timeX, timeY, TEXT_SKIP_DRAW, NULL); + + CopyWindowToVram(mapNamePopUpWindowId, COPYWIN_FULL); + CopyWindowToVram(weatherPopUpWindowId, COPYWIN_FULL); } -#define TILE_TOP_EDGE_START 0x21D -#define TILE_TOP_EDGE_END 0x228 -#define TILE_LEFT_EDGE_TOP 0x229 -#define TILE_RIGHT_EDGE_TOP 0x22A -#define TILE_LEFT_EDGE_MID 0x22B -#define TILE_RIGHT_EDGE_MID 0x22C -#define TILE_LEFT_EDGE_BOT 0x22D -#define TILE_RIGHT_EDGE_BOT 0x22E -#define TILE_BOT_EDGE_START 0x22F -#define TILE_BOT_EDGE_END 0x23A - -static void DrawMapNamePopUpFrame(u8 bg, u8 x, u8 y, u8 deltaX, u8 deltaY, u8 unused) +static void LoadMapNamePopUpWindowBgs(void) { - s32 i; - - // Draw top edge - for (i = 0; i < 1 + TILE_TOP_EDGE_END - TILE_TOP_EDGE_START; i++) - FillBgTilemapBufferRect(bg, TILE_TOP_EDGE_START + i, i - 1 + x, y - 1, 1, 1, 14); - - // Draw sides - FillBgTilemapBufferRect(bg, TILE_LEFT_EDGE_TOP, x - 1, y, 1, 1, 14); - FillBgTilemapBufferRect(bg, TILE_RIGHT_EDGE_TOP, deltaX + x, y, 1, 1, 14); - FillBgTilemapBufferRect(bg, TILE_LEFT_EDGE_MID, x - 1, y + 1, 1, 1, 14); - FillBgTilemapBufferRect(bg, TILE_RIGHT_EDGE_MID, deltaX + x, y + 1, 1, 1, 14); - FillBgTilemapBufferRect(bg, TILE_LEFT_EDGE_BOT, x - 1, y + 2, 1, 1, 14); - FillBgTilemapBufferRect(bg, TILE_RIGHT_EDGE_BOT, deltaX + x, y + 2, 1, 1, 14); - - // Draw bottom edge - for (i = 0; i < 1 + TILE_BOT_EDGE_END - TILE_BOT_EDGE_START; i++) - FillBgTilemapBufferRect(bg, TILE_BOT_EDGE_START + i, i - 1 + x, y + deltaY, 1, 1, 14); -} - -static void LoadMapNamePopUpWindowBg(void) -{ - u8 popUpThemeId; - u8 popupWindowId = GetMapNamePopUpWindowId(); + u8 mapNamePopUpWindowId = GetPrimaryPopUpWindowId(); + u8 weatherPopUpWindowId = GetSecondaryPopUpWindowId(); u16 regionMapSectionId = gMapHeader.regionMapSectionId; if (regionMapSectionId >= KANTO_MAPSEC_START) @@ -405,14 +248,10 @@ static void LoadMapNamePopUpWindowBg(void) else regionMapSectionId = 0; // Discard kanto region sections; } - popUpThemeId = sRegionMapSectionId_To_PopUpThemeIdMapping[regionMapSectionId]; - LoadBgTiles(GetWindowAttribute(popupWindowId, WINDOW_BG), sMapPopUp_OutlineTable[popUpThemeId], 0x400, 0x21D); - CallWindowFunction(popupWindowId, DrawMapNamePopUpFrame); - PutWindowTilemap(popupWindowId); - if (gMapHeader.weather == WEATHER_UNDERWATER_BUBBLES) - LoadPalette(&sMapPopUp_Palette_Underwater, BG_PLTT_ID(14), sizeof(sMapPopUp_Palette_Underwater)); - else - LoadPalette(sMapPopUp_PaletteTable[popUpThemeId], BG_PLTT_ID(14), sizeof(sMapPopUp_PaletteTable[0])); - BlitBitmapToWindow(popupWindowId, sMapPopUp_Table[popUpThemeId], 0, 0, 80, 24); + PutWindowTilemap(mapNamePopUpWindowId); + PutWindowTilemap(weatherPopUpWindowId); + + BlitBitmapRectToWindow(mapNamePopUpWindowId, gPopUpWindowBorder_Tiles, 0, 0, DISPLAY_WIDTH, 24, 0, 0, DISPLAY_WIDTH, 24); + BlitBitmapRectToWindow(weatherPopUpWindowId, gPopUpWindowBorder_Tiles, 0, 24, DISPLAY_WIDTH, 24, 0, 0, DISPLAY_WIDTH, 24); } diff --git a/src/menu.c b/src/menu.c index dd43e310dc..f57e7fd3ff 100644 --- a/src/menu.c +++ b/src/menu.c @@ -60,8 +60,11 @@ static void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8, u8, u8, u8, u8, static void WindowFunc_ClearStdWindowAndFrameToTransparent(u8, u8, u8, u8, u8, u8); static void task_free_buf_after_copying_tile_data_to_vram(u8 taskId); +EWRAM_DATA u8 gPopupTaskId; + static EWRAM_DATA u8 sStartMenuWindowId = 0; -static EWRAM_DATA u8 sMapNamePopupWindowId = 0; +static EWRAM_DATA u8 sPrimaryPopupWindowId = 0; +static EWRAM_DATA u8 sSecondaryPopupWindowId = 0; static EWRAM_DATA struct Menu sMenu = {0}; static EWRAM_DATA u16 sTileNum = 0; static EWRAM_DATA u8 sPaletteNum = 0; @@ -144,7 +147,8 @@ void InitStandardTextBoxWindows(void) { InitWindows(sStandardTextBox_WindowTemplates); sStartMenuWindowId = WINDOW_NONE; - sMapNamePopupWindowId = WINDOW_NONE; + sPrimaryPopupWindowId = WINDOW_NONE; + sSecondaryPopupWindowId = WINDOW_NONE; } void FreeAllOverworldWindowBuffers(void) @@ -520,22 +524,22 @@ static u16 UNUSED GetStandardFrameBaseTileNum(void) u8 AddMapNamePopUpWindow(void) { - if (sMapNamePopupWindowId == WINDOW_NONE) - sMapNamePopupWindowId = AddWindowParameterized(0, 1, 1, 10, 3, 14, 0x107); - return sMapNamePopupWindowId; + if (sPrimaryPopupWindowId == WINDOW_NONE) + sPrimaryPopupWindowId = AddWindowParameterized(0, 0, 0, 30, 3, 14, 0x107); + return sPrimaryPopupWindowId; } -u8 GetMapNamePopUpWindowId(void) +u8 GetPrimaryPopUpWindowId(void) { - return sMapNamePopupWindowId; + return sPrimaryPopupWindowId; } -void RemoveMapNamePopUpWindow(void) +void RemovePrimaryPopUpWindow(void) { - if (sMapNamePopupWindowId != WINDOW_NONE) + if (sPrimaryPopupWindowId != WINDOW_NONE) { - RemoveWindow(sMapNamePopupWindowId); - sMapNamePopupWindowId = WINDOW_NONE; + RemoveWindow(sPrimaryPopupWindowId); + sPrimaryPopupWindowId = WINDOW_NONE; } } @@ -2145,3 +2149,41 @@ void BufferSaveMenuText(u8 textId, u8 *dest, u8 color) break; } } + +// BSBob map pop-ups +u8 AddWeatherPopUpWindow(void) +{ + if (sSecondaryPopupWindowId == WINDOW_NONE) + sSecondaryPopupWindowId = AddWindowParameterized(0, 0, 17, 30, 3, 14, 0x161); + return sSecondaryPopupWindowId; +} + +u8 GetSecondaryPopUpWindowId(void) +{ + return sSecondaryPopupWindowId; +} + +void RemoveSecondaryPopUpWindow(void) +{ + if (sSecondaryPopupWindowId != WINDOW_NONE) + { + RemoveWindow(sSecondaryPopupWindowId); + sSecondaryPopupWindowId = WINDOW_NONE; + } +} + +void HBlankCB_DoublePopupWindow(void) +{ + u16 offset = gTasks[gPopupTaskId].data[2]; + u16 scanline = REG_VCOUNT; + + if (scanline < 80 || scanline > 160) + { + REG_BG0VOFS = offset; + REG_BLDALPHA = BLDALPHA_BLEND(15, 5); + } + else + { + REG_BG0VOFS = 512 - offset; + } +} diff --git a/src/rtc.c b/src/rtc.c index b79f62a3c4..9f92894263 100644 --- a/src/rtc.c +++ b/src/rtc.c @@ -1,6 +1,7 @@ #include "global.h" #include "rtc.h" #include "string_util.h" +#include "strings.h" #include "text.h" // iwram bss @@ -344,3 +345,36 @@ u32 RtcGetLocalDayCount(void) { return RtcGetDayCount(&sRtc); } + +void FormatDecimalTimeWithoutSeconds(u8 *txtPtr, s8 hour, s8 minute, bool8 is24Hour) +{ + RtcCalcLocalTime(); + switch (is24Hour) + { + case TRUE: + txtPtr = ConvertIntToDecimalStringN(txtPtr, hour, STR_CONV_MODE_LEADING_ZEROS, 2); + *txtPtr++ = CHAR_COLON; + txtPtr = ConvertIntToDecimalStringN(txtPtr, minute, STR_CONV_MODE_LEADING_ZEROS, 2); + break; + case FALSE: + if (hour == 0) + hour = 12; + + if (hour < 13) + txtPtr = ConvertIntToDecimalStringN(txtPtr, hour, STR_CONV_MODE_LEADING_ZEROS, 2); + else + txtPtr = ConvertIntToDecimalStringN(txtPtr, hour - 12, STR_CONV_MODE_LEADING_ZEROS, 2); + + *txtPtr++ = CHAR_COLON; + txtPtr = ConvertIntToDecimalStringN(txtPtr, minute, STR_CONV_MODE_LEADING_ZEROS, 2); + txtPtr = StringAppend(txtPtr, gText_Space); + if (hour < 13) + txtPtr = StringAppend(txtPtr, gText_AM); + else + txtPtr = StringAppend(txtPtr, gText_PM); + break; + } + + *txtPtr++ = EOS; + *txtPtr = EOS; +} diff --git a/src/strings.c b/src/strings.c index d2a82ada48..cb9e8fc470 100644 --- a/src/strings.c +++ b/src/strings.c @@ -1819,3 +1819,5 @@ const u8 gText_Answer[] = _("ANSWER"); const u8 gText_PokeBalls[] = _("POKé BALLS"); const u8 gText_Berry[] = _("BERRY"); const u8 gText_Berries[] = _("BERRIES"); +const u8 gText_AM[] = _("AM"); +const u8 gText_PM[] = _("PM"); \ No newline at end of file