Related
I'm trying to write a simple script to put in the startup folder to ask if I would like to launch the Dell GPS program... so, anyone? What am I doing wrong? I know it's gotta be something simple...
Code:
RunOnPowerOn Choice( Question( "Would you like to start the Dell GPS?", "Click OK to Continue", "OKCancel" ) )
Case (1)
Run( "\SD Card\Program Files\Dell\GPS Navigation System\DellNav.exe" )
Case (2)
Exit
EndChoice
How about this?
I have a separate script to runonpoweron in the startup...
Why wouldn't this work?
Code:
x = WndExists( "Dell Navigation" )
if x = 0
Choice( "Do you want to start up the Dell GPS?", "Click OK to Continue", "OKCancel" )
Case (1)
Run( "\SD Card\Program Files\Dell\GPS Navigation System\DellNav.exe" )
Case (2)
EndChoice
Exit
Else
Exit
EndIf
It gives me the error
"Invalid Condition
Line:
If x = 0"
xd1936 said:
How about this?
I have a separate script to runonpoweron in the startup...
Why wouldn't this work?
Code:
x = WndExists( "Dell Navigation" )
if x = 0
Choice( "Do you want to start up the Dell GPS?", "Click OK to Continue", "OKCancel" )
Case (1)
Run( "\SD Card\Program Files\Dell\GPS Navigation System\DellNav.exe" )
Case (2)
EndChoice
Exit
Else
Exit
EndIf
It gives me the error
"Invalid Condition
Line:
If x = 0"
Click to expand...
Click to collapse
I've never done any mortscripting in my life, but, not sure of the syntax, but shouldn't it be:
if x == 0
instead of
if x = 0
Dunno, I know VB doesn't use the double equal signs, but since the error was complaining about that exact line, it'd just be my guess.
Thanks for the reply, but I get the same error...
Anyone else? I'm sure it's something simple
Never Mind
Got it to work with this:
Code:
x = WndExists( "Dell Navigation" )
if( x = 0 )
Switch( Question( "Do you want to start up the Dell GPS?", "Click OK to Continue", "OKCancel" ) )
Case (1)
Run( "\SD Card\Program Files\Dell\GPS Navigation System\DellNav.exe" )
Case (2)
Exit
EndSwitch
Else
Exit
EndIf
so what was the problem...
Two things
"if( x = 0 )"
-Gotta have parentheses, apparently
"Switch( Question( "Do you want to start up the Dell GPS?", "Click OK to Continue", "OKCancel" ) )"
-If I don't have the "Question" parameter, then it gives me a list with a choice. and the words "OKCancel" was the only choice...
I'm still a scripting n00b
Hi all, sorry I am not normally one for starting a new thread for help or a question but I have a problem which a dont even understand let alone begin to fix, and googlin for aover an hour turns up nothing
Initially I needed to do some screen grabs and so I proceeded to install DotPocket to try out its screen capture functions. The software installed over activesync, popped up on the phone screen as normal, asked for location, installed CAB fine. Then it asked me to pick a resolution and then soft reset which I did. since then the touch screen has been completely unresponsive, it does not register a press at all! I am able to (just!) use the phone using the optical trackpad and select button, which is how I have since managed to uninstall dotpocket and play with the settings. This however did nothing, and I am still left with a 90's phone with a large screen any help would be much appreciated, I am currently trawling through the registry to try and find a related entry.
Another wierd thing - since this has happened when I go to Settings->System->Screen and press the "Align Screen" button to repeat the screen tap alignment procedure, nothing happens. I have clicked this button til I am blue in the face
Things I have tried - Align Screen, Advanced Config+ > Pressure sensitivity options, numerous soft resets.
As I am sure you can understand this is quite perplexing and without doing a hard reset (which is a last reort) I cant think what else to do! Thanks in advance
if you soft reset the phone.
does this bring back the functionalities of the touch screen?
I had this in the biginning that i could not use my screen anymore.
but i could use my keys.
i am not 100% sure, but some how i suspect it to be an app that locks the screen.
i thought it might be the windows lock (see end key button)
but i could net get it to respond.
aftert hard reset it worked again, but it did not take long before it got locked again.
i now have a other rom without panels and have not had this issue anymore.
either post up the cab you installed or have a look at it yourself in msceinf that will give you some clues as to what it installed.
What was the option with resolution you took??
OH and I've just had a look at the prog and it's designed for 2003! that's like complaining that os/2 messes up vista..
I think you may be stuck with a hard reset, and a lesson to not do it again...
In future MyMobiler, it's not fast but you can do screengrabs through activesynce/wdm
It might help you out here as you can control the X1 from your desktop.
I've had a look at the cab and there's a gapi.dll thats unlikely to have been removed, amongst other things..
So this is the readout of what it's done.
Code:
Strings Value Equivalent
001 %CE1%\Aurorisoft\dotPocket \Program Files\Aurorisoft\dotPocket
002 %CE2% \Windows
003 Help Help
004 %CE11% \Windows\Start Menu\Programs
005 %CE4% \Windows\StartUp
006 dotPocket.lnk dotPocket.lnk
007 dpTCPGateway.lnk dpTCPGateway.lnk
*****************************************************************************************************************************************************************
Directories String ID Value
004 1\3 \Program Files\Aurorisoft\dotPocket\Help
007 2\3 \Windows\Help
002 1 \Program Files\Aurorisoft\dotPocket
003 2 \Windows
005 4 \Windows\Start Menu\Programs
006 5 \Windows\StartUp
*****************************************************************************************************************************************************************
Files Order Number Flags ID Dir FileName in CAB FileName
001 001 0x40000003 \Program Files\Aurorisoft\dotPocket DPMANA~1.001 "dpManager.exe"
002 005 0x40000003 \Program Files\Aurorisoft\dotPocket DPTCPG~1.002 "dpTCPGateway.exe"
003 006 0x40000003 \Program Files\Aurorisoft\dotPocket DPDISP~1.003 "dpDisplayIp.exe"
004 002 0x40000003 \Windows DPDRIV~1.004 "dpDrivers.dll"
005 003 0x40000003 \Windows DPSERV~1.005 "dpService.dll"
006 004 0x40000003 \Windows DPRAPI~1.006 "dpRAPIGateway.dll"
007 007 0x00000012 \Windows 000000GX.007 GX.DLL
008 008 0x40000003 \Windows 0000gapi.008 gapi.dll
009 010 0x40000003 \Program Files\Aurorisoft\dotPocket\Help TROUBL~1.009 "Troubleshooting.htm"
010 011 0x40000003 \Program Files\Aurorisoft\dotPocket\Help SCREEN~1.010 "ScreenNav.htm"
011 012 0x40000003 \Program Files\Aurorisoft\dotPocket\Help DOTPOC~1.011 "dotPocket.htm"
012 013 0x40000003 \Program Files\Aurorisoft\dotPocket\Help DEVICE~1.012 "DeviceManager.htm"
013 014 0x40000003 \Windows DEVICE~3.013 "device_manager_buttons1.2bp"
014 015 0x40000003 \Windows DEVICE~4.014 "device_manager_register1.2bp"
015 016 0x40000003 \Windows DEVICE~1.015 "device_manager1.2bp"
016 017 0x40000003 \Windows DEVICE~2.016 "device_manager2.2bp"
017 018 0x40000003 \Windows SCREEN~1.017 "screen_navigator1.2bp"
018 019 0x40000003 \Windows SCREEN~2.018 "screen_navigator2.2bp"
*****************************************************************************************************************************************************************
ID S. Shortcut Name Installed at Points to
001 dotPocket.lnk \Windows\Start Menu\Programs "dpManager.exe"
002 dpTCPGateway.lnk \Windows\StartUp "dpTCPGateway.exe"
003 dotPocket.lnk \Windows\Help "dotPocket.htm"
*****************************************************************************************************************************************************************
SETUP File DPINST~1.999
*****************************************************************************************************************************************************************
*****************************************************************************************************************************************************************
INF file rebuilt : "dotPocket.INF"
*****************************************************************************************************************************************************************
[Version]
Signature = "$Chicago$"
CESignature = "$Windows CE$"
Provider = "%Provider%"
[CEStrings]
Appname = "dotPocket"
InstallDir = "%CE1%\%Provider%\%AppName%" ; (%CE1%\Aurorisoft\dotPocket)
[CEDevice]
ProcessorType = 2577
Unsupported Platforms = "HPC","JUPITER"
[SourceDisksNames]
2 = ,"Dir2",,.\Program Files\Aurorisoft\dotPocket
3 = ,"Dir3",,.\Windows
4 = ,"Dir4",,.\Program Files\Aurorisoft\dotPocket\Help
999 = "Dir999",,.
[SourceDisksFiles]
"dpManager.exe" = 2 ; 001
"dpTCPGateway.exe" = 2 ; 002
"dpDisplayIp.exe" = 2 ; 003
"dpDrivers.dll" = 3 ; 004
"dpService.dll" = 3 ; 005
"dpRAPIGateway.dll" = 3 ; 006
GX.DLL = 3 ; 007
gapi.dll = 3 ; 008
"Troubleshooting.htm" = 4 ; 009
"ScreenNav.htm" = 4 ; 010
"dotPocket.htm" = 4 ; 011
"DeviceManager.htm" = 4 ; 012
"device_manager_buttons1.2bp" = 3 ; 013
"device_manager_register1.2bp" = 3 ; 014
"device_manager1.2bp" = 3 ; 015
"device_manager2.2bp" = 3 ; 016
"screen_navigator1.2bp" = 3 ; 017
"screen_navigator2.2bp" = 3 ; 018
DPINST~1.dll = 999 ; 999
[DefaultInstall]
CESetupDLL = DPINST~1.dll ; (DPINST~1.999)
CEShortcuts = RaccourcisCourts,Raccourci02
CopyFiles = CopierVersDir00,CopierVersDir02,CopierVersDir03
[CopierVersDir00] ; (%CE1%\Aurorisoft\dotPocket\Help : \Program Files\Aurorisoft\dotPocket\Help)
"Troubleshooting.htm",,,0x40000003
"ScreenNav.htm",,,0x40000003
"dotPocket.htm",,,0x40000003
"DeviceManager.htm",,,0x40000003
[CopierVersDir02] ; (%CE1%\Aurorisoft\dotPocket : \Program Files\Aurorisoft\dotPocket)
"dpManager.exe",,,0x40000003
"dpTCPGateway.exe",,,0x40000003
"dpDisplayIp.exe",,,0x40000003
[CopierVersDir03] ; (%CE2% : \Windows)
"dpDrivers.dll",,,0x40000003
"dpService.dll",,,0x40000003
"dpRAPIGateway.dll",,,0x40000003
GX.DLL,,,0x00000012
gapi.dll,,,0x40000003
"device_manager_buttons1.2bp",,,0x40000003
"device_manager_register1.2bp",,,0x40000003
"device_manager1.2bp",,,0x40000003
"device_manager2.2bp",,,0x40000003
"screen_navigator1.2bp",,,0x40000003
"screen_navigator2.2bp",,,0x40000003
[DestinationDirs]
CopierVersDir00 = 0, %InstallDir%\Help
CopierVersDir02 = 0, %InstallDir%
CopierVersDir03 = 0, %CE2%
RaccourcisCourts = 0, %InstallDir%
Raccourci02 = 0, %CE2%\Help ; Répertoire (ID Dir 007) = \Windows\Help
[Strings]
Provider = Aurorisoft
[RaccourcisCourts]
%Appname%, 0, "dpManager.exe", %CE11% ; (\Windows\Start Menu\Programs)
dpTCPGateway.lnk, 0, "dpTCPGateway.exe", %CE4% ; (\Windows\StartUp)
[Raccourci02],
%Appname%, 0, "%AppName%.htm" ; Répertoire (ID Dir 007) : %CE2%\Help (\Windows\Help)
fards said:
either post up the cab you installed or have a look at it yourself in msceinf that will give you some clues as to what it installed.
What was the option with resolution you took??
OH and I've just had a look at the prog and it's designed for 2003! that's like complaining that os/2 messes up vista..
I think you may be stuck with a hard reset, and a lesson to not do it again...
In future MyMobiler, it's not fast but you can do screengrabs through activesynce/wdm
Click to expand...
Click to collapse
LOL I agree with your quote about os/2, I didnt realise it was 2003 til after DUH!
"Post up the cab or have a look yourself" - It was installed from a pc .exe file via Activesync, is it possible to extract the CAB from this? If so that would be great but I thought that was the point of an exe installer? Im considering a hard reset now, had the phone six weeks still on stock ROM and no hard resets as had no issues whatsoever. Oh well, live & learn. At least I have the luxury of being able to plug the phone in and copy all data off before wiping
EDIT: Just seen your readout thanks for that. What do you mean "a Gapi.dll thats unlikely to have been removed"? I see very few registry entries (if any) so its likely to be a replaced interface related file (like you suggested). Maybe I installed the smartphone version by mistake? (with no touchscreen support?) I am sorry I do understand what all this means and where to find these files etc, but I dont know what to start looking for to do with my problem. should i just start replacing these files with backed up versions? any hints of where to start would be appreciated, It would be interesting to understand why this program did this rather than to just hard reset it and cover my tracks
I suggest hard reset because I will not trust anymore in my phone registry after a disaster like this even if fixed. just my humble opinion but something bad could silently remains and comes up in the worst moment or at next customization driving you crazy
for the future I suggest a periodic full backup before try a new program, and for screens you can try mymobiler
Annoyed by the fact that Search Companion doesn't return the text string you specified even though you indicated All Files & Folders?
This handy script allows you to extend the PersistenHandlers to include other extension. In my case, I added: provxml and rgu. Copy and paste the following code into notepad and save as a .VB script (ex: xp_persisthandler.vbs). Execute the script and specifiy the file extension you wish to include in Search Companion.
Code:
'Add files to Search for files containing text
'© Doug Knox - 11/04/2001
'This code may be freely distributed/modified
Option Explicit
On Error Resume Next
Dim WshShell, N, P, P1, P2, ItemType, MyBox, FileType, Title, Prompt, RegKey, X
Set WSHShell = WScript.CreateObject("WScript.Shell")
P = "HKEY_CLASSES_ROOT\."
P1 = "\PersistentHandler\"
N = "{5e941d80-bf96-11cd-b579-08002b30bfeb}"
Prompt = "Enter the file extension for the file you wish to add." & vbCR
Prompt = Prompt & "Examples: txt, adm, inf"
Title = "Enter File Type"
FileType = InputBox(Prompt, Title, "")
If FileType = "" Then
MyBox = MsgBox("You left the box blank.",4096,"Error.")
Set WshShell = Nothing
WScript.Quit
Else
'Check to see if there is already a PersistentHandler default value
RegKey = P & FileType & P1
X = WshShell.RegRead(RegKey)
End If
'MyBox = MsgBox("The PersistentHandler value for ." & FileType & " is: " & X,4096,"Results")
'Set WshShell = Nothing
If X = N Then
MyBox = MsgBox("This value already exists, and is correct." & vbCR & "No Changes were made.", 4096, "No Changes")
Set WshShell = Nothing
WScript.Quit
End If
If X <> N AND X <> "" Then
MyBox = MsgBox("The Persistent Handler value already exists and is different." & vbCR & "No changes were made.", 4096, "No Changes")
Set WshShell = Nothing
WScript.Quit
End If
If Err.Number <> 0 Then
WshShell.RegWrite RegKey, N
MyBox = MsgBox("The Registry has been updated." & vbCR & "Restart your computer.", 4096, "Done")
Set WshShell = Nothing
End If
Hi
How do I pause the rom building process in EVK? I've tried adding "PAUSE" in kitchen_build_rom.bat, and it shows "Press any key to continue" in the EVK interface but it just continues regardless of whether I press any key or not. I want to pause before imgfsfromdump.exe runs.
Any help would be appreciated,
Thanks
Is this for your Initflashfiles.dat via Mortscript project? I'm guessing you want the kitchen to pause and wait while your external script runs. If it's another batch file, use the CALL command. Otherwise if it's an executable, use START /wait. Either one will pause execution until the called script/program completes. As a test, try inserting "START /WAIT NOTEPAD.EXE" after the last SET statement in kitchen_build_rom.bat and then build a rom - after platformrebuilder.exe finishes, Notepad will open and the kitchen will pause. Close notepad, and the kitchen resumes.
A couple of weeks ago I wrote a quick hack that does this - it's a batch file that auto-generates a .provxml and drops it in the \dump folder before ImgfsFromDump runs. I've attached it here if you'd like to take a look. (Check the comments in AutoVersion.bat)
computhug said:
Is this for your Initflashfiles.dat via Mortscript project? I'm guessing you want the kitchen to pause and wait while your external script runs. If it's another batch file, use the CALL command. Otherwise if it's an executable, use START /wait. Either one will pause execution until the called script/program completes. As a test, try inserting "START /WAIT NOTEPAD.EXE" after the last SET statement in kitchen_build_rom.bat and then build a rom - after platformrebuilder.exe finishes, Notepad will open and the kitchen will pause. Close notepad, and the kitchen resumes.
A couple of weeks ago I wrote a quick hack that does this - it's a batch file that auto-generates a .provxml and drops it in the \dump folder before ImgfsFromDump runs. I've attached it here if you'd like to take a look. (Check the comments in AutoVersion.bat)
Click to expand...
Click to collapse
Awesome! That's exactly what I needed! And yes it is for that project, it doesn't seem to be getting much response though, but I'm still going hehe.
I am using this (I also use a naked initialflashes.dat and cook a provxml file with mortscript in the desktop computer and "inject" it to the rom):
paste it into a file called Start-Wait.cmd. simply include in your kicthen rom bat a line like "Start-Wait yourmortscript.mscr" and the kitchen rom bat will stop until your mscr concludes.
edit: I use this because the call function did not work well for me sometimes and sometimes icons and provxml files did not much (I build the provxml and also copy and zip files...)
Code:
@ECHO OFF
:: NAME
:: Start-Wait.cmd
::
:: SYNOPSIS
:: Suspend script activity as long as the specified program and its sub
:: process are running
::
:: SYNTAX
:: Start-Wait Program SubProcess
:: Start-Wait "Program Arg1 [...]" SubProcess
::
:: DETAILED DESCRIPTION
:: The Start-Wait.cmd batch file suspends script activity as long as the
:: specified program and its sub process are running. You can use it in a
:: batch script to wait for a setup program to complete completely.
::
:: AUTHOR
:: Frank-Peter Schultze
::
:: DATE
:: 17:02 04.04.2008
SETLOCAL ENABLEDELAYEDEXPANSION
IF "%1"=="/?" (
TYPE "%~f0" | findstr.exe /R "^:: "
GOTO :END
)
SET Program=%~1
IF NOT DEFINED Program (
ECHO %~n0 : Cannot bind argument to parameter 'Program' because it is empty.
GOTO :END
)
SET SubProcess=%2
IF NOT DEFINED SubProcess (
ECHO %~n0 : Cannot bind argument to parameter 'SubProcess' because it is empty.
GOTO :END
)
SET IGNOREPIDS=
::----- First, get all PIDs that we don't want to check later by mistake
FOR /F "tokens=2 skip=3" %%i IN (
'tasklist.exe /FI "USERNAME eq %USERDOMAIN%\%USERNAME%" /FI "IMAGENAME eq %SubProcess%"'
) DO (
SET IGNOREPIDS=!IGNOREPIDS! %%~i
)
::----- Start the program and wait for its termination
START /WAIT %Program%
::----- Now, get the PID of the sub process that we need to check
FOR /F "tokens=2 skip=3" %%i IN (
'tasklist.exe /FI "USERNAME eq %USERDOMAIN%\%USERNAME%" /FI "IMAGENAME eq %SubProcess%"'
) DO (
ECHO #%IGNOREPIDS%# | find.exe "%%~i" >NUL || CALL :TASKWAIT %SubProcess% %%~i
)
:END
ENDLOCAL
EXIT /B
::
:TASKWAIT
::
ECHO Sleep 5s . . .
ping.exe -n 6 -w 1000 127.0.0.1 >NUL
tasklist.exe /FI "USERNAME eq %USERDOMAIN%\%USERNAME%" /FI "IMAGENAME eq %1" /FI "PID eq %2" 2>NUL | find.exe "%1" >NUL && GOTO %0
ECHO %1 stopped.
EXIT /B
Your project for mortscript and initflashfiles is interesting... but is over my head... once you get it working let us know in normal language what does it do.
Keep it up
Hi,
I want to get out via a MortScript-routine the folder name of the internal flashdrive, e.x. \My Flash Drive. I wrote a routine that looks for all installed drives that are FAT/EXFAT formatted, but that down't help:
Code:
#TestDrivesFATFS.mscr
###########################################################################
#Searches all installed FATFS/exFAT drives except the one this script resides,
#because only those drives MioPocket can be installed on
###########################################################################
#
#Each filesystem is described in registry as
# [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\<MyProfileName>]
# "DefaultFileSystem"="<MyFileSystem>"
# "Folder"="<MyFolderName>"
Local()
#Obligatory coding as to be found in some MioPocket's scripts
Drive = "\" & Part(SystemPath("ScriptPath"), "\", 2)
#Test starts here
ExcludeDrive = Substr(Drive, 2)
DrivesFATFS = Array()
RegKey = "System\StorageManager\Profiles"
Idx = 0
#Walk the chain of profiles
ForEach variable In RegSubkeys("HKLM", RegKey)
ForEach value, contents In Regvalues("HKLM", RegKey & "\" & variable)
#Some newer CE devices know of exFAT format
If((value eq "DefaultFileSystem") AND (contents ne "FATFS") AND (contents ne "EXFAT"))
Break
EndIf
If((value eq "Folder") AND (contents ne ExcludeDrive))
Idx += 1
DrivesFATFS[Idx] = "\" & contents
EndIf
EndForEach
EndForEach
If(Debug)
ForEach drv in Array(DrivesFATFS)
Message(drv)
EndForeach
EndIf
Any help appriciated. TIA
It can be found in the Registry (at least in my WinMo 6.1... don't know if it's the same way in CE releases or other brands). Look in "HKLM\System\StorageManager\INAND" (or MMC instead of INAND...). The drive name is the "folder" string value).
Thanks for your reply. What I'm searching for is a hint how I can determine per software (MortScript), already having got ( with a piece of code as postet above ) a list of drive-names, which of those is the Storage Card and which is the Flash Drive, not by default knowing of the drive-names, because those differ from device to device.
Running the code above on my device (Medion PNA with CE 5) returns among others the names \Storage Card and/or \My Flash Disk, but this doesn't really help me a lot.
Thanks to all for your interest.
=> SOLVED IT BY MYSELF!
If you are interested in how I did it, here the code to detect the name of SD(HC), MMC, etc card:
Code:
ErrorLevel("warn")
sd = @FindSDDrives()
ForEach drv in Array(sd)
Message(drv)
EndForEach
Sub FindSDDrives()
Local()
SDProfiles = Array()
SDDrives = Array()
SDDrives2 = Array()
#All CE filesystem profiles related to Storage Cards are listet under
#[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Class\******]
#E.x. MMC_Class, SDMemory_Class
idx = 0
RegKey = "Drivers\SDCARD\ClientDrivers\Class"
ForEach sdcard In RegSubkeys("HKLM", RegKey)
ForEach value, contents In RegValues("HKLM", RegKey & "\" & sdcard)
If(value eq "Profile")
idx += 1
SDProfiles[idx] = contents
EndIf
EndForEach
EndForEach
#Each CE filesystem is described in registry as
# [HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\<MyProfileName>]
# "DefaultFileSystem"="<MyFileSystem>"
# "Folder"="<MyFolderName>"
# "Name"="<MyName>
idx = 0
RegKey = "System\StorageManager\Profiles"
ForEach profile in Array(SDProfiles)
ForEach value, contents In RegValues("HKLM", RegKey & "\" & profile)
If(value eq "Folder")
idx += 1
SDDrives[idx] = "\" & contents
EndIf
EndForeach
EndForEach
Clear(SDProfiles)
#Remove duplicates
idx = 0
idx2 = 0
prevdrv = ""
ForEach drv in Array(SDDrives)
idx += 1
If(SDDrives[idx] ne prevdrv)
idx2 += 1
prevdrv = SDDrives[idx]
SDDrives2[idx2] = prevdrv
EndIf
EndForEach
Clear(SDDrives)
Return(SDDrives2)
EndSub
Thanks
jwoegerbauer said:
Thanks to all for your interest.
=> SOLVED IT BY MYSELF!
If you are interested in how I did it, here the code to detect the name of SD(HC), MMC, etc card:
Click to expand...
Click to collapse
Usefull for XDA_UC build in like EnergyROMs. Don't try the German ROMs because of copying files from "Storage Crad" vs. "Speicherkarte" . Now thats solved.
Thanks.