Revision: 201007 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 12 Mar 2010 15:42:35 +0200
branchRCL_3
changeset 12 38571fd2a704
parent 5 42814f902fe6
child 13 0f07cd1b5772
Revision: 201007 Kit: 201008
calendarui/application/group/Calendar.mmp
calendarui/application/group/iconlist.txt
calendarui/commonutils/bwins/calencommonutilsu.def
calendarui/commonutils/eabi/calencommonutilsu.def
calendarui/commonutils/group/commonutils.mmp
calendarui/commonutils/inc/calenattachmentinfo.h
calendarui/commonutils/inc/calenattachmentmodel.h
calendarui/commonutils/src/calenattachmentinfo.cpp
calendarui/commonutils/src/calenattachmentmodel.cpp
calendarui/commonutils/src/calenattachmentutils.cpp
calendarui/commonutils/src/calenentryutil.cpp
calendarui/commonutils/src/calenviewutils.cpp
calendarui/controller/data/calencommonui.rss
calendarui/controller/src/calenalarmmanager.cpp
calendarui/controller/src/calenattachmentui.cpp
calendarui/controller/src/calencontroller.cpp
calendarui/controller/src/caleneditui.cpp
calendarui/controller/src/calennotifier.cpp
calendarui/controller/src/calensendingstate.cpp
calendarui/controller/src/calenviewattachmentsdialog.cpp
calendarui/editors/data/CalenDefaultEditorsData.rss
calendarui/editors/inc/CalenDescription.h
calendarui/editors/inc/calenunifiededitor.h
calendarui/editors/src/CalenDescription.cpp
calendarui/editors/src/calenunifiededitor.cpp
calendarui/group/bld.inf
calendarui/loc/calendar.loc
calendarui/multicaluidialog/src/multicaluidialogimpl.cpp
calendarui/regionalplugins/Thai/src/CalenThaiPlugin.cpp
calendarui/regionalplugins/lunarVietnamese/src/calenlunarvietnameseplugin.cpp
calendarui/regionalplugins/lunarchinese/src/CalenLunarChinesePlugin.cpp
calendarui/rom/CalenSvr.iby
calendarui/rom/CalenSvrResources.iby
calendarui/settings/settingsui/group/calensettingsui.mmp
calendarui/settings/settingsui/src/CalenFileListSettingItem.cpp
calendarui/settings/settingsui/src/calensettingsuicontainer.cpp
calendarui/views/inc/calencontainer.h
calendarui/views/inc/calenmonthcontainer.h
calendarui/views/inc/calenweekcontainer.h
calendarui/views/src/calencontainer.cpp
calendarui/views/src/calencontainerlayoutmanager.cpp
calendarui/views/src/calendaycontainer.cpp
calendarui/views/src/calenmonthcontainer.cpp
calendarui/views/src/calentodoview.cpp
calendarui/views/src/calenweekcontainer.cpp
clock2/clockui/uilayer/clockalarmeditor/src/clockalarmeditorimpl.cpp
clock2/conf/clockapp.confml
notepad/notepad1/LibData/NpdLib.rss
organizer_plat/calendar_common_utils_api/tsrc/group/rndcert.der
organizer_plat/calendar_common_utils_api/tsrc/group/rndcert.key
organizer_plat/calendar_custamization_api/inc/calennotificationhandler.h
organizer_plat/calendar_settings_keys_api/inc/CalendarInternalCRKeys.h
organizer_plat/meeting_request_mailbox_utilities_api/tsrc/stiff/group/rndcert.der
organizer_plat/meeting_request_mailbox_utilities_api/tsrc/stiff/group/rndcert.key
pimappservices/calendar/bwins/caltestlibu.def
pimappservices/calendar/client/src/calattachment.cpp
pimappservices/calendar/client/src/calcalendarinfoimpl.cpp
pimappservices/calendar/eabi/caltestlibu.def
pimappservices/calendar/server/inc/agsentrymodel.h
pimappservices/calendar/server/src/agsasyncdelete.cpp
pimappservices/calendar/server/src/agsentrymodel.cpp
pimappservices/calendar/server/src/agsfilemanager.cpp
pimappservices/calendar/server/src/agsmain.cpp
pimappservices/calendar/shared/src/agmcalendartime.cpp
pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/BLD.INF
pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/TestCalApiPolicing.MMP
pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/template/TestCalApiPolicing.MMP
pimappservices/calendar/tsrc/caltestlib.cpp
pimappservices/calendar/tsrc/caltestlib.h
pimappservices/calendar/tsrc/interop/group/alldayevents.mmp
pimappservices/calendar/tsrc/tcal_dataexchange.mmp
pimappservices/calendarvcalplugin/Inc/agnversit.h
pimappservices/calendarvcalplugin/group/agnversit.mmp
pimappsupport/chinesecalendaralg/bwins/CCONORIGINALU.DEF
pimappsupport/chinesecalendaralg/calcontablesrc/CalconTable.cpp
pimappsupport/chinesecalendaralg/calcontablesrc/CalconTable.h
pimappsupport/chinesecalendaralg/eabi/CConOriginalU.DEF
pimappsupport/chinesecalendaralg/group/1028702c.rss
pimappsupport/chinesecalendaralg/group/CalconTest.iby
pimappsupport/chinesecalendaralg/group/app-services_chinesecalendaralgorithm.mrp
pimappsupport/chinesecalendaralg/group/bld.inf
pimappsupport/chinesecalendaralg/group/calcontable.mmp
pimappsupport/chinesecalendaralg/group/cconoriginal.mmp
pimappsupport/chinesecalendaralg/group/cconplugin.iby
pimappsupport/chinesecalendaralg/group/cconplugin.mmp
pimappsupport/chinesecalendaralg/originalinc/calconv.h
pimappsupport/chinesecalendaralg/originalinc/calconvArithmeticalCal.h
pimappsupport/chinesecalendaralg/originalinc/calconvAstronomicalCal.h
pimappsupport/chinesecalendaralg/originalinc/calconvcalendar.h
pimappsupport/chinesecalendaralg/originalsrc/ArithmeticalCal.cpp
pimappsupport/chinesecalendaralg/originalsrc/ArithmeticalDate.cpp
pimappsupport/chinesecalendaralg/originalsrc/AstronomicalCal.cpp
pimappsupport/chinesecalendaralg/originalsrc/CConmain.cpp
pimappsupport/chinesecalendaralg/originalsrc/Calendar.cpp
pimappsupport/chinesecalendaralg/originalsrc/Chinese.cpp
pimappsupport/chinesecalendaralg/originalsrc/ChineseDate.cpp
pimappsupport/chinesecalendaralg/originalsrc/Gregorian.cpp
pimappsupport/chinesecalendaralg/originaltsrc/ConvertDates.cpp
pimappsupport/chinesecalendaralg/originaltsrc/ConvertDates.h
pimappsupport/chinesecalendaralg/originaltsrc/Input_2.txt
pimappsupport/chinesecalendaralg/originaltsrc/TCCnMain.cpp
pimappsupport/chinesecalendaralg/originaltsrc/TCCnoriginal.mmp
pimappsupport/chinesecalendaralg/originaltsrc/input.txt
pimappsupport/chinesecalendaralg/pluginsrc/arithmeticaldate.h
pimappsupport/chinesecalendaralg/pluginsrc/calcondata.cpp
pimappsupport/chinesecalendaralg/pluginsrc/calcondata.h
pimappsupport/chinesecalendaralg/pluginsrc/calendar.cpp
pimappsupport/chinesecalendaralg/pluginsrc/calendar.h
pimappsupport/chinesecalendaralg/pluginsrc/cconplugin.cpp
pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendar.cpp
pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendar.h
pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendarconverterimpl.cpp
pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendarconverterimpl.h
pimappsupport/chinesecalendaralg/pluginsrc/gregoriancalendar.cpp
pimappsupport/chinesecalendaralg/pluginsrc/gregoriancalendar.h
pimappsupport/chinesecalendaralg/pluginsrc/table-587-2100/calcondata.cpp
pimappsupport/chinesecalendaralg/pluginsrc/table-587-2100/calcondata.h
pimappsupport/chinesecalendaralg/pluginsrc/table1900-2100/calcondata.cpp
pimappsupport/chinesecalendaralg/pluginsrc/table1900-2100/calcondata.h
pimappsupport/chinesecalendaralg/pluginsrc/table1980-2100/calcondata.cpp
pimappsupport/chinesecalendaralg/pluginsrc/table1980-2100/calcondata.h
pimappsupport/chinesecalendaralg/test/group/bld.inf
pimappsupport/chinesecalendaralg/test/group/calcontable.mmp
pimappsupport/chinesecalendaralg/test/group/calcontest.iby
pimappsupport/chinesecalendaralg/test/group/cconoriginal.mmp
pimappsupport/chinesecalendaralg/tsrc/ConvertDates.cpp
pimappsupport/chinesecalendaralg/tsrc/ConvertDates.h
pimappsupport/chinesecalendaralg/tsrc/Input2.txt
pimappsupport/chinesecalendaralg/tsrc/Input_2.txt
pimappsupport/chinesecalendaralg/tsrc/TCCn.mmp
pimappsupport/chinesecalendaralg/tsrc/TCCnMain.cpp
pimappsupport/chinesecalendaralg/tsrc/input.txt
pimappsupport/chinesecalendaralg/tsrc/input1.txt
pimappsupport/chinesecalendaralg/tsrc/output1REFERENCE.txt
pimappsupport/chinesecalendaralg/tsrc/output2REFERENCE.txt
pimappsupport/vcardandvcal/Ticket/VTicket.MMP
pimappsupport/vcardandvcal/group/BLD.INF
--- a/calendarui/application/group/Calendar.mmp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/application/group/Calendar.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -91,8 +91,7 @@
 //   NetworkServices // For sending vCalendars?
 //   ProtServ // For connecting Agenda Server? 
 //   DRM // Calendar alarm tones are DRM protected 
-CAPABILITY      CAP_APPLICATION \
-                NetworkControl AllFiles
+CAPABILITY      CAP_APPLICATION
 
 VENDORID        VID_DEFAULT
 
--- a/calendarui/application/group/iconlist.txt	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/application/group/iconlist.txt	Fri Mar 12 15:42:35 2010 +0200
@@ -29,4 +29,6 @@
 -c8,8  qgn_indi_cdr_todo_undone_missed_new
 -c8,8  qgn_indi_tb_cale_alarm_dismiss
 -c8,8  qgn_indi_tb_cale_alarm_dismiss_all
--c8,8  qgn_stat_sync.svg
\ No newline at end of file
+-c8,8  qgn_stat_sync.svg
+-c8,8  qgn_indi_cale_tb_today.svg
+-c8,8  qgn_indi_cale_tb_changeview.svg
--- a/calendarui/commonutils/bwins/calencommonutilsu.def	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/commonutils/bwins/calencommonutilsu.def	Fri Mar 12 15:42:35 2010 +0200
@@ -29,7 +29,7 @@
 	?SizeString@CCalenAttachmentInfo@@QBEPAVHBufC16@@XZ @ 28 NONAME ; class HBufC16 * CCalenAttachmentInfo::SizeString(void) const
 	?RemoveEntriesEndingAtMidnightL@CalenAgendaUtils@@SAXAAV?$RPointerArray@VCCalInstance@@@@ABVTTime@@@Z @ 29 NONAME ; void CalenAgendaUtils::RemoveEntriesEndingAtMidnightL(class RPointerArray<class CCalInstance> &, class TTime const &)
 	?Status@CCalenEntryUtil@@QBEABW4TStatus@CCalEntry@@XZ @ 30 NONAME ; enum CCalEntry::TStatus const & CCalenEntryUtil::Status(void) const
-	?AddAttachmentL@CCalenAttachmentModel@@QAEXABVTDesC16@@0HHABVTDataType@@@Z @ 31 NONAME ; void CCalenAttachmentModel::AddAttachmentL(class TDesC16 const &, class TDesC16 const &, int, int, class TDataType const &)
+	?AddAttachmentL@CCalenAttachmentModel@@QAEXABVTDesC16@@0HHABVTDataType@@AAVRFile@@@Z @ 31 NONAME ; void CCalenAttachmentModel::AddAttachmentL(class TDesC16 const &, class TDesC16 const &, int, int, class TDataType const &, class RFile &)
 	?OnSameDay@CalenDateUtils@@SAHABVTTime@@0@Z @ 32 NONAME ; int CalenDateUtils::OnSameDay(class TTime const &, class TTime const &)
 	?OpenAttachmentL@CCalenAttachmentUtils@@SAXAAVRFile@@AAVMAknServerAppExitObserver@@@Z @ 33 NONAME ; void CCalenAttachmentUtils::OpenAttachmentL(class RFile &, class MAknServerAppExitObserver &)
 	?LoadResourcesL@CCalenAttachmentModel@@QAEXXZ @ 34 NONAME ; void CCalenAttachmentModel::LoadResourcesL(void)
--- a/calendarui/commonutils/eabi/calencommonutilsu.def	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/commonutils/eabi/calencommonutilsu.def	Fri Mar 12 15:42:35 2010 +0200
@@ -84,7 +84,7 @@
 	_ZN20CCalenAttachmentInfo4NewLER21CCalenAttachmentModelRK4TBufILi256EES5_iiRK9TDataTypeNS_25TCalenAttachmentStoreTypeE @ 83 NONAME
 	_ZN21CCalenAttachmentModel11SetObserverEP29MCalenAttachmentModelObserver @ 84 NONAME
 	_ZN21CCalenAttachmentModel14AddAttachmentLERK7TDesC16S2_ @ 85 NONAME
-	_ZN21CCalenAttachmentModel14AddAttachmentLERK7TDesC16S2_iiRK9TDataType @ 86 NONAME
+	_ZN21CCalenAttachmentModel14AddAttachmentLERK7TDesC16S2_iiRK9TDataTypeR5RFile @ 86 NONAME
 	_ZN21CCalenAttachmentModel14BitmapForFileLER20CCalenAttachmentInfo @ 87 NONAME
 	_ZN21CCalenAttachmentModel14LoadResourcesLEv @ 88 NONAME
 	_ZN21CCalenAttachmentModel16DeleteAttachmentEi @ 89 NONAME
--- a/calendarui/commonutils/group/commonutils.mmp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/commonutils/group/commonutils.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -99,8 +99,7 @@
 LIBRARY		aknlayout2scalable.lib
 LIBRARY		gdi.lib
 
-CAPABILITY      CAP_GENERAL_DLL \
-                DRM
+CAPABILITY      CAP_GENERAL_DLL
 
 VENDORID        VID_DEFAULT
 
--- a/calendarui/commonutils/inc/calenattachmentinfo.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/commonutils/inc/calenattachmentinfo.h	Fri Mar 12 15:42:35 2010 +0200
@@ -167,7 +167,29 @@
          * Performs icon updating.
          */
         void DoUpdateIconL();
-    
+        
+        /**
+         * Sets the file handle.
+         * @param aFile File handle to be set
+         * 
+         */
+        void SetFileHandle(RFile& aFile);
+        
+        /**
+         * Gets the file handle.
+         * @param File handle.
+         * 
+         */
+        void FileHandle( RFile& aFile );
+        
+        /**
+         * Check whether the file handle is set or not.
+         * @return The isSetFileHandle
+         * 
+         */
+        TBool IsFileHandleSet();
+        
+
     private:
         
         CCalenAttachmentModel& iAttachmentModel;
@@ -178,6 +200,8 @@
         CGulIcon* iIcon;
         TBool iIsFetched;
         TCalenAttachmentStoreType iAttachmentStoreType;
+		RFile iFile;
+        TBool isSetFileHandle;
     };
 
 #endif // CALENATTACHMENTINFO_H
--- a/calendarui/commonutils/inc/calenattachmentmodel.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/commonutils/inc/calenattachmentmodel.h	Fri Mar 12 15:42:35 2010 +0200
@@ -133,7 +133,7 @@
          * @param aDataType mime type of the attachment
          */
         IMPORT_C void AddAttachmentL( const TDesC& aFullName, const TDesC& aSystemFileName, TInt aSize,
-                   TBool aFetched, const TDataType& aDataType );
+                   TBool aFetched, const TDataType& aDataType, RFile &aFile);
         
         /**
          * Deletes attachment from internal array. Notifies attachment model
--- a/calendarui/commonutils/src/calenattachmentinfo.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/commonutils/src/calenattachmentinfo.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -67,6 +67,10 @@
     TRACE_ENTRY_POINT;
     TRACE_EXIT_POINT;
     delete iIcon;
+    if(isSetFileHandle)
+        {
+        iFile.Close();
+        }
     }
 
 // ----------------------------------------------------------------------------
@@ -292,6 +296,46 @@
     return iSystemFileName;
     }
 
+// ----------------------------------------------------------------------------
+// CCalenAttachmentInfo::SetFileHandle
+//
+//Sets the file handle
+// ----------------------------------------------------------------------------
+//
+void CCalenAttachmentInfo::SetFileHandle(RFile& aFile)
+    {
+    TRACE_ENTRY_POINT;
+    iFile.Duplicate(aFile);
+    isSetFileHandle = ETrue;
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenAttachmentInfo::FileHandle
+//
+//Gets the file handle.
+// ----------------------------------------------------------------------------
+//
+void CCalenAttachmentInfo::FileHandle( RFile& aFile )
+    {
+    TRACE_ENTRY_POINT;
+
+    aFile.Duplicate( iFile );
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenAttachmentInfo::IsFileHandleSet
+// ----------------------------------------------------------------------------
+//
+TBool CCalenAttachmentInfo::IsFileHandleSet()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    
+    return isSetFileHandle;
+    }
+
 //end of file
 
 
--- a/calendarui/commonutils/src/calenattachmentmodel.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/commonutils/src/calenattachmentmodel.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -281,7 +281,8 @@
                                                     const TDesC& aSystemFileName,
                                                     TInt aSize,
                                                     TBool aFetched,
-                                                    const TDataType& aDataType )
+                                                    const TDataType& aDataType,
+                                                    RFile& aFile)
 	{
 	
 	TRACE_ENTRY_POINT;
@@ -294,6 +295,7 @@
 	                aDataType, 
 	                CCalenAttachmentInfo::ECalenAttachmentFetchedFromEntry );
 	CleanupStack::PushL(info);
+	info->SetFileHandle( aFile );
 	iAttachInfoArray.AppendL(info);
 	CleanupStack::Pop();
 	isAttachmentModelCleared = EFalse;
@@ -341,13 +343,16 @@
 		// Get the attachment file name
 		TFileName fileName( attachmentInfo->FileName() );
 		
+		TParsePtrC fileNameParser(fileName);
+		TPtrC parsedFileName = fileNameParser.NameAndExt();
+		
 		// Confirm if needs to be deleted.
 		CAknQueryDialog* confirmQuery = NULL;
 		confirmQuery = CAknQueryDialog::NewL();
 		HBufC* stringBuf = NULL;
 		stringBuf = StringLoader::LoadLC( 
 		                                  R_QTN_QUERY_COMMON_CONF_REMOVE, 
-		                                  fileName,
+		                                  parsedFileName,
 		                                  CEikonEnv::Static() );
 		confirmQuery->SetPromptL( *stringBuf );
 		if( EAknSoftkeyYes != 
@@ -482,17 +487,24 @@
     
     RFile file;
     CCalenAttachmentInfo* attachmentInfo = iAttachInfoArray[aIndex];
-    TParsePtrC fileNameParser(attachmentInfo->SystemFileName());
-    CEikonEnv* eikonEnv = CEikonEnv::Static();
-    RFs& fs = eikonEnv->FsSession();
-    User::LeaveIfError(fs.ShareProtected());
-    TInt err = file.Open( fs, attachmentInfo->SystemFileName(), 
-                          EFileRead|EFileShareReadersOnly);
-    if(err == KErrInUse)
+    if( attachmentInfo->IsFileHandleSet() )
+        {
+		attachmentInfo->FileHandle(file);
+        }
+    else
         {
-        file.Close();
-        User::LeaveIfError( file.Open( fs, attachmentInfo->SystemFileName(),
-                            EFileRead|EFileShareReadersOnly) );
+        TParsePtrC fileNameParser(attachmentInfo->SystemFileName());
+        CEikonEnv* eikonEnv = CEikonEnv::Static();
+        RFs& fs = eikonEnv->FsSession();
+        User::LeaveIfError(fs.ShareProtected());
+        TInt err = file.Open( fs, attachmentInfo->SystemFileName(), 
+                              EFileRead|EFileShareReadersOnly);
+        if(err == KErrInUse)
+            {
+            file.Close();
+            User::LeaveIfError( file.Open( fs, attachmentInfo->SystemFileName(),
+                                EFileRead|EFileShareReadersOnly) );
+            }    
         }
     
     TRACE_EXIT_POINT;
@@ -593,7 +605,7 @@
 					fileHandle.Size(fileSize);
 
 					AddAttachmentL( fileName, systemFileName, fileSize,
-					                ETrue, fileMimeType );
+					                ETrue, fileMimeType, fileHandle);
 					CleanupStack::PopAndDestroy(&fileHandle);
 					}
 				}
--- a/calendarui/commonutils/src/calenattachmentutils.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/commonutils/src/calenattachmentutils.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -50,7 +50,7 @@
 const TInt KCalenTextFileNameLength = 20;
 
 _LIT( KTextFilenameExtension, ".txt" );
-_LIT( KCalenUnifiedEditorTempDir, "c:\\data\\caleneditor\\" );
+_LIT( KCalenUnifiedEditorTempDir, "c:\\private\\10005901\\caleneditor\\" );
 _LIT8( KNotePadTextDataType, "text/plain" );
 
 // -----------------------------------------------------------------------------
--- a/calendarui/commonutils/src/calenentryutil.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/commonutils/src/calenentryutil.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -1010,10 +1010,12 @@
     TRACE_ENTRY_POINT;
 
     TBool allDayEvent(EFalse);
+    
+    TTimeIntervalDays differenceInTime = aStopTime.DaysFrom(aStartTime); // fix for AllDayEntry issue
 
     if( aStartTime == CalenDateUtils::BeginningOfDay( aStartTime ) 
             && aStopTime == CalenDateUtils::BeginningOfDay( aStopTime ) 
-            && aStartTime != aStopTime )
+            && aStartTime != aStopTime && differenceInTime.Int() == 1) // fix for AllDayEntry issue
         {
         allDayEvent = ETrue;
         }
--- a/calendarui/commonutils/src/calenviewutils.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/commonutils/src/calenviewutils.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -202,10 +202,11 @@
     
         TTime startLocalTime = startTime.TimeLocalL();
         TTime stopLocalTime = stopTime.TimeLocalL();
+        TTimeIntervalDays differenceInTime = stopLocalTime.DaysFrom(startLocalTime); // fix for AllDayEntry issue
         if( startLocalTime != stopLocalTime && 
                 startLocalTime == CalenDateUtils::BeginningOfDay( startLocalTime ) && 
                 stopLocalTime == CalenDateUtils::BeginningOfDay( stopLocalTime ) && 
-                startLocalTime != stopLocalTime )
+                startLocalTime != stopLocalTime && differenceInTime.Int() == 1 ) // fix for AllDayEntry issue
             {
             allDayEvent = ETrue;
             }
--- a/calendarui/controller/data/calencommonui.rss	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/controller/data/calencommonui.rss	Fri Mar 12 15:42:35 2010 +0200
@@ -467,8 +467,8 @@
                         {
                         helptxt = qtn_cale_tb_today_tooltip;
                         bmpfile = BITMAP_DIR"\\calendar.mif";
-                        bmpid = EMbmCalendarQgn_indi_repeat_add;
-                        bmpmask = EMbmCalendarQgn_indi_repeat_add_mask;
+                        bmpid = EMbmCalendarQgn_indi_cale_tb_today;
+                        bmpmask = EMbmCalendarQgn_indi_cale_tb_today_mask;
                         extension = r_calen_tb_ext_qgn_indi_cale_tb_repeat_add;
                         }
                     };
@@ -482,8 +482,8 @@
                 {
                 helptxt = qtn_cale_tb_change_view_tooltip;
                 bmpFile = BITMAP_DIR"\\calendar.mif";
-                bmpId = EMbmCalendarQgn_indi_cale_tb_right;
-                bmpMask = EMbmCalendarQgn_indi_cale_tb_right_mask ;
+                bmpId = EMbmCalendarQgn_indi_cale_tb_changeview;
+                bmpMask = EMbmCalendarQgn_indi_cale_tb_changeview_mask ;
                 extension = r_calen_tb_ext_qgn_indi_cale_tb_right;
                 items =
                     {
@@ -500,8 +500,8 @@
                                     {
                                     helptxt = "dummy";
                                     bmpfile = BITMAP_DIR"\\calendar.mif";
-                                    bmpid = EMbmCalendarQgn_indi_cale_tb_right;
-                                    bmpmask = EMbmCalendarQgn_indi_cale_tb_right_mask;
+                                    bmpid = EMbmCalendarQgn_indi_cale_tb_changeview;
+                                    bmpmask = EMbmCalendarQgn_indi_cale_tb_changeview_mask;
                                     extension = r_calen_tb_ext_qgn_indi_cale_tb_right;
                                     }
                                 };
@@ -532,8 +532,8 @@
                 {
                 helptxt = qtn_cale_tb_change_view_tooltip;
                 bmpFile = BITMAP_DIR"\\calendar.mif";
-                bmpId = EMbmCalendarQgn_indi_cale_tb_right;
-                bmpMask = EMbmCalendarQgn_indi_cale_tb_right_mask ;
+                bmpId = EMbmCalendarQgn_indi_cale_tb_changeview;
+                bmpMask = EMbmCalendarQgn_indi_cale_tb_changeview_mask ;
                 extension = r_calen_tb_ext_qgn_indi_cale_tb_right;
                 items =
                     {
@@ -550,8 +550,8 @@
                                     {
                                     helptxt = "dummy";
                                     bmpfile = BITMAP_DIR"\\calendar.mif";
-                                    bmpid = EMbmCalendarQgn_indi_cale_tb_right;
-                                    bmpmask = EMbmCalendarQgn_indi_cale_tb_right_mask;
+                                    bmpid = EMbmCalendarQgn_indi_cale_tb_changeview;
+                                    bmpmask = EMbmCalendarQgn_indi_cale_tb_changeview_mask;
                                     extension = r_calen_tb_ext_qgn_indi_cale_tb_right;
                                     }
                                 };
@@ -573,8 +573,8 @@
                         {
                         helptxt = qtn_cale_tb_today_tooltip;
                         bmpfile = BITMAP_DIR"\\calendar.mif";
-                        bmpid = EMbmCalendarQgn_indi_repeat_add;
-                        bmpmask = EMbmCalendarQgn_indi_repeat_add_mask;
+                        bmpid = EMbmCalendarQgn_indi_cale_tb_today;
+                        bmpmask = EMbmCalendarQgn_indi_cale_tb_today_mask;
                         extension = r_calen_tb_ext_qgn_indi_cale_tb_repeat_add;
                         }
                     };
--- a/calendarui/controller/src/calenalarmmanager.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/controller/src/calenalarmmanager.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -885,12 +885,16 @@
     {
     TRACE_ENTRY_POINT;
     
-    for(TInt index=0;index<iMissedAlarmList.Count();index++)
+    for(TInt index=0;index<iMissedAlarmList.Count();)
         {
         if(iMissedAlarmList[index].iInstanceViewed)
             {
             iMissedAlarmList.Remove(index);
             }
+        else
+			{
+        	index++;
+			}
         }
     
     TRACE_EXIT_POINT;
--- a/calendarui/controller/src/calenattachmentui.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/controller/src/calenattachmentui.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -348,12 +348,7 @@
     {
     TRACE_ENTRY_POINT;       
     
-    TAiwVariant sizeLimit( KCalenAttachmentOverhead );
-    TAiwGenericParam sizeLimitParam( EGenericParamMMSSizeLimit, sizeLimit );
-
-    CAiwGenericParamList* paramList = CAiwGenericParamList::NewLC();
-    paramList->AppendL( sizeLimitParam );
-    
+       
     CDesCArrayFlat* files = new( ELeave ) CDesC16ArrayFlat(1);
     CleanupStack::PushL(files);
     
@@ -371,7 +366,7 @@
         {       
         // used for fetching media file and notes 
         fetchOk = CCalenAttachmentUtils::FetchFileL( aFetchType, *files,
-                                        paramList, EFalse, EFalse, this );
+                                        NULL, EFalse, EFalse, this );
     
         
         if(fetchOk && iSelectedCommand == ECalenAddNote)
@@ -379,7 +374,7 @@
             AddAttachmentL(files->MdcaPoint(0));
             }                
         }
-    CleanupStack::PopAndDestroy( 2, paramList );
+    CleanupStack::PopAndDestroy( files );
     
     if(!fetchOk)
         {
@@ -659,15 +654,12 @@
                 if(attachmentInfo->StoreType() == CCalenAttachmentInfo::ECalenNewAttachment)
                     {
                     TParsePtrC fileNameParser(attachmentInfo->SystemFileName());
-                    RFile fileHandle;    
-                    CEikonEnv* eikonEnv = CEikonEnv::Static();
-                    RFs& fs = eikonEnv->FsSession();
-                    User::LeaveIfError(fs.ShareProtected());
+                    RFile fileHandle = iAttachmentModel->GetAttachmentFileL(index);
+                    CleanupClosePushL(fileHandle);
                     TInt aSize;
-                    TInt err = fileHandle.Open(fs, attachmentInfo->SystemFileName(), EFileWrite);
                     TInt error = fileHandle.Size(aSize);
                     HBufC8* data = HBufC8::NewLC(aSize);
-                    TPtr8 fileData = data->Des();
+                    TPtr8 fileData = data->Des();         
                     if (error == KErrNone)
                         {                
                         TInt readingError = fileHandle.Read(fileData,aSize);  
@@ -681,14 +673,11 @@
                             attachment->SetLabelL(fileNameParser.NameAndExt());
                             // sets mime type for the attachment
                             attachment->SetMimeTypeL(attachmentInfo->DataType().Des8());
-                            
-                            CleanupClosePushL(fileHandle);
-                            CleanupStack::PopAndDestroy(&fileHandle);
                             entry->AddAttachmentL(*attachment);
                             CleanupStack::Pop(attachment);
                             }                
                         }
-                    
+                        CleanupStack::PopAndDestroy(&fileHandle);
                     }
                 }
                         
--- a/calendarui/controller/src/calencontroller.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/controller/src/calencontroller.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -299,23 +299,55 @@
 // ----------------------------------------------------------------------------
 //
 CCalenController::~CCalenController()
-    {
+    {    
     TRACE_ENTRY_POINT;
+
+    if(iSystemTimeChangedMsgDelayer)
+        {
+        iSystemTimeChangedMsgDelayer->Cancel();
+        delete iSystemTimeChangedMsgDelayer;
+        iSystemTimeChangedMsgDelayer = NULL;
+        }
     
+    if(iAttachmentData)
+        {
+        delete iAttachmentData;
+        iAttachmentData = NULL;
+        }
+
+    if( iAlarmManager )
+        {
+        delete iAlarmManager;
+        }
+
+    if( iCustomisationManager )
+        {
+        delete iCustomisationManager;
+        }
+
+    if( iViewManager )
+        {
+        delete iViewManager;
+        }
+
+    if ( iSetting )
+        {
+        iSetting->Release();
+        }
+
+    if( iActionUi )
+        {
+        delete iActionUi;
+        }
+
     if ( iServices )
         {
         iServices->Release();
         }
-        
-    delete iActionUi;
-    delete iNotifier;
 
-    delete iViewManager;
-    delete iStateMachine;
-    
-    if ( iSetting )
+    if( iCmdLineLauncher )
         {
-        iSetting->Release();
+        delete iCmdLineLauncher;
         }
 
     if( iGlobalData )
@@ -323,31 +355,22 @@
         iGlobalData->Release();
         }
 
-    Dll::SetTls( NULL );
-
-    delete iCmdLineLauncher;
-    delete iCustomisationManager;
+    if( iNotifier )
+        {
+        delete iNotifier;
+        }
 
-    if( iResourceFileOffset )
-        {
-        CCoeEnv::Static()->DeleteResourceFile( iResourceFileOffset );
-        }
-    //delete iMultipleDbmanager;
-    
-    if(iSystemTimeChangedMsgDelayer)
+    if( iStateMachine )
         {
-        iSystemTimeChangedMsgDelayer->Cancel();
-        delete iSystemTimeChangedMsgDelayer;
-        iSystemTimeChangedMsgDelayer = NULL;
+        delete iStateMachine;
         }
+
+   if( iResourceFileOffset )
+       {
+       CCoeEnv::Static()->DeleteResourceFile( iResourceFileOffset );
+       }
+    Dll::SetTls( NULL );
     
-    delete iAlarmManager;
-    
-    if(iAttachmentData)
-        {
-        delete iAttachmentData;
-        iAttachmentData = NULL;
-        }
     TRACE_EXIT_POINT;
     }
 
--- a/calendarui/controller/src/caleneditui.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/controller/src/caleneditui.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -242,7 +242,7 @@
             // by the user.
             else
                 {
-                iController.BroadcastNotification( ECalenNotifyDialogClosed );
+                iController.BroadcastNotification( ECalenNotifyEntrySendCancel );
                 }
                 
             }
--- a/calendarui/controller/src/calennotifier.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/controller/src/calennotifier.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -71,36 +71,6 @@
     {
     TRACE_ENTRY_POINT;
 
-    // Stop database change notifications.
-    delete iDbChangeNotifier;
-
-    // Stop ECom change notifications
-    delete iEComWatcher;
-
-    // Release the global data
-    if( iGlobalData )
-        {
-        // stop listening for calendar file change notifications
-        iGlobalData->CalSessionL().StopFileChangeNotification();
-        iGlobalData->Release();
-        }
-
-    if( iSetting )
-        {
-        iSetting->Release();
-        }
-
-    // Stop environment change notifications
-    if( iEnvChangeNotifier )
-        {
-        iEnvChangeNotifier->Cancel();
-        delete iEnvChangeNotifier;
-        }
-
-    // Stop settings change notifications
-    delete iCenRepChangeNotifier;
-    delete iRepository;
-
     // Reset the handler array.
     // Before we reset , close hashset for each handler
     for(TInt i = 0 ; i < iHandlers.Count() ; i++)
@@ -111,13 +81,65 @@
     iHandlers.Reset();
     iBroadcastQueue.Reset();
 
-	
-	
-	iAsyncCallback->Cancel();
-	delete iAsyncCallback;
-	
-	delete iFilnameDeleted;
-	
+    if( iAsyncCallback )
+        {
+        iAsyncCallback->Cancel();
+        delete iAsyncCallback;
+        iAsyncCallback = NULL;
+        }
+    
+    if( iFilnameDeleted )
+        {
+        delete iFilnameDeleted;
+        iFilnameDeleted = NULL;
+        }
+    
+    // Stop ECom change notifications
+    if( iEComWatcher )
+        {
+        delete iEComWatcher;
+        iEComWatcher = NULL;
+        }
+
+    // Stop database change notifications.
+    if( iDbChangeNotifier )
+        {
+        delete iDbChangeNotifier;
+        iDbChangeNotifier = NULL;
+        }
+    
+    // Stop settings change notifications
+    if( iCenRepChangeNotifier )
+        {
+        delete iCenRepChangeNotifier;
+        iCenRepChangeNotifier = NULL;
+        }
+    
+    if( iRepository )
+        {
+        delete iRepository;
+        iRepository = NULL;
+        }
+    
+    // Stop environment change notifications
+    if( iEnvChangeNotifier )
+        {
+        iEnvChangeNotifier->Cancel();
+        delete iEnvChangeNotifier;
+        }
+    
+    if( iSetting )
+        {
+        iSetting->Release();
+        }
+    
+    // Release the global data
+    if( iGlobalData )
+        {
+        // stop listening for calendar file change notifications
+        iGlobalData->CalSessionL().StopFileChangeNotification();
+        iGlobalData->Release();
+        }
 	TRACE_EXIT_POINT;
 	}
 
--- a/calendarui/controller/src/calensendingstate.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/controller/src/calensendingstate.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -120,6 +120,7 @@
 
     switch( aNotification )
         {
+        case ECalenNotifyEntrySendCancel:
         case ECalenNotifyDialogClosed:  // issued when send method query dialog is cancelled
         	{
         	// FIXME Should have a ECalenNotifyEntrySent?
--- a/calendarui/controller/src/calenviewattachmentsdialog.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/controller/src/calenviewattachmentsdialog.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -251,7 +251,9 @@
 
                 TDataType datatype( attInfo.DataType() );
                 RFile file = iAttachmentModel.GetAttachmentFileL( index );
-                OpenAttachmentViewerL(file, *this);                
+                CleanupClosePushL(file);
+                OpenAttachmentViewerL(file, *this);
+                CleanupStack::PopAndDestroy(&file);
                 }                                
             }
         break;
@@ -1084,50 +1086,32 @@
 // Opens a particular attachment
 // -----------------------------------------------------------------------------
 //
-void CCalenViewAttachmentsDialog::OpenAttachmentViewerL(RFile& file, MAknServerAppExitObserver& /*aExitObserver*/)
+void CCalenViewAttachmentsDialog::OpenAttachmentViewerL(RFile& aFile, MAknServerAppExitObserver& /*aExitObserver*/)
     {
     TRACE_ENTRY_POINT;
     
     TBuf<250> fileName;
-    file.FullName(fileName);
-    TDataType datatype( CCalenAttachmentUtils::GetMimeTypeL(fileName) );
+    aFile.FullName(fileName);
+    TDataType datatype( CCalenAttachmentUtils::GetMimeType(aFile) );
     
     TInt ret = KErrNone;
     
-    file.Close();
-    RFs& fs = CEikonEnv::Static()->FsSession();
-                    
-    //open the file, before giving it to Notepad.
-    TInt err1 = file.Open( fs, fileName, EFileRead | EFileShareReadersOnly );
-    CleanupClosePushL( file );        
-    
     if(datatype == KNotePadTextDataType())
         {
-        const TDesC& notepadTitle = _L("NotePad");	
-        // file handle ownership transferred.
-        
-        // 1.File handle from arg has problem for notes since junk chars are reported in file.
-        // so we use another file handle exclusively open with filename an pass to note viewer.   
-        // 
-        // 2.Pass ETrue to 4th param  ExecFileViewerL , to guess encoding.
-        RFile fileForNotes;
-        TInt err = fileForNotes.Open( fs, fileName, EFileRead | EFileShareReadersOnly );
-        CleanupClosePushL( fileForNotes );
-        ret = CNotepadApi::ExecFileViewerL( fileForNotes, 
+        const TDesC& notepadTitle = _L("NotePad");
+        ret = CNotepadApi::ExecFileViewerL( aFile, 
                                            &notepadTitle,
                                            ETrue,
                                            ETrue,
                                            KCharacterSetIdentifierIso88591 );
         
-        CleanupStack::PopAndDestroy(&fileForNotes);
         }
     else
         {
         //doc handler will open the other files (other than text file).
-        TRAP( ret, iDocHandler->OpenFileEmbeddedL( file, datatype ) );
+        TRAP( ret, iDocHandler->OpenFileEmbeddedL( aFile, datatype ) );
         }
-    CleanupStack::PopAndDestroy(&file);
-    
+
     switch(ret)
         {
         case KErrNone:
--- a/calendarui/editors/data/CalenDefaultEditorsData.rss	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/editors/data/CalenDefaultEditorsData.rss	Fri Mar 12 15:42:35 2010 +0200
@@ -1457,7 +1457,7 @@
             },
         LBUF
             {
-            txt = qtn_cale_item_birthday;
+            txt = qtn_cale_note_anniversary;
             },
         LBUF
             {
@@ -1656,4 +1656,42 @@
         };
     }
 
+// ---------------------------------------------------------
+// Description list query
+// List query for the description types
+// ---------------------------------------------------------
+RESOURCE AVKON_MULTISELECTION_LIST_QUERY r_description_list_query
+    {
+    flags = EGeneralQueryFlags;
+    softkeys = R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT;
+    items =
+        {
+        AVKON_MULTISELECTION_LIST_QUERY_DLG_LINE
+            {
+            control = AVKON_LIST_QUERY_CONTROL
+                {
+                listtype = EAknCtSinglePopupMenuListBox;
+                listbox = AVKON_LIST_QUERY_LIST
+                    {
+                    array_id = r_description_list_query_array;
+                    };
+                heading = text_softkey_select;
+                };
+            }
+        };
+    }
+
+// ---------------------------------------------------------
+// Description list query array
+// List of the description types
+// ---------------------------------------------------------
+RESOURCE ARRAY r_description_list_query_array
+    {
+    items=
+        {
+        LBUF { txt = qtn_cale_om_descript_new; },
+        LBUF { txt = qtn_cale_om_descript_exist; }
+        };
+    }
+
 // End of File
--- a/calendarui/editors/inc/CalenDescription.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/editors/inc/CalenDescription.h	Fri Mar 12 15:42:35 2010 +0200
@@ -181,6 +181,11 @@
      */
     HBufC* ExecTextViewerL(TInt& aStatus, const TDesC& aDescription);
     
+    /**
+     * Handles ECalenCmdAddDescription command 
+     */
+    TBool HandleAddDescriptionL();
+    
         
 private:
     
--- a/calendarui/editors/inc/calenunifiededitor.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/editors/inc/calenunifiededitor.h	Fri Mar 12 15:42:35 2010 +0200
@@ -494,6 +494,13 @@
          */
         void VerifyCollectionIdL(const TCalCollectionId aColId);
         
+        /*
+         * Return attachment names
+         * @param aAttachmentNames names of the attachments.
+         * @return HBufC 
+         */
+        void GetAttachmentNamesL(RPointerArray<HBufC>& aAttachmentNames);
+        
     protected:
         /**
          * From CEikDialog
@@ -659,7 +666,10 @@
           *  
           */
          void HideFieldsForEditSingleInstance();
-
+         
+         static TInt AsyncProcessCommandL(TAny* aThisPtr); 
+         
+        
     private:
         /**
          * @var iEditedCalEntry
@@ -812,7 +822,10 @@
          * @var isReplaceLocation
          * @brief Flag to indicate whenter to replace the location or to append it
          */
-        TBool isReplaceLocation;
+        TBool isReplaceLocation;        
+        
+        CAsyncCallBack* iAsyncCallback; 
+        
     };
 
 /**
--- a/calendarui/editors/src/CalenDescription.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/editors/src/CalenDescription.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -192,12 +192,6 @@
     TBool processed = EFalse;
     switch( aCommandId )
         {
-        case ECalenCmdShowDescription:
-            {
-            ShowL();
-            processed = ETrue;
-            break;
-            }
         case ECalenCmdAddDescriptionNew:
             {
             AddNewL();
@@ -210,6 +204,28 @@
             processed = ETrue;
             break;
             }
+        case ECalenCmdAddDescription:
+            {
+            if(EntryHasDescription())
+                {
+                ShowL();
+                processed = ETrue;
+                }
+            else
+                {
+                processed = HandleAddDescriptionL();
+                }
+            
+            break;
+            }
+
+        case ECalenCmdShowDescription:
+            {
+
+            ShowL();
+            processed = ETrue;
+            break;
+            }
         case ECalenCmdRemoveDescription:
             {
             RemoveL();
@@ -583,4 +599,46 @@
     TRACE_EXIT_POINT;
     return desc;
     }
+
+// ----------------------------------------------------------------------------
+// CCalenDescription::HandleAddDescriptionL
+// Handles the command ECalenAddDescription
+// ----------------------------------------------------------------------------
+// 
+TBool CCalenDescription::HandleAddDescriptionL()
+    {
+    TRACE_ENTRY_POINT;
+    
+    TBool processed = EFalse;
+    TInt selectedIndex(0);
+    CAknListQueryDialog* dlg = new (ELeave) CAknListQueryDialog(&selectedIndex);
+    dlg->PrepareLC( R_DESCRIPTION_LIST_QUERY );
+    
+    if(dlg->RunLD())
+        {
+        switch(selectedIndex)
+            {
+            case 0:             //ECalenCmdAddDescriptionNew
+                {
+//                iCheck = 0;
+                AddNewL();
+                processed = ETrue;
+                break;
+                }
+            case 1:             //ECalenCmdAddDescriptionExisting
+                {
+//                iCheck = 1;
+                AddMemoL();
+                processed = ETrue;
+                break;
+                }
+            default:
+                break;
+            }
+        }
+    
+    TRACE_EXIT_POINT;
+    
+    return processed;   
+    }
 //  End of File
--- a/calendarui/editors/src/calenunifiededitor.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/editors/src/calenunifiededitor.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -165,7 +165,10 @@
     delete iUnifiedEditorControl;
     
     iCollectionIds.Reset();
-
+    
+    iAsyncCallback->Cancel();
+    delete iAsyncCallback;
+    
     TRACE_EXIT_POINT;
     }
 
@@ -285,6 +288,11 @@
     
     isReplaceLocation = EFalse;
     
+   
+    TCallBack callback(CCalenUnifiedEditor::AsyncProcessCommandL,this);
+    iAsyncCallback = new(ELeave) CAsyncCallBack(callback,CActive::EPriorityStandard);
+    
+    
     iIdle = CIdle::NewL( CActive::EPriorityUserInput );
     iIdle->Start( TCallBack( KeyCallBack, this) );
     iCoeEnv->AddFepObserverL( *this );
@@ -1242,7 +1250,22 @@
                             }
                         break;
                         }
-
+                       
+                    case ECalenEditorDescription:
+                        {
+//                        CEikEdwin* edwin = static_cast<CEikEdwin*>( Control( focusControl ) );  
+//                        if ( edwin && edwin->Text()->DocumentLength() == 0 )
+//                            {
+//                                ProcessCommandL( ECalenCmdAddDescription );
+//                            }
+//                        else
+//                            {
+//                                ProcessCommandL( ECalenCmdShowDescription );
+//                            }
+                        iAsyncCallback->CallBack();
+                        break;
+                        }
+                       
                     default:
                         {
                         break;
@@ -1275,6 +1298,24 @@
         }
     }
 
+
+TInt CCalenUnifiedEditor::AsyncProcessCommandL( TAny* aThisPtr )
+    {
+    TInt focusControl( static_cast<CCalenUnifiedEditor*>(aThisPtr)->IdOfFocusControl() );
+    CEikEdwin* edwin = static_cast<CEikEdwin*>( static_cast<CCalenUnifiedEditor*>(aThisPtr)->Control( focusControl ) );  
+        if ( edwin && edwin->Text()->DocumentLength() == 0 )
+            {
+            static_cast<CCalenUnifiedEditor*>(aThisPtr)->ProcessCommandL(ECalenCmdAddDescription);
+            }
+        else
+            {
+            static_cast<CCalenUnifiedEditor*>(aThisPtr)->ProcessCommandL(ECalenCmdShowDescription);
+            }
+    
+    return 0;
+    }
+
+
 // -----------------------------------------------------------------------------
 //  CCalenUnifiedEditor::HandleResourceChange
 //  Handdles the resource change
@@ -1525,13 +1566,10 @@
     TRACE_ENTRY_POINT;
 
     // Only insert if there is some summary (or location)
-    if( !EditorDataHandler().AreTextFieldsEmptyL() )
+    // Changes done to remove Lunar calendar item from options menu
+    if( EditorDataHandler().AreTextFieldsEmptyL() )
         {
-        // Insert Send menu item
-        iServices->OfferMenuPaneL( aResourceId, aMenuPane );
-        }
-    else
-        {// Delete Send Menu item if exists
+        // Delete Send Menu item if exists
         aMenuPane->DeleteMenuItem( ECalenSend );
         }    
 
@@ -1981,7 +2019,8 @@
         if( startDate == CalenDateUtils::BeginningOfDay( startDate ) &&
                 endDate == CalenDateUtils::BeginningOfDay( endDate ) )
             {
-            if( CCalEntry::EAppt == Edited().EntryType() && startDate != endDate )
+            TTimeIntervalDays differenceInTime = endDate.DaysFrom(startDate); // fix for AllDayEntry issue
+            if( CCalEntry::EAppt == Edited().EntryType() && startDate != endDate && differenceInTime.Int() == 1 )
                 {
                 Edited().SetEntryType( CCalEntry::EEvent );
                 }
@@ -2238,6 +2277,7 @@
     
     if(!IsCreatingNewEntry() && !iEditorDataHandler->IsCalendarEditedL())
         {
+        iServices->GetAttachmentData()->Reset();
         iServices->EntryViewL(iEditorDataHandler->PreviousDbCollectionId())
                                                 ->DeleteL(*iOriginalCalEntry);
         }
@@ -2268,6 +2308,7 @@
         }
     if(!IsCreatingNewEntry() && iEditorDataHandler->IsCalendarEditedL())
         {
+        iServices->GetAttachmentData()->Reset();
         iServices->EntryViewL(iEditorDataHandler->PreviousDbCollectionId())
                                                 ->DeleteL(*iOriginalCalEntry);
         }
@@ -3050,9 +3091,9 @@
     if( attachmentCount )
         {
         RPointerArray<HBufC> attachmentNames;
-        Edited().AttachmentNamesL(attachmentNames);
-        TInt attachmentCount = attachmentNames.Count();
-        TInt attachmentLength(0);
+        GetAttachmentNamesL(attachmentNames);
+        attachmentCount = attachmentNames.Count();            
+        TInt attachmentLength(0);        
         for( TInt index =0; index<attachmentCount; index++ )
             {
             if(index>0)
@@ -3340,6 +3381,33 @@
     
     TRACE_EXIT_POINT;   
     }
+
+// -----------------------------------------------------------------------------
+// CCalenUnifiedEditor::AttachmentNamesL
+// Provides all the attachments names
+// -----------------------------------------------------------------------------
+// 
+void CCalenUnifiedEditor::GetAttachmentNamesL(RPointerArray<HBufC>& aAttachmentNames)
+    {
+    TInt attachCount = iServices->GetAttachmentData()->NumberOfItems();
+    if( attachCount )
+        {    
+        RPointerArray<CCalenAttachmentInfo> attachmentInfoList;      
+        iServices->GetAttachmentData()->GetAttachmentListL(attachmentInfoList);
+        for( TInt index =0; index<attachCount; index++ )
+            {
+            CCalenAttachmentInfo* attachmentInfo = attachmentInfoList[index];
+            TParsePtrC fileNameParser( attachmentInfo->FileName() );
+            HBufC* attachmentName = HBufC::NewL(fileNameParser.NameAndExt().Length());
+            attachmentName->Des().Copy(fileNameParser.NameAndExt());
+            aAttachmentNames.Append(attachmentName);
+            }
+        }
+    else
+        {
+        Edited().AttachmentNamesL(aAttachmentNames);
+        }
+    }
 	
 // -----------------------------------------------------------------------------
 // CMapsIconPicture::CMapsIconPicture
--- a/calendarui/group/bld.inf	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/group/bld.inf	Fri Mar 12 15:42:35 2010 +0200
@@ -45,6 +45,7 @@
 ../rom/CalenGlobalData.iby 				CORE_APP_LAYER_IBY_EXPORT_PATH(calenglobaldata.iby)
 ../rom/CalenSvr.iby 					CORE_APP_LAYER_IBY_EXPORT_PATH(calensvr.iby)
 ../rom/CalenSettingsUi.iby 				CORE_APP_LAYER_IBY_EXPORT_PATH(calensettingsui.iby)
+../rom/CalenSvrResources.iby                            LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(CalenSvrResources.iby)  
 
 ../rom/calenregionalutil.iby			LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(calenregionalutil.iby)
 
--- a/calendarui/loc/calendar.loc	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/loc/calendar.loc	Fri Mar 12 15:42:35 2010 +0200
@@ -2366,7 +2366,7 @@
 //l: list_form_graphic_pane_t1
 //w:
 //r: 9.2
-#define qtn_cale_item_birthday "Birthday"
+#define qtn_cale_item_anniversary "Anniversary"
 
 //d: "To-Do" text for EventType field pop-up in calendar editor
 //l: list_form_graphic_pane_t1
@@ -2623,5 +2623,10 @@
 //w:
 //r: 9.2
 #define qtn_cale_db_friends "Friends"
+
+//d:Wait note text in to-do view.
+//l:popup_note_wait_window
+//
+#define qtn_todo_wait_updating_status_notes  "Updating status"
         
 // End of File
--- a/calendarui/multicaluidialog/src/multicaluidialogimpl.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/multicaluidialog/src/multicaluidialogimpl.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -208,9 +208,17 @@
     {
     TRACE_ENTRY_POINT;
     
-    if(iDesArray && iListBox)
+    if(iListBox)
         {
-        return;
+        iListBox->Reset();
+        delete iListBox; 
+        iListBox = NULL;
+        }
+    
+    if(iDesArray)
+        {
+        delete iDesArray;
+        iDesArray = NULL;
         }
 
     iDesArray = new (ELeave) CDesCArrayFlat(5);
@@ -329,26 +337,29 @@
     TRgb nonSkinColor = AKN_LAF_COLOR(215);
     CFbsBitmap* bitmap = NULL;
     CFbsBitmap* mask = NULL;
-    
+    TAknsItemID KSearchCheckboxOff;
+    TAknsItemID KSearchCheckboxOn;    
     switch( aIndex )
         {
         case ECalenListDbIconUnMarked:
             {
-            icon = CreateBitmapSkinnedIconL( 
-                    KAknsIIDQgnPropCheckboxOn,
+            KSearchCheckboxOff.Set( 0x0A8461F4, 1 );
+            icon = CreateBitmapSkinnedIconL(                     
+                    KSearchCheckboxOff,
                     iIconFile,
                     EMbmMulticaluidialogQgn_prop_checkbox_off,
-                    EMbmMulticaluidialogQgn_prop_checkbox_off_mask );
-            }
+                    EMbmMulticaluidialogQgn_prop_checkbox_off_mask ); 
+            }            
             break;
 
         case ECalenListDbIconMarked:
             {
-            icon = CreateBitmapSkinnedIconL( 
-                                KAknsIIDQgnPropCheckboxOn,
+            KSearchCheckboxOn.Set( 0x0A8461F4, 2 ); 
+            icon = CreateBitmapSkinnedIconL(                                 
+                                KSearchCheckboxOn,
                                 iIconFile, 
                                 EMbmMulticaluidialogQgn_prop_checkbox_on,
-                                EMbmMulticaluidialogQgn_prop_checkbox_on_mask );
+                                EMbmMulticaluidialogQgn_prop_checkbox_on_mask );            
             }
             break;
             
@@ -375,12 +386,8 @@
     CAknIconArray* icons = new(ELeave) CAknIconArray( iconCount );
     CleanupStack::PushL( icons );
     icons->SetReserveL( iconCount );
-
-    for( TInt i=0; i<iconCount; ++i )
-        {
-        icons->AppendL( GetIconL( ECalenListDbIconMarked ) );
-        icons->AppendL( GetIconL( ECalenListDbIconUnMarked ) );
-        }
+    icons->AppendL( GetIconL( ECalenListDbIconMarked ) );
+    icons->AppendL( GetIconL( ECalenListDbIconUnMarked ) );
     CleanupStack::Pop( icons );
     TRACE_EXIT_POINT;
     return icons;
@@ -709,7 +716,7 @@
         else
             {
             iListBox->SetRect( rect );
-            }
+            }        
         }
     
     TRACE_EXIT_POINT;
@@ -766,10 +773,7 @@
     
     SetTitlePaneL( ETrue );
     ConstructListL();
-    UpdateListboxL();
-    //UpdateCbaL();
-    
-    
+    UpdateListboxL();    
     TInt orientation = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;      
     if( AknLayoutUtils::PenEnabled() )   
         {
@@ -842,14 +846,12 @@
 void CMultiCalUiDialogImpl::HandleResourceChange(TInt aType)
     {
     TRACE_ENTRY_POINT;
-    
+    CAknDialog::HandleResourceChange( aType );
     if ( aType == KAknsMessageSkinChange || aType == KEikDynamicLayoutVariantSwitch )
         {
-        SizeChanged();
-        TRAP_IGNORE(UpdateListboxL());
-        }
+        SizeChanged();       
+        }    
     
-    CAknDialog::HandleResourceChange( aType );
     TRACE_EXIT_POINT;
     }
 
--- a/calendarui/regionalplugins/Thai/src/CalenThaiPlugin.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/regionalplugins/Thai/src/CalenThaiPlugin.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -25,6 +25,11 @@
 #include <AknUtils.h>
 #include <avkon.hrh>
 
+#include <AknsSkinInstance.h>
+#include <AknsUtils.h>
+#include <gulcolor.h>
+
+
 #include "CalenThaiPlugin.h"
 
 
@@ -130,6 +135,14 @@
     aLabel.SetFont( labelFont );
     aLabel.SetLabelAlignment(ELayoutAlignCenter);
     aLabel.SetTextL( iThaiYearText );
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    TRgb color;
+    TInt error = AknsUtils::GetCachedColor(skin, color,
+            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6);
+    if (error == KErrNone)
+        {
+        aLabel.OverrideColorL(EColorLabelText, color);
+        }
     TRACE_EXIT_POINT;
     }
 
--- a/calendarui/regionalplugins/lunarVietnamese/src/calenlunarvietnameseplugin.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/regionalplugins/lunarVietnamese/src/calenlunarvietnameseplugin.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -32,6 +32,10 @@
 #include <layoutmetadata.cdl.h>
 #include <mcalenpreview.h>
 
+#include <AknsSkinInstance.h>
+#include <AknsUtils.h>
+#include <gulcolor.h>
+
 #include "calendarui_debug.h" 
 #include "calenlunarvietnameseplugin.h"
 #include "calenlunarvietnameselocalizer.h"
@@ -203,6 +207,16 @@
     aLabel.SetLabelAlignment(ELayoutAlignCenter); 
     aLabel.SetTextL( *newLinedText);
     
+    // Query the text colour based on the theme and update the label text
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    TRgb color;
+    TInt error = AknsUtils::GetCachedColor(skin, color,
+            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6);
+    if (error == KErrNone)
+        {
+        aLabel.OverrideColorL(EColorLabelText, color);
+        }
+    
     CleanupStack::PopAndDestroy( newLinedText );
     CleanupStack::PopAndDestroy( lineWidths );
     CleanupStack::PopAndDestroy( textLines );
@@ -227,6 +241,16 @@
     aLabel.SetLabelAlignment(ELayoutAlignCenter);
     aLabel.SetTextL(  iExtraRowText );
     
+    // Query the text colour based on the theme and update the label text
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    TRgb color;
+    TInt error = AknsUtils::GetCachedColor(skin, color,
+            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6);
+    if (error == KErrNone)
+        {
+        aLabel.OverrideColorL(EColorLabelText, color);
+        }
+    
     TRACE_EXIT_POINT;
     }
     
@@ -673,10 +697,15 @@
 // -----------------------------------------------------------------------------
 //
 void CCalenPluginLabel::HandlePointerEventL(const TPointerEvent& 
-                                            /*aPointerEvent*/)
+                                            aPointerEvent)
 	{
 	TRACE_ENTRY_POINT;
-	iPlugin.ShowDetailsL();	
+	
+	if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
+	        {
+	        iPlugin.ShowDetailsL();
+	        }
+	
 	TRACE_EXIT_POINT;
 	}
 
--- a/calendarui/regionalplugins/lunarchinese/src/CalenLunarChinesePlugin.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/regionalplugins/lunarchinese/src/CalenLunarChinesePlugin.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -31,6 +31,10 @@
 #include <layoutmetadata.cdl.h>
 #include <mcalenpreview.h>
 
+#include <AknsSkinInstance.h>
+#include <AknsUtils.h>
+#include <gulcolor.h>
+
 #include "calendarui_debug.h" 
 #include "CalenLunarChinesePlugin.h"
 #include "calenlunarpanic.h"
@@ -155,7 +159,8 @@
 // CCalenLunarChinesePlugin::SetLabelContentExtraL
 // -----------------------------------------------------------------------------
 //
-void CCalenLunarChinesePlugin::SetLabelContentExtraL( CEikLabel& aLabel ,TRect& aRect) 
+void CCalenLunarChinesePlugin::SetLabelContentExtraL(CEikLabel& aLabel,
+        TRect& aRect)
     {
     TRACE_ENTRY_POINT;
     
@@ -171,37 +176,45 @@
     CleanupStack::PushL( lineWidths );
     
     TInt maxWidth = aRect.Size().iWidth;
-    lineWidths->AppendL( maxWidth );
-    
-    const CFont* fontLabel = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont,NULL);
-    
-    HBufC* visualText = AknBidiTextUtils::ConvertToVisualAndWrapToArrayWholeTextL(
-        iExtraRowText,
-        *lineWidths,
-        *fontLabel,
-        *textLines);
-        
-    if(textLines->Count() < 3 && textLines->Count() > 0)
-    	{
-    	 TInt nH =	textLines->Count();
-    	 aRect.iBr.iY = aRect.iBr.iY * nH;
-    	}
-       
-    HBufC* newLinedText = HBufC::NewLC( iExtraRowText.Length() + 4);
-        
-    for(TInt i = 0 ; i < textLines->Count();i++)
-    	{
-    	newLinedText->Des().Append(textLines->At(i));
-    	newLinedText->Des().Append( KFieldSeparator );
-    	}
-   
+    lineWidths->AppendL(maxWidth);
+
+    const CFont* fontLabel = AknLayoutUtils::FontFromId(
+            EAknLogicalFontPrimarySmallFont, NULL);
+
+    HBufC* visualText =
+            AknBidiTextUtils::ConvertToVisualAndWrapToArrayWholeTextL(
+                    iExtraRowText, *lineWidths, *fontLabel, *textLines);
+
+    if (textLines->Count() < 3 && textLines->Count() > 0)
+        {
+        TInt nH = textLines->Count();
+        aRect.iBr.iY = aRect.iBr.iY * nH;
+        }
+
+    HBufC* newLinedText = HBufC::NewLC(iExtraRowText.Length() + 4);
+
+    for (TInt i = 0; i < textLines->Count(); i++)
+        {
+        newLinedText->Des().Append(textLines->At(i));
+        newLinedText->Des().Append(KFieldSeparator);
+        }
+
     aLabel.UseLogicalToVisualConversion(ETrue);
     aLabel.SetLabelAlignment(ELayoutAlignCenter); 
     aLabel.SetTextL( *newLinedText);
     
-    CleanupStack::PopAndDestroy( newLinedText );
-    CleanupStack::PopAndDestroy( lineWidths );
-    CleanupStack::PopAndDestroy( textLines );
+    // Query the text colour based on the theme and update the label text
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    TRgb color;
+    TInt error = AknsUtils::GetCachedColor(skin, color,
+            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6);
+    if (error == KErrNone)
+        {
+        aLabel.OverrideColorL(EColorLabelText, color);
+        }
+    CleanupStack::PopAndDestroy(newLinedText);
+    CleanupStack::PopAndDestroy(lineWidths);
+    CleanupStack::PopAndDestroy(textLines);
     delete visualText;
 
     TRACE_EXIT_POINT;
@@ -211,7 +224,8 @@
 // CCalenLunarChinesePlugin::SetLabelContentL
 // -----------------------------------------------------------------------------
 //
-void CCalenLunarChinesePlugin::SetLabelContentL( CEikLabel& aLabel, const TRect& /*aRect*/ ) 
+void CCalenLunarChinesePlugin::SetLabelContentL(CEikLabel& aLabel,
+        const TRect& /*aRect*/)
     {
     TRACE_ENTRY_POINT;
     TRect nullRect(0,0,0,0);
@@ -222,6 +236,16 @@
     aLabel.SetLabelAlignment(ELayoutAlignCenter);
     aLabel.SetTextL(  iExtraRowText );
     
+    // Query the text colour based on the theme and update the label text
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    TRgb color;
+    TInt error = AknsUtils::GetCachedColor(skin, color,
+            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6);
+    if (error == KErrNone)
+        {
+        aLabel.OverrideColorL(EColorLabelText, color);
+        }
+
     TRACE_EXIT_POINT;
     }
     
@@ -671,12 +695,17 @@
 // -----------------------------------------------------------------------------
 //
 void CCalenPluginLabel::HandlePointerEventL(const TPointerEvent& 
-                                                                /*aPointerEvent*/)
-	{
-	TRACE_ENTRY_POINT;
-	iPlugin.ShowDetailsL();	
-	TRACE_EXIT_POINT;
-	}
+                                                                aPointerEvent)
+    {
+    TRACE_ENTRY_POINT;
+
+    if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
+        {
+        iPlugin.ShowDetailsL();
+        }
+
+    TRACE_EXIT_POINT;
+    }
 
 //EOF
 
--- a/calendarui/rom/CalenSvr.iby	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/rom/CalenSvr.iby	Fri Mar 12 15:42:35 2010 +0200
@@ -22,7 +22,7 @@
 
 file=ABI_DIR\BUILD_DIR\CalenSvrClient.dll   SHARED_LIB_DIR\CalenSvrClient.dll
 file=ABI_DIR\BUILD_DIR\CalenSvr.exe         PROGRAMS_DIR\CalenSvr.exe
-data=DATAZ_\RESOURCE_FILES_DIR\CalenSvrMissedAlarmManagerResource.rsc    RESOURCE_FILES_DIR\CalenSvrMissedAlarmManagerResource.rsc
+
 
 
 #endif // CALENSVR_IBY
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/rom/CalenSvrResources.iby	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   IBY file for Calendar Server.
+*
+*/
+
+
+
+#ifndef CALENSVRRESOURCES_IBY
+#define CALENSVRRESOURCES_IBY
+
+data=DATAZ_\RESOURCE_FILES_DIR\CalenSvrMissedAlarmManagerResource.rsc    RESOURCE_FILES_DIR\CalenSvrMissedAlarmManagerResource.rsc
+
+#endif // CALENSVRRESOURCES_IBY
+
+//  End of File
\ No newline at end of file
--- a/calendarui/settings/settingsui/group/calensettingsui.mmp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/settings/settingsui/group/calensettingsui.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -85,6 +85,7 @@
 LIBRARY             caf.lib
 LIBRARY             cafutils.lib
 LIBRARY             drmhelper.lib
+LIBRARY			MediaFileList.lib
 
 // File logging
 LIBRARY flogger.lib
--- a/calendarui/settings/settingsui/src/CalenFileListSettingItem.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/settings/settingsui/src/CalenFileListSettingItem.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -41,6 +41,8 @@
 // KDC_RESOURCE_DIR definition
 #include <data_caging_path_literals.hrh>
 
+#include <mediafilelist.h>
+
 
 // ============================ MEMBER FUNCTIONS ===============================
 
@@ -214,6 +216,8 @@
     {
     TRACE_ENTRY_POINT;
 
+#define NEW_MEDIA_FILE_LIST_API
+#ifndef NEW_MEDIA_FILE_LIST_API
     // Create instance of FileList using new FileList API
     CFLDFileListContainer* filelist = CFLDFileListContainer::NewLC();
 
@@ -228,14 +232,44 @@
     
     TBool ok( filelist->LaunchL( iToneFile, *iPopupHeader ) );
 
-    if( ok )
+
+    CleanupStack::PopAndDestroy( filelist ); // filelist
+#else
+    CMediaFileList* list = CMediaFileList::NewL();
+    CleanupStack::PushL(list);
+    
+    
+    TInt nullItem = KErrNotFound;
+    
+    // off
+    list->SetNullItemL(*iToneOffText, iOffToneFile,
+            CMediaFileList::EMediaFileTypeAudio,
+            CMediaFileList::ENullItemIconOff);
+    
+    // default tone
+    list->SetNullItemL(*iToneDefaultText, iDefaultToneFile,
+            CMediaFileList::EMediaFileTypeAudio,
+            CMediaFileList::ENullItemIconOff);
+    
+    list->SetAttrL(CMediaFileList::EAttrExcludeMimeType, CMediaFileList::EMediaFileTypeVideo);
+    list->SetAttrL(CMediaFileList::EAttrAutomatedType, CDRMHelper::EAutomatedTypeCalendarAlarm);
+    
+    // Make sure that iOffToneFile is passed, in case iToneFile happens to be KNullDesC
+    ASSERT(!IsEmpty(iToneFile));
+    
+    TBool ok = !list->ShowMediaFileListL(&iToneFile, &nullItem,
+                NULL, NULL );
+    
+    
+    CleanupStack::PopAndDestroy(list);    
+#endif
+    
+    if (ok)
         {
         iAlarmSoundChanged = ETrue;
         StoreL();
-        UpdateListBoxTextL(); 
+        UpdateListBoxTextL();
         }
-
-    CleanupStack::PopAndDestroy( filelist ); // filelist
     
     TRACE_EXIT_POINT;
     }
--- a/calendarui/settings/settingsui/src/calensettingsuicontainer.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/settings/settingsui/src/calensettingsuicontainer.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -659,9 +659,6 @@
     // Construct setting item with parametrized values
     HBufC* itemTitle = StringLoader::LoadLC( R_CALEN_SETTING_DEFAULTMAILBOX_TITLE );
     // The resources loaded up here are empty as the items need to be dynamically updated.
-    
-    settingItem->SetEmptyItemTextL( KNullDesC );
-    
     settingItem->ConstructL( EFalse, aOrdinal, *itemTitle, NULL,
                              R_CALEN_SETTING_DEFAULTMAILBOX, EAknCtPopupSettingList,
                              NULL, R_CALEN_EMPTY_POPUP_SETTING_TEXTS );
@@ -791,7 +788,7 @@
 
     // Always add this in. We will set it hidden when it's not needed (i.e. when the
     // week start is set to anything other than "Monday") at the bottom of this function.
-    AddEnumerationItemL( iWeekTitle,
+    AddBinaryItemL( iWeekTitle,
                          ECalenWeekTitleItemId,
                          R_CALEN_SETTING_WEEKTITLE_TITLE,
                          R_CALEN_SETTING_WEEKTITLE,
--- a/calendarui/views/inc/calencontainer.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/views/inc/calencontainer.h	Fri Mar 12 15:42:35 2010 +0200
@@ -44,6 +44,7 @@
 class CEikLabel;
 class MCalenContext;
 class CCalenContainerLayoutManager;
+class MCalenPreview;
 
 
 class MAknNaviDecoratorObserver;
@@ -241,6 +242,10 @@
      */
     void UpdateTodayToolbarItemL();
     
+	/**
+     * returns previewpane pointer
+     */
+    virtual const MCalenPreview* PreviewPane(){return NULL; };
 private: // New functions
     /**
      * Return number of icons needed to be displayed
--- a/calendarui/views/inc/calenmonthcontainer.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/views/inc/calenmonthcontainer.h	Fri Mar 12 15:42:35 2010 +0200
@@ -127,6 +127,11 @@
     void HidePopup();
     
     void RedrawPreviewPane();
+    
+    /**
+     * returns previewpane pointer
+     */    
+    const MCalenPreview* PreviewPane();
 
 
 private:    // New function
@@ -364,8 +369,7 @@
     // View specific data, references to views data
     TTime& iDate;
     TTime iOldFirstDayOfGrid;
-	TBool iChangeMonth;
-	TBool iNativePreview;
+	TBool iChangeMonth;	
     };
 
 #endif //CALENMONTHCONT_H
--- a/calendarui/views/inc/calenweekcontainer.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/views/inc/calenweekcontainer.h	Fri Mar 12 15:42:35 2010 +0200
@@ -178,6 +178,11 @@
 	* Cleanup instances
 	*/
     void CleanupInstances();
+    
+    /**
+     * returns previewpane pointer
+     */
+    const MCalenPreview* PreviewPane();
         
 public:
     /**
@@ -433,8 +438,7 @@
     
     TBool iTopRowDefault;
     TBool iRow;
-    TBool iValidDay;
-    TBool iNativePreview;
+    TBool iValidDay;   
     };
 
 #endif //CALENWEEKCONT_H
--- a/calendarui/views/src/calencontainer.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/views/src/calencontainer.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -826,29 +826,24 @@
 TRect CCalenContainer::ReducePreview( TRect aRect ) const
     {
     TRACE_ENTRY_POINT;
-    if (UsePreview() )
-        {
-        // Find the application window
-        TRect screenRect;
-        TAknLayoutRect application_window;
-        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, 
-                                           screenRect );
-        application_window.LayoutRect( 
-            screenRect, 
-            AknLayoutScalable_Apps::application_window().LayoutLine() ); 
-            
-        // Find the size of the main pane when the preview is valid.
-        TAknLayoutRect main_pane;
-        
-        TInt orientation = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-        
-        main_pane.LayoutRect( 
-            application_window.Rect(), 
-            AknLayoutScalable_Apps::main_pane( orientation + 10 ).LayoutLine() );
+    
+    // Find the application window
+    TRect screenRect;
+    TAknLayoutRect application_window;
+    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, screenRect);
+    application_window.LayoutRect(screenRect,
+            AknLayoutScalable_Apps::application_window().LayoutLine());
 
-        aRect.SetWidth( main_pane.Rect().Width() );
-        aRect.SetHeight( main_pane.Rect().Height() );
-        }
+    // Find the size of the main pane when the preview is valid.
+    TAknLayoutRect main_pane;
+
+    TInt orientation = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+
+    main_pane.LayoutRect(application_window.Rect(),
+            AknLayoutScalable_Apps::main_pane(orientation + 10).LayoutLine());
+
+    aRect.SetWidth(main_pane.Rect().Width());
+    aRect.SetHeight(main_pane.Rect().Height());     
         
     TRACE_EXIT_POINT;
     return aRect;
--- a/calendarui/views/src/calencontainerlayoutmanager.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/views/src/calencontainerlayoutmanager.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -144,12 +144,8 @@
     // See if preview pane is available
     CheckPreviewL();
 
-    // If no preview pane, check for an info bar
-    if ( !iLayoutFlags.IsSet( ECalenContainerPreview ))
-        {
-        CheckInfobarL();
-        }
-
+    CheckInfobarL();
+    
     TRACE_EXIT_POINT;
     }
 
@@ -163,10 +159,9 @@
     TRACE_ENTRY_POINT;
 
     TRect previewRect = iContainer.PreviewRectL();
-    if ( !iContainer.PreviewRectL().IsEmpty() )
+    if (!iContainer.PreviewRectL().IsEmpty() && iContainer.PreviewPane())
         {
-        iLayoutFlags.Set( ECalenContainerPreview );
-        iLayoutFlags.Clear( ECalenContainerInfobar );
+        iLayoutFlags.Set( ECalenContainerPreview );        
         }
     
     
@@ -200,8 +195,7 @@
             {
             iInfobar = infoBarControl;
             // If the infobar exists, set the container window and activate.
-            iLayoutFlags.Set( ECalenContainerInfobar );
-            iLayoutFlags.Clear( ECalenContainerPreview );
+            iLayoutFlags.Set( ECalenContainerInfobar );           
             iInfobar->SetContainerWindowL( iContainer );
             }
        }
--- a/calendarui/views/src/calendaycontainer.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/views/src/calendaycontainer.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -1438,24 +1438,25 @@
         return;
         }
         
-    if(aPointerEvent.iType == TPointerEvent::EButton1Up)
+    if(aPointerEvent.iType == TPointerEvent::EButton1Down)
         {
         control = iLayoutManager->ControlOrNull();
         if(control)
             {
             if(control->Rect().Contains(aPointerEvent.iPosition))
                 {
-                control->HandlePointerEventL(aPointerEvent);		        		
+                control->HandlePointerEventL(aPointerEvent);	
+                return;
                 }
             }
+        if (iListBox->Model()->NumberOfItems() <= 0)
+            {
+            iView->HandleCommandL(ECalenCmdOpenMskDialog);
+            return;
+            }
         }
 	        	
-    TInt pointerIndex(-1);
-    if(iListBox->Model()->NumberOfItems() <= 0)
-        {   
-        iView->HandleCommandL(ECalenCmdOpenMskDialog);
-        return;
-        }
+    TInt pointerIndex(-1);    
      // Single click integration
     if ( aPointerEvent.iType == TPointerEvent::EButton1Down
             && iListBox->View()->XYPosToItemIndex(
--- a/calendarui/views/src/calenmonthcontainer.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/views/src/calenmonthcontainer.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -116,12 +116,7 @@
 
     delete iGrid;
     delete iMonthDataArray;
-    delete iBackgroundSkinContext;
-    if( iNativePreview && iPreview )
-        {
-        delete iPreview;
-        iPreview = NULL;
-        }
+    delete iBackgroundSkinContext;    
 
     TRACE_EXIT_POINT;
     }
@@ -510,7 +505,7 @@
     SetActiveDayL( aNewActiveDay );
 
     // dont focus the preview popup/previewpane if any dialog or faster app is active
-    if( !iView->IsEditorActiveOrFasterAppExit())
+    if( iPreview && !iView->IsEditorActiveOrFasterAppExit())
     	{
     	iPreview->FocusChangedL( aNewActiveDay );
     	}
@@ -619,7 +614,7 @@
     {
     TRACE_ENTRY_POINT;
 
-    if (aType == EEventKeyDown)
+    if (iPreview && aType == EEventKeyDown) 
         {
         iPreview->Hide();
         }
@@ -1035,6 +1030,16 @@
     }
 
 // ----------------------------------------------------------------------------
+// CCalenMonthContainer::PreviewPane
+// Returns previewpane pointer
+// ----------------------------------------------------------------------------  
+const MCalenPreview* CCalenMonthContainer::PreviewPane()
+    {
+    TRACE_ENTRY_POINT
+    TRACE_EXIT_POINT
+    return iPreview;
+    }
+	
 // CCalenMonthContainer::ConstructImplL
 // Third phase constructor.
 // This function was called CCalenNativeView::ConstructL().
@@ -1055,12 +1060,7 @@
     // Create preview pane
     TRect aRect = PreviewRectL();
     iPreview = iServices.CustomPreviewPaneL(aRect);
-    if (iPreview == NULL) 
-		{
-		iPreview = CCalenPreview::NewL( iView, locale, iServices );
-		iNativePreview = ETrue;
-		}
-     
+    
     // grid
     iGrid = new(ELeave) CCalenMonthGrid(iFirstDayOfGrid,this);
     iGrid->SetContainerWindowL(*this);
@@ -1658,6 +1658,19 @@
 
     if(AknLayoutUtils::PenEnabled())
         {
+        CCoeControl* control( NULL );
+        if(aPointerEvent.iType == TPointerEvent::EButton1Down)
+            {
+            control = iLayoutManager->ControlOrNull();
+            if(control)
+                {
+                if(control->Rect().Contains(aPointerEvent.iPosition))
+                    {
+                    control->HandlePointerEventL(aPointerEvent); 
+                    return;
+                    }
+                }
+            }
         TInt pointerIndex(-1);
         TBool isItem (iGrid->View()->XYPosToItemIndex(aPointerEvent.iPosition, pointerIndex));
         CAknGridM* gridModel = static_cast<CAknGridM*>(iGrid->Model());
@@ -1732,7 +1745,10 @@
                 if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
                     {
                     iGrid->HandlePointerEventL( pointerEvent );
-                    iPreview->Hide();
+                    if (iPreview)
+                        {
+                        iPreview->Hide();
+                        }
                     if ( pointerIndex != index )
                         {
                         iChangeMonth = EFalse;
@@ -1779,7 +1795,7 @@
     {
     switch ( aEventType )
         {
-        case ( MEikListBoxObserver::EEventItemDoubleClicked ):
+        case ( MEikListBoxObserver::EEventItemClicked ): 
             {
             if ( !iView->MenuBar()->IsDisplayed() )
                 {
@@ -1791,13 +1807,16 @@
     }
 
 
-
+// ----------------------------------------------------------------------------
+// CCalenMonthContainer::HidePopup
+// ----------------------------------------------------------------------------
 void CCalenMonthContainer::HidePopup()
     {
     TRACE_ENTRY_POINT;
-    
-    iPreview->Hide();
-    
+    if (iPreview)
+        {
+        iPreview->Hide();
+        }
     TRACE_EXIT_POINT;
     }
 
@@ -2131,7 +2150,7 @@
 		iView->SetEditorActive( EFalse );
 		
     // dont focus the preview popup/previewpane if any dialog or faster app is active
-    if(!iView->IsEditorActiveOrFasterAppExit())
+    if(iPreview && !iView->IsEditorActiveOrFasterAppExit())
        {
        // preview popup is shown when application comes to foreground
        iPreview->FocusChangedL( iServices.Context().FocusDateAndTimeL().TimeLocalL() );
--- a/calendarui/views/src/calentodoview.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/views/src/calentodoview.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -323,6 +323,7 @@
         //TODO: will be uncommented with copy to cal functionality.   
         case ECalenCopyToCalendars:
             {
+            SaveCurrentItemIndexL();
             CopyToCalendarsL();
             }
             break;
--- a/calendarui/views/src/calenweekcontainer.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/calendarui/views/src/calenweekcontainer.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -211,11 +211,7 @@
     TRACE_ENTRY_POINT;
 
     delete iListBox;
-    if( iNativePreview && iPreview )
-        {
-        delete iPreview;
-        iPreview = NULL;
-        }
+    
     delete iDesArray;
 
     CleanupInstances();
@@ -1242,11 +1238,7 @@
     // Create preview pane
     TRect aRect = PreviewRectL();
     iPreview = iServices.CustomPreviewPaneL(aRect);
-    if (iPreview == NULL) 
-		{
-		iPreview = CCalenPreview::NewL( iView, locale, iServices );
-		iNativePreview = ETrue;
-		}    
+    
     // ownership of builder transferred
 
     // 3) Listbox
@@ -1361,7 +1353,7 @@
                                             AknLayoutScalable_Apps::listscroll_cale_week_pane(layoutToolBarVariant).LayoutLine() );
                                             
 
-    TWeekListBoxLayout lay( UseInfobar(), UseToolbar(), ETrue, main_pane );
+    TWeekListBoxLayout lay( UseInfobar(), UseToolbar(), UsePreview(), main_pane ); 
 
     iListBox->SetRect( iListBox->LayoutRect() );
     TInt layoutVariant = lay.LayoutVariantIndex(TWeekListBoxLayout::EScrollPaneCp08);
@@ -1545,7 +1537,7 @@
     TRACE_ENTRY_POINT;
 
     // always hide popup on key events
-    if (aType == EEventKeyDown)
+    if (iPreview && aType == EEventKeyDown)
         {
         iPreview->Hide();
         }
@@ -1766,7 +1758,7 @@
         CCalHourItem& itemInfo = *(*slotTable)[iListBox->CurrentItemIndex()];
         
         // dont focus the preview popup/previewpane if any dialog or faster app is active        
-		if(!iView->IsEditorActiveOrFasterAppExit())
+		if(iPreview && !iView->IsEditorActiveOrFasterAppExit())
 			{
 	        if( !itemInfo.IsTimed() )
 	            { 
@@ -2182,6 +2174,18 @@
             aPointerEvent.iType == TPointerEvent::EButton1Down )
             {
             IgnoreEventsUntilNextPointerUp();
+            CCoeControl* control(NULL);
+            if (aPointerEvent.iType == TPointerEvent::EButton1Down)
+                {
+                control = iLayoutManager->ControlOrNull();
+                if (control)
+                    {
+                    if (control->Rect().Contains(aPointerEvent.iPosition))
+                        {
+                        control->HandlePointerEventL(aPointerEvent);
+                        }
+                    }
+                }
             return;
             }
         
@@ -2204,10 +2208,7 @@
                             {
                             UpdateStatusPaneAndExtensionsL();
                             }
-                        iFirstTap = ETrue;
                         }
-                    else
-                        iFirstTap = EFalse;
                     }
                 else
                     {
@@ -2235,13 +2236,12 @@
                     if (newColumn != oldColumn)
                         {
                         WeekView().SetStatusPaneFromActiveContextL();
-                        }
-                    iFirstTap = ETrue;
+                        }                    
                     }
                 break;
                 }
             case TPointerEvent::EButton1Up:
-                if(isItem && iFirstTap == EFalse &&
+                if(isItem &&
                    iView->MenuBar()->IsDisplayed() == EFalse)
                     {
                     iServices.IssueCommandL( ECalenForwardsToDayView );
@@ -2267,9 +2267,10 @@
 void CCalenWeekContainer::HidePopup()
     {
     TRACE_ENTRY_POINT;
-    
-    iPreview->Hide();    
-    
+    if (iPreview)
+        {
+        iPreview->Hide();
+        }
     TRACE_EXIT_POINT;
     }
 
@@ -2285,8 +2286,10 @@
     SizeChanged();
     iViewPopulationComplete = EFalse;
     
-    iPreview->Hide();
-        
+    if (iPreview)
+        {
+        iPreview->Hide();
+        }
     iListBox->View()->SetDisableRedraw( ETrue );
     PopulatesDayListsL();
 
@@ -2465,6 +2468,18 @@
 	
     return row;	
 	}
+	
+// -----------------------------------------------------------------------------
+// CCalenWeekContainer::PreviewPane
+// Return preview pane pointer
+// -----------------------------------------------------------------------------
+//	
+const MCalenPreview* CCalenWeekContainer::PreviewPane()
+    {
+    TRACE_ENTRY_POINT
+    TRACE_EXIT_POINT
+    return iPreview;
+    }	
 
 // ----------------------------------------------------------------------------
 // CCalenWeekContainer::UpdatePreviewPaneL
@@ -2482,7 +2497,7 @@
         CCalHourItem& itemInfo = *(*slotTable)[iListBox->CurrentItemIndex()];
         
         // dont focus the preview popup/previewpane if any dialog or faster app is active
-        if(!iView->IsEditorActiveOrFasterAppExit())
+        if( iPreview && !iView->IsEditorActiveOrFasterAppExit())
             {
             if( !itemInfo.IsTimed() )
                 { 
--- a/clock2/clockui/uilayer/clockalarmeditor/src/clockalarmeditorimpl.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/clock2/clockui/uilayer/clockalarmeditor/src/clockalarmeditorimpl.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -547,7 +547,9 @@
     // Execute the following commands if the resource belongs to alarmeditor.
     // Display the menu items based on the current focused control.
     if( ( EControlTextEditor == iSelectedControl ) ||
-        ( EControlTimeEditor == iSelectedControl ) )
+        ( EControlTimeEditor == iSelectedControl ) ||
+        ( EControlOccurancePopup == iSelectedControl ) ||
+        ( EControlAlarmDayPopup == iSelectedControl ) )
         {
         aMenuPane->SetItemDimmed( EClockAlarmChange, ETrue );
         }
Binary file clock2/conf/clockapp.confml has changed
--- a/notepad/notepad1/LibData/NpdLib.rss	Fri Feb 19 22:49:53 2010 +0200
+++ b/notepad/notepad1/LibData/NpdLib.rss	Fri Mar 12 15:42:35 2010 +0200
@@ -1524,19 +1524,23 @@
     {
     buf = qtn_nmake_no_memos_secondary_text;    
     }
+// -----------------------------------------------------------------------------
+//
+// r_send_notepad_note
+// the resource process dialog when send notes via message and bluetooth
+//
+// -----------------------------------------------------------------------------
+//
 RESOURCE DIALOG r_send_notepad_note
     {
-    flags = EAknWaitNoteFlags | EEikDialogFlagModeless;
-//    buttons=R_AVKON_SOFTKEYS_EMPTY;
-	buttons=R_AVKON_SOFTKEYS_CANCEL;
+    flags = EAknWaitNoteFlags;
+    buttons=R_AVKON_SOFTKEYS_CANCEL;
     items=
         {
         DLG_LINE
             {
             type = EAknCtNote;
-            
-	//id = EGeneralNote;
-	  id      = ESendNotepadAttach;
+            id = ESendNotepadAttach;
             control= AVKON_NOTE
                 {
                 layout = EWaitLayout;
Binary file organizer_plat/calendar_common_utils_api/tsrc/group/rndcert.der has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/organizer_plat/calendar_common_utils_api/tsrc/group/rndcert.key	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn
+uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO
+vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB
+AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo
+REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss
+/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J
+s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut
+sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/
+pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp
+VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ
+P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK
+1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT
+1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x
+-----END RSA PRIVATE KEY-----
--- a/organizer_plat/calendar_custamization_api/inc/calennotificationhandler.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/organizer_plat/calendar_custamization_api/inc/calennotificationhandler.h	Fri Mar 12 15:42:35 2010 +0200
@@ -77,6 +77,7 @@
 	ECalenNotifyCalendarInfoCreated,
 	ECalenNotifyCalendarInfoUpdated,
 	ECalenNotifyCalendarFileDeleted,
+	ECalenNotifyEntrySendCancel,
     ECalenNotifyUserDefined1,
     ECalenNotifyUserDefined2,
     ECalenNotifyUserDefined3,
--- a/organizer_plat/calendar_settings_keys_api/inc/CalendarInternalCRKeys.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/organizer_plat/calendar_settings_keys_api/inc/CalendarInternalCRKeys.h	Fri Mar 12 15:42:35 2010 +0200
@@ -123,26 +123,21 @@
 **/
 const TUint32 KCalendarStartupStatus = 0x0000000E;
 
-/**
-* Text string containing default calendar names separated by commas
-* Used for creating default calendars at the startup of the device
-* Default value: "Personal,Family,Friends"
-*/
-const TUint32 KCalendarDefaultCalendars = 0x0000000F;
+
 
 /**
 * Text string containing default calendar colors separated by commas
 * Used for creating default calendars at the startup of the device
 * Default value: "16711680,65280,255"
 */
-const TUint32 KCalendarDefaultColors = 0x00000010;
+const TUint32 KCalendarDefaultColors = 0x0000000F;
 
 /**
 * String value containing unique calendar value 
 * Used for identifying an entry by LUID + unique calendar value 
 * Default value:"0"
 */
-const TUint32 KCalendarAvailableValue = 0x00000011;
+const TUint32 KCalendarAvailableValue = 0x00000010;
 
 
 #endif  // CALENDARINTERNALCRKEYS_H
Binary file organizer_plat/meeting_request_mailbox_utilities_api/tsrc/stiff/group/rndcert.der has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/organizer_plat/meeting_request_mailbox_utilities_api/tsrc/stiff/group/rndcert.key	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn
+uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO
+vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB
+AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo
+REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss
+/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J
+s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut
+sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/
+pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp
+VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ
+P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK
+1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT
+1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x
+-----END RSA PRIVATE KEY-----
--- a/pimappservices/calendar/bwins/caltestlibu.def	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/bwins/caltestlibu.def	Fri Mar 12 15:42:35 2010 +0200
@@ -45,4 +45,5 @@
 	?RegisterCalFileL@CCalTestLibrary@@QAEXABVTDesC16@@@Z @ 44 NONAME ; void CCalTestLibrary::RegisterCalFileL(class TDesC16 const &)
 	?WaitForAgendaServerClose@CCalTestLibrary@@SAXXZ @ 45 NONAME ; void CCalTestLibrary::WaitForAgendaServerClose(void)
 	?WaitForAlarmEvent@CCalTestLibrary@@QAEHHW4TAlarmChangeEvent@@W4TAlarmState@@H@Z @ 46 NONAME ; int CCalTestLibrary::WaitForAlarmEvent(int, enum TAlarmChangeEvent, enum TAlarmState, int)
+	?CreateCalSubSessionL@CCalTestLibrary@@QAEAAV?$RPointerArray@VCCalSession@@@@ABVTDesC16@@@Z @ 47 NONAME ; class RPointerArray<class CCalSession> & CCalTestLibrary::CreateCalSubSessionL(class TDesC16 const &)
 
--- a/pimappservices/calendar/client/src/calattachment.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/client/src/calattachment.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -554,12 +554,23 @@
 */
 EXPORT_C void CCalAttachmentFile::FetchFileHandleL(RFile& aFileHandle) const
 	{
-	if (iAttachmentImpl->IsFileHandleSet() || ! iCalSessionImpl)
-		{
-		User::Leave(KErrArgument);
-		}
-
-	iCalSessionImpl->Server().FetchFileHandleL(aFileHandle, iAttachmentImpl->Uid(), iCalSessionImpl->FileId());
+    if ( iAttachmentImpl->IsFileHandleSet() )
+        {
+        aFileHandle.Close();
+        User::LeaveIfError(
+                aFileHandle.Duplicate( iAttachmentImpl->FileHandle() ) );
+        }
+    else if ( iCalSessionImpl )
+        {
+        iCalSessionImpl->Server().FetchFileHandleL(
+                aFileHandle, 
+                iAttachmentImpl->Uid(), 
+                iCalSessionImpl->FileId() );            
+        }
+    else
+        {
+        User::Leave( KErrArgument );
+        }
 	}
 
 /** Load the binary data into the attachment object to be accessed through the CCalAttachment::Value function.
--- a/pimappservices/calendar/client/src/calcalendarinfoimpl.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/client/src/calcalendarinfoimpl.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -69,9 +69,9 @@
         {
         if (iProperties[position]->Value().Compare(KNullDesC8) == 0)
             {
-            __ASSERT_DEBUG(iProperties[position]->StreamId() != KNullStreamId, CalUtils::Panic(ECalendarInfoNullStreamId));
+            __ASSERT_DEBUG(iFileName && iProperties[position]->StreamId() != KNullStreamId, CalUtils::Panic(ECalendarInfoNullStreamId));
             // Get the property
-            HBufC8* value = iSessionImpl->Server().GetPropertyValueL(iSessionImpl->FileName(), iProperties[position]->StreamId());
+            HBufC8* value = iSessionImpl->Server().GetPropertyValueL(iFileName->Des(), iProperties[position]->StreamId());
             iProperties[position]->SetValue(value);
             }
         else if (iProperties[position]->State() == CAgnCalendarInfoProperty::EDeleted)
--- a/pimappservices/calendar/eabi/caltestlibu.def	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/eabi/caltestlibu.def	Fri Mar 12 15:42:35 2010 +0200
@@ -52,4 +52,5 @@
 	_ZTV15CCalTestLibrary @ 51 NONAME
 	_ZN15CCalTestLibrary24WaitForAgendaServerCloseEv @ 52 NONAME
 	_ZN15CCalTestLibrary17WaitForAlarmEventEi17TAlarmChangeEvent11TAlarmStatei @ 53 NONAME
+	_ZN15CCalTestLibrary20CreateCalSubSessionLERK7TDesC16 @ 54 NONAME
 
--- a/pimappservices/calendar/server/inc/agsentrymodel.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/server/inc/agsentrymodel.h	Fri Mar 12 15:42:35 2010 +0200
@@ -212,6 +212,7 @@
 	TTime TzRulesLastModifiedDateL();
 	void CheckTzDbModificationL();
 	void HandleTzRulesChangeL(const TTime& aTime);
+	TBool IsIndexFileAvailableL();
 
 // Calendar file conversion operations
 	void LoadNewStreamStoreL(CStreamStore& aStore, const TStreamId& aModelStreamId, CAgnEntryManager& aEntryManager, CAgnTzRuleIndex& aTzRuleIndex);
@@ -229,7 +230,7 @@
 	TBool GenerateIndexFileName(TFileName& aFileName);
 	TCalCollectionId CollectionId() const;
 	const CAgnServFile& AgnServFile();
-
+	void ResetDeleteRollbackArray();
 
 private:
 	void ConstructL(CAgnServFile* aAgnServerFile);
--- a/pimappservices/calendar/server/src/agsasyncdelete.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/server/src/agsasyncdelete.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -246,7 +246,7 @@
 				CleanupStack::PopAndDestroy(entry);
 				}
 			}
-			
+		iModel.ResetDeleteRollbackArray();
 		iTidyDeleteArray->Reset();
 		iModel.FlushL();
 		}
--- a/pimappservices/calendar/server/src/agsentrymodel.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/server/src/agsentrymodel.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -120,6 +120,14 @@
 	return *iAgnServerFile;
 	}
 
+/**
+ * Resets delete rollback array before the callback
+ */	
+void CAgnEntryModel::ResetDeleteRollbackArray()
+	{
+	iDeleteRollbackArray.ResetAndDestroy();
+	}
+
 /** Load up the stream network
  */
 void CAgnEntryModel::DoOpenL(const TStreamId& aModelStreamId)
@@ -1398,22 +1406,20 @@
 // file needs to be rebuilt and to no try to delete the file more than once.
 void CAgnEntryModel::MarkIndexFileAsDirtyL()
 	{
-	if (iIndexFileIsDirty)
-		{
-		return; // the file is already marked as dirty
-		}
-		
-	TFileName idxfilename;
-	if (!GenerateIndexFileName(idxfilename))
-		{
-		User::Leave(KErrBadName);
-		}
-	
-	TInt connectErr = iFs.Connect();
-	User::LeaveIfError(connectErr);
-	
-	iFs.Delete(idxfilename); // ignore return as there is nothing we can do with it
-	
+
+    if(IsIndexFileAvailableL())
+        {		
+            TFileName idxfilename;
+            if (!GenerateIndexFileName(idxfilename))
+                {
+                User::Leave(KErrBadName);
+                }
+            
+            TInt connectErr = iFs.Connect();
+            User::LeaveIfError(connectErr);
+            
+            iFs.Delete(idxfilename); // ignore return as there is nothing we can do with it
+        }        
 	iIndexFileIsDirty = ETrue;
 	}
 	
@@ -1512,6 +1518,32 @@
 	return EFalse;
 	}
 
+// This method check the index file is exist.
+// It returns:
+//      ETrue - File is already exist
+//      EFalse - File is not available
+TBool CAgnEntryModel::IsIndexFileAvailableL()
+    {
+    TFileName idxfilename;
+    if (!GenerateIndexFileName(idxfilename))
+        {
+        User::Leave(KErrBadName);
+        }
+    
+    TInt connectErr = iFs.Connect();
+    User::LeaveIfError(connectErr);
+    
+    RFile idxFile;
+    TInt errReadIdx = idxFile.Open(iFs, idxfilename, EFileRead);
+    CleanupClosePushL(idxFile);
+    if((errReadIdx == KErrNotFound))
+        {
+            CleanupStack::PopAndDestroy();
+            return EFalse;
+        }
+    CleanupStack::PopAndDestroy(&idxFile);
+    return ETrue;
+}
 
 // This method attempts to save all indices to the index file.
 // If any errors are encountered it will Leave.
--- a/pimappservices/calendar/server/src/agsfilemanager.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/server/src/agsfilemanager.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -1243,7 +1243,7 @@
         }
     else
         {
-        iAgnServer.AlarmServer().SetAlarmStatusForCalendarFile(fileName, EAlarmStatusEnabled); 
+        QueueAlarmsImmediately();
         }
     
     User::LeaveIfError(iStore->Commit());
--- a/pimappservices/calendar/server/src/agsmain.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/server/src/agsmain.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -260,6 +260,7 @@
 	iProxy = CAgnTlsProxy::CreateL(CAgnTlsProxy::TAgnTlsTzRulesType_Server);
 			
 	User::LeaveIfError(iFs.Connect());
+	User::LeaveIfError( iFs.ShareProtected() );
 	User::LeaveIfError(iAlarmServer.Connect());
 	iFileMgr = CAgnServFileMgr::NewL(iFs, *this);
 	iFileMgr->CreatePermanentDataL();
--- a/pimappservices/calendar/shared/src/agmcalendartime.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/shared/src/agmcalendartime.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -101,6 +101,14 @@
 			iTime = AgnDateTime::MaxDate();
 			}
  		iLocalOffsetInMinutes = KOffsetUnspecified;
+ 		if ( ! aFloating)
+            { 
+            SetFloatingFlag(EFalse);
+            }
+ 		else
+            {
+            SetFloatingFlag(ETrue);
+            }
 		}
 	else
 		{
--- a/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/BLD.INF	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/BLD.INF	Fri Mar 12 15:42:35 2010 +0200
@@ -21,11 +21,11 @@
 
 PRJ_TESTEXPORTS
 
-TestCalApiPolicing.bat \epoc32\tools\TestCalApiPolicing.bat
-Cap_80000004_TestCalApiPolicingSub.script C:\testdata\scripts\Cap_80000004_TestCalApiPolicingSub.script
-Cap_00010004_TestCalApiPolicingSub.script C:\testdata\scripts\Cap_00010004_TestCalApiPolicingSub.script
-Cap_00008004_TestCalApiPolicingSub.script C:\testdata\scripts\Cap_00008004_TestCalApiPolicingSub.script
-Cap_00000004_TestCalApiPolicingSub.script C:\testdata\scripts\Cap_00000004_TestCalApiPolicingSub.script
-TestCalApiPolicing.IBY \epoc32\rom\include\TestCalApiPolicing.IBY
-TestCalApiPolicing.script C:\testdata\scripts\TestCalApiPolicing.script
+TestCalApiPolicing.bat /epoc32/tools/TestCalApiPolicing.bat
+Cap_80000004_TestCalApiPolicingSub.script C:/testdata/scripts/Cap_80000004_TestCalApiPolicingSub.script
+Cap_00010004_TestCalApiPolicingSub.script C:/testdata/scripts/Cap_00010004_TestCalApiPolicingSub.script
+Cap_00008004_TestCalApiPolicingSub.script C:/testdata/scripts/Cap_00008004_TestCalApiPolicingSub.script
+Cap_00000004_TestCalApiPolicingSub.script C:/testdata/scripts/Cap_00000004_TestCalApiPolicingSub.script
+TestCalApiPolicing.IBY /epoc32/rom/include/TestCalApiPolicing.IBY
+TestCalApiPolicing.script C:/testdata/scripts/TestCalApiPolicing.script
 
--- a/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/TestCalApiPolicing.MMP	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/generated/TestCalApiPolicing.MMP	Fri Mar 12 15:42:35 2010 +0200
@@ -82,9 +82,9 @@
 SOURCE        EDeleteEntryByGuid1_CSTEP.CPP
 SOURCE        ECommit1_CSTEP.CPP
 SOURCE        ERollback1_CSTEP.CPP
-USERINCLUDE   ..\..\..\..\shared\inc
+USERINCLUDE   ../../../../shared/inc
 
-SYSTEMINCLUDE \epoc32\include \epoc32\include\test
+SYSTEMINCLUDE /epoc32/include /epoc32/include/test
 LIBRARY       euser.lib 
 
 //For TEF 
--- a/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/template/TestCalApiPolicing.MMP	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/tsrc/Integration/TestCalApiPolicing/template/TestCalApiPolicing.MMP	Fri Mar 12 15:42:35 2010 +0200
@@ -24,7 +24,7 @@
 PARAM_FOREACH_MESS_END
 USERINCLUDE   PARAM_SVR_USERINCLUDE
 
-SYSTEMINCLUDE PARAM_SVR_SYSTEMINCLUDE \epoc32\include\test
+SYSTEMINCLUDE PARAM_SVR_SYSTEMINCLUDE /epoc32/include/test
 LIBRARY       PARAM_SVR_LIBRARIES
 
 //For TEF 
--- a/pimappservices/calendar/tsrc/caltestlib.cpp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/tsrc/caltestlib.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -21,6 +21,7 @@
 #include <caldataexchange.h>
 #include <caldataformat.h>
 #include <calsession.h>
+#include <calcalendarinfo.h>
 #include <calprogresscallback.h>
 #include <e32test.h>
 #include <consolealarmalertservermain.h>
@@ -120,6 +121,7 @@
 void CCalTestLibrary::CloseCalendarSession(TBool aWaitForAgendaToClose)
 	{
 	iChunkMutex.Wait();
+	iSubCalSessions.ResetAndDestroy();
 	delete iSession;
 	iSession = NULL;	
 	if (iRefCount && (--*iRefCount <= 0) && aWaitForAgendaToClose)
@@ -399,6 +401,16 @@
 	
 	if (aIsCalFile)
 		{
+		
+		for(TInt i = 0; i < iSubCalSessions.Count();i++)
+		    {
+		    CCalCalendarInfo* info = iSubCalSessions[i]->CalendarInfoL();
+		    HBufC* fileName = info->FileNameL().AllocLC();
+		    delete info;
+		    iSubCalSessions[i]->DeleteCalFileL(*fileName);
+		    CleanupStack::PopAndDestroy(fileName);
+		    }
+		
 		iSession->DeleteCalFileL(aFileName);
 		TInt indx=-1;
 		if(iDelFileFlag)
@@ -948,4 +960,24 @@
 	return tickPeriod * durationInTicks;	
 	}
 
+EXPORT_C RPointerArray<CCalSession>& CCalTestLibrary::CreateCalSubSessionL(const TDesC& aFileName)
+    {
+    CCalSession* session = CCalSession::NewL(*iSession);
+    CCalCalendarInfo* calendarInfo = CCalCalendarInfo::NewL();
+    calendarInfo->SetColor(KRgbRed);
+    calendarInfo->SetNameL(_L("test"));
+    calendarInfo->SetEnabled(ETrue);
+    
+    TRAPD(err,session->CreateCalFileL(aFileName,*calendarInfo));
+    if(err == KErrAlreadyExists)
+        {
+        session->DeleteCalFileL(aFileName);
+        session->CreateCalFileL(aFileName,*calendarInfo);
+        }
+    session->OpenL(aFileName);
+    iSubCalSessions.Append(session);
+    
+    delete calendarInfo;
+    return iSubCalSessions;
+    }
 
--- a/pimappservices/calendar/tsrc/caltestlib.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/tsrc/caltestlib.h	Fri Mar 12 15:42:35 2010 +0200
@@ -105,6 +105,9 @@
 
 	// Used to append the file to the delete list
 	IMPORT_C void RegisterCalFileL(const TDesC& aFileName);
+	
+	// Create a calendar file. It leaves if the file exists.
+	IMPORT_C RPointerArray<CCalSession>& CreateCalSubSessionL(const TDesC& aFileName);
 
 
 // Session and Views handling
@@ -220,6 +223,7 @@
 	TBool				iDelFileFlag;
 	RMutex				iChunkMutex;
 	RASCliSession		iAlarmServer;
+	RPointerArray<CCalSession> iSubCalSessions;
 	};
 
 
--- a/pimappservices/calendar/tsrc/interop/group/alldayevents.mmp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/tsrc/interop/group/alldayevents.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -21,10 +21,10 @@
 
 CAPABILITY readuserdata writeuserdata
 
-USERINCLUDE	 ..\inc
-SYSTEMINCLUDE   \epoc32\include
+USERINCLUDE	 ../inc
+SYSTEMINCLUDE   /epoc32/include
 
-SOURCEPATH	  ..\src
+SOURCEPATH	  ../src
 SOURCE		  alldayevents.cpp
 
 LIBRARY      euser.lib estor.lib efsrv.lib pimtestclient.lib 
--- a/pimappservices/calendar/tsrc/tcal_dataexchange.mmp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendar/tsrc/tcal_dataexchange.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -23,6 +23,7 @@
 
 USERINCLUDE		.
 SYSTEMINCLUDE	/epoc32/include
+APP_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 LIBRARY			calinterimapi.lib
 LIBRARY			euser.lib estor.lib efsrv.lib caltestlib.lib
--- a/pimappservices/calendarvcalplugin/Inc/agnversit.h	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendarvcalplugin/Inc/agnversit.h	Fri Mar 12 15:42:35 2010 +0200
@@ -25,10 +25,10 @@
 #include <e32std.h>
 #include <vcal.h>
 #include <tz.h>
-#include "calversit.h"
 #include <caldataexchange.h>
 
 #include "agmvcal.h"
+#include "calversit.h"
 
 class TTzRule;
 class CAgnVCalConverter;
--- a/pimappservices/calendarvcalplugin/group/agnversit.mmp	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappservices/calendarvcalplugin/group/agnversit.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -31,7 +31,7 @@
 SOURCEPATH	../src
 
 userinclude	../Inc
-USERINCLUDE     ../../calendar/inc
+userinclude ../../calendar/inc
 
 
 SOURCEPATH	../src
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/bwins/CCONORIGINALU.DEF	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,19 @@
+EXPORTS
+	??0TArithmeticalDate@@QAE@XZ @ 1 NONAME ; public: __thiscall TArithmeticalDate::TArithmeticalDate(void)
+	??0TChineseCalendar@@QAE@XZ @ 2 NONAME ; public: __thiscall TChineseCalendar::TChineseCalendar(void)
+	??0TChineseDate@@QAE@XZ @ 3 NONAME ; public: __thiscall TChineseDate::TChineseDate(void)
+	??0TGregorianCalendar@@QAE@N@Z @ 4 NONAME ; public: __thiscall TGregorianCalendar::TGregorianCalendar(double)
+	??0TGregorianCalendar@@QAE@XZ @ 5 NONAME ; public: __thiscall TGregorianCalendar::TGregorianCalendar(void)
+	??4TCalendar@@QAEAAV0@ABV0@@Z @ 6 NONAME ; public: class TCalendar & __thiscall TCalendar::operator=(class TCalendar const &)
+	??8TArithmeticalDate@@QBEHABV0@@Z @ 7 NONAME ; public: int __thiscall TArithmeticalDate::operator==(class TArithmeticalDate const &)const 
+	??8TChineseDate@@QBEHABV0@@Z @ 8 NONAME ; public: int __thiscall TChineseDate::operator==(class TChineseDate const &)const 
+	?ChineseToDateTime@TChineseCalendar@@QAEXAAVTDateTime@@@Z @ 9 NONAME ; public: void __thiscall TChineseCalendar::ChineseToDateTime(class TDateTime &)
+	?DateTimeToChinese@TChineseCalendar@@QAEXABVTDateTime@@@Z @ 10 NONAME ; public: void __thiscall TChineseCalendar::DateTimeToChinese(class TDateTime const &)
+	?DateTimeToGregorian@TGregorianCalendar@@QAEXAAVTDateTime@@@Z @ 11 NONAME ; public: void __thiscall TGregorianCalendar::DateTimeToGregorian(class TDateTime &)
+	?GetDate@TChineseCalendar@@QAEXAAVTChineseDate@@@Z @ 12 NONAME ; public: void __thiscall TChineseCalendar::GetDate(class TChineseDate &)
+	?GetDate@TGregorianCalendar@@QAEXAAVTArithmeticalDate@@@Z @ 13 NONAME ; public: void __thiscall TGregorianCalendar::GetDate(class TArithmeticalDate &)
+	?GregorianToDateTime@TGregorianCalendar@@QAEXAAVTDateTime@@@Z @ 14 NONAME ; public: void __thiscall TGregorianCalendar::GregorianToDateTime(class TDateTime &)
+	?JulianDay@TCalendar@@QAENXZ @ 15 NONAME ; public: double __thiscall TCalendar::JulianDay(void)
+	?SetDate@TChineseCalendar@@QAEHABVTChineseDate@@@Z @ 16 NONAME ; public: int __thiscall TChineseCalendar::SetDate(class TChineseDate const &)
+	?SetDate@TGregorianCalendar@@QAEHAAVTArithmeticalDate@@@Z @ 17 NONAME ; public: int __thiscall TGregorianCalendar::SetDate(class TArithmeticalDate &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/calcontablesrc/CalconTable.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,314 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Creates the Calcon look-up table for the date range:
+// 1/1/StartYear & 31/12/KEndYear
+// The Linda Agenda date range is 1980-2100
+// Creates CALCONDATA.CPP and CALCONDATA.H in \epoc32\wins\c
+// These should then be placed in  \calcon\src and \calcon\inc respectively
+// and then Calcon should be rebuilt.
+// Uses the original Calcon library, now called CalconOriginal.dll
+//
+
+void mainL();
+
+#include "CalconTable.h"
+#include "calconv.h"
+#include <utf.h>
+
+// Type definitions
+#define UNUSED_VAR(a) a = a
+
+//Change these to alter the date range for Calcon
+const TInt KStartYear=-587;
+const TInt KEndYear=2100;
+
+CCalconTableEngine::CCalconTableEngine() :
+	iTest(_L("CalconTable"))
+		{}
+
+void CCalconTableEngine::GenerateTableL()
+	{
+	TTime timeStarted;
+	timeStarted.UniversalTime();
+
+	iTest.Printf(_L("Generating Calcon table for dates:\n"));
+	iTest.Printf(_L("Start: 1st January %d\n"),KStartYear);
+	iTest.Printf(_L("End: 31st December %d\n\n"),KEndYear);
+	iTest.Printf(_L("Creating c:\\calcondata.cpp\n\n"));
+
+	TDateTime dateTime(KStartYear,EJanuary,0,0,0,0,0);
+	TDateTime endTime(KEndYear,EDecember,31-1,0,0,0,0);
+
+	iStartJulianDate=JulianDate(dateTime);
+	iEndJulianDate=JulianDate(endTime);
+
+	TChineseCalendar calendar;
+
+	TInt numYears=endTime.Year()-dateTime.Year()+4;
+	iYearArray = new (ELeave) TUint[numYears];
+
+//Set date to beginning of current Chinese year
+	TChineseDate initialChineseDate;
+	calendar.DateTimeToChinese(dateTime);
+	calendar.GetDate(initialChineseDate);
+
+	initialChineseDate.iMonth=1;
+	initialChineseDate.iDay=1;
+	calendar.SetDate(initialChineseDate);
+	calendar.ChineseToDateTime(dateTime);
+
+	TTime time=dateTime;
+	TReal chineseNewYear=JulianDate(dateTime);
+
+	TChineseDate lastDate;
+	TChineseDate chineseDate=initialChineseDate;
+
+//Move near the end of the current month
+	time+=TTimeIntervalDays(27);
+	TBool hadLeapMonth=EFalse;	
+
+	iSession.Connect();
+	TInt err=iFile.Replace(iSession, _L("c:\\calcondata.cpp"), EFileShareExclusive);
+	if (err!=KErrNone)
+		return;
+
+	err=iFile2.Replace(iSession, _L("c:\\calcondata.h"), EFileShareExclusive);
+	if (err!=KErrNone)
+		return;
+
+	StartPrint(initialChineseDate.iCycle);
+
+	while (chineseNewYear<iEndJulianDate)
+		{
+		lastDate=chineseDate;
+		time+=TTimeIntervalDays(1);
+
+		dateTime=time.DateTime();
+		calendar.DateTimeToChinese(dateTime);
+		calendar.GetDate(chineseDate);
+
+		if ((chineseDate.iMonth!=lastDate.iMonth)
+			|| (chineseDate.iLeapMonth!=lastDate.iLeapMonth))
+			{
+			TInt monthFlag= lastDate.iLeapMonth ? 2 : 0;
+			ASSERT(lastDate.iDay==29 || lastDate.iDay==30);
+		
+			monthFlag += lastDate.iDay==29 ? 1 : 2;
+
+			if (lastDate.iLeapMonth)
+				hadLeapMonth=ETrue;
+
+			TInt cycle=lastDate.iCycle-initialChineseDate.iCycle;
+			TInt year=lastDate.iYear-1;
+			TInt month=lastDate.iMonth-1;//ADDED -1
+			if (hadLeapMonth)
+				month++;
+
+			if(month==0)	//was 0
+				AddNewYear((TInt)chineseNewYear);
+			
+			AddMonth(cycle,year,month,monthFlag);
+
+			if (chineseDate.iYear!=lastDate.iYear)
+				{
+				hadLeapMonth=EFalse;
+				TDateTime dt(time.DateTime());
+				chineseNewYear=(TInt)JulianDate(dt);
+				}
+
+			time+=TTimeIntervalDays(27);
+			}
+		}
+
+	StopPrint(chineseDate.iCycle);
+
+	TTime timeFinished;
+	timeFinished.UniversalTime();
+	TInt64 duration=timeFinished.Int64()-timeStarted.Int64();
+
+	Print(1,_L8("\n//Took %u seconds to create\n"),duration/1000000);
+	iFile.Close();
+	iFile2.Close();
+	iSession.Close();
+
+	delete[] iYearArray;
+	iTest.Close();
+	}
+
+TInt CCalconTableEngine::JulianDate(TDateTime& aDate)
+	{
+
+	TGregorianCalendar greg;
+	greg.DateTimeToGregorian( aDate);
+	return (TInt)greg.JulianDay();
+
+/*	An alternative method for calculating the Julian Date, used in Chinese Linda.
+//	Results differ from Calcon for -ve Gregorian years.
+
+	TInt Month = STATIC_CAST(TInt, aDate.Month());
+	TInt Year;
+	Month++;
+	
+	if (Month > 2)
+		{
+		Month = Month - 3;
+		Year = aDate.Year();
+		}
+	else
+		{
+		Month = Month + 9;
+		Year = aDate.Year() - 1;
+		}
+
+	TInt Centuries = Year / 100; 
+	TInt Decades = Year - 100 * Centuries;
+	TInt julian = (146097 * Centuries)/4 + (1461 * Decades) /4 + (153 * Month + 2) / 5 + aDate.Day() + 1 + 1721119;
+	return julian;
+*/
+	}
+
+void CCalconTableEngine::Print(TInt aFile,TPtrC8 aFormat, ...)
+	{
+	VA_LIST   args;
+	VA_START( args, aFormat);
+
+	TBuf8<1024> buffer;
+	TBuf16<1024> buffer2;
+
+	buffer.FormatList(aFormat, args);
+	CnvUtfConverter::ConvertToUnicodeFromUtf8(buffer2,buffer);
+
+	if (aFile==1)
+		iFile.Write(buffer);
+	if (aFile==2)
+		iFile2.Write(buffer);
+
+	iTest.Printf(buffer2);
+	}
+
+void CCalconTableEngine::AddNewYear(TInt aChineseNewYear)
+	{
+	iYearArray[iYearCounter++]=aChineseNewYear;
+	}
+
+void CCalconTableEngine::AddMonth(TInt aCycle, TInt aYear, TInt aMonth, TInt aMonthFlag)
+	{
+	if (iFirstPrint)
+		{
+		iFirstPrint=EFalse;
+		iFirstYear=aYear;
+
+		Print(2,_L8("const TInt KFirstJulianDate=%d;\n"),iStartJulianDate);
+		Print(2,_L8("const TInt KLastJulianDate=%d;\n"),iEndJulianDate);
+		Print(2,_L8("const TInt KFirstYear=%d; //1..60\n"),aYear+1);
+		Print(1,_L8("const TUint16 TCalconData::iCalConDataMonth[]={\n"));
+		
+		iMonthFlag=0;
+		iMonthFlagBit=1<<15;
+		iCyclePrint=aCycle;
+		iMonthPrint=aMonth;
+		iYearPrint=aYear;
+		}
+	else
+		{
+		if (aMonth==0)
+			{//print out the month details
+			Print(1,_L8(" %uU, // %u - %u\n"),iMonthFlag, iCyclePrint,iYearPrint);
+
+			iMonthFlag=0;
+			iMonthFlagBit=1<<15;
+			iCyclePrint=aCycle;
+			iMonthPrint=aMonth;
+			iYearPrint=aYear;
+			iLastYear=iYearPrint+1;
+			}
+		}
+
+	TBool bit=EFalse;	//29 days
+	if (aMonthFlag==2 || aMonthFlag==4)	//30 days
+		bit=ETrue;
+
+	if (aMonthFlag==3 || aMonthFlag==4)
+		{//set leap
+		TUint shiftedLeapMonth=TUint(aMonth+1)<<28;
+		iYearArray[iYearCounter-1]|=shiftedLeapMonth;
+		}
+	
+	if (bit)
+		iMonthFlag|=iMonthFlagBit;
+	
+	iMonthFlagBit>>=1;
+	}
+
+void CCalconTableEngine::StartPrint(TInt aFirstCycle)
+	{
+	iFirstPrint=ETrue;
+
+	Print(1,_L8("//\n"));
+	Print(1,_L8("// CALCONDATA.CPP\n"));
+	Print(1,_L8("//\n"));
+	Print(1,_L8("// Copyright (c) 2002 Symbian Ltd. All rights reserved\n"));
+	Print(1,_L8("//\n"));
+	Print(1,_L8("// Generated by CalconTable.exe\n"));
+	Print(1,_L8("//\n"));
+
+	Print(2,_L8("//\n"));
+	Print(2,_L8("// CALCONDATA.H\n"));
+	Print(2,_L8("//\n"));
+	Print(2,_L8("// Copyright (c) 2002 Symbian Ltd. All rights reserved\n"));
+	Print(2,_L8("//\n"));
+	Print(2,_L8("// Generated by CalconTable.exe\n"));
+	Print(2,_L8("//\n"));
+
+	Print(1,_L8("#include \"calconvusingtable.h\"\n"));
+	Print(2,_L8("const TInt KFirstCycle=%d;//1..n\n"),aFirstCycle);
+	}
+
+void CCalconTableEngine::StopPrint(TInt aLastCycle)
+	{
+	Print(1,_L8("};\n"));
+	Print(1,_L8("const TUint32 TCalconData::iCalConDataYear[]={\n"));
+
+	for (TInt i=0;i<iYearCounter;i++)
+		{
+		Print(1,_L8(" %u,"),iYearArray[i]);
+		Print(1,_L8(" // %d - %d\n"),(i+iFirstYear)/60, (i+iFirstYear)%60);;
+		}
+	
+	Print(1,_L8("0xffffffff\n};\n"));
+	Print(2,_L8("const TInt KLastCycle=%d;//1..n\n"),aLastCycle);
+	Print(2,_L8("const TInt KLastYear=%d;//1..60\n"),iLastYear);
+	Print(2,_L8("const TInt KNumberOfYears=%d;\n"),iYearCounter);
+	}
+
+GLDEF_C TInt E32Main()
+    {
+	__UHEAP_MARK;
+	CTrapCleanup* cleanupStack=CTrapCleanup::New();
+
+	TRAPD(error,mainL());
+	UNUSED_VAR(error); //Used to supress build warnings
+
+	delete cleanupStack;
+	__UHEAP_MARKEND;
+	return KErrNone;
+    }
+
+void mainL()
+    {
+	CCalconTableEngine* engine = new (ELeave) CCalconTableEngine();
+	CleanupStack::PushL(engine);
+	engine->GenerateTableL();
+	CleanupStack::PopAndDestroy();  //delete ConvDates;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/calcontablesrc/CalconTable.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,55 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CALCONTABLE_H
+#define __CALCONTABLE_H
+
+#include <f32file.h>
+#include <e32test.h>
+
+class CCalconTableEngine : public CBase
+	{
+public:
+	CCalconTableEngine();
+	void GenerateTableL();
+private:
+	TInt JulianDate(TDateTime& aDate);
+	void AddNewYear(TInt aChineseNewYear);
+	void AddMonth(TInt aCycle, TInt aYear, TInt aMonth, TInt aMonthFlag);
+	void Print(TInt aFile, TPtrC8 aFormat, ...);
+	void StartPrint(TInt);
+	void StopPrint(TInt);
+private:
+	RTest iTest;
+	TBool iFirstPrint;
+	TInt iFirstYear;
+	TInt iLastYear;
+	TUint* iYearArray;
+	TInt iLastMonth;
+	TInt iYearCounter;
+	RFile iFile;
+	RFile iFile2;
+	RFs iSession;
+
+	TInt iCyclePrint;
+	TInt iMonthPrint;
+	TInt iYearPrint;
+	TUint iMonthFlag;
+	TUint iMonthFlagBit;
+
+	TInt iStartJulianDate;
+	TInt iEndJulianDate;
+	};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/eabi/CConOriginalU.DEF	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,28 @@
+EXPORTS
+	_ZN12TChineseDateC1Ev @ 1 NONAME
+	_ZN12TChineseDateC2Ev @ 2 NONAME
+	_ZN16TChineseCalendar17ChineseToDateTimeER9TDateTime @ 3 NONAME
+	_ZN16TChineseCalendar17DateTimeToChineseERK9TDateTime @ 4 NONAME
+	_ZN16TChineseCalendar7GetDateER12TChineseDate @ 5 NONAME
+	_ZN16TChineseCalendar7SetDateERK12TChineseDate @ 6 NONAME
+	_ZN16TChineseCalendarC1Ev @ 7 NONAME
+	_ZN16TChineseCalendarC2Ev @ 8 NONAME
+	_ZN17TArithmeticalDateC1Ev @ 9 NONAME
+	_ZN17TArithmeticalDateC2Ev @ 10 NONAME
+	_ZN18TGregorianCalendar19DateTimeToGregorianER9TDateTime @ 11 NONAME
+	_ZN18TGregorianCalendar19GregorianToDateTimeER9TDateTime @ 12 NONAME
+	_ZN18TGregorianCalendar7GetDateER17TArithmeticalDate @ 13 NONAME
+	_ZN18TGregorianCalendar7SetDateER17TArithmeticalDate @ 14 NONAME
+	_ZN18TGregorianCalendarC1Ed @ 15 NONAME
+	_ZN18TGregorianCalendarC1Ev @ 16 NONAME
+	_ZN18TGregorianCalendarC2Ed @ 17 NONAME
+	_ZN18TGregorianCalendarC2Ev @ 18 NONAME
+	_ZN9TCalendar9JulianDayEv @ 19 NONAME
+	_ZN9TCalendaraSERKS_ @ 20 NONAME
+	_ZNK12TChineseDateeqERKS_ @ 21 NONAME
+	_ZNK17TArithmeticalDateeqERKS_ @ 22 NONAME
+	_ZTI18TGregorianCalendar @ 23 NONAME ; #<TI>#
+	_ZTV18TGregorianCalendar @ 24 NONAME ; #<VT>#
+	_ZTI21TArithmeticalCalendar @ 25 NONAME ; #<TI>#
+	_ZTV21TArithmeticalCalendar @ 26 NONAME ; #<VT>#
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/group/1028702c.rss	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,39 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "ecom/registryinfo.rh"
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	dll_uid = 0x1028702C;
+	interfaces = 
+		{
+		INTERFACE_INFO
+			{
+			interface_uid = 0x1028702B;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					implementation_uid = 0x1028702D;
+					version_no = 1;
+					display_name = "cconplugin";
+					default_data = "";
+					opaque_data = "";
+					}
+				};
+			}
+		};
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/group/CalconTest.iby	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,30 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CALCONTEST_IBY__
+#define __CALCONTEST_IBY__
+
+REM Calender Converter Test
+
+file=ABI_DIR\BUILD_DIR\tCCn.exe          	System\Programs\CalconTest\tCCn.exe
+#include <calcon.iby>
+
+
+
+data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\input1.txt			calcontest\input1.txt
+data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\input2.txt			calcontest\input2.txt
+data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\output1REFERENCE.txt			calcontest\output1REFERENCE.txt
+data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\output2REFERENCE.txt			calcontest\output2REFERENCE.txt
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/group/app-services_chinesecalendaralgorithm.mrp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,12 @@
+component	app-services_chinesecalendaralgorithm
+source	\sf\app\organizer\pimappsupport\chinesecalendaralg
+binary	\sf\app\organizer\pimappsupport\chinesecalendaralg\group	all
+exports	\sf\app\organizer\pimappsupport\chinesecalendaralg\group
+notes_source	\component_defs\release.src
+
+
+#  == IPR section auto-inserted from distribution.policy files  ==
+ipr T 
+ipr E \sf\app\organizer\pimappsupport\chinesecalendaralg\pluginsrc\table1900-2100
+
+# == end auto-inserted section ==
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/group/bld.inf	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,27 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Calcon BLD.INF
+// Calendar conversion utilities
+//
+
+PRJ_PLATFORMS
+
+PRJ_EXPORTS
+cconplugin.iby /epoc32/rom/include/cconplugin.iby
+
+PRJ_MMPFILES
+cconplugin.mmp
+
+#include "../test/group/bld.inf"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/group/calcontable.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,28 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET calcontable.exe
+TARGETTYPE exe
+CAPABILITY   All -TCB
+UID 0        
+VENDORID 0x70000001
+SOURCEPATH ../calcontablesrc
+SOURCE CalconTable.cpp
+USERINCLUDE ../calcontablesrc
+USERINCLUDE ../originalinc
+SYSTEMINCLUDE /epoc32/include
+APP_LAYER_SYSTEMINCLUDE_SYMBIAN
+LIBRARY	euser.lib efsrv.lib cconoriginal.lib charconv.lib
+SMPSAFE
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/group/cconoriginal.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,28 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET cconoriginal.dll
+TARGETTYPE dll
+CAPABILITY   All -TCB
+UID 0x1000008d 0x10005407	//need to change UID
+VENDORID 0x70000001
+SOURCEPATH ../originalsrc
+SOURCE CConmain.cpp Calendar.cpp ArithmeticalCal.cpp Gregorian.cpp 
+SOURCE ArithmeticalDate.cpp AstronomicalCal.cpp Chinese.cpp ChineseDate.cpp
+USERINCLUDE ../originalinc
+SYSTEMINCLUDE /epoc32/include
+
+LIBRARY euser.lib
+SMPSAFE
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/group/cconplugin.iby	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,21 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CCONPLUGIN_IBY__
+#define __CCONPLUGIN_IBY__
+
+ECOM_PLUGIN(cconplugin.dll,1028702c.rsc)
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/group/cconplugin.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,42 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// cconplugin.dll Bi-directional Chinese Lunar calendar to Gregorian calendar
+//
+
+TARGET cconplugin.dll
+TARGETTYPE plugin
+CAPABILITY   All -TCB
+UID	0x10009D8D 0x1028702C
+VENDORID 0x70000001
+
+APP_LAYER_SYSTEMINCLUDE_SYMBIAN
+USERINCLUDE ../pluginsrc
+
+SOURCEPATH ../pluginsrc
+
+SOURCE cconplugin.cpp
+SOURCE chinesecalendarconverterimpl.cpp
+SOURCE chinesecalendar.cpp
+SOURCE calcondata.cpp
+SOURCE gregoriancalendar.cpp
+SOURCE calendar.cpp
+
+LIBRARY euser.lib
+LIBRARY	ecom.lib
+
+SOURCEPATH .
+start resource 1028702c.rss
+	target cconplugin.rsc
+end
+SMPSAFE
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalinc/calconv.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,107 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CALCONV_H__
+#define __CALCONV_H__
+
+// User includes
+#include "calconvAstronomicalCal.h"
+#include "calconvArithmeticalCal.h"
+
+// Constants
+const TInt KCalConInvalidDate = -50000; // invalid date error code
+
+// Classes referenced
+class TChineseDate;
+class TArithmeticalDate;
+
+
+class TChineseCalendar : public TAstronomicalCalendar  
+{
+public:
+	IMPORT_C TChineseCalendar();
+	IMPORT_C void DateTimeToChinese(const TDateTime& aDT);
+	IMPORT_C void ChineseToDateTime(TDateTime& aDT);
+	IMPORT_C TInt SetDate(const TChineseDate& aDate);
+	IMPORT_C void GetDate(TChineseDate& aDate);
+
+private:
+	void ChineseToFixed(const TChineseDate& aDate, TReal& aJulianDay) const;
+	void ChineseFromFixed(TChineseDate& aDate,const TReal& aJulianDay) const;
+	TReal ChineseNewYear(TInt aYear) const;
+	TBool NoMajorSolarTerm(TReal aJulianDay) const;
+	TBool PriorLeapMonth(TReal& aMnthprime, TReal aMnth) const;
+	TInt ChineseNewMoonOnOrAfter(TReal aJulianDay) const;
+	TInt ChineseNewMoonBefore(TReal aJulianDay) const;
+	TReal MajorSolarTermOnOrAfter(TReal& aJulianDay) const;
+	TInt ChineseDateNextSolarLongitude(TReal& aJulianDay, const TReal& aDegrees) const;
+	TReal ChineseTimeZone(const TReal& aJulianDay) const;
+	TReal CurrentMajorSolarTerm(TReal& aJulianDay) const;
+	TBool ValidDate(const TChineseDate& aDate) const;
+	};
+
+class TGregorianCalendar : public TArithmeticalCalendar
+	{
+public:
+	IMPORT_C TGregorianCalendar();
+	IMPORT_C TGregorianCalendar(TReal aJulianDay);
+	IMPORT_C void GregorianToDateTime(TDateTime& aDT);
+	IMPORT_C void DateTimeToGregorian(TDateTime& aDT);
+	IMPORT_C void GetDate(TArithmeticalDate& aDate);
+	IMPORT_C TInt SetDate(TArithmeticalDate& aGregDate);
+
+private:
+	void GregFromJulianDay(TArithmeticalDate& aDate, TReal aJulianDay) const;
+	void InitMembers();
+	TInt DayNumber(const TArithmeticalDate& aDate) const;
+	void CalcGregYear(TArithmeticalDate& aDate, TReal aJulianDay) const;
+	TBool IsLeapYear(const TInt aYear) const;
+	TReal GregToJulianDay(const TArithmeticalDate& aYear) const;
+	TInt GregDateDiff(const TArithmeticalDate aDate1, const TArithmeticalDate aDate2) const;
+	TBool ValidDate(const TArithmeticalDate& aDate) const;
+
+private:
+	friend class TAstronomicalCalendar;
+	friend class TChineseCalendar;
+	};
+
+class TChineseDate  
+{
+public:
+	IMPORT_C TChineseDate();
+	IMPORT_C TBool operator==(const TChineseDate& aDate) const;
+
+public:
+	TInt iCycle;
+	TInt iYear;
+	TInt iMonth;
+	TBool iLeapMonth;
+	TInt iDay;
+};
+
+class TArithmeticalDate  
+{
+public:
+	IMPORT_C TArithmeticalDate();
+	IMPORT_C TBool operator==(const TArithmeticalDate& aDate) const;
+
+public:
+	TInt iDay;
+	TInt iMonth;
+	TInt iYear;
+};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalinc/calconvArithmeticalCal.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,34 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __ARITHMETICALCAL_H__
+#define __ARITHMETICALCAL_H__
+
+#include <e32std.h>
+#include "calconvcalendar.h"
+
+class TArithmeticalCalendar : public TCalendar  
+	{
+public:
+	TArithmeticalCalendar();
+
+protected:
+	TInt DayMonthInYear(const TInt) const;
+	TInt DaysMonthsElapsed(const TInt) const;
+	virtual TBool IsLeapYear(const TInt) const;
+	};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalinc/calconvAstronomicalCal.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,57 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __ASTRONOMICALCAL_H__
+#define __ASTRONOMICALCAL_H__
+
+
+#include <e32std.h>
+#include <e32base.h>
+#include "calconvcalendar.h"
+
+const TInt KCalConvFirstDay = 1;
+const TReal KMeanSynodicMonth = 29.530588853;
+
+
+class TAstronomicalCalendar : public TCalendar  
+	{
+public:
+	TAstronomicalCalendar();
+
+protected:
+	void  AdjustJDFromNoon(TReal& aJulianDay) const;
+	void  AdjustJDToNoon(TReal& aJulianDay) const;
+	TReal NewMoonAtOrAfter(const TReal& aJulianDay) const;
+	void  EphemerisCorrection(const TReal aJulianDay, TReal& emphCorr) const;
+	TReal LocalFromUniversal(const TReal& aTime, const TReal& aZone) const;
+	TReal UniversalFromLocal(const TReal& aTime, const TReal& aZone) const;
+	TReal DateNextSolarLongitude(const TReal& aJulianDay, const TReal& aDegrees) const;
+	void  SolarLongitude(const TReal& aJulianDay, TReal& aTheta) const;
+	void  JulianCenturies(const TReal& aJulianDay, TReal& aJC) const;
+	void  EphemerisFromUniversal(const TReal& aJulianDay, TReal& aCorrectedJD) const;
+	TReal UniversalFromEphemeris(const TReal& aJulianDay) const;
+	void  EphemerisCorrPopX(const TInt aYear, TReal& aEmphCorr) const;
+	TReal NewMoonBefore(const TReal& aJulianDay) const;
+private:
+	TReal NewMoonTime(TInt aTime) const;
+	void  GetLongitude(const TReal& aC, TReal& aLongitude) const;
+	void  Aberration(const TReal& aJulianCenturies, TReal& aAberration) const;
+	void  Nutation(const TReal& aJulianCenturies, TReal& aNutation) const;
+	void  j2000(TReal& aJ2000) const;
+	void  GetPoly(const TReal* aArray, const TReal& aOperand, TInt aCount, TReal& aResult) const;
+	void  PopulateTheta(TReal& aTheta, TInt aYear) const;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalinc/calconvcalendar.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,54 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CALENDAR_H__
+#define __CALENDAR_H__
+
+#include <e32std.h>
+#include <e32def.h>
+
+
+const TInt KCalConvDayOffsetByOne = 1;
+const TInt KCalConvMonthOffsetByOne = 1;
+const TInt KCalConvYearOffsetByOne = 1;
+const TReal KCalConvPointFive = 0.5;
+
+
+class TCalendar
+	{
+public:
+	TCalendar();
+	IMPORT_C TCalendar& operator=(const TCalendar& aTCal);
+	IMPORT_C TReal JulianDay();
+
+protected:
+	void Round(TInt& aRes, TReal& aNum) const;
+	void Mod(TReal& aRes, const TReal& aAbscissa, const TReal& aDenominator) const;
+	void Amod(TReal& aRes, const TReal& aAbscissa, const TReal& aDenominator) const;
+	void Floor(TInt& aRes, const TReal& aNum) const;
+	void Ceiling(TInt& aRes, const TReal& aNum) const;
+
+protected:
+	TReal iStartEpoch;
+	TInt iDaysInNormYear;
+	TReal iJulianDay;
+	TInt iCycle;
+	TInt iLeaps;
+	TInt iOffset;
+	TInt iStdYearMonth;
+	};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalsrc/ArithmeticalCal.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,125 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the TArithmeticalCalendar class.
+// 
+//
+
+// System includes
+#include <e32math.h>
+
+// User includes
+#include "calconvArithmeticalCal.h"
+
+
+//
+// Construction/Destruction
+//
+
+//------------------------------------------------------
+// Class:       TArithmeticalCalendar
+// Function:    TArithmeticalCalendar
+// Arguments:   None
+//
+// Comments:    Constructor
+//
+// Return:      None
+//------------------------------------------------------
+TArithmeticalCalendar::TArithmeticalCalendar()
+	{
+	}
+
+//------------------------------------------------------
+// Class:       TArithmeticalCalendar
+// Function:    DaysMonthsElapsed
+// Arguments:   const TInt ,const TInt ,const TInt , const TInt ,const TInt
+//
+// Comments:    The use of this function varies between calendars 
+//				however since the form of the equation is the same it 
+//				is represented in this class.  The equation is use to 
+//				calculate the number of days in whole months of a particular
+//				year up to a particular date in the Gregorian and 
+//				Islamic calendars.  The Hebrew calendar uses this
+//				equation to calculate the number of whole months 
+//				since the start of the calendar.
+//				
+//
+// Return:      See comments
+//------------------------------------------------------
+TInt TArithmeticalCalendar::DaysMonthsElapsed(const TInt aYear) const
+	{
+	TReal tempReal;
+	TInt result;
+
+	tempReal = iOffset * iLeaps;
+	Mod(tempReal,tempReal,iCycle);
+	tempReal = ((iLeaps * aYear) - iLeaps + tempReal) / iCycle;
+	Floor(result,tempReal);
+	result = result + (iStdYearMonth * (aYear - KCalConvYearOffsetByOne));
+
+	return result;
+	}
+
+//------------------------------------------------------
+// Class:       TArithmeticalCalendar
+// Function:    IsLeapYear
+// Arguments:   const TInt , const TInt ,const TInt , const TInt
+//
+// Comments:    Determines whether the given year is a leap year.
+//				Gregorian uses a different implimentation.
+//
+// Return:      ETrue if leap year, else EFalse
+//------------------------------------------------------
+TBool TArithmeticalCalendar::IsLeapYear(const TInt aYear) const
+	{
+	TReal result;
+	TBool rtn;
+
+	result = (aYear + iOffset) * iLeaps;
+	Mod(result,result,iCycle);
+
+	if(result < iLeaps)
+		{
+		rtn = ETrue;
+		}
+	else
+		{
+		rtn = EFalse;
+		}
+
+	return rtn;
+	}
+
+//------------------------------------------------------
+// Class:       TArithmeticalCalendar
+// Function:    DayMonthInYear
+// Arguments:   None
+//
+// Comments:    This function Determines the month based on
+//				the number of days into the year it is
+//
+// Return:      TInt - Month
+//------------------------------------------------------
+TInt TArithmeticalCalendar::DayMonthInYear(const TInt aDays) const
+	{
+	TReal tempReal;
+	TInt result;
+
+	tempReal = iLeaps * iOffset;
+	Mod(tempReal,tempReal,iCycle);
+	tempReal = (iCycle * aDays) + (iCycle * iStdYearMonth) + iLeaps - KCalConvYearOffsetByOne + iCycle - tempReal;
+	tempReal = tempReal / ((iCycle * iStdYearMonth) + iLeaps);
+	Floor(result,tempReal);
+
+	return result;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalsrc/ArithmeticalDate.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,64 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the TArithmeticalDate class.
+// 
+//
+
+// User includes
+#include "calconv.h"
+
+//
+// Construction/Destruction
+//
+
+//------------------------------------------------------
+// Class:       TArithmeticalDate
+// Function:    TArithmeticalDate
+// Arguments:   None
+//
+// Comments:    Constructor
+//
+// Return:      None
+//------------------------------------------------------
+EXPORT_C TArithmeticalDate::TArithmeticalDate()
+	{
+	}
+
+//------------------------------------------------------
+// Class:       TArithmeticalDate
+// Function:    operator ==
+// Arguments:   const TArithmeticalDate &
+//
+// Comments:    overloaded == operator
+//
+// Return:      TBool - ETrue if both the TArithmeticalDate 
+//				classes are the same
+//------------------------------------------------------
+EXPORT_C TBool TArithmeticalDate::operator ==(const TArithmeticalDate &aDate) const
+	{
+	TBool rtn = ETrue;
+	if(iYear != aDate.iYear)
+		{
+		rtn = EFalse;
+		}
+	if(iMonth != aDate.iMonth)
+		{
+		rtn = EFalse;
+		}
+	if(iDay != aDate.iDay)
+		{
+		rtn = EFalse;
+		}
+	return rtn;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalsrc/AstronomicalCal.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,1090 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the TAstronomicalCalendar class.
+// 
+//
+
+// System includes
+#include <e32base.h>
+#include <e32math.h>
+
+// User includes
+#include "calconv.h"
+#include "calconvAstronomicalCal.h"
+
+// Constants
+const TReal KCoeff19th[] =
+	{
+	-0.00002,
+	0.000297,
+	0.025184,
+	-0.181133,
+	0.553040,
+	-0.861938,
+	0.677066,
+	-0.212591,
+	};
+
+const TReal KCoeff18th[] =
+	{
+	-0.000009,
+	0.003844,
+	0.083563,
+	0.865736,
+	4.867575,
+	15.845535,
+	31.332267,
+	38.291999,
+	28.316289,
+	11.636204,
+	2.043794,
+	};
+
+const TInt KCoeffs[] =
+	{
+	403406,
+	195207,
+	119433,
+	112392,
+	3891,
+	2819,
+	1721,
+	0,
+	660,
+	350,
+	334,
+	314,
+	268,
+	242,
+	234,
+	158,
+	132,
+	129,
+	114,
+	99,
+	93,
+	86,
+	78,
+	72,
+	68,
+	64,
+	46,
+	38,
+	37,
+	32,
+	29,
+	28,
+	27,
+	27,
+	25,
+	24,
+	21,
+	21,
+	20,
+	18,
+	17,
+	14,
+	13,
+	13,
+	13,
+	12,
+	10,
+	10,
+	10,
+	10,
+	};
+
+const TReal KMulti[] =
+	{
+	4.721964,
+	5.937458,
+	1.115589,
+	5.781616,
+	5.5474,
+	1.512,
+	4.1897,
+	1.163,
+	5.415,
+	4.315,
+	4.553,
+	5.198,
+	5.989,
+	2.911,
+	1.423,
+	0.061,
+	2.317,
+	3.193,
+	2.828,
+	0.52,
+	4.65,
+	4.35,
+	2.75,
+	4.5,
+	3.23,
+	1.22,
+	0.14,
+	3.44,
+	4.37,
+	1.14,
+	2.84,
+	5.96,
+	5.09,
+	1.72,
+	2.56,
+	1.92,
+	0.09,
+	5.98,
+	4.03,
+	4.47,
+	0.79,
+	4.24,
+	2.01,
+	2.65,
+	4.98,
+	0.93,
+	2.21,
+	3.59,
+	1.5,
+	2.55,
+	};
+
+const TReal KAdd[] =
+	{
+	0.01621043,
+	628.30348067,
+	628.30821524,
+	628.29634302,
+	1256.605691,
+	1256.60984,
+	628.324766,
+	0.00813,
+	1256.5931,
+	575.3385,
+	-0.33931,
+	7771.37715,
+	786.04191,
+	0.05412,
+	393.02098,
+	-0.34861,
+	1150.67698,
+	157.74337,
+	52.9667,
+	588.4927,
+	52.9611,
+	-39.807,
+	522.3769,
+	550.7647,
+	2.6108,
+	157.7385,
+	1884.9103,
+	-77.5655,
+	2.6489,
+	1179.0627,
+	550.7575,
+	-79.6139,
+	1884.8981,
+	21.3219,
+	1097.7103,
+	548.6856,
+	254.4393,
+	-557.3143,
+	606.9774,
+	21.3279,
+	1097.7163,
+	-77.5282,
+	1884.9191,
+	2.0781,
+	294.2463,
+	-0.0799,
+	469.4114,
+	-0.6829,
+	214.6325,
+	1572.084,
+	};
+
+const TReal KMuArray[] =
+	{
+	-0.40720,
+	0.17241,
+	0.01608,
+	0.01039,
+	0.00739,
+	-0.00514,
+	0.00208,
+	-0.00111,
+	-0.00057,
+	0.00056,
+	-0.00042,
+	0.00042,
+	0.00038,
+	-0.00024,
+	-0.00007,
+	0.00004,
+	0.00004,
+	0.00003,
+	0.00003,
+	-0.00003,
+	0.00003,
+	-0.00002,
+	-0.00002,
+	0.00002,
+	};
+
+const TInt8 KOmegaArray[] =
+	{
+	0,
+	1,
+	0,
+	0,
+	1,
+	1,
+	2,
+	0,
+	0,
+	1,
+	0,
+	1,
+	1,
+	1,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	};
+
+const TInt8 KXiArray[] =
+	{
+	0,
+	1,
+	0,
+	0,
+	-1,
+	1,
+	2,
+	0,
+	0,
+	1,
+	0,
+	1,
+	1,
+	-1,
+	2,
+	0,
+	3,
+	1,
+	0,
+	1,
+	-1,
+	-1,
+	1,
+	0,
+	};
+
+const TInt8 KGammaArray[] =
+	{
+	1,
+	0,
+	2,
+	0,
+	1,
+	1,
+	0,
+	1,
+	1,
+	2,
+	3,
+	0,
+	0,
+	2,
+	1,
+	2,
+	0,
+	1,
+	2,
+	1,
+	1,
+	1,
+	3,
+	4,
+	};
+
+const TInt8 KZetaArray[] =
+	{
+	0,
+	0,
+	0,
+	2,
+	0,
+	0,
+	0,
+	-2,
+	2,
+	0,
+	0,
+	2,
+	-2,
+	0,
+	0,
+	-2,
+	0,
+	-2,
+	2,
+	2,
+	2,
+	-2,
+	0,
+	0,
+	};
+
+const TReal KIotaArray[] =
+	{
+	299.77,
+	251.88,
+	251.83,
+	349.42,
+	84.66,
+	141.74,
+	207.14,
+	154.84,
+	34.52,
+	207.19,
+	291.34,
+	161.72,
+	239.56,
+	331.55,
+	};
+
+const TReal KChiArray[] =
+	{
+	0.107408,
+	0.016321,
+	26.641886,
+	36.412478,
+	18.206239,
+	53.303771,
+	2.453732,
+	7.306860,
+	27.261239,
+	0.121824,
+	1.844379,
+	24.198154,
+	25.513099,
+	3.592518,
+	};
+
+const TReal KNuArray[] =
+	{
+	-0.009173,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	};
+
+const TReal KLamdaArray[] =
+	{
+	0.000325,
+	0.000165,
+	0.000164,
+	0.000126,
+	0.00011,
+	0.000062,
+	0.00006,
+	0.000056,
+	0.000047,
+	0.000042,
+	0.00004,
+	0.000037,
+	0.000035,
+	0.000023,
+	};
+
+const TInt  KInitOne				= 1;
+const TInt KHoursInDay				= 24;
+const TInt KMinsInHour				= 60;
+const TInt KSecsInMin				= 60;
+const TInt KDaysInGregHundredYears	= 36525;
+const TReal KMeanDaysInGregYear		= 365.25;
+const TInt  KSquared				= 2;
+const TInt  KCubed					= 3;
+const TInt  KQuad					= 4;
+const TInt K360Degrees				= 360;
+const TReal KDegreesToRadians		= 0.017453292519943296; //(KPi/180);
+const TInt  KNumElementsCoeff19th	= 8;
+const TInt  KNumElementsCoeff18th	= 11;
+const TInt  KNoOfPeriodicTerms		= 50;
+const TInt  KMaxCorrectionValues	= 24;
+const TReal KMonthsInTropicalYear	= 12.3685;
+const TInt  KMaxAdditionalValues	= 14;
+
+//
+// Construction/Destruction
+//
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    TAstronomicalCalendar
+// Arguments:   None
+//
+// Comments:    Constructor
+//
+// Return:      None
+//------------------------------------------------------
+TAstronomicalCalendar::TAstronomicalCalendar()
+	{
+
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    UniversalFromLocal
+// Arguments:   TReal , TInt 
+//
+// Comments:    Universal time is used for time keeping purposes.
+//				It is given as a fraction on a solar day
+//
+// Return:      Universal time
+//------------------------------------------------------
+TReal TAstronomicalCalendar::UniversalFromLocal(const TReal& aTime,const TReal& aZone) const
+	{
+	return (aTime - (aZone / (KHoursInDay * KMinsInHour)));
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    LocalFromUniversal
+// Arguments:   TReal , TInt 
+//
+// Comments:    Universal time is used for time keeping purposes.
+//				It is given as a fraction on a solar day
+//
+// Return:      Local time
+//------------------------------------------------------
+TReal TAstronomicalCalendar::LocalFromUniversal(const TReal& aTime, const TReal& aZone) const
+	{
+	return (aTime + (aZone / (KHoursInDay * KMinsInHour)));
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendarL
+// Function:    EphemerisCorrection
+// Arguments:   TReal 
+//
+// Comments:    Astronomical calculations are performed using
+//				Ephemeris time that is not affected by nutation
+//				and aberation. 
+//
+// Return:      Correction value
+//------------------------------------------------------
+void TAstronomicalCalendar::EphemerisCorrection(const TReal aJulianDay, TReal& aCorrection) const
+	{
+	TGregorianCalendar greg(aJulianDay);
+	TArithmeticalDate gregDate;
+	TInt year;
+	TReal theta;
+	TReal x;
+	aCorrection = 0;
+
+	// get the value for the year
+	greg.GetDate(gregDate);
+	year = gregDate.iYear;
+	// get theta value
+	PopulateTheta(theta,year);
+	// get x value
+	EphemerisCorrPopX(year, x);
+
+	// perform ephemeris correction
+	if((year >= 1988) && (year <= 2019))
+		{
+		aCorrection = ((year - 1933) / (KHoursInDay * KMinsInHour * KSecsInMin));
+		}
+	else if((year >= 1900) && (year <= 1987))
+		{
+		GetPoly(KCoeff19th,theta,KNumElementsCoeff19th,aCorrection);
+		}
+	else if((year >= 1800) && (year <= 1899))
+		{
+		GetPoly(KCoeff18th,theta,KNumElementsCoeff18th, aCorrection);
+		}
+	else if((year >= 1620) && (year <= 1799))
+		{
+		TReal result;
+		result = year - 1600;
+		Math::Pow(result,result,KSquared);
+		result = 196.58333 - (4.0675 * (year - 1600)) + 0.0219167 * result;
+		aCorrection = result / (KHoursInDay * KMinsInHour * KSecsInMin);
+		}
+	else
+		{
+		TReal result;
+		Math::Pow(result,x,KSquared);
+		result = (result / 41048480) - 15;
+		aCorrection = result / (KHoursInDay * KMinsInHour * KSecsInMin);
+		}
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    PopulateTheta
+// Arguments:   TReal&
+//
+// Comments:    Determines the constant for theta
+//				This function is used for the ephemeris correction
+//
+// Return:      None
+//------------------------------------------------------
+void TAstronomicalCalendar::PopulateTheta(TReal &aTheta,TInt aYear) const
+	{
+	TGregorianCalendar greg;
+	TArithmeticalDate gregDate1;
+	TArithmeticalDate gregDate2;
+	gregDate1.iDay = KCalConvFirstDay;
+	gregDate1.iMonth = EJanuary + KCalConvMonthOffsetByOne;
+	gregDate1.iYear = 1900;
+	gregDate2.iDay = KCalConvFirstDay;
+	gregDate2.iMonth = EJuly + KCalConvMonthOffsetByOne;
+	gregDate2.iYear = aYear;
+	aTheta = greg.GregDateDiff(gregDate1,gregDate2) / KDaysInGregHundredYears;
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    EphemerisCorrPopX
+// Arguments:   TReal&
+//
+// Comments:    Determines the constant for x
+//				This function is used for the ephemeris correction
+//
+// Return:      TReal - ephemeris constant
+//------------------------------------------------------
+void TAstronomicalCalendar::EphemerisCorrPopX(const TInt aYear, TReal& aEmphCorr) const
+	{
+	TGregorianCalendar greg;
+	TArithmeticalDate gregDate1;
+	TArithmeticalDate gregDate2;
+	gregDate1.iDay = KCalConvFirstDay;
+	gregDate1.iMonth = EJanuary + KCalConvMonthOffsetByOne;
+	gregDate1.iYear = 1810;
+	gregDate2.iDay = KCalConvFirstDay;
+	gregDate2.iMonth = EJanuary + KCalConvMonthOffsetByOne;
+	gregDate2.iYear = aYear;
+	aEmphCorr = 0.5 + greg.GregDateDiff(gregDate1,gregDate2);
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    GetPoly
+// Arguments:   TReal& , CArrayFixFlat<TReal>& , TReal&
+//
+// Comments:    performs the following calculation
+//
+//										 2
+//				SIGMA (Array[i] * Operand )
+//				   i
+//
+// Return:      TReal - result of above calculation
+//------------------------------------------------------
+void TAstronomicalCalendar::GetPoly(const TReal* aArray,const TReal& aOperand, TInt aCount, TReal& aResult) const
+	{
+	TInt count;
+	TReal poly;
+
+	aResult = aArray[0];
+	for(count = KInitOne; count < aCount; count++)
+		{
+		Math::Pow(poly,aOperand,count);
+		aResult += aArray[count] * poly;
+		}
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    EphemerisFromUniversal
+// Arguments:   None
+//
+// Comments:    converts ephemeris time to universal time
+//
+// Return:      TReal - universal time
+//------------------------------------------------------
+void TAstronomicalCalendar::EphemerisFromUniversal(const TReal& aJulianDay, TReal& aCorrectedJD) const
+	{
+	TReal emphCorr;
+	EphemerisCorrection(aJulianDay, emphCorr);
+	aCorrectedJD = aJulianDay + emphCorr;
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    UniversalFromEphemeris
+// Arguments:   None
+//
+// Comments:    Converts universal time to ephemeris time
+//
+// Return:      TReal - ephemeris time
+//------------------------------------------------------
+TReal TAstronomicalCalendar::UniversalFromEphemeris(const TReal& aJulianDay) const
+	{
+	TReal result;
+	EphemerisCorrection(aJulianDay, result);
+	return (aJulianDay - result);
+	}
+
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    j2000
+// Arguments:   None
+//
+// Comments:    Julian day value of January 1st 2000
+//
+// Return:      TReal - see comment
+//------------------------------------------------------
+void TAstronomicalCalendar::j2000(TReal& aJ2000) const
+	{
+	TGregorianCalendar greg;
+	TArithmeticalDate date;
+
+	date.iDay = KCalConvFirstDay;
+	date.iMonth = EJanuary + KCalConvMonthOffsetByOne;
+	date.iYear = 2000;
+
+	aJ2000 = KCalConvPointFive + greg.GregToJulianDay(date);
+
+	AdjustJDToNoon(aJ2000);
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    JulianCenturies
+// Arguments:   None
+//
+// Comments:    Number of centuries before or after January
+//				1st 2000 (Gregorian)
+//
+// Return:      TReal - centuries and fraction thereof
+//------------------------------------------------------
+void TAstronomicalCalendar::JulianCenturies(const TReal& aJulianDay, TReal& aJC) const
+	{
+	TReal emph;
+	TReal julian2000;
+	EphemerisFromUniversal(aJulianDay,emph);
+	j2000(julian2000);
+
+	aJC = ( emph- julian2000) / KDaysInGregHundredYears;
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    SolarLongitudeL
+// Arguments:   TReal&
+//
+// Comments:    calculates the longitude of the sun at 
+//				any give Julian Day value.
+//
+// Return:      TReal - longitude
+//------------------------------------------------------
+void TAstronomicalCalendar::SolarLongitude(const TReal& aJulianDay, TReal& aTheta) const
+	{
+	TReal centuries;  // Julian centuries
+	TReal longitude;  // longitude
+	TReal aberration;
+	TReal nutation;
+
+	// get the julian centuries
+	JulianCenturies(aJulianDay,centuries);
+
+	// get the longitude
+	GetLongitude(centuries, longitude);
+
+	Aberration(centuries,aberration);
+	Nutation(centuries,nutation);
+
+	aTheta = (longitude + aberration + nutation);
+	aTheta = (aTheta / KPi) * 180;
+	Mod(aTheta,aTheta,K360Degrees);
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    Nutation
+// Arguments:   TReal &
+//
+// Comments:    corrects for changes in celestial longitude
+//				and latitude caused by the gravitational pull
+//				of the sun and moon on the earth.
+//
+// Return:      TReal - correction value
+//------------------------------------------------------
+void TAstronomicalCalendar::Nutation(const TReal &aJulianCenturies, TReal& aNutation) const
+	{
+	TReal a;
+	TReal b;
+
+	a = 124.9 - (1934.134 * aJulianCenturies) + (0.002063 * aJulianCenturies * aJulianCenturies);
+	a *=KDegreesToRadians;
+	Math::Sin(a,a);
+
+	b = 201.11 + (72001.5377 * aJulianCenturies) + (0.00057 * aJulianCenturies * aJulianCenturies);
+	b *= KDegreesToRadians;
+	Math::Sin(b,b);
+
+	aNutation = (-0.0000834 * a) - (0.0000064 * b);
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    Aberration
+// Arguments:   TReal &
+//
+// Comments:    This function makes a correction for the 
+//				movement of the earth (the apparent movement
+//				of the sun) in the time taken for light to 
+//				travel to earth.
+//
+// Return:      TReal - correction in radians
+//------------------------------------------------------
+void TAstronomicalCalendar::Aberration(const TReal &aJulianCenturies, TReal& aAberration) const
+	{
+	aAberration = 177.63 + (35999.01848 * aJulianCenturies);
+	aAberration *= KDegreesToRadians;
+	Math::Cos(aAberration,aAberration);
+	aAberration = (0.0000017 * aAberration) - 0.0000973;
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    GetLongitude
+// Arguments:   TReal&
+//
+// Comments:    calculates the longitude component of the 
+//				solar longitude calculation.
+//				This function is used by the SolarLongitudeL 
+//				function.
+//
+// Return:      TReal - longitude
+//------------------------------------------------------
+void TAstronomicalCalendar::GetLongitude(const TReal& aC, TReal& aLongitude) const
+	{
+	TInt count;
+	aLongitude = 0;
+
+	// get longitude
+	for(count = 0;count < KNoOfPeriodicTerms;count++)
+		{
+		TReal temp;
+		temp = (KMulti[count] + (KAdd[count] * aC));
+		// convert to radians for the Sin function
+		Math::Sin(temp,temp);
+		temp = KCoeffs[count] * temp;
+		aLongitude += temp;
+		}
+	aLongitude = 4.9353929 + (628.33196168 * aC) + (0.0000001 * aLongitude);
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    DateNextSolarLongitudeL
+// Arguments:   TReal , TReal
+//
+// Comments:    
+//
+// Return:      TReal
+//------------------------------------------------------
+TReal TAstronomicalCalendar::DateNextSolarLongitude(const TReal& aJulianDay,const TReal& aDegrees) const
+	{
+	TReal next;
+	TInt nextInt;
+	TReal upperLimit;
+	TReal lowerLimit;
+	TReal testDate;
+
+	// get next
+	SolarLongitude(aJulianDay,next);
+	next/= aDegrees;
+	Ceiling(nextInt,next);
+	next = nextInt * aDegrees;
+	Mod(next,next,K360Degrees);
+
+	// this is designed to define a range (aJulianDay -> UpperLimit) 
+	// that will allow the sun to pass though aDegrees once and once only
+	upperLimit = aJulianDay + ((aDegrees / K360Degrees) * 400);
+	lowerLimit = aJulianDay;
+
+	for(testDate = (upperLimit + lowerLimit) / 2;
+		(upperLimit - lowerLimit) >= 0.00001;
+		testDate = (upperLimit + lowerLimit) / 2)
+		{
+		TReal solLong;
+		SolarLongitude(testDate, solLong);
+		if(next == 0)
+			{
+			if(solLong <= aDegrees)
+				{
+				upperLimit = testDate;
+				}
+			else
+				{
+				lowerLimit = testDate;
+				}
+			}
+		else
+			{
+			if(solLong >= next)
+				{
+				upperLimit = testDate;
+				}
+			else
+				{
+				lowerLimit = testDate;
+				}
+			}
+		}
+	return testDate;
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    NewMoonAtOrAfter
+// Arguments:   TReal& 
+//
+// Comments:    Calculates the time of the new moon by deturmining
+//				the sums of periodic terms.
+//
+// Return:      TReal - time of new moon
+//------------------------------------------------------
+TReal TAstronomicalCalendar::NewMoonAtOrAfter(const TReal& aJulianDay) const
+	{
+	TReal jDReal = aJulianDay;
+	TReal result;
+	TInt jD;
+
+
+	AdjustJDFromNoon(jDReal);
+	Floor(jD,jDReal);
+	TGregorianCalendar greg(jDReal);
+	AdjustJDToNoon(jDReal);
+
+	TArithmeticalDate date;
+	TInt approx;
+	TInt error;
+	TReal gamma;
+
+	TReal temp;
+	TInt count;
+
+	// get date
+	greg.GetDate(date);
+
+	// get Gamma
+	gamma = date.iYear + (greg.DayNumber(date) / KMeanDaysInGregYear) - 2000;
+
+	// get approx
+	temp = gamma * KMonthsInTropicalYear;
+	Floor(approx,temp);
+	approx--;
+
+	// get error
+	error = 0;
+
+	for(count = approx;NewMoonTime(count) < aJulianDay;count++)
+		{
+		error++;
+		}
+
+	// calc return
+	result = NewMoonTime(approx + error);
+	return result;
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    NewMoonTime
+// Arguments:   TInt
+//
+// Comments:    This function is used as part of the calculation
+//				for NewMoonAtOrAfter()
+//
+// Return:      TReal - derived value
+//------------------------------------------------------
+TReal TAstronomicalCalendar::NewMoonTime(TInt aTime) const
+	{
+	TReal newMoonTime;
+	TReal kappa;
+	TReal jde;
+	TReal epsilon;
+	TReal solarAnomaly;
+	TReal lunarAnomaly;
+	TReal moonArgument;
+	TReal omega;
+	TReal correction;
+	TReal additional;
+
+	TReal temp;
+	TInt count;
+
+	// get Kappa
+	kappa = aTime / 1236.85;
+
+	// get jde
+	jde = 2451550.09765;
+	temp = KMeanSynodicMonth * 1236.85 * kappa;
+	jde += temp;
+	Math::Pow(temp,kappa,KSquared);
+	jde += temp * 0.0001337;
+	Math::Pow(temp,kappa,KCubed);
+	jde -= temp * 0.00000015;
+	Math::Pow(temp,kappa,KQuad);
+	jde += temp * 0.00000000073;
+
+	// get epsilon
+	epsilon = 1 - (0.002516 * kappa);
+	Math::Pow(temp,kappa,KSquared);
+	epsilon -= temp * 0.0000074;
+
+	// get solar anomaly
+	solarAnomaly = 2.5534 + (29.10535669 * 1236.85 * kappa);
+	Math::Pow(temp,kappa,KSquared);
+	solarAnomaly -= temp * 0.0000218;
+	Math::Pow(temp,kappa,KCubed);
+	solarAnomaly -= temp * 0.00000011;
+
+	// get lunar anomaly
+	lunarAnomaly = 201.5643 + (385.81693528 * 1236.85 * kappa);
+	Math::Pow(temp,kappa,KSquared);
+	lunarAnomaly += temp * 0.0107438;
+	Math::Pow(temp,kappa,KCubed);
+	lunarAnomaly += temp * 0.00001239;
+	Math::Pow(temp,kappa,KQuad);
+	lunarAnomaly -= temp * 0.000000058;
+
+	// get moon argument
+	moonArgument = 160.7108 + (390.67050274 * 1236.85 * kappa);
+	Math::Pow(temp,kappa,KSquared);
+	moonArgument -= temp * 0.0016341;
+	Math::Pow(temp,kappa,KCubed);
+	moonArgument -= temp * 0.00000227;
+	Math::Pow(temp,kappa,KQuad);
+	moonArgument += temp * 0.000000011;
+
+	// get omega
+	omega = 124.7746 + (-1.5637558 * 1236.85 * kappa);
+	Math::Pow(temp,kappa,KSquared);
+	omega += temp * 0.0020691;
+	Math::Pow(temp,kappa,KCubed);
+	omega += temp * 0.00000215;
+
+	// convert to radians for the Sin function
+	omega *= KDegreesToRadians;
+	Math::Sin(correction,omega);
+	correction = -0.00017 * correction;
+	for(count = 0; count < KMaxCorrectionValues;count++)
+		{
+		TReal tempCorrection;
+		TReal epsilonToTheOmega;
+		tempCorrection = (KXiArray[count] * solarAnomaly) + 
+						(KGammaArray[count] * lunarAnomaly) +
+						(KZetaArray[count] * moonArgument);
+		// convert to radians for the Sin function
+		tempCorrection *= KDegreesToRadians;
+		Math::Sin(tempCorrection,tempCorrection);
+		Math::Pow(epsilonToTheOmega,epsilon,KOmegaArray[count]);
+		tempCorrection = KMuArray[count] * epsilonToTheOmega * tempCorrection;
+		correction += tempCorrection;
+		}
+	
+	for(count = 0,additional = 0;count < KMaxAdditionalValues;count++)
+		{
+		TReal addnTemp;
+		Math::Pow(addnTemp,kappa,KSquared);
+		addnTemp = KIotaArray[count] + (KChiArray[count] * aTime) +
+					(KNuArray[count] * addnTemp);
+		// convert to radians for the Sin function
+		addnTemp *= KDegreesToRadians;
+		Math::Sin(addnTemp,addnTemp);
+		addnTemp = KLamdaArray[count] * addnTemp;
+		additional += addnTemp;
+		}
+
+	// calculate result
+	newMoonTime = jde + correction + additional;
+	newMoonTime = UniversalFromEphemeris(newMoonTime);
+	return newMoonTime;
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    NewMoonBefore
+// Arguments:   
+//
+// Comments:    
+//
+// Return:      
+//------------------------------------------------------
+TReal TAstronomicalCalendar::NewMoonBefore(const TReal &aJulianDay) const
+	{
+	TReal result;
+	result = NewMoonAtOrAfter(aJulianDay);
+	result-=45;
+	result = NewMoonAtOrAfter(result);
+	return result;
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    AdjustJDToNoon
+// Arguments:   TReal&
+//
+// Comments:    This function corrects for the fact that the
+//				julian day starts at noon however the julian
+//				day held in the base class starts on the 
+//				preceeding midnight.
+//
+// Return:      None
+//------------------------------------------------------
+void TAstronomicalCalendar::AdjustJDToNoon(TReal &aJulianDay) const
+	{
+	aJulianDay -= KCalConvPointFive;
+	}
+
+//------------------------------------------------------
+// Class:       TAstronomicalCalendar
+// Function:    AdjustJDFromNoon
+// Arguments:   TReal&
+//
+// Comments:    This function corrects for the fact that the
+//				julian day starts at noon however the julian
+//				day held in the base class starts on the 
+//				preceeding midnight.
+//
+// Return:      None
+//------------------------------------------------------
+void TAstronomicalCalendar::AdjustJDFromNoon(TReal &aJulianDay) const
+	{
+	aJulianDay += KCalConvPointFive;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalsrc/CConmain.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,21 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+// System includes
+#include <e32std.h>
+
+
+// Main DLL entry point
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalsrc/Calendar.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,199 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the TCalendar class.
+// 
+//
+
+#include <e32def.h>
+#include <e32math.h>
+#include "calconvcalendar.h"
+
+const TReal KRemainderApproxZero = 0.000000001;
+
+
+//
+// Construction/Destruction
+//
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    TCalendar
+// Arguments:   None
+//
+// Comments:    Constructor
+//
+// Return:      none
+//------------------------------------------------------
+TCalendar::TCalendar()
+	{
+	iJulianDay = 0;
+	}
+
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    operator =
+// Arguments:   TCalendar &TCal  -  the TCalendar
+//				class by referance.
+//
+// Comments:    Copies the JulianDay value from one instance 
+//				of TCalendar to an other.
+//
+// Return:      *this
+//------------------------------------------------------
+EXPORT_C TCalendar& TCalendar::operator =(const TCalendar &TCal)
+	{
+	iJulianDay = TCal.iJulianDay;
+	return (*this);
+	}
+
+EXPORT_C TReal TCalendar::JulianDay()
+	{
+	return iJulianDay;
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    Floor
+// Arguments:   TReal& ,TReal& 
+//
+// Comments:    This function returns the floor value of the
+//				value given in the aNum argument as Determined by:
+//
+//				the largest integer less than or equal to aNum
+//
+// Return:      None
+//------------------------------------------------------
+void TCalendar::Floor(TInt& aRes,const TReal& aNum) const
+	{
+	TReal tempReal;
+	TInt32 tempReal32;
+	TInt precision = 0;
+
+	TReal wholeNoTemp;
+	Math::Frac(wholeNoTemp,aNum);
+	if(wholeNoTemp < 0)
+		{
+		wholeNoTemp = -wholeNoTemp;
+		}
+
+	if((aNum == 0) || (wholeNoTemp < KRemainderApproxZero))
+		{
+		tempReal = aNum;
+		}
+	else
+		{
+		tempReal = aNum - KCalConvPointFive;
+		}
+	Math::Round(tempReal,tempReal,precision);
+	Math::Int(tempReal32,tempReal);
+	aRes = tempReal32;
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    Ceiling
+// Arguments:   TReal& ,TReal& 
+//
+// Comments:    This function returns the ceiling value of the
+//				value given in the aNum argument as Determined by:
+//
+//				the smallest integer less than or equal to aNum
+//
+// Return:      None
+//------------------------------------------------------
+void TCalendar::Ceiling(TInt& aRes,const TReal& aNum) const
+	{
+	TReal tempReal;
+	TInt32 tempReal32;
+	TInt precision = 0;
+
+	TReal wholeNoTemp;
+	Math::Frac(wholeNoTemp,aNum);
+	if(wholeNoTemp < 0)
+		{
+		wholeNoTemp = -wholeNoTemp;
+		}
+
+	if((aNum == 0) || (wholeNoTemp < KRemainderApproxZero))
+		{
+		tempReal = aNum;
+		}
+	else
+		{
+		tempReal = aNum + KCalConvPointFive;
+		}
+	Math::Round(tempReal,tempReal,precision);
+	Math::Int(tempReal32,tempReal);
+	aRes = tempReal32;
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    Mod
+// Arguments:   TReal &, const TReal &, const TReal &
+//
+// Comments:    return the mod of the aAbscissa / aDenominator
+//				quotient as Determined by:
+//				
+//				aAbscissa - aDenominator(floor(aAbscissa / aDenominator))
+//
+// Return:      None
+//------------------------------------------------------
+void TCalendar::Mod(TReal &aRes, const TReal &aAbscissa, const TReal &aDenominator) const
+	{
+	TReal quo;
+	TInt tempInt;
+
+	quo = aAbscissa / aDenominator;
+
+	Floor(tempInt,quo);
+
+	aRes = aAbscissa - (aDenominator * tempInt);
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    Amod
+// Arguments:   TReal &, const TReal &, const TReal &
+//
+// Comments:    Determines the adjusted remainder
+//
+// Return:      None
+//------------------------------------------------------
+void TCalendar::Amod(TReal &aRes, const TReal &aAbscissa, const TReal &aDenominator) const
+	{
+	Mod(aRes,aAbscissa,aDenominator);
+
+	if(aRes == 0)
+		{
+		aRes = aDenominator;
+		}
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    Round
+// Arguments:   TInt &, TReal &
+//
+// Comments:    rounds of the aNum argument
+//
+// Return:      None
+//------------------------------------------------------
+void TCalendar::Round(TInt &aRes, TReal &aNum) const
+	{
+	TReal temp;
+	temp = aNum + 0.5;
+	Floor(aRes,temp);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalsrc/Chinese.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,626 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the TChineseCalendar class.
+// 
+//
+
+// User includes
+#include "calconv.h"
+
+// Constants
+const TInt KChinStartEpoch = 758325;
+const TInt KFifteenth = 15;
+const TInt KDegreesPerMonth = 30;
+const TInt KMonthsInYear = 12;
+const TInt KFirstChinYear = -2636;
+const TInt KYearsInChinCycle = 60;
+const TInt KCycleOffset = 1;
+
+
+//
+// Construction/Destruction
+//
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    TChineseCalendar
+// Arguments:   None
+//
+// Comments:    Constructer
+//
+// Return:      None
+//------------------------------------------------------
+EXPORT_C TChineseCalendar::TChineseCalendar()
+	{
+	iStartEpoch = KChinStartEpoch;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    CurrentMajorSolarTerm
+// Arguments:   TReal
+//
+// Comments:    Returns the index of the last major solar term
+//
+// Return:      see comment
+//------------------------------------------------------
+TReal TChineseCalendar::CurrentMajorSolarTerm(TReal& aJulianDay) const
+	{
+	TReal sigma;
+	TInt sigmaI;
+
+	AdjustJDToNoon(aJulianDay);
+
+	sigma = ChineseTimeZone(aJulianDay);
+	sigma = UniversalFromLocal(aJulianDay,sigma);
+	SolarLongitude(sigma,sigma);
+	sigma /= 30.0;
+	Floor(sigmaI,sigma);
+	sigmaI += 2;
+	Amod(sigma,sigmaI,12.0);
+	Round(sigmaI,sigma);
+	return sigmaI;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseTimeZone
+// Arguments:   TReal
+//
+// Comments:    Determines which time zone to use
+//
+// Return:      TReal - time zone
+//------------------------------------------------------
+TReal TChineseCalendar::ChineseTimeZone(const TReal& aJulianDay) const
+	{
+	TReal result;
+	TGregorianCalendar greg(aJulianDay);
+	TArithmeticalDate date;
+
+	greg.GetDate(date);
+
+	if(date.iYear < 1929)
+		{
+		result = 465.0 + (40.0 / 60.0);
+		}
+	else
+		{
+		result = 480.0;
+		}
+	return result;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseDateNextSolarLongitudeL
+// Arguments:   TReal , TReal
+//
+// Comments:    calculates the first date on or after the given
+//				julian day when the solar longitude will be a 
+//				multiple of aDegrees degrees. 
+//
+// Return:      TInt - see comment
+//------------------------------------------------------
+TInt TChineseCalendar::ChineseDateNextSolarLongitude(TReal& aJulianDay, const TReal& aDegrees) const
+	{
+	TReal chTimeZone;
+	TReal chDateNxtSlrLong;
+	TInt rtn;
+
+	AdjustJDToNoon(aJulianDay);
+	chTimeZone = ChineseTimeZone(aJulianDay);
+
+	chDateNxtSlrLong = UniversalFromLocal(aJulianDay,chTimeZone);
+	chDateNxtSlrLong = DateNextSolarLongitude(chDateNxtSlrLong,aDegrees);
+	chDateNxtSlrLong = LocalFromUniversal(chDateNxtSlrLong,chTimeZone);
+
+	AdjustJDFromNoon(chDateNxtSlrLong);
+	Floor(rtn,chDateNxtSlrLong);
+
+	return rtn;
+	}
+
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    MajorSolarTermOnOrAfter
+// Arguments:   TReal
+//
+// Comments:    Determines the major solar term on or after 
+//				the given julian day.
+//
+// Return:      TReal - see comment
+//------------------------------------------------------
+TReal TChineseCalendar::MajorSolarTermOnOrAfter(TReal& aJulianDay) const
+	{
+	TReal majorSolarTerm;
+	majorSolarTerm = ChineseDateNextSolarLongitude(aJulianDay,KDegreesPerMonth);
+	return majorSolarTerm;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    GetDate
+// Arguments:   TChineseDate &
+//
+// Comments:    This function Determines the chinese date and 
+//				places it in the TChineseDate class provided
+//				for the julian day value held internally in the 
+//				Chinese class.
+//
+// Return:      None
+//------------------------------------------------------
+EXPORT_C void TChineseCalendar::GetDate(TChineseDate &aDate)
+	{
+	ChineseFromFixed(aDate,iJulianDay);
+	}
+
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseNewMoonBefore
+// Arguments:   TReal
+//
+// Comments:    corrects for chinese month starting at noon
+//				in Beijing
+//
+// Return:      TInt - new moon
+//------------------------------------------------------
+TInt TChineseCalendar::ChineseNewMoonBefore(TReal aJulianDay) const
+	{
+	TReal newMoon;
+	TReal timeZone;
+	TInt rtn;
+
+	AdjustJDToNoon(aJulianDay);
+
+	timeZone = ChineseTimeZone(aJulianDay);
+	newMoon = UniversalFromLocal(aJulianDay,timeZone);
+	newMoon = NewMoonBefore(newMoon);
+	newMoon = LocalFromUniversal(newMoon,timeZone);
+
+	AdjustJDFromNoon(newMoon);
+	Floor(rtn,newMoon);
+
+	return rtn;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseNewMoonOnOrAfter
+// Arguments:   TReal
+//
+// Comments:    corrects for chinese month starting at noon
+//				in Beijing
+//
+// Return:      TInt - new moon
+//------------------------------------------------------
+TInt TChineseCalendar::ChineseNewMoonOnOrAfter(TReal aJulianDay) const
+	{
+	TReal newMoon;
+	TReal timeZone;
+	TInt rtn;
+
+	AdjustJDToNoon(aJulianDay);
+
+	timeZone = ChineseTimeZone(aJulianDay);
+	newMoon = UniversalFromLocal(aJulianDay,timeZone);
+	newMoon = NewMoonAtOrAfter(newMoon);
+	newMoon = LocalFromUniversal(newMoon,timeZone);
+
+	AdjustJDFromNoon(newMoon);
+	Floor(rtn,newMoon);
+
+	return rtn;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    NoMajorSolarTerm
+// Arguments:   TReal
+//
+// Comments:    Determines whether a given month lacks a 
+//				major solar term.  The first month without
+//				a major solar term is a leap month.
+//
+// Return:      TBool - ETrue if month has no major solar term
+//------------------------------------------------------
+TBool TChineseCalendar::NoMajorSolarTerm(TReal aJulianDay) const
+	{
+	TReal chinNewMoon;
+	TReal currentMajSolTrm1;
+	TReal currentMajSolTrm2;
+
+	chinNewMoon = ChineseNewMoonOnOrAfter(aJulianDay + KCalConvDayOffsetByOne);
+	currentMajSolTrm1 = CurrentMajorSolarTerm(chinNewMoon);
+	currentMajSolTrm2 = CurrentMajorSolarTerm(aJulianDay);
+	
+	return(currentMajSolTrm1 == currentMajSolTrm2);
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    PriorLeapMonth
+// Arguments:   TReal , TReal
+//
+// Comments:    this function is used in conjunction with
+//				NoMajorSolarTerm() to ensure that only the 
+//				first month missing a major solar term is 
+//				a leap month
+//
+// Return:      TBool - 
+//------------------------------------------------------
+TBool TChineseCalendar::PriorLeapMonth(TReal& aMnthprime, TReal aMnth) const
+	{
+	TBool rtn,majorSolarTerm;
+	TReal newMoonBefore;
+
+	majorSolarTerm = NoMajorSolarTerm(aMnth);
+	newMoonBefore = ChineseNewMoonBefore(aMnth);
+
+	if((aMnth >= aMnthprime) && 
+		(PriorLeapMonth(aMnthprime,newMoonBefore) || majorSolarTerm))
+		{
+		rtn = ETrue;
+		}
+	else
+		{
+		rtn = EFalse;
+		}
+	return rtn;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseNewYear
+// Arguments:   TInt
+//
+// Comments:    Determines the chinese new year
+//
+// Return:      TReal - Julian day of the start of the given year
+//------------------------------------------------------
+TReal TChineseCalendar::ChineseNewYear(TInt aYear) const
+	{
+	TGregorianCalendar greg(iJulianDay);
+	TArithmeticalDate date;
+	TReal solarTerm1;
+	TReal solarTerm2;
+	TReal newMoon1;
+	TReal newMoon2;
+	TReal newMoon3;
+	TReal rtn;
+	TBool majorSolarTerm1;
+	TBool majorSolarTerm2;
+	TReal tempReal;
+	TInt tempInt;
+
+	// get solar term 1
+	date.iDay = KFifteenth;
+	date.iMonth = EDecember + KCalConvMonthOffsetByOne;
+	date.iYear = aYear - KCalConvYearOffsetByOne;
+	solarTerm1 = greg.GregToJulianDay(date);
+	solarTerm1 = MajorSolarTermOnOrAfter(solarTerm1);
+
+	// get solar term 2
+	date.iDay = KFifteenth;
+	date.iMonth = EDecember + KCalConvMonthOffsetByOne;
+	date.iYear = aYear;
+	solarTerm2 = greg.GregToJulianDay(date);
+	solarTerm2 = MajorSolarTermOnOrAfter(solarTerm2);
+
+	// get new moon 1
+	newMoon1 = ChineseNewMoonOnOrAfter(solarTerm1 + KCalConvDayOffsetByOne);
+
+	// get new moon 2
+	newMoon2 = ChineseNewMoonOnOrAfter(newMoon1 + KCalConvDayOffsetByOne);
+
+	// get new moon 3
+	newMoon3 = ChineseNewMoonBefore(solarTerm2 + KCalConvDayOffsetByOne);
+
+	// perform chinese new year calculation
+	tempReal = (newMoon3 - newMoon1) / KMeanSynodicMonth;
+	Round(tempInt,tempReal);
+	majorSolarTerm1 = NoMajorSolarTerm(newMoon1);
+	majorSolarTerm2 = NoMajorSolarTerm(newMoon2);
+	if((tempInt == KMonthsInYear) && (majorSolarTerm1 || majorSolarTerm2))
+		{
+		rtn = ChineseNewMoonOnOrAfter(newMoon2 + KCalConvDayOffsetByOne);
+		}
+	else
+		{
+		rtn = newMoon2;
+		}
+	return rtn;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    SetDate
+// Arguments:   TChineseDate&
+//
+// Comments:    this function sets the julian day value
+//				in the base class from the given 
+//				TChineseDate
+//
+// Return:      None
+//------------------------------------------------------
+EXPORT_C TInt TChineseCalendar::SetDate(const TChineseDate &aDate)
+	{
+	TReal jD;
+	TChineseDate ChinDate = aDate;
+	if(ValidDate(ChinDate)==EFalse)
+		{
+		return KCalConInvalidDate;
+		}
+		
+	ChineseToFixed(aDate,jD);
+	iJulianDay = jD;
+	return KErrNone;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseFromFixed
+// Arguments:   TChineseDate &, TReal
+//
+// Comments:    this function converts a julian day value to
+//				a chinese date in the form TChineseDate
+//
+// Return:      None
+//------------------------------------------------------
+void TChineseCalendar::ChineseFromFixed(TChineseDate &aDate, const TReal& aJulianDay) const
+	{
+	TGregorianCalendar greg(aJulianDay);
+	TArithmeticalDate date;
+	TReal solarTerm1;
+	TReal solarTerm2;
+	TReal lunarTerm1;
+	TReal lunarTerm2;
+	TReal lunarTerm3;
+	TInt leapYear;
+	TInt year;
+	TInt elapsedYears;
+	TBool majorSolarTerm;
+	TReal tempReal;
+	TInt tempInt;
+
+	// get the Gregorian date
+	greg.GetDate(date);
+	year = date.iYear;
+
+	// get solar term 1
+	date.iDay = KFifteenth;
+	date.iMonth = EDecember + KCalConvMonthOffsetByOne;
+	date.iYear = year - KCalConvYearOffsetByOne;
+	solarTerm1 = greg.GregToJulianDay(date);
+	solarTerm1 = MajorSolarTermOnOrAfter(solarTerm1);
+
+	// get solar term 2
+	date.iDay = KFifteenth;
+	date.iMonth = EDecember + KCalConvMonthOffsetByOne;
+	date.iYear = year;
+	solarTerm2 = greg.GregToJulianDay(date);
+	solarTerm2 = MajorSolarTermOnOrAfter(solarTerm2);
+
+	// get lunar term 1
+	if((solarTerm1 <= aJulianDay) && (aJulianDay < solarTerm2))
+		{
+		lunarTerm1 = solarTerm1 + KCalConvDayOffsetByOne;
+		}
+	else
+		{
+		lunarTerm1 = solarTerm2 + KCalConvDayOffsetByOne;
+		}
+	lunarTerm1 = ChineseNewMoonOnOrAfter(lunarTerm1);
+
+	// get lunar term 2
+	if((solarTerm1 <= aJulianDay) && (aJulianDay < solarTerm2))
+		{
+		lunarTerm2 = solarTerm2 + KCalConvDayOffsetByOne;
+		}
+	else
+		{
+		date.iDay = KFifteenth;
+		date.iMonth = EDecember + KCalConvMonthOffsetByOne;
+		date.iYear = year + KCalConvYearOffsetByOne;
+		lunarTerm2 = greg.GregToJulianDay(date);
+		lunarTerm2 = MajorSolarTermOnOrAfter(lunarTerm2) + KCalConvDayOffsetByOne;
+		}
+	lunarTerm2 = ChineseNewMoonBefore(lunarTerm2);
+
+	// get Lunar term 3
+	lunarTerm3 = aJulianDay + KCalConvDayOffsetByOne;
+	lunarTerm3 = ChineseNewMoonBefore(lunarTerm3);
+
+	// get leap year
+	tempReal = ((lunarTerm2 - lunarTerm1) / KMeanSynodicMonth);
+	Round(tempInt,tempReal);
+	if(tempInt == KMonthsInYear)
+		{
+		leapYear = ETrue;
+		}
+	else
+		{
+		leapYear = EFalse;
+		}
+
+	// get month
+	tempReal = ((lunarTerm3 - lunarTerm1) / KMeanSynodicMonth);
+	Round(tempInt,tempReal);
+	if(leapYear && PriorLeapMonth(lunarTerm1,lunarTerm3))
+		{
+		tempInt--;
+		}
+	Amod(tempReal,tempInt,KMonthsInYear);
+	Round(aDate.iMonth,tempReal);
+
+	// get leap month
+	majorSolarTerm = NoMajorSolarTerm(lunarTerm3);
+	if((leapYear) && majorSolarTerm && (!PriorLeapMonth(lunarTerm1,ChineseNewMoonBefore(lunarTerm3))))
+		{
+		aDate.iLeapMonth = ETrue;
+		}
+	else
+		{
+		aDate.iLeapMonth = EFalse;
+		}
+
+	// get elapsed years
+	elapsedYears = year - KFirstChinYear;
+
+	date.iDay = KCalConvFirstDay;
+	date.iMonth = EJuly + KCalConvMonthOffsetByOne;
+	date.iYear = year;
+	tempReal = greg.GregToJulianDay(date);
+	if((aDate.iMonth < (ENovember + KCalConvMonthOffsetByOne)) || (aJulianDay > tempReal))
+		{
+		elapsedYears++;
+		}
+
+	// get cycle
+	tempReal = (elapsedYears - KCalConvYearOffsetByOne) / KYearsInChinCycle;
+	Floor(aDate.iCycle,tempReal);
+	aDate.iCycle++;
+
+	// get year
+	Amod(tempReal,elapsedYears,KYearsInChinCycle);
+	Round(aDate.iYear,tempReal);
+
+	// get day
+	Floor(tempInt,aJulianDay);
+	aDate.iDay = tempInt;
+	Floor(tempInt,lunarTerm3);
+	aDate.iDay -= tempInt;
+	aDate.iDay += KCalConvDayOffsetByOne;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ValidDate
+// Arguments:   TChineseDate &
+//
+// Comments:    This function Determines whether the given
+//				date is a valid chinese date
+//
+// Return:      TBool - ETrue if date is valid, else EFalse
+//------------------------------------------------------
+TBool TChineseCalendar::ValidDate(const TChineseDate &aDate) const
+	{
+	TReal jD;
+	TChineseDate chinDate;
+
+	ChineseToFixed(aDate,jD);
+	ChineseFromFixed(chinDate,jD);
+
+	if(aDate.operator==(chinDate))
+		return ETrue;
+	else
+		return EFalse;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseToDateTime
+// Arguments:   TDateTime &
+//
+// Comments:    This function converts the date held within
+//				the TChineseCalendar class to a TDateTime format and 
+//				places it in the TDateTime class provided.
+//
+// Return:      void
+//------------------------------------------------------
+EXPORT_C void TChineseCalendar::ChineseToDateTime(TDateTime &aDT)
+	{
+	TArithmeticalDate gregDate;
+	TGregorianCalendar greg(iJulianDay);
+
+	greg.GregFromJulianDay(gregDate,iJulianDay);
+
+	aDT.SetMicroSecond(0);
+	aDT.SetSecond(0);
+	aDT.SetMinute(0);
+	aDT.SetHour(0);
+	aDT.SetMonth((TMonth)(gregDate.iMonth - KCalConvMonthOffsetByOne));
+	aDT.SetDay(gregDate.iDay - KCalConvMonthOffsetByOne);
+	aDT.SetYear(gregDate.iYear);
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    DateTimeToChinese
+// Arguments:   TDateTime &
+//
+// Comments:    Sets the date held in the given TDateTime
+//				class to the TChineseCalendar class
+//
+// Return:      void
+//------------------------------------------------------
+EXPORT_C void TChineseCalendar::DateTimeToChinese(const TDateTime &aDT)
+	{
+	TArithmeticalDate gregDate;
+	TGregorianCalendar greg;
+
+	gregDate.iDay = aDT.Day() + KCalConvMonthOffsetByOne;
+	gregDate.iMonth = (TInt)aDT.Month() + KCalConvMonthOffsetByOne;
+	gregDate.iYear = aDT.Year();
+
+	iJulianDay = greg.GregToJulianDay(gregDate);
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseToFixed
+// Arguments:   TChineseDate , TReal &
+//
+// Comments:    This function converts a chinese date to 
+//				to a julian day value.
+//
+// Return:      void
+//------------------------------------------------------
+void TChineseCalendar::ChineseToFixed(const TChineseDate& aDate, TReal &aJulianDay) const
+	{
+	TInt year;
+	TReal newYear;
+	TReal pi;
+	TReal priorNewMoon;
+	TReal yearReal;
+	TChineseDate chinDate;
+
+	// get year
+	yearReal = (aDate.iCycle - KCycleOffset) * KYearsInChinCycle;
+	Floor(year,yearReal);
+	year += aDate.iYear - KCalConvYearOffsetByOne;
+	year += KFirstChinYear;
+
+	// get new year
+	newYear = ChineseNewYear(year);
+
+	// get papa
+	pi = ChineseNewMoonOnOrAfter(newYear + ((aDate.iMonth - KCalConvMonthOffsetByOne) * 29));
+
+	// get delta
+	ChineseFromFixed(chinDate,pi);
+
+	// get priorNewMoon
+	if((aDate.iMonth == chinDate.iMonth) && (aDate.iLeapMonth == chinDate.iLeapMonth))
+		{
+		priorNewMoon = pi;
+		}
+	else
+		{
+		priorNewMoon = ChineseNewMoonOnOrAfter(pi + KCalConvDayOffsetByOne);
+		}
+
+	aJulianDay = priorNewMoon + aDate.iDay - KCalConvDayOffsetByOne;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalsrc/ChineseDate.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,76 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the TChineseDate class.
+// 
+//
+
+// User includes
+#include "calconv.h"
+
+
+//
+// Construction/Destruction
+//
+
+//------------------------------------------------------
+// Class:       TChineseDate
+// Function:    TChineseDate
+// Arguments:   None
+//
+// Comments:    Constructor
+//
+// Return:      None
+//------------------------------------------------------
+EXPORT_C TChineseDate::TChineseDate()
+	{
+	}
+
+
+//------------------------------------------------------
+// Class:       TChineseDate
+// Function:    operator==
+// Arguments:   const TChineseDate &
+//
+// Comments:    overloaded == operator
+//
+// Return:      TBool - ETrue if the TChineseDate classes
+//				are the same
+//------------------------------------------------------
+EXPORT_C TBool TChineseDate::operator==(const TChineseDate &aDate) const
+	{
+	TBool rtn = ETrue;
+
+	if(iCycle != aDate.iCycle)
+		{
+		rtn = EFalse;
+		}
+	if(iYear != aDate.iYear)
+		{
+		rtn = EFalse;
+		}
+	if(iMonth != aDate.iMonth)
+		{
+		rtn = EFalse;
+		}
+	if(iLeapMonth != aDate.iLeapMonth)
+		{
+		rtn = EFalse;
+		}
+	if(iDay != aDate.iDay)
+		{
+		rtn = EFalse;
+		}
+
+	return rtn;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originalsrc/Gregorian.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,445 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the TGregorianCalendar class.
+// 
+//
+
+// System includes
+#include <e32std.h>
+#include <e32math.h>
+
+// User includes
+#include "calconv.h"
+
+// Constants
+const TReal KFourYears			= 4.0;
+const TReal KFourHundredYears	= 400;
+const TReal KOneHundredYears	= 100;
+const TReal KGregStartEpoch		= 1721424.5;
+//
+const TInt KDayOffsetByZero		= 0;
+const TInt KGregDaysInNormYear	= 365;
+const TInt KDaysIn400Years		= 146097;
+const TInt KDaysIn100Years		= 36524;
+const TInt KDaysIn4Years		= 1461;
+const TInt KGregCycle			= 12;
+const TInt KGregLeaps			= 7;
+const TInt KGregOffset			= 11;
+const TInt KGregStdMonth		= 30;
+const TInt KLastDayInDecember	= 31;
+
+
+
+//
+// Construction/Destruction
+//
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    TGregorianCalendar
+// Arguments:   None
+//
+// Comments:    Constructor
+//
+// Return:      None
+//------------------------------------------------------
+EXPORT_C TGregorianCalendar::TGregorianCalendar()
+	{
+	InitMembers();
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    TGregorianCalendar
+// Arguments:   TReal
+//
+// Comments:    Overloaded Constructor
+//
+// Return:      None
+//------------------------------------------------------
+EXPORT_C TGregorianCalendar::TGregorianCalendar(TReal aJD)
+	{
+	iJulianDay = aJD;
+	InitMembers();
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    InitMembers
+// Arguments:   None
+//
+// Comments:    This function initialises the member variables
+//				or the class.  It is called in the constructors
+//
+// Return:      
+//------------------------------------------------------
+void TGregorianCalendar::InitMembers()
+	{
+	iStartEpoch = KGregStartEpoch + KCalConvPointFive;
+	Floor(iDaysInNormYear,KGregDaysInNormYear);
+	iCycle = KGregCycle;
+	iLeaps = KGregLeaps;
+	iOffset = KGregOffset;
+	iStdYearMonth = KGregStdMonth;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    IsLeapYear
+// Arguments:   const TInt
+//
+// Comments:    Determines whether the given year is a leap year.
+//
+// Return:      ETrue if leap year, else EFalse
+//------------------------------------------------------
+TBool TGregorianCalendar::IsLeapYear(const TInt aYear)const
+	{
+	TReal result;
+	TBool rtn = EFalse;
+
+	Mod(result,aYear,KFourYears);
+
+	if	(!result)
+		{
+		rtn = ETrue;
+		}
+
+	Mod(result,aYear,KOneHundredYears);
+
+	if	(!result)
+		{
+		Mod(result,aYear,KFourHundredYears);
+
+		if	(result)
+			{
+			rtn = EFalse;
+			}
+		}
+	return rtn;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    GregToJulianDay
+// Arguments:   const TArithmeticalDate&
+//
+// Comments:    converts gregorian date to Julian day value
+//
+// Return:      Julian day value for the given Gregorian date
+//------------------------------------------------------
+TReal TGregorianCalendar::GregToJulianDay(const TArithmeticalDate& aDate) const
+	{
+	TReal result;
+	TReal tempReal;
+	TInt tempInt;
+
+	// days to the start of the year based on normal years
+	result = iStartEpoch + (iDaysInNormYear * (aDate.iYear - 1));
+
+	// leap year corrections
+	tempReal = (aDate.iYear - 1) / KFourYears;
+	Floor(tempInt,tempReal);
+	result += tempInt;
+
+	tempReal = (aDate.iYear - 1) / KOneHundredYears;
+	Floor(tempInt,tempReal);
+	result -= tempInt;
+
+	tempReal = (aDate.iYear - 1) / KFourHundredYears;
+	Floor(tempInt,tempReal);
+	result += tempInt;
+
+	// days in whole months in the year in question - approx 
+	// based on Feb having 30 days
+	tempInt = DaysMonthsElapsed(aDate.iMonth);
+	result += tempInt;
+
+	// correction for assumption that Feb has 30 days
+	if	(aDate.iMonth <= (EFebruary + 1))
+		result += KDayOffsetByZero;
+	else if	(aDate.iMonth > (EFebruary + 1) && IsLeapYear(aDate.iYear))
+		result -= 1;
+	else
+		result -= 2;
+
+	// days in month in question
+	result += aDate.iDay;
+
+	return result;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    SetDate
+// Arguments:   const TArithmeticalDate&
+//
+// Comments:    This function checks that the give date is
+//				valid and then assigns the corresponding 
+//				Julian day value to the class
+//
+// Return:      None
+//------------------------------------------------------
+EXPORT_C TInt TGregorianCalendar::SetDate(TArithmeticalDate& aGregDate)
+	{
+	if	(ValidDate(aGregDate)==EFalse)
+		{
+		return KCalConInvalidDate;
+		}
+	iJulianDay = GregToJulianDay(aGregDate);
+	return KErrNone;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    ValidDate
+// Arguments:   const TArithmeticalDate& 
+//
+// Comments:    this function Determines that the date given
+//				is of the correct format for the gregorian 
+//				calendar.
+//
+// Return:      TBool - KSuccess if valid date, else KFail
+//------------------------------------------------------
+TBool TGregorianCalendar::ValidDate(const TArithmeticalDate& aDate)const
+	{
+
+	TReal jD;
+	TArithmeticalDate gregDate;
+
+	jD = GregToJulianDay(aDate);
+	GregFromJulianDay(gregDate,jD);
+
+	if	(aDate.operator==(gregDate))
+		return ETrue;
+	else
+		return EFalse;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    GetDate
+// Arguments:   TArithmeticalDate&
+//
+// Comments:    Calculates the gregorian date from the 
+//				Julian day value.
+//
+// Return:      None
+//------------------------------------------------------
+EXPORT_C void TGregorianCalendar::GetDate(TArithmeticalDate& aDate)
+	{
+	GregFromJulianDay(aDate,iJulianDay);
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    DateTimeToGregorian
+// Arguments:   TDateTime& 
+//
+// Comments:    This function converts a TDateTime class to
+//				the TGregorianCalendar class
+//
+// Return:      void
+//------------------------------------------------------
+EXPORT_C void TGregorianCalendar::DateTimeToGregorian(TDateTime& aDT)
+	{
+	TArithmeticalDate gregDate;
+
+	gregDate.iDay = aDT.Day() + 1;
+	gregDate.iMonth = (TInt)aDT.Month() + 1;
+	gregDate.iYear = aDT.Year();
+
+	iJulianDay = GregToJulianDay(gregDate);
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    GregorianToDateTime
+// Arguments:   TDateTime& 
+//
+// Comments:    This gets the date from the TGregorianCalendar class
+//				and places in the the given TDateTime class
+//
+// Return:      void
+//------------------------------------------------------
+EXPORT_C void TGregorianCalendar::GregorianToDateTime(TDateTime& aDT)
+	{
+	TArithmeticalDate gregDate;
+
+	GregFromJulianDay(gregDate,iJulianDay);
+
+	aDT.SetMicroSecond(0);
+	aDT.SetSecond(0);
+	aDT.SetMinute(0);
+	aDT.SetHour(0);
+	aDT.SetMonth((TMonth)(gregDate.iMonth - 1));
+	aDT.SetDay(gregDate.iDay - 1);
+	aDT.SetYear(gregDate.iYear);
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    CalcGregYear
+// Arguments:   TArithmeticalDate&
+//
+// Comments:    Calculates the gregorian year from Julian 
+//				day value.
+//
+// Return:      None
+//------------------------------------------------------
+void TGregorianCalendar::CalcGregYear(TArithmeticalDate& aDate, TReal aJulianDay)const
+	{
+	TReal d0;
+	TReal d1;
+	TReal d2;
+	TReal d3;
+	TReal year;
+	TInt n400;
+	TInt n100;
+	TInt n4;
+	TInt n1;
+	TInt32 yearInt32;
+
+	// determine year
+	// get to start of calendar ie year 1
+	d0 = aJulianDay - iStartEpoch - 1;
+
+	Mod(d1,d0,KDaysIn400Years);
+
+	Mod(d2,d1,KDaysIn100Years);
+
+	Mod(d3,d2,KDaysIn4Years);
+
+	// number of 400 year blocks
+	d0 /= KDaysIn400Years;
+	Floor(n400,d0);
+
+	// number of 100 year blocks
+	d1 /= KDaysIn100Years;
+	Floor(n100,d1);
+
+	// number of 4 year blocks
+	d2 /= KDaysIn4Years;
+	Floor(n4,d2);
+
+		// number of 1 year blocks
+	d3 /= KGregDaysInNormYear;
+	Floor(n1,d3);
+
+	// calc year
+	year = (KFourHundredYears * n400) + (KOneHundredYears * n100) + (KFourYears * n4) + n1;
+	Math::Int(yearInt32,year);
+
+	if	((n100 == (KFourHundredYears / KOneHundredYears)) || (n1 == KFourYears))
+		{
+		aDate.iYear = yearInt32;
+		}
+	else
+		{
+		aDate.iYear = yearInt32 + 1;
+		}
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    GregDateDiff
+// Arguments:   const TArithmeticalDate, const TArithmeticalDate
+//
+// Comments:    This function Determines the difference in days
+//				between two gregorian dates.
+//
+// Return:      Days difference
+//------------------------------------------------------
+TInt TGregorianCalendar::GregDateDiff(const TArithmeticalDate aDate1, const TArithmeticalDate aDate2)const
+	{
+	TInt diff;
+	TReal diffReal;
+	diffReal = GregToJulianDay(aDate2) - GregToJulianDay(aDate1);
+	Floor(diff,diffReal);
+	return diff;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    DayNumber
+// Arguments:   const TArithmeticalDate& 
+//
+// Comments:    this function returns the number of days that
+//				have elapsed in the given year
+//
+// Return:      see comment
+//------------------------------------------------------
+TInt TGregorianCalendar::DayNumber(const TArithmeticalDate& aDate)const
+	{
+	TArithmeticalDate tempDate;
+	TInt dayNum;
+
+	tempDate.iDay = KLastDayInDecember;
+	tempDate.iMonth = EDecember + 1;
+	tempDate.iYear = aDate.iYear - 1;
+
+	dayNum = GregDateDiff(tempDate,aDate);
+
+	return dayNum;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    GregFromJulianDay
+// Arguments:   TArithmeticalDate& , TReal
+//
+// Comments:    This function converts a gregorian date to
+//				a julian day
+//
+// Return:      void
+//------------------------------------------------------
+void TGregorianCalendar::GregFromJulianDay(TArithmeticalDate& aDate, TReal aJulianDay)const
+	{
+	TReal priorDays;
+	TReal correction;
+	TReal day;
+	TReal month;
+	TInt32 dayInt32;
+	TInt32 monthInt32;
+
+	CalcGregYear(aDate,aJulianDay);
+
+	aDate.iDay = 1;
+	aDate.iMonth = EJanuary + 1;
+
+	priorDays = aJulianDay - GregToJulianDay(aDate);
+
+	aDate.iMonth = EMarch + 1;
+
+	if	(aJulianDay < GregToJulianDay(aDate))
+		{
+		correction = KDayOffsetByZero;
+		}
+	else if	((aJulianDay >= GregToJulianDay(aDate)) && IsLeapYear(aDate.iYear))
+		{
+		correction = 1;
+		}
+	else
+		{
+		correction = 2;
+		}
+
+	month = priorDays + correction;
+	Math::Int(monthInt32,month);
+	monthInt32 = DayMonthInYear(monthInt32);
+	aDate.iMonth = monthInt32;
+
+	day = aJulianDay - GregToJulianDay(aDate) + 1;
+	Math::Int(dayInt32,day);
+	aDate.iDay = dayInt32;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originaltsrc/ConvertDates.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,440 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "ConvertDates.h"
+
+// Constants 
+const TInt KFirstYear = 0;
+const TInt KFromOffset = 0;
+const TInt KToOffset = 5;
+const TInt KCycleOffset = 10;
+const TInt KYearOffset = 13;
+const TInt KMnthOffset = 19;
+const TInt KLeapMonthOffset = 22;
+const TInt KDyOffset = 24;
+const TInt KCycleLen = 2;
+const TInt KSignLen = 1;
+const TInt KYearLen = 5;
+const TInt KMonthLen = 2;
+//const TInt KLeapMonthLen = 1;
+const TInt KDayLen = 2;
+//
+_LIT(KRoot,						"C:\\");
+_LIT(KSpace,					" ");
+_LIT(KResult,					" Result ");
+_LIT(KTestHeader,				"Test Results");
+_LIT(KCalconLogFileDirectory,	"calcon");
+_LIT(KCalconLogFile,			"c:\\calcon\\calcon.txt");
+_LIT(KInputFile,				"c:\\input.txt");
+_LIT(KOutputFile,				"c:\\output.txt");
+_LIT8(KImcvCRLF,				"\r\n");
+
+
+
+//
+// Construction/Destruction
+//
+
+CConvertDates::~CConvertDates()
+	{
+	iInputFile.Close();
+	iOutputFile.Close();
+	iRFSession.Close();
+	}
+
+CConvertDates* CConvertDates::NewL()
+	{
+	CConvertDates* self = CConvertDates::NewLC();
+	CleanupStack::Pop();
+	return self;
+	}
+
+CConvertDates* CConvertDates::NewLC()
+	{
+	CConvertDates* self = new(ELeave) CConvertDates;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+void CConvertDates::ConstructL()
+	{
+	// constructors, public member data, static casts
+	TGregorianCalendar gregorianCalendar;
+	TChineseCalendar chineseCalendar;
+	TArithmeticalDate date;
+	date.iYear=2001;
+	date.iMonth=1;
+	date.iDay=24; // 24th January 2001
+	gregorianCalendar.SetDate(date);
+	static_cast<TCalendar&>(chineseCalendar)=gregorianCalendar;
+	TChineseDate chineseDate;
+	chineseCalendar.GetDate(chineseDate); // cycle=78, Year=18, Month=1, Day=1 (New Year's day)
+
+
+	User::LeaveIfError(iRFSession.Connect());
+	iRFSession.SetSessionPath(KRoot);
+
+	if	(iLogger.LogValid())
+		iLogger.CloseLog();
+	TParse p;
+	p.Set(KCalconLogFile, NULL, NULL);
+	iLogger.Connect();
+	iLogger.CreateLog(KCalconLogFileDirectory, p.NameAndExt(), EFileLoggingModeOverwrite);
+	iLogger.SetDateAndTime(EFalse, EFalse);
+	iLogger.Write(KTestHeader);
+	}
+
+void CConvertDates::ConvertL()
+	{
+	TBuf8<100> logLine;
+	TBuf<64> errBuf;
+	// open the input and output files
+	OpenFilesL();
+
+	TInt fileErr = KErrNone;
+	while(fileErr == KErrNone)
+		{
+		// read date from the input file
+		fileErr = ReadLine();
+		if	(fileErr==KErrNone)
+			{
+			// get the cal types to convert from and to
+			TRAPD(err,GetCalL(iDateLine));
+			if	(err)
+				{
+				errBuf.Format(_L("\r\nError get calendar conversion type %d\r\n"),err);
+				iLogger.Write(errBuf);
+				}
+			else
+				{
+				// do the conversion
+				Cal1ToCal2();
+
+				// set the cal types to convert from and to
+				logLine.Zero();
+				TRAP(err,SetCalL(logLine));
+				if	(err)
+					{
+					errBuf.Format(_L("\r\nError set calendar conversion type %d\r\n"),err);
+					iDateLine.Append(errBuf);
+					}
+				else
+					{
+					iDateLine.Append(logLine);
+					iDateLine.Append(_L8("\r\n"));
+					iLogger.Write(iDateLine);
+					if	(iOutputFile.Write(iDateLine))
+						{
+						User::Leave(KErrCorrupt);
+						}
+					}
+				}
+			}
+		}
+	}
+
+void CConvertDates::OpenFilesL()
+	{
+	User::LeaveIfError(iInputFile.Open(iRFSession, KInputFile, EFileStreamText|EFileRead|EFileShareExclusive));
+	User::LeaveIfError(iOutputFile.Replace(iRFSession, KOutputFile, EFileStreamText|EFileWrite|EFileShareExclusive));
+	}
+
+void CConvertDates::GetCalL(TDes8& aDateToConvert)
+	{
+	TInt dateError;
+	TDateTime dt(0,EJanuary,0,0,0,0,0);
+	TLex8 lexCycle(aDateToConvert.Mid(KCycleOffset,KCycleLen));
+	TLex8 lexYear(aDateToConvert.Mid(KYearOffset,KYearLen));
+	TLex8 lexMonth(aDateToConvert.Mid(KMnthOffset,KMonthLen));
+//	TLex8 lexLeapMonth(aDateToConvert.Mid(KLeapMonthOffset,KLeapMonthLen));
+	TLex8 lexDay(aDateToConvert.Mid(KDyOffset,KDayLen));
+
+	// get cycle
+	if	(lexCycle.Val(iChinDateOut.iCycle) != KErrNone)
+		{
+		User::Leave(KErrCorrupt);
+		}
+	// get year
+	if	(lexYear.Val(iArithDateOut.iYear) != KErrNone)
+		{
+		User::Leave(KErrGeneral);
+		}
+	iChinDateOut.iYear = iArithDateOut.iYear;
+	// get month
+	if	(lexMonth.Val(iArithDateOut.iMonth) != KErrNone)
+		{
+		User::Leave(KErrGeneral);
+		}
+	iChinDateOut.iMonth = iArithDateOut.iMonth;
+	// get leap month
+	if	(aDateToConvert[KLeapMonthOffset] == 't')
+		{
+		iChinDateOut.iLeapMonth = ETrue;
+		}
+	else
+		{
+		iChinDateOut.iLeapMonth = EFalse;
+		}
+	// get day
+	if	(lexDay.Val(iArithDateOut.iDay) != KErrNone)
+		{
+		User::Leave(KErrCorrupt);
+		}
+	iChinDateOut.iDay = iArithDateOut.iDay;
+
+
+	switch(aDateToConvert[KFromOffset])
+		{
+	case 'g':
+		iCalTypeFrom = EGreg;
+		dateError = iGreg.SetDate(iArithDateOut);
+		iGreg.GregorianToDateTime(dt);
+		iGreg.DateTimeToGregorian(dt);
+		break;
+	case 'c':
+		iCalTypeFrom = EChin;
+		dateError = iChin.SetDate(iChinDateOut);
+		iChin.ChineseToDateTime(dt);
+		iChin.DateTimeToChinese(dt);
+		break;
+	default:
+		dateError = KErrCorrupt;
+		break;
+		}
+
+	if	(dateError)
+		User::Leave(dateError);
+
+	switch(aDateToConvert[KToOffset])
+		{
+	case 'g':
+		iCalTypeTo = EGreg;
+		break;
+	case 'c':
+		iCalTypeTo = EChin;
+		break;
+	default:
+		break;
+		}
+	}
+
+void CConvertDates::Cal1ToCal2() const
+	{
+	switch(iCalTypeFrom)
+		{
+	case EGreg:
+		{
+		switch(iCalTypeTo)
+			{
+		case EChin:
+			(TCalendar&)(iChin) = (TCalendar&)(iGreg);
+			break;
+		default:
+			break;
+			}
+		}
+		break;
+	case EChin:
+		{
+	switch(iCalTypeTo)
+		{
+		case EGreg:
+			(TCalendar&)(iGreg) = (TCalendar&)(iChin);
+			break;
+		default:
+			break;
+		}
+		}
+		break;
+	default:
+		break;
+	}
+	}
+
+void CConvertDates::SetCalL(TDes8& aConvertedDate)
+	{
+	TArithmeticalDate Date;
+	TChineseDate ChinDate;
+	TBuf8<KYearLen> TempDate;
+
+	switch(iCalTypeFrom)
+		{
+	case EGreg:
+		{
+		switch(iCalTypeTo)
+			{
+		case EChin:
+			iChin.GetDate(ChinDate);
+			break;
+		default:
+			break;
+			}
+		}
+		break;
+	case EChin:
+		{
+		switch(iCalTypeTo)
+			{
+		case EGreg:
+			iGreg.GetDate(Date);
+			TempDate.Copy(_L("greg "));
+		default:
+			break;
+			}
+		}
+		break;
+	default:
+		break;
+		}
+
+	if	(iCalTypeTo == EChin)
+		{
+		TBuf8<10> TempFormatStr;
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KCycleLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iCycle);
+		aConvertedDate.Append(KResult);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempDate.FillZ();
+		TempDate.Format(_L8("+"));
+		aConvertedDate.Append(TempDate);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KYearLen - KSignLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iYear);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KMonthLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iMonth);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempDate.FillZ();
+		if	(ChinDate.iLeapMonth == EFalse)
+			{
+			TempDate.Format(_L8("f"));
+			}
+		else
+			{
+			TempDate.Format(_L8("t"));
+			}
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KDayLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iDay);
+		aConvertedDate.Append(TempDate);
+		}
+	else
+		{
+		TBuf8<10> TempFormatStr;
+
+		if	(Date.iYear >= KFirstYear)
+			{
+			TempDate.Format(_L8("+"));
+			}
+		else
+			{
+			TempDate.Format(_L8("-"));
+			}
+		aConvertedDate.Append(KResult);
+		aConvertedDate.Append(TempDate);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KYearLen - KSignLen);
+		TempDate.FillZ();
+		if	(Date.iYear >= KFirstYear)
+			{
+			TempDate.Format(TempFormatStr,Date.iYear);
+			}
+		else
+			{
+			TempDate.Format(TempFormatStr,-Date.iYear);
+			}
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KMonthLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,Date.iMonth);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KDayLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,Date.iDay);
+		aConvertedDate.Append(TempDate);
+		}
+	}
+
+//
+// Read line of test from file
+//
+TInt CConvertDates::ReadLine()
+    {
+    TInt err = KErrNone;
+
+    //  Read into the buffer
+    TBuf8<256> buffer;              // Max read of the Read() function..    
+    iDateLine.Zero();
+
+    //  Get the current file position
+    TInt filePos = 0;
+    iInputFile.Seek(ESeekCurrent, filePos);
+
+    //  Read the buffer
+    err = iInputFile.Read(buffer);
+    
+    //end of file?
+    TInt s = buffer.Length();
+    if	( s == 0)
+        {
+        err = KErrEof;
+        }
+
+    if	(err == KErrNone)
+        {
+        //  Copy to the lfcr and then set the file pointer
+        //  to the point after that...
+        TInt pos = buffer.Find(KImcvCRLF);
+        if	( pos != -1)
+            {
+            iDateLine.Justify(buffer, pos, ELeft, ' ');
+            filePos += (pos+2);
+
+            //  Set the file pointer back to after the lfcr..
+            iInputFile.Seek(ESeekStart, filePos);                
+            }
+        //  Else fill the whole buffer 256 chars..
+        else
+            {
+            iDateLine.Copy(buffer);
+            }
+        }
+    return err;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originaltsrc/ConvertDates.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,77 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CONVERTDATES_H__
+#define __CONVERTDATES_H__
+
+// System includes
+#include <e32base.h>
+#include <s32strm.h>
+#include <f32file.h>
+#include <flogger.h>
+#include "calconv.h"
+
+// Constants
+const TInt KDateLen = 60;
+
+// Enumerations
+enum TCalTypes
+	{
+	EGreg,
+	EHebr,
+	EChin
+	};
+
+// Classes
+class CConvertDates : public CBase 
+	{
+public:
+	static CConvertDates* NewLC();
+	static CConvertDates* NewL();
+	~CConvertDates();
+
+private:
+	void ConstructL();
+
+public:
+	void ConvertL();
+
+private:
+	void Cal1ToCal2() const;
+	void GetCalL(TDes8& aDateToConvert);
+	void SetCalL(TDes8& aDate);
+	void OpenFilesL();
+	TInt ReadLine();
+
+private:
+	TCalTypes					iCalTypeFrom;
+	TCalTypes					iCalTypeTo;
+	TArithmeticalDate			iArithDateOut;
+	TArithmeticalDate			iArithDateIn;
+	TChineseDate				iChinDateOut;
+	TChineseDate				iChinDateIn;
+	TGregorianCalendar			iGreg;
+	TChineseCalendar			iChin;
+
+	RFs							iRFSession;
+	RFile						iInputFile;
+	RFile						iOutputFile;
+
+	RFileLogger					iLogger;
+
+	TBuf8<KDateLen>				iDateLine;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originaltsrc/Input_2.txt	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,76 @@
+greg chin 00 +1898 01 f 01
+greg chin 00 +1899 12 f 31
+greg chin 00 +1900 01 f 10
+greg chin 00 +1910 02 f 15
+greg chin 00 +1920 03 f 20
+greg chin 00 +1924 02 f 29
+greg chin 00 +1970 01 f 01
+greg chin 00 +1971 02 f 02
+greg chin 00 +1972 03 f 03
+greg chin 00 +1973 04 f 04
+greg chin 00 +1974 05 f 05
+greg chin 00 +1975 06 f 06
+greg chin 00 +1976 07 f 07
+greg chin 00 +1977 08 f 08
+greg chin 00 +1978 09 f 09
+greg chin 00 +1979 10 f 10
+greg chin 00 +1980 11 f 11
+greg chin 00 +1981 12 f 12
+greg chin 00 +1982 01 f 13
+greg chin 00 +1982 02 f 28
+greg chin 00 +1982 03 f 01
+greg chin 00 +1999 12 f 31
+greg chin 00 +2000 01 f 01
+greg chin 00 +2000 02 f 29
+greg chin 00 +1998 01 f 28
+greg chin 00 +1998 02 f 28
+greg chin 00 +1998 03 f 30
+greg chin 00 +1998 04 f 29
+greg chin 00 +1998 05 f 30
+greg chin 00 +1998 06 f 28
+greg chin 00 +1998 07 f 28
+greg chin 00 +1998 08 f 28
+greg chin 00 +1998 09 f 28
+greg chin 00 +1998 10 f 28
+greg chin 00 +1998 11 f 28
+greg chin 00 +1998 12 f 29
+greg chin 00 +1999 01 f 28
+greg chin 00 +2043 02 f 10
+greg chin 00 +2044 01 f 29
+chin greg 76 +0034 12 f 09
+chin greg 76 +0036 11 f 29
+chin greg 76 +0036 12 f 10
+chin greg 76 +0047 01 f 06
+chin greg 76 +0057 02 f 01
+chin greg 77 +0001 01 f 25
+chin greg 77 +0046 11 f 24
+chin greg 77 +0048 01 f 07
+chin greg 77 +0049 01 f 18
+chin greg 77 +0050 03 f 02
+chin greg 77 +0051 04 f 14
+chin greg 77 +0052 04 f 27
+chin greg 77 +0053 06 f 11
+chin greg 77 +0054 06 f 24
+chin greg 77 +0055 08 f 07
+chin greg 77 +0056 08 f 20
+chin greg 77 +0057 10 f 04
+chin greg 77 +0058 11 f 17
+chin greg 77 +0058 12 f 19
+chin greg 77 +0059 02 f 05
+chin greg 77 +0059 02 f 06
+chin greg 78 +0016 11 f 24
+chin greg 78 +0016 11 f 25
+chin greg 78 +0017 01 f 25
+chin greg 78 +0015 01 f 01
+chin greg 78 +0015 02 f 02
+chin greg 78 +0015 03 f 03
+chin greg 78 +0015 04 f 04
+chin greg 78 +0015 05 f 05
+chin greg 78 +0015 05 t 05
+chin greg 78 +0015 06 f 06
+chin greg 78 +0015 08 f 08
+chin greg 78 +0015 09 f 09
+chin greg 78 +0015 10 f 10
+chin greg 78 +0015 11 f 11
+chin greg 78 +0060 01 f 01
+chin greg 78 +0060 12 f 30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originaltsrc/TCCnMain.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,44 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <e32test.h>
+#include "ConvertDates.h"
+
+// Type definitions
+#define UNUSED_VAR(a) a = a
+
+void mainL();
+
+GLDEF_C TInt E32Main()
+    {
+	__UHEAP_MARK;
+	CTrapCleanup* cleanupStack=CTrapCleanup::New();
+
+	TRAPD(error,mainL());
+	UNUSED_VAR(error); //Used to supress build warnings
+
+	delete cleanupStack;
+	__UHEAP_MARKEND;
+	return KErrNone;
+    }
+
+void mainL()
+    {
+	CConvertDates* ConvDates = CConvertDates::NewL();
+	CleanupStack::PushL(ConvDates);
+
+	ConvDates->ConvertL();
+	CleanupStack::PopAndDestroy();  //delete ConvDates;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originaltsrc/TCCnoriginal.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,27 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET tccnoriginal.exe
+TARGETTYPE exe
+CAPABILITY   None
+UID 0
+VENDORID 0x70000001
+APP_LAYER_SYSTEMINCLUDE_SYMBIAN
+USERINCLUDE  ../originalinc
+SOURCEPATH ../originaltsrc
+SOURCE TCCnMain.cpp ConvertDates.cpp
+LIBRARY euser.lib cconoriginal.lib efsrv.lib flogger.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/originaltsrc/input.txt	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,66 @@
+greg chin 00 -0586 07 f 24
+greg chin 00 -0168 12 f 05
+greg chin 00 +0070 09 f 24
+greg chin 00 +0135 10 f 02
+greg chin 00 +0470 01 f 08
+greg chin 00 +0576 05 f 20
+greg chin 00 +0694 11 f 10
+greg chin 00 +1013 04 f 25
+greg chin 00 +1096 05 f 24
+greg chin 00 +1190 03 f 23
+greg chin 00 +1240 03 f 10
+greg chin 00 +1288 04 f 02
+greg chin 00 +1298 04 f 27
+greg chin 00 +1391 06 f 12
+greg chin 00 +1436 02 f 03
+greg chin 00 +1492 04 f 09
+greg chin 00 +1553 09 f 19
+greg chin 00 +1560 03 f 05
+greg chin 00 +1648 06 f 10
+greg chin 00 +1680 06 f 30
+greg chin 00 +1716 07 f 24
+greg chin 00 +1768 06 f 19
+greg chin 00 +1819 08 f 02
+greg chin 00 +1839 03 f 27
+greg chin 00 +1903 04 f 19
+greg chin 00 +1929 08 f 25
+greg chin 00 +1941 09 f 29
+greg chin 00 +1943 04 f 19
+greg chin 00 +1943 10 f 07
+greg chin 00 +1992 03 f 17
+greg chin 00 +1996 02 f 25
+greg chin 00 +2038 11 f 10
+greg chin 00 +2094 07 f 18
+chin greg 35 +0011 06 f 12
+chin greg 42 +0009 10 f 27
+chin greg 46 +0007 08 f 04
+chin greg 47 +0012 08 f 09
+chin greg 52 +0046 11 f 20
+chin greg 54 +0033 04 f 05
+chin greg 56 +0031 10 f 15
+chin greg 61 +0050 03 f 07
+chin greg 63 +0013 04 f 24
+chin greg 64 +0047 02 f 09
+chin greg 65 +0037 02 f 09
+chin greg 66 +0025 02 f 23
+chin greg 66 +0035 03 f 09
+chin greg 68 +0008 05 f 02
+chin greg 68 +0053 01 f 08
+chin greg 69 +0049 03 f 04
+chin greg 70 +0050 08 f 02
+chin greg 70 +0057 01 f 29
+chin greg 72 +0025 04 t 20
+chin greg 72 +0057 06 f 05
+chin greg 73 +0033 06 f 06
+chin greg 74 +0025 05 f 05
+chin greg 75 +0016 06 f 12
+chin greg 75 +0036 02 f 13
+chin greg 76 +0040 03 f 22
+chin greg 77 +0006 07 f 21
+chin greg 77 +0018 08 f 09
+chin greg 77 +0020 03 f 15
+chin greg 77 +0020 09 f 09
+chin greg 78 +0009 02 f 14
+chin greg 78 +0013 01 f 07
+chin greg 78 +0055 10 f 14
+chin greg 79 +0051 06 f 07
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/arithmeticaldate.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,29 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __ARITHMETICALDATE_H__
+#define __ARITHMETICALDATE_H__
+
+#include <e32base.h>
+
+class TArithmeticalDate  
+	{
+public:
+	TInt iDay;
+	TInt iMonth;
+	TInt iYear;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/calcondata.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,428 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Generated by CalconTable.exe
+//
+
+#include "chinesecalendar.h"
+
+const TUint16 TCalconData::iCalConDataMonth[]={
+ 43856U, // 0 - 35
+ 19304U, // 0 - 36
+ 19168U, // 0 - 37
+ 42352U, // 0 - 38
+ 21096U, // 0 - 39
+ 53856U, // 0 - 40
+ 55632U, // 0 - 41
+ 23208U, // 0 - 42
+ 22176U, // 0 - 43
+ 39632U, // 0 - 44
+ 19176U, // 0 - 45
+ 19168U, // 0 - 46
+ 42200U, // 0 - 47
+ 42192U, // 0 - 48
+ 53840U, // 0 - 49
+ 54568U, // 0 - 50
+ 46400U, // 0 - 51
+ 54944U, // 0 - 52
+ 38608U, // 0 - 53
+ 38320U, // 0 - 54
+ 18872U, // 0 - 55
+ 18800U, // 0 - 56
+ 42160U, // 0 - 57
+ 45656U, // 0 - 58
+ 27216U, // 0 - 59
+ 27968U, // 1 - 0
+ 44456U, // 1 - 1
+ 11104U, // 1 - 2
+ 38256U, // 1 - 3
+ 18808U, // 1 - 4
+ 18800U, // 1 - 5
+ 25776U, // 1 - 6
+ 54432U, // 1 - 7
+ 59984U, // 1 - 8
+ 27976U, // 1 - 9
+ 23248U, // 1 - 10
+ 11104U, // 1 - 11
+ 37744U, // 1 - 12
+ 37600U, // 1 - 13
+ 51560U, // 1 - 14
+ 51536U, // 1 - 15
+ 54432U, // 1 - 16
+ 55888U, // 1 - 17
+ 46416U, // 1 - 18
+ 22176U, // 1 - 19
+ 43736U, // 1 - 20
+ 9680U, // 1 - 21
+ 37584U, // 1 - 22
+ 51544U, // 1 - 23
+ 43344U, // 1 - 24
+ 46248U, // 1 - 25
+ 27808U, // 1 - 26
+ 46416U, // 1 - 27
+ 21928U, // 1 - 28
+ 19872U, // 1 - 29
+ 42416U, // 1 - 30
+ 21176U, // 1 - 31
+ 21168U, // 1 - 32
+ 43344U, // 1 - 33
+ 59728U, // 1 - 34
+ 27296U, // 1 - 35
+ 44368U, // 1 - 36
+ 43856U, // 1 - 37
+ 19296U, // 1 - 38
+ 42352U, // 1 - 39
+ 42352U, // 1 - 40
+ 21088U, // 1 - 41
+ 59696U, // 1 - 42
+ 55632U, // 1 - 43
+ 23208U, // 1 - 44
+ 22176U, // 1 - 45
+ 38608U, // 1 - 46
+ 19176U, // 1 - 47
+ 19152U, // 1 - 48
+ 42192U, // 1 - 49
+ 53864U, // 1 - 50
+ 53840U, // 1 - 51
+ 54568U, // 1 - 52
+ 46400U, // 1 - 53
+ 46752U, // 1 - 54
+ 38608U, // 1 - 55
+ 38320U, // 1 - 56
+ 18864U, // 1 - 57
+ 42168U, // 1 - 58
+ 42160U, // 1 - 59
+ 45656U, // 2 - 0
+ 27216U, // 2 - 1
+ 27968U, // 2 - 2
+ 44448U, // 2 - 3
+ 43872U, // 2 - 4
+ 38256U, // 2 - 5
+ 18808U, // 2 - 6
+ 18800U, // 2 - 7
+ 25776U, // 2 - 8
+ 27216U, // 2 - 9
+ 59984U, // 2 - 10
+ 27432U, // 2 - 11
+ 23232U, // 2 - 12
+ 43872U, // 2 - 13
+ 37736U, // 2 - 14
+ 37600U, // 2 - 15
+ 51552U, // 2 - 16
+ 54440U, // 2 - 17
+ 54432U, // 2 - 18
+ 55888U, // 2 - 19
+ 23208U, // 2 - 20
+ 22176U, // 2 - 21
+ 43736U, // 2 - 22
+ 9680U, // 2 - 23
+ 37584U, // 2 - 24
+ 51544U, // 2 - 25
+ 43344U, // 2 - 26
+ 46240U, // 2 - 27
+ 46416U, // 2 - 28
+ 44368U, // 2 - 29
+ 21928U, // 2 - 30
+ 19360U, // 2 - 31
+ 42416U, // 2 - 32
+ 21176U, // 2 - 33
+ 21168U, // 2 - 34
+ 43312U, // 2 - 35
+ 29864U, // 2 - 36
+ 27296U, // 2 - 37
+ 44368U, // 2 - 38
+ 19880U, // 2 - 39
+ 19296U, // 2 - 40
+ 42352U, // 2 - 41
+ 42208U, // 2 - 42
+ 53856U, // 2 - 43
+ 59696U, // 2 - 44
+ 54576U, // 2 - 45
+ 23200U, // 2 - 46
+ 27472U, // 2 - 47
+ 38608U, // 2 - 48
+ 19176U, // 2 - 49
+ 19152U, // 2 - 50
+ 42192U, // 2 - 51
+ 53848U, // 2 - 52
+ 53840U, // 2 - 53
+ 54560U, // 2 - 54
+ 55968U, // 2 - 55
+ 46496U, // 2 - 56
+ 22224U, // 2 - 57
+ 19160U, // 2 - 58
+ 18864U, // 2 - 59
+ 42168U, // 3 - 0
+ 42160U, // 3 - 1
+ 43600U, // 3 - 2
+ 46376U, // 3 - 3
+ 27936U, // 3 - 4
+ 44448U, // 3 - 5
+ 21936U, // 3 - 6
+ 37744U, // 3 - 7
+ 18808U, // 3 - 8
+ 18800U, // 3 - 9
+ 25776U, // 3 - 10
+ 27216U, // 3 - 11
+ 59984U, // 3 - 12
+ 27296U, // 3 - 13
+ 43872U, // 3 - 14
+ 43744U, // 3 - 15
+ 37600U, // 3 - 16
+ 51568U, // 3 - 17
+ 51552U, // 3 - 18
+ 54440U, // 3 - 19
+ 54432U, // 3 - 20
+ 55888U, // 3 - 21
+ 23208U, // 3 - 22
+ 22176U, // 3 - 23
+ 42704U, // 3 - 24
+ 21224U, // 3 - 25
+ 21200U, // 3 - 26
+ 43352U, // 3 - 27
+ 43344U, // 3 - 28
+ 46240U, // 3 - 29
+ 46416U, // 3 - 30
+ 44368U, // 3 - 31
+ 21920U, // 3 - 32
+ 42448U, // 3 - 33
+ 42416U, // 3 - 34
+ 21168U, // 3 - 35
+ 43320U, // 3 - 36
+ 26928U, // 3 - 37
+ 29336U, // 3 - 38
+ 27296U, // 3 - 39
+ 44368U, // 3 - 40
+ 19880U, // 3 - 41
+ 19296U, // 3 - 42
+ 42352U, // 3 - 43
+ 21104U, // 3 - 44
+ 53600U, // 3 - 45
+ 59696U, // 3 - 46
+ 54560U, // 3 - 47
+ 55968U, // 3 - 48
+ 27472U, // 3 - 49
+ 22224U, // 3 - 50
+ 19168U, // 3 - 51
+ 42216U, // 3 - 52
+ 41680U, // 3 - 53
+ 53584U, // 3 - 54
+ 55592U, // 3 - 55
+};
+const TUint32 TCalconData::iCalConDataYear[]={
+ 2414696UL, // 0 - 35
+ 2418334155UL, // 0 - 36
+ 2415435UL, // 0 - 37
+ 2415789UL, // 0 - 38
+ 1613028880UL, // 0 - 39
+ 2416527UL, // 0 - 40
+ 2416881UL, // 0 - 41
+ 1344594516UL, // 0 - 42
+ 2417620UL, // 0 - 43
+ 2417974UL, // 0 - 44
+ 807724697UL, // 0 - 45
+ 2418713UL, // 0 - 46
+ 1881467259UL, // 0 - 47
+ 2419451UL, // 0 - 48
+ 2419805UL, // 0 - 49
+ 1613032895UL, // 0 - 50
+ 2420543UL, // 0 - 51
+ 2420897UL, // 0 - 52
+ 807727620UL, // 0 - 53
+ 2421636UL, // 0 - 54
+ 2149905639UL, // 0 - 55
+ 2422375UL, // 0 - 56
+ 2422729UL, // 0 - 57
+ 1613035819UL, // 0 - 58
+ 2423467UL, // 0 - 59
+ 2423821UL, // 1 - 0
+ 1344601455UL, // 1 - 1
+ 2424560UL, // 1 - 2
+ 2424914UL, // 1 - 3
+ 807731637UL, // 1 - 4
+ 2425653UL, // 1 - 5
+ 1881474199UL, // 1 - 6
+ 2426390UL, // 1 - 7
+ 2426744UL, // 1 - 8
+ 1613039835UL, // 1 - 9
+ 2427483UL, // 1 - 10
+ 2427838UL, // 1 - 11
+ 1076170016UL, // 1 - 12
+ 2428576UL, // 1 - 13
+ 2149912578UL, // 1 - 14
+ 2429314UL, // 1 - 15
+ 2429668UL, // 1 - 16
+ 1881478214UL, // 1 - 17
+ 2430406UL, // 1 - 18
+ 2430761UL, // 1 - 19
+ 1344608395UL, // 1 - 20
+ 2431500UL, // 1 - 21
+ 2431854UL, // 1 - 22
+ 807738576UL, // 1 - 23
+ 2432592UL, // 1 - 24
+ 2149916594UL, // 1 - 25
+ 2433330UL, // 1 - 26
+ 2433684UL, // 1 - 27
+ 1613046775UL, // 1 - 28
+ 2434423UL, // 1 - 29
+ 2434777UL, // 1 - 30
+ 1076176956UL, // 1 - 31
+ 2435516UL, // 1 - 32
+ 2418354974UL, // 1 - 33
+ 2436253UL, // 1 - 34
+ 2436608UL, // 1 - 35
+ 1881485154UL, // 1 - 36
+ 2437346UL, // 1 - 37
+ 2437701UL, // 1 - 38
+ 1344615335UL, // 1 - 39
+ 2438439UL, // 1 - 40
+ 2438794UL, // 1 - 41
+ 1076180971UL, // 1 - 42
+ 2439531UL, // 1 - 43
+ 2149923534UL, // 1 - 44
+ 2440270UL, // 1 - 45
+ 2440624UL, // 1 - 46
+ 1613053715UL, // 1 - 47
+ 2441363UL, // 1 - 48
+ 2441717UL, // 1 - 49
+ 1344619351UL, // 1 - 50
+ 2442455UL, // 1 - 51
+ 2418361913UL, // 1 - 52
+ 2443193UL, // 1 - 53
+ 2443547UL, // 1 - 54
+ 1881492094UL, // 1 - 55
+ 2444286UL, // 1 - 56
+ 2444641UL, // 1 - 57
+ 1344622275UL, // 1 - 58
+ 2445379UL, // 1 - 59
+ 2955235749UL, // 2 - 0
+ 2446117UL, // 2 - 1
+ 2446471UL, // 2 - 2
+ 1881495017UL, // 2 - 3
+ 2447209UL, // 2 - 4
+ 2447564UL, // 2 - 5
+ 1613060655UL, // 2 - 6
+ 2448303UL, // 2 - 7
+ 2448657UL, // 2 - 8
+ 1076190835UL, // 2 - 9
+ 2449394UL, // 2 - 10
+ 2418368853UL, // 2 - 11
+ 2450133UL, // 2 - 12
+ 2450487UL, // 2 - 13
+ 1613063578UL, // 2 - 14
+ 2451226UL, // 2 - 15
+ 2451580UL, // 2 - 16
+ 1344629214UL, // 2 - 17
+ 2452318UL, // 2 - 18
+ 2452672UL, // 2 - 19
+ 807759395UL, // 2 - 20
+ 2453411UL, // 2 - 21
+ 2149937413UL, // 2 - 22
+ 2454150UL, // 2 - 23
+ 2454504UL, // 2 - 24
+ 1613067594UL, // 2 - 25
+ 2455242UL, // 2 - 26
+ 2455596UL, // 2 - 27
+ 1344633230UL, // 2 - 28
+ 2456334UL, // 2 - 29
+ 2686811249UL, // 2 - 30
+ 2457073UL, // 2 - 31
+ 2457427UL, // 2 - 32
+ 1881505974UL, // 2 - 33
+ 2458166UL, // 2 - 34
+ 2458520UL, // 2 - 35
+ 1344636154UL, // 2 - 36
+ 2459258UL, // 2 - 37
+ 2459612UL, // 2 - 38
+ 807766335UL, // 2 - 39
+ 2460351UL, // 2 - 40
+ 1881508897UL, // 2 - 41
+ 2461089UL, // 2 - 42
+ 2461443UL, // 2 - 43
+ 1613074533UL, // 2 - 44
+ 2462181UL, // 2 - 45
+ 2462536UL, // 2 - 46
+ 1076204714UL, // 2 - 47
+ 2463274UL, // 2 - 48
+ 3223689101UL, // 2 - 49
+ 2464013UL, // 2 - 50
+ 2464367UL, // 2 - 51
+ 1881512913UL, // 2 - 52
+ 2465105UL, // 2 - 53
+ 2465459UL, // 2 - 54
+ 1613078549UL, // 2 - 55
+ 2466197UL, // 2 - 56
+ 2466552UL, // 2 - 57
+ 807773275UL, // 2 - 58
+ 2467291UL, // 2 - 59
+ 2149951293UL, // 3 - 0
+ 2468029UL, // 3 - 1
+ 2468383UL, // 3 - 2
+ 1613081473UL, // 3 - 3
+ 2469121UL, // 3 - 4
+ 2469475UL, // 3 - 5
+ 1076211654UL, // 3 - 6
+ 2470214UL, // 3 - 7
+ 2418389673UL, // 3 - 8
+ 2470953UL, // 3 - 9
+ 2471307UL, // 3 - 10
+ 1881519853UL, // 3 - 11
+ 2472044UL, // 3 - 12
+ 2472399UL, // 3 - 13
+ 1344650033UL, // 3 - 14
+ 2473137UL, // 3 - 15
+ 2473492UL, // 3 - 16
+ 1076215670UL, // 3 - 17
+ 2474230UL, // 3 - 18
+ 2149958232UL, // 3 - 19
+ 2474968UL, // 3 - 20
+ 2475322UL, // 3 - 21
+ 1613088413UL, // 3 - 22
+ 2476061UL, // 3 - 23
+ 2476415UL, // 3 - 24
+ 1344654050UL, // 3 - 25
+ 2477154UL, // 3 - 26
+ 2418396612UL, // 3 - 27
+ 2477892UL, // 3 - 28
+ 2478246UL, // 3 - 29
+ 1881526792UL, // 3 - 30
+ 2478984UL, // 3 - 31
+ 2479339UL, // 3 - 32
+ 1344656973UL, // 3 - 33
+ 2480077UL, // 3 - 34
+ 2480432UL, // 3 - 35
+ 1076222610UL, // 3 - 36
+ 2481170UL, // 3 - 37
+ 2149965172UL, // 3 - 38
+ 2481908UL, // 3 - 39
+ 2482262UL, // 3 - 40
+ 1613095353UL, // 3 - 41
+ 2483001UL, // 3 - 42
+ 2483355UL, // 3 - 43
+ 1344660990UL, // 3 - 44
+ 2484093UL, // 3 - 45
+ 2418403551UL, // 3 - 46
+ 2484831UL, // 3 - 47
+ 2485185UL, // 3 - 48
+ 1881533732UL, // 3 - 49
+ 2485924UL, // 3 - 50
+ 2486279UL, // 3 - 51
+ 1344663913UL, // 3 - 52
+ 2487017UL, // 3 - 53
+ 2487371UL, // 3 - 54
+ 807794093UL, // 3 - 55
+ 2488109UL, // 3 - 56
+ 0xffffffff
+};
+
+//Took 260 seconds to create
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/calcondata.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,25 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Generated by CalconTable.exe
+//
+
+#include <e32std.h>
+
+const TInt KFirstCycle=76;//1..n
+const TInt KFirstJulianDate=2415021;
+const TInt KLastJulianDate=2488434;
+const TInt KFirstYear=36; //1..60
+const TInt KLastCycle=79;//1..n
+const TInt KLastYear=57;//1..60
+const TInt KNumberOfYears=202;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/calendar.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,207 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the TCalendar class.
+//
+
+#include <e32def.h>
+#include <e32math.h>
+#include "calendar.h"
+
+// Constants
+const TReal KRemainderApproxZero = 0.000000001;
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    TCalendar
+// Arguments:   None
+//
+// Comments:    Constructor
+//
+// Return:      none
+//------------------------------------------------------
+TCalendar::TCalendar()
+	{
+	iJulianDay = 0;
+	}
+
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    operator =
+// Arguments:   TCalendar &TCal  -  the TCalendar
+//				class by referance.
+//
+// Comments:    Copies the JulianDay value from one instance 
+//				of TCalendar to an other.
+//
+// Return:      *this
+//------------------------------------------------------
+TCalendar& TCalendar::operator =(const TCalendar &TCal)
+	{
+	iJulianDay = TCal.iJulianDay;
+	return (*this);
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    Floor
+// Arguments:   TReal& ,TReal& 
+//
+// Comments:    This function returns the floor value of the
+//				value given in the aNum argument as Determined by:
+//
+//				the largest integer less than or equal to aNum
+//
+// Return:      None
+//------------------------------------------------------
+void TCalendar::Floor(TInt& aRes,const TReal& aNum) const
+	{
+	TReal tempReal;
+	TInt32 tempReal32;
+	TInt precision = 0;
+
+	TReal wholeNoTemp;
+	Math::Frac(wholeNoTemp,aNum);
+	if(wholeNoTemp < 0)
+		{
+		wholeNoTemp = -wholeNoTemp;
+		}
+
+	if((aNum == 0) || (wholeNoTemp < KRemainderApproxZero))
+		{
+		tempReal = aNum;
+		}
+	else
+		{
+		tempReal = aNum - KCalConvPointFive;
+		}
+	Math::Round(tempReal,tempReal,precision);
+	Math::Int(tempReal32,tempReal);
+	aRes = tempReal32;
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    Ceiling
+// Arguments:   TReal& ,TReal& 
+//
+// Comments:    This function returns the ceiling value of the
+//				value given in the aNum argument as Determined by:
+//
+//				the smallest integer less than or equal to aNum
+//
+// Return:      None
+//------------------------------------------------------
+void TCalendar::Ceiling(TInt& aRes,const TReal& aNum) const
+	{
+	TReal tempReal;
+	TInt32 tempReal32;
+	TInt precision = 0;
+
+	TReal wholeNoTemp;
+	Math::Frac(wholeNoTemp,aNum);
+	if(wholeNoTemp < 0)
+		{
+		wholeNoTemp = -wholeNoTemp;
+		}
+
+	if((aNum == 0) || (wholeNoTemp < KRemainderApproxZero))
+		{
+		tempReal = aNum;
+		}
+	else
+		{
+		tempReal = aNum + KCalConvPointFive;
+		}
+	Math::Round(tempReal,tempReal,precision);
+	Math::Int(tempReal32,tempReal);
+	aRes = tempReal32;
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    Mod
+// Arguments:   TReal &, const TReal &, const TReal &
+//
+// Comments:    return the mod of the aAbscissa / aDenominator
+//				quotient as Determined by:
+//				
+//				aAbscissa - aDenominator(floor(aAbscissa / aDenominator))
+//
+// Return:      None
+//------------------------------------------------------
+void TCalendar::Mod(TReal &aRes, const TReal &aAbscissa, const TReal &aDenominator) const
+	{
+	TReal quo;
+	TInt tempInt;
+
+	quo = aAbscissa / aDenominator;
+
+	Floor(tempInt,quo);
+
+	aRes = aAbscissa - (aDenominator * tempInt);
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    Amod
+// Arguments:   TReal &, const TReal &, const TReal &
+//
+// Comments:    Determines the adjusted remainder
+//
+// Return:      None
+//------------------------------------------------------
+void TCalendar::Amod(TReal &aRes, const TReal &aAbscissa, const TReal &aDenominator) const
+	{
+	Mod(aRes,aAbscissa,aDenominator);
+
+	if(aRes == 0)
+		{
+		aRes = aDenominator;
+		}
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    Round
+// Arguments:   TInt &, TReal &
+//
+// Comments:    rounds of the aNum argument
+//
+// Return:      None
+//------------------------------------------------------
+void TCalendar::Round(TInt &aRes, TReal &aNum) const
+	{
+	TReal temp;
+	temp = aNum + 0.5;
+	Floor(aRes,temp);
+	}
+
+//------------------------------------------------------
+// Class:       TCalendar
+// Function:    JulianDay
+// Arguments:   None
+//
+// Comments:    Returns the Julian day as a TInt
+//
+// Return:      TInt
+//------------------------------------------------------
+TInt TCalendar::JulianDay()
+	{
+	return (TInt)iJulianDay;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/calendar.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,52 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CALENDAR_H__
+#define __CALENDAR_H__
+
+// System includes
+#include <e32std.h>
+#include <e32def.h>
+
+// Constants
+const TInt KCalConvDayOffsetByOne = 1;
+const TInt KCalConvMonthOffsetByOne = 1;
+const TInt KCalConvYearOffsetByOne = 1;
+const TReal KCalConvPointFive = 0.5;
+
+class TCalendar
+	{
+public:
+	TCalendar();
+	TCalendar& operator=(const TCalendar& aTCal);
+	TInt JulianDay();
+
+protected:
+	void Round(TInt& aRes, TReal& aNum) const;
+	void Mod(TReal& aRes, const TReal& aAbscissa, const TReal& aDenominator) const;
+	void Amod(TReal& aRes, const TReal& aAbscissa, const TReal& aDenominator) const;
+	void Floor(TInt& aRes, const TReal& aNum) const;
+	void Ceiling(TInt& aRes, const TReal& aNum) const;
+
+protected:
+	TReal iStartEpoch;
+	TInt iDaysInNormYear;
+	TReal iJulianDay;
+	TInt iCycle;
+	TInt iLeaps;
+	TInt iOffset;
+	TInt iStdYearMonth;
+	};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/cconplugin.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,29 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <ecom/implementationproxy.h>
+#include "chinesecalendarconverterimpl.h"
+
+// Export the implementation collection function
+const TImplementationProxy ImplementationTable[] = 
+    {
+    IMPLEMENTATION_PROXY_ENTRY(0x1028702D, CChineseCalendarConverterImpl::NewL)
+    };
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+    return ImplementationTable;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendar.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,368 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the TChineseCalendar class.
+//
+
+#include "chinesecalendar.h"
+#include "arithmeticaldate.h"
+#include "gregoriancalendar.h"
+
+#if defined(_DEBUG)
+_LIT(KCalconPanic,"Calcon");
+#endif
+
+const TUint KMonthInvalid=0;
+const TUint K29DayMonth=1;
+const TUint K30DayMonth=2;
+const TUint K29DayLeapMonth=3;
+const TUint K30DayLeapMonth=4;
+
+const TUint KMonthMask=1<<15;
+const TUint KLeapMonthShift=28;
+
+const TInt KNoOfYearsInCycle = 60;
+
+enum TCalconPanic
+	{
+	ECalconChineseFromFixedMonthInvalid=0,
+	ECalconChineseToFixedLeapYearInvalid,
+	ECalconGetDataYearOutOfRange,
+	ECalconGetDataMonthOutOfRange,
+	ECalconGetNewYearYearOutOfRange
+	};
+
+TUint TCalconData::GetData(TInt aCycle, TInt aYear, TInt aMonth) const
+	{
+	__ASSERT_DEBUG((aYear>=0 && aYear<=59), User::Panic(_L("Calcon"), ECalconGetDataYearOutOfRange));	//year range is 0..59
+	__ASSERT_DEBUG((aMonth>=0 && aMonth<=12), User::Panic(_L("Calcon"), ECalconGetDataMonthOutOfRange));//month range is 0..12
+
+	TInt y=(aCycle*KNoOfYearsInCycle)+aYear;
+	y-=(KFirstYear-1);	//there are KFirstYear-1 entries missing from the head of the table
+	TUint16 x=iCalConDataMonth[y];
+
+	TUint mask=KMonthMask>>aMonth;
+	
+	TInt flag=K29DayMonth;
+	if (x & mask)
+		flag=K30DayMonth;
+
+	TUint leapMonth=iCalConDataYear[y]>>KLeapMonthShift;
+	leapMonth--;
+
+	if ((TUint)aMonth==leapMonth)
+		flag+=2;	//--> K29/30DayLeapMonth
+	
+	if ((aMonth==12) && (leapMonth==0))
+		flag=KMonthInvalid;//month doesn't exist
+
+	return flag;
+	}
+
+TUint TCalconData::GetNewYear(TInt aCycle, TInt aYear) const
+	{
+	__ASSERT_DEBUG((aYear>=0 && aYear<=59), User::Panic(_L("Calcon"), ECalconGetNewYearYearOutOfRange));
+	TInt y=(aCycle*KNoOfYearsInCycle)+aYear;
+	y-=(KFirstYear-1);
+	return (iCalConDataYear[y] & 0x0fffffff);
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseToDateTime
+// Arguments:   TDateTime &
+//
+// Comments:    This function converts the date held within
+//				the TChineseCalendar class to a TDateTime format and 
+//				places it in the TDateTime class provided.
+//
+// Return:      void
+//------------------------------------------------------
+void TChineseCalendar::ChineseToDateTime(TDateTime &aDT)
+	{
+	TArithmeticalDate gregDate;
+	TGregorianCalendar greg(iJulianDay);
+
+	greg.GregFromJulianDay(gregDate,iJulianDay);
+	aDT.Set(0,EJanuary,0,0,0,0,0);
+
+	aDT.SetDay(gregDate.iDay - KCalConvMonthOffsetByOne);
+	aDT.SetMonth((TMonth)(gregDate.iMonth - KCalConvMonthOffsetByOne));
+	aDT.SetYear(gregDate.iYear);
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    DateTimeToChinese
+// Arguments:   TDateTime &
+//
+// Comments:    Sets the date held in the given TDateTime
+//				class to the TChineseCalendar class
+//
+// Return:      void
+//------------------------------------------------------
+void TChineseCalendar::DateTimeToChinese(const TDateTime &aDT)
+	{
+	TArithmeticalDate gregDate;
+	TGregorianCalendar greg;
+
+	gregDate.iDay = aDT.Day() + KCalConvMonthOffsetByOne;
+	gregDate.iMonth = (TInt)aDT.Month() + KCalConvMonthOffsetByOne;
+	gregDate.iYear = aDT.Year();
+
+	iJulianDay = greg.GregToJulianDay(gregDate);
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    SetDate
+// Arguments:   TChineseDate&
+//
+// Comments:    this function sets the julian day value
+//				in the base class from the given 
+//				TChineseDate
+//
+// Return:      None
+//------------------------------------------------------
+TInt TChineseCalendar::SetDate(const TChineseDate &aDate)
+	{
+	TReal jD;
+	TChineseDate ChinDate = aDate;
+	
+	if(!ValidDate(ChinDate))
+		return KErrArgument;
+	
+	if (!ChineseToFixed(aDate,jD))
+		return KErrArgument;
+
+	if (jD<KFirstJulianDate || jD>KLastJulianDate)
+		return KErrArgument;
+
+	iJulianDay = (TInt)jD;
+	return KErrNone;
+	}
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    GetDate
+// Arguments:   TChineseDate &
+//
+// Comments:    This function Determines the chinese date and 
+//				places it in the TChineseDate class provided
+//				for the julian day value held internally in the 
+//				Chinese class.
+//
+// Return:      None
+//------------------------------------------------------
+TInt TChineseCalendar::GetDate(TChineseDate &aDate)
+	{
+	return ChineseFromFixed(aDate,iJulianDay);
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseToFixed
+// Arguments:   TChineseDate , TReal &
+//				TChineseDate members start at 1 (not zero)
+//
+// Comments:    This function converts a chinese date to 
+//				to a julian day value.
+//
+// Return:      TBool ETrue if date valid, else EFalse
+//------------------------------------------------------
+TBool TChineseCalendar::ChineseToFixed(const TChineseDate& aDate, TReal &aJulianDay) const
+	{
+	TInt cycle=aDate.iCycle-KFirstCycle;	//cycle starts from zero
+	TInt year=aDate.iYear-1;				//year is 0..59
+
+	TInt days=0;
+
+	TInt targetMonth=aDate.iMonth;			//targetMonth is 1..12
+	TBool leap=aDate.iLeapMonth;
+	if (leap)
+		{
+		targetMonth++;
+		if (iData.GetData(cycle, year, targetMonth-1)<3)
+			return EFalse;	//not a leap month
+		}
+
+	TInt month=1;
+	while (month<=targetMonth)
+		{
+		TInt daysFlag=iData.GetData(cycle, year, month-1);
+		
+//We need to handle case where targetMonth is a leap month
+//Eg if Chinese month==6 targetMonth will be 6
+//Eg but if Chinese month 5 is a leap month, month 6 will be 5(leap) so we need to take it into account
+//BUT Eg if Chinese momth== 7(leap) we've already taken this into account.
+		if (month==targetMonth)	
+			if ((leap) || (daysFlag<3))
+				break;
+
+		switch (daysFlag)
+			{
+			case KMonthInvalid:
+				return EFalse;
+			case K29DayMonth:
+				days+=29;
+				break;
+			case K30DayMonth:
+				days+=30;
+				break;
+			case K29DayLeapMonth:
+				__ASSERT_DEBUG(!leap, User::Panic(KCalconPanic,ECalconChineseToFixedLeapYearInvalid));
+				leap=ETrue;
+				targetMonth++;
+				days+=29;
+				break;
+			case K30DayLeapMonth:
+				__ASSERT_DEBUG(!leap, User::Panic(KCalconPanic,ECalconChineseToFixedLeapYearInvalid));
+				leap=ETrue;
+				targetMonth++;
+				days+=30;
+				break;
+			}
+		month++;
+		}
+
+//Check that if days==30, the requested month actually has 30 days
+	TInt checkMonth = aDate.iMonth;
+	if (leap)
+		checkMonth++;	//this is the month requested by the user
+	TUint daysFlag=iData.GetData(cycle, year, checkMonth-1);
+
+	if ((aDate.iDay==30) && ((daysFlag==K29DayMonth) || (daysFlag==K29DayLeapMonth)))
+		return EFalse;
+
+	days+=aDate.iDay-1;
+	
+	days+=iData.GetNewYear(cycle, year);//add the New Year
+	aJulianDay=days;
+	return ETrue;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ChineseFromFixed
+// Arguments:   TChineseDate &, TReal
+//
+// Comments:    this function converts a julian day value to
+//				a chinese date in the form TChineseDate
+//
+// Return:      None
+//------------------------------------------------------
+TInt TChineseCalendar::ChineseFromFixed(TChineseDate &aDate, const TReal& aJulianDay) const
+	{
+	if ((aJulianDay<KFirstJulianDate)
+		|| (aJulianDay>KLastJulianDate))
+		return KErrArgument;
+
+	TInt cycleIndex=0;
+
+	while ((cycleIndex < KLastCycle-KFirstCycle) 
+			&& (aJulianDay >= iData.GetNewYear(cycleIndex+1,0)))
+		cycleIndex++;
+	
+	aDate.iCycle=cycleIndex + KFirstCycle;
+	TInt chineseNewYear;
+	TInt yearCount=0;
+	if (cycleIndex==0)
+		yearCount=KFirstYear-1;
+
+	while (yearCount<60 && aJulianDay >= iData.GetNewYear(cycleIndex,yearCount))
+		yearCount++;
+		
+	aDate.iYear=yearCount;
+	chineseNewYear = iData.GetNewYear(cycleIndex,--yearCount);
+	
+	TInt addedNumberOfDays = 0;
+	TInt previousAddedNumberOfDays = 0;
+	TInt monthCount = 1;
+	aDate.iMonth = 0;
+
+	TInt monthNumber; // 0=No month exists, 1 = 29 day month, 2 = 30 day month, 3 = 29 day leap month, 4 = 30 day leap month
+
+	while (aJulianDay >= (chineseNewYear + addedNumberOfDays))
+		{
+		previousAddedNumberOfDays = addedNumberOfDays;
+		monthNumber = iData.GetData(cycleIndex,yearCount,monthCount-1);
+
+		switch (monthNumber)
+			{
+		case KMonthInvalid:
+			__ASSERT_DEBUG(0, User::Panic(_L("Calcon"),ECalconChineseFromFixedMonthInvalid));
+			break;
+		case K29DayMonth:
+			addedNumberOfDays += 29;
+			aDate.iMonth++;
+			aDate.iLeapMonth = EFalse;
+			break;
+		case K30DayMonth:
+			addedNumberOfDays += 30;
+			aDate.iMonth++;
+			aDate.iLeapMonth = EFalse;
+			break;
+		case K29DayLeapMonth:
+			addedNumberOfDays += 29;
+			aDate.iLeapMonth = ETrue;
+			break;
+		case K30DayLeapMonth:
+			addedNumberOfDays += 30;
+			aDate.iLeapMonth = ETrue;
+			break;
+			}
+		monthCount++;
+		}
+
+	aDate.iDay = (TInt)aJulianDay - chineseNewYear-previousAddedNumberOfDays;
+	aDate.iDay++;
+	return KErrNone;
+	}
+
+//------------------------------------------------------
+// Class:       TChineseCalendar
+// Function:    ValidDate
+// Arguments:   TChineseDate &
+//
+// Comments:    This function Determines whether the given
+//				date is a valid chinese date
+//
+// Return:      TBool - ETrue if date is valid, else EFalse
+//------------------------------------------------------
+TBool TChineseCalendar::ValidDate(const TChineseDate &aDate) const
+	{
+	//do some trivial checks to ensure that the date is in the range of the lookup table
+	if (aDate.iYear==0 || aDate.iYear>KNoOfYearsInCycle)
+		return EFalse;
+
+	if (aDate.iCycle < KFirstCycle)
+		return EFalse;
+
+	if (aDate.iCycle==KFirstCycle && aDate.iYear < KFirstYear)
+		return EFalse;
+	
+	if (aDate.iCycle > KLastCycle)
+		return EFalse;
+
+	if ( (aDate.iCycle==KLastCycle) && (aDate.iYear>KLastYear))
+		return EFalse;
+
+	if (aDate.iDay==0 || aDate.iDay>30)
+		return EFalse;
+
+	return ETrue;
+	}
+
+TReal TChineseCalendar::JulianDate() __SOFTFP
+	{
+	return iJulianDay;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendar.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,50 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CHINESECALENDAR_H__
+#define __CHINESECALENDAR_H__
+
+#include "calcondata.h"
+#include <calendarconverter.h>
+
+class TCalconData
+	{
+public:
+	TUint GetData(TInt aCycle, TInt aYear, TInt aMonth) const;
+	TUint GetNewYear(TInt aCycle, TInt aYear) const;
+
+private:
+	static const TUint16 iCalConDataMonth[KNumberOfYears];
+	static const TUint32 iCalConDataYear[KNumberOfYears+1];	//marker on end of table
+	};
+
+class TChineseCalendar
+	{
+public:
+	void DateTimeToChinese(const TDateTime& aDT);
+	void ChineseToDateTime(TDateTime& aDT);
+	TInt SetDate(const TChineseDate& aDate);
+	TInt GetDate(TChineseDate& aDate);
+	TInt ChineseFromFixed(TChineseDate& aDate,const TReal& aJulianDay) const;
+	TReal JulianDate() __SOFTFP;
+
+private:
+	TBool ValidDate(const TChineseDate &aDate) const;
+	TBool ChineseToFixed(const TChineseDate& aDate, TReal& aJulianDay) const;
+	TReal iJulianDay;
+	TCalconData iData;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendarconverterimpl.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,53 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "chinesecalendarconverterimpl.h"
+#include "gregoriancalendar.h"
+
+CChineseCalendarConverter* CChineseCalendarConverterImpl::NewL()
+	{
+	return new(ELeave) CChineseCalendarConverterImpl();
+	}
+
+void CChineseCalendarConverterImpl::DateTimeToChineseL(const TDateTime& aDateTime, TChineseDate& aChineseDate)
+	{
+	iCalendar.DateTimeToChinese(aDateTime);
+	User::LeaveIfError(iCalendar.GetDate(aChineseDate));
+	}
+
+void CChineseCalendarConverterImpl::ChineseToDateTimeL(const TChineseDate& aChineseDate, TDateTime& aDateTime)
+	{
+	User::LeaveIfError(iCalendar.SetDate(aChineseDate));
+	iCalendar.ChineseToDateTime(aDateTime);
+	}
+
+void CChineseCalendarConverterImpl::DateRange(TDateTime& aLower, TDateTime& aUpper)
+	{
+	TGregorianCalendar greg1(KFirstJulianDate);
+	greg1.GregorianToDateTime(aLower);
+	TGregorianCalendar greg2(KLastJulianDate);	
+	greg2.GregorianToDateTime(aUpper);
+	}
+
+void CChineseCalendarConverterImpl::DateRange(TChineseDate& aLower, TChineseDate& aUpper)
+	{
+	iCalendar.ChineseFromFixed(aLower, KFirstJulianDate);
+	iCalendar.ChineseFromFixed(aUpper, KLastJulianDate);
+	}
+
+TReal CChineseCalendarConverterImpl::JulianDate() __SOFTFP
+	{
+	return iCalendar.JulianDate();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/chinesecalendarconverterimpl.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,36 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CHINESECALENDARCONVERTERIMPL_H__
+#define __CHINESECALENDARCONVERTERIMPL_H__
+
+#include <calendarconverterplugin.h>
+#include "chinesecalendar.h"
+
+class CChineseCalendarConverterImpl : public CChineseCalendarConverterEcomPlugin
+	{
+public:
+	static CChineseCalendarConverter* NewL();
+	virtual void DateTimeToChineseL(const TDateTime& aDateTime, TChineseDate& aChineseDate);
+	virtual void ChineseToDateTimeL(const TChineseDate& aChineseDate, TDateTime& aDateTime);
+	virtual void DateRange(TDateTime& aLower, TDateTime& aUpper);
+	virtual void DateRange(TChineseDate& aLower, TChineseDate& aUpper);
+	virtual TReal JulianDate() __SOFTFP;
+
+private:
+	TChineseCalendar iCalendar;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/gregoriancalendar.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,410 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the TGregorianCalendar class.
+//
+
+#include <e32std.h>
+#include <e32math.h>
+#include "gregoriancalendar.h"
+
+// Constants
+const TReal KFourYears			= 4.0;
+const TReal KFourHundredYears	= 400;
+const TReal KOneHundredYears	= 100;
+const TReal KGregStartEpoch		= 1721424.5;
+//
+const TInt KDayOffsetByZero		= 0;
+const TInt KGregDaysInNormYear	= 365;
+const TInt KDaysIn400Years		= 146097;
+const TInt KDaysIn100Years		= 36524;
+const TInt KDaysIn4Years		= 1461;
+const TInt KGregCycle			= 12;
+const TInt KGregLeaps			= 7;
+const TInt KGregOffset			= 11;
+const TInt KGregStdMonth		= 30;
+const TInt KLastDayInDecember	= 31;
+
+
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    TGregorianCalendar
+// Arguments:   None
+//
+// Comments:    Constructor
+//
+// Return:      None
+//------------------------------------------------------
+TGregorianCalendar::TGregorianCalendar()
+	{
+	InitMembers();
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    TGregorianCalendar
+// Arguments:   TReal
+//
+// Comments:    Overloaded Constructor
+//
+// Return:      None
+//------------------------------------------------------
+TGregorianCalendar::TGregorianCalendar(TReal aJD) __SOFTFP
+	{
+	iJulianDay = aJD;
+	InitMembers();
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    InitMembers
+// Arguments:   None
+//
+// Comments:    This function initialises the member variables
+//				or the class.  It is called in the constructors
+//
+// Return:      
+//------------------------------------------------------
+void TGregorianCalendar::InitMembers()
+	{
+	iStartEpoch = KGregStartEpoch + KCalConvPointFive;
+	Floor(iDaysInNormYear,KGregDaysInNormYear);
+	iCycle = KGregCycle;
+	iLeaps = KGregLeaps;
+	iOffset = KGregOffset;
+	iStdYearMonth = KGregStdMonth;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    IsLeapYear
+// Arguments:   const TInt
+//
+// Comments:    Determines whether the given year is a leap year.
+//
+// Return:      ETrue if leap year, else EFalse
+//------------------------------------------------------
+TBool TGregorianCalendar::IsLeapYear(const TInt aYear)const
+	{
+	TReal result;
+	TBool rtn = EFalse;
+
+	Mod(result,aYear,KFourYears);
+
+	if	(!result)
+		{
+		rtn = ETrue;
+		}
+
+	Mod(result,aYear,KOneHundredYears);
+
+	if	(!result)
+		{
+		Mod(result,aYear,KFourHundredYears);
+
+		if	(result)
+			{
+			rtn = EFalse;
+			}
+		}
+	return rtn;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    GregToJulianDay
+// Arguments:   const TArithmeticalDate&
+//
+// Comments:    converts gregorian date to Julian day value
+//
+// Return:      Julian day value for the given Gregorian date
+//------------------------------------------------------
+TReal TGregorianCalendar::GregToJulianDay(const TArithmeticalDate& aDate) const __SOFTFP
+	{
+	TReal result;
+	TReal tempReal;
+	TInt tempInt;
+
+	// days to the start of the year based on normal years
+	result = iStartEpoch + (iDaysInNormYear * (aDate.iYear - 1));
+
+	// leap year corrections
+	tempReal = (aDate.iYear - 1) / KFourYears;
+	Floor(tempInt,tempReal);
+	result += tempInt;
+
+	tempReal = (aDate.iYear - 1) / KOneHundredYears;
+	Floor(tempInt,tempReal);
+	result -= tempInt;
+
+	tempReal = (aDate.iYear - 1) / KFourHundredYears;
+	Floor(tempInt,tempReal);
+	result += tempInt;
+
+	// days in whole months in the year in question - approx 
+	// based on Feb having 30 days
+	tempInt = DaysMonthsElapsed(aDate.iMonth);
+	result += tempInt;
+
+	// correction for assumption that Feb has 30 days
+	if	(aDate.iMonth <= (EFebruary + 1))
+		result += KDayOffsetByZero;
+	else if	(aDate.iMonth > (EFebruary + 1) && IsLeapYear(aDate.iYear))
+		result -= 1;
+	else
+		result -= 2;
+
+	// days in month in question
+	result += aDate.iDay;
+
+	return result;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    GregorianToDateTime
+// Arguments:   TDateTime& 
+//
+// Comments:    This gets the date from the TGregorianCalendar class
+//				and places in the the given TDateTime class
+//
+// Return:      void
+//------------------------------------------------------
+void TGregorianCalendar::GregorianToDateTime(TDateTime& aDT)
+	{
+	TArithmeticalDate gregDate;
+	GregFromJulianDay(gregDate,iJulianDay);
+
+	aDT.Set(0,EJanuary,0,0,0,0,0);
+	aDT.SetMonth((TMonth)(gregDate.iMonth - 1));
+	aDT.SetDay(gregDate.iDay - 1);
+	aDT.SetYear(gregDate.iYear);
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    CalcGregYear
+// Arguments:   TArithmeticalDate&
+//
+// Comments:    Calculates the gregorian year from Julian 
+//				day value.
+//
+// Return:      None
+//------------------------------------------------------
+void TGregorianCalendar::CalcGregYear(TArithmeticalDate& aDate, TReal aJulianDay) const __SOFTFP
+	{
+	TReal d0;
+	TReal d1;
+	TReal d2;
+	TReal d3;
+	TReal year;
+	TInt n400;
+	TInt n100;
+	TInt n4;
+	TInt n1;
+	TInt32 yearInt32;
+
+	// determine year
+	// get to start of calendar ie year 1
+	d0 = aJulianDay - iStartEpoch - 1;
+
+	Mod(d1,d0,KDaysIn400Years);
+
+	Mod(d2,d1,KDaysIn100Years);
+
+	Mod(d3,d2,KDaysIn4Years);
+
+	// number of 400 year blocks
+	d0 /= KDaysIn400Years;
+	Floor(n400,d0);
+
+	// number of 100 year blocks
+	d1 /= KDaysIn100Years;
+	Floor(n100,d1);
+
+	// number of 4 year blocks
+	d2 /= KDaysIn4Years;
+	Floor(n4,d2);
+
+		// number of 1 year blocks
+	d3 /= KGregDaysInNormYear;
+	Floor(n1,d3);
+
+	// calc year
+	year = (KFourHundredYears * n400) + (KOneHundredYears * n100) + (KFourYears * n4) + n1;
+	Math::Int(yearInt32,year);
+
+	if	((n100 == (KFourHundredYears / KOneHundredYears)) || (n1 == KFourYears))
+		{
+		aDate.iYear = yearInt32;
+		}
+	else
+		{
+		aDate.iYear = yearInt32 + 1;
+		}
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    GregDateDiff
+// Arguments:   const TArithmeticalDate, const TArithmeticalDate
+//
+// Comments:    This function Determines the difference in days
+//				between two gregorian dates.
+//
+// Return:      Days difference
+//------------------------------------------------------
+TInt TGregorianCalendar::GregDateDiff(const TArithmeticalDate aDate1, const TArithmeticalDate aDate2)const
+	{
+	TInt diff;
+	TReal diffReal;
+	diffReal = GregToJulianDay(aDate2) - GregToJulianDay(aDate1);
+	Floor(diff,diffReal);
+	return diff;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    DayNumber
+// Arguments:   const TArithmeticalDate& 
+//
+// Comments:    this function returns the number of days that
+//				have elapsed in the given year
+//
+// Return:      see comment
+//------------------------------------------------------
+TInt TGregorianCalendar::DayNumber(const TArithmeticalDate& aDate)const
+	{
+	TArithmeticalDate tempDate;
+	TInt dayNum;
+
+	tempDate.iDay = KLastDayInDecember;
+	tempDate.iMonth = EDecember + 1;
+	tempDate.iYear = aDate.iYear - 1;
+
+	dayNum = GregDateDiff(tempDate,aDate);
+
+	return dayNum;
+	}
+
+//------------------------------------------------------
+// Class:       TGregorianCalendar
+// Function:    GregFromJulianDay
+// Arguments:   TArithmeticalDate& , TReal
+//
+// Comments:    This function converts a gregorian date to
+//				a julian day
+//
+// Return:      void
+//------------------------------------------------------
+void TGregorianCalendar::GregFromJulianDay(TArithmeticalDate& aDate, TReal aJulianDay) const __SOFTFP
+	{
+	TReal priorDays;
+	TReal correction;
+	TReal day;
+	TReal month;
+	TInt32 dayInt32;
+	TInt32 monthInt32;
+
+	CalcGregYear(aDate,aJulianDay);
+
+	aDate.iDay = 1;
+	aDate.iMonth = EJanuary + 1;
+
+	priorDays = aJulianDay - GregToJulianDay(aDate);
+
+	aDate.iMonth = EMarch + 1;
+
+	if	(aJulianDay < GregToJulianDay(aDate))
+		{
+		correction = KDayOffsetByZero;
+		}
+	else if	((aJulianDay >= GregToJulianDay(aDate)) && IsLeapYear(aDate.iYear))
+		{
+		correction = 1;
+		}
+	else
+		{
+		correction = 2;
+		}
+
+	month = priorDays + correction;
+	Math::Int(monthInt32,month);
+	monthInt32 = DayMonthInYear(monthInt32);
+	aDate.iMonth = monthInt32;
+
+	day = aJulianDay - GregToJulianDay(aDate) + 1;
+	Math::Int(dayInt32,day);
+	aDate.iDay = dayInt32;
+	}
+
+
+//------------------------------------------------------
+// Class:       TArithmeticalCalendar
+// Function:    DaysMonthsElapsed
+// Arguments:   const TInt ,const TInt ,const TInt , const TInt ,const TInt
+//
+// Comments:    The use of this function varies between calendars 
+//				however since the form of the equation is the same it 
+//				is represented in this class.  The equation is use to 
+//				calculate the number of days in whole months of a particular
+//				year up to a particular date in the Gregorian and 
+//				Islamic calendars.  The Hebrew calendar uses this
+//				equation to calculate the number of whole months 
+//				since the start of the calendar.
+//				
+//
+// Return:      See comments
+//------------------------------------------------------
+TInt TGregorianCalendar::DaysMonthsElapsed(const TInt aYear) const
+	{
+	TReal tempReal;
+	TInt result;
+
+	tempReal = iOffset * iLeaps;
+	Mod(tempReal,tempReal,iCycle);
+	tempReal = ((iLeaps * aYear) - iLeaps + tempReal) / iCycle;
+	Floor(result,tempReal);
+	result = result + (iStdYearMonth * (aYear - KCalConvYearOffsetByOne));
+
+	return result;
+	}
+
+//------------------------------------------------------
+// Class:       TArithmeticalCalendar
+// Function:    DayMonthInYear
+// Arguments:   None
+//
+// Comments:    This function Determines the month based on
+//				the number of days into the year it is
+//
+// Return:      TInt - Month
+//------------------------------------------------------
+TInt TGregorianCalendar::DayMonthInYear(const TInt aDays) const
+	{
+	TReal tempReal;
+	TInt result;
+
+	tempReal = iLeaps * iOffset;
+	Mod(tempReal,tempReal,iCycle);
+	tempReal = (iCycle * aDays) + (iCycle * iStdYearMonth) + iLeaps - KCalConvYearOffsetByOne + iCycle - tempReal;
+	tempReal = tempReal / ((iCycle * iStdYearMonth) + iLeaps);
+	Floor(result,tempReal);
+
+	return result;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/gregoriancalendar.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,40 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __GREGORIANCALENDAR_H__
+#define __GREGORIANCALENDAR_H__
+
+#include "calendar.h"
+#include "arithmeticaldate.h"
+
+class TGregorianCalendar : public TCalendar
+	{
+public:
+	TGregorianCalendar();
+	TGregorianCalendar(TReal aJulianDay);
+	void GregorianToDateTime(TDateTime& aDT);
+	void GregFromJulianDay(TArithmeticalDate& aDate, TReal aJulianDay) const;
+	TReal GregToJulianDay(const TArithmeticalDate& aYear) const;
+private:
+	void InitMembers();
+	TInt DayNumber(const TArithmeticalDate& aDate) const;
+	void CalcGregYear(TArithmeticalDate& aDate, TReal aJulianDay) const;
+	TBool IsLeapYear(const TInt aYear) const;
+	TInt GregDateDiff(const TArithmeticalDate aDate1, const TArithmeticalDate aDate2) const;
+	TInt DayMonthInYear(const TInt) const;
+	TInt DaysMonthsElapsed(const TInt) const;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/table-587-2100/calcondata.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,5401 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Generated by CalconTable.exe
+//
+
+#include "calconvusingtable.h"
+const TUint16 TCalconData::iCalConDataMonth[]={
+ 43856U, // 0 - 8
+ 11176U, // 0 - 9
+ 11104U, // 0 - 10
+ 37744U, // 0 - 11
+ 18808U, // 0 - 12
+ 18800U, // 0 - 13
+ 25776U, // 0 - 14
+ 27288U, // 0 - 15
+ 23200U, // 0 - 16
+ 23376U, // 0 - 17
+ 22224U, // 0 - 18
+ 9952U, // 0 - 19
+ 37616U, // 0 - 20
+ 37600U, // 0 - 21
+ 51552U, // 0 - 22
+ 54440U, // 0 - 23
+ 46368U, // 0 - 24
+ 54944U, // 0 - 25
+ 44448U, // 0 - 26
+ 21968U, // 0 - 27
+ 9960U, // 0 - 28
+ 9680U, // 0 - 29
+ 37584U, // 0 - 30
+ 43352U, // 0 - 31
+ 43344U, // 0 - 32
+ 46240U, // 0 - 33
+ 46480U, // 0 - 34
+ 44448U, // 0 - 35
+ 19888U, // 0 - 36
+ 19376U, // 0 - 37
+ 9648U, // 0 - 38
+ 37560U, // 0 - 39
+ 21168U, // 0 - 40
+ 26960U, // 0 - 41
+ 27304U, // 0 - 42
+ 23200U, // 0 - 43
+ 43872U, // 0 - 44
+ 38752U, // 0 - 45
+ 19312U, // 0 - 46
+ 9584U, // 0 - 47
+ 42336U, // 0 - 48
+ 53920U, // 0 - 49
+ 59728U, // 0 - 50
+ 54608U, // 0 - 51
+ 22176U, // 0 - 52
+ 43856U, // 0 - 53
+ 38608U, // 0 - 54
+ 19176U, // 0 - 55
+ 19168U, // 0 - 56
+ 42192U, // 0 - 57
+ 53928U, // 0 - 58
+ 43680U, // 0 - 59
+ 46416U, // 1 - 0
+ 22184U, // 1 - 1
+ 11680U, // 1 - 2
+ 38352U, // 1 - 3
+ 38320U, // 1 - 4
+ 18864U, // 1 - 5
+ 42200U, // 1 - 6
+ 25808U, // 1 - 7
+ 27296U, // 1 - 8
+ 44368U, // 1 - 9
+ 27472U, // 1 - 10
+ 11168U, // 1 - 11
+ 38320U, // 1 - 12
+ 37744U, // 1 - 13
+ 18808U, // 1 - 14
+ 18800U, // 1 - 15
+ 21680U, // 1 - 16
+ 27280U, // 1 - 17
+ 55968U, // 1 - 18
+ 23376U, // 1 - 19
+ 11112U, // 1 - 20
+ 9952U, // 1 - 21
+ 37616U, // 1 - 22
+ 37600U, // 1 - 23
+ 51552U, // 1 - 24
+ 54440U, // 1 - 25
+ 46240U, // 1 - 26
+ 46752U, // 1 - 27
+ 22224U, // 1 - 28
+ 21968U, // 1 - 29
+ 9696U, // 1 - 30
+ 37608U, // 1 - 31
+ 37584U, // 1 - 32
+ 43352U, // 1 - 33
+ 43344U, // 1 - 34
+ 46240U, // 1 - 35
+ 46480U, // 1 - 36
+ 44448U, // 1 - 37
+ 19888U, // 1 - 38
+ 9688U, // 1 - 39
+ 9648U, // 1 - 40
+ 37552U, // 1 - 41
+ 43352U, // 1 - 42
+ 26960U, // 1 - 43
+ 27304U, // 1 - 44
+ 23200U, // 1 - 45
+ 43872U, // 1 - 46
+ 19376U, // 1 - 47
+ 19296U, // 1 - 48
+ 42352U, // 1 - 49
+ 21168U, // 1 - 50
+ 53920U, // 1 - 51
+ 55632U, // 1 - 52
+ 54608U, // 1 - 53
+ 22176U, // 1 - 54
+ 39760U, // 1 - 55
+ 38608U, // 1 - 56
+ 19168U, // 1 - 57
+ 42216U, // 1 - 58
+ 42192U, // 1 - 59
+ 53864U, // 2 - 0
+ 43680U, // 2 - 1
+ 46416U, // 2 - 2
+ 22184U, // 2 - 3
+ 11680U, // 2 - 4
+ 38352U, // 2 - 5
+ 18904U, // 2 - 6
+ 18864U, // 2 - 7
+ 42192U, // 2 - 8
+ 45656U, // 2 - 9
+ 27280U, // 2 - 10
+ 44368U, // 2 - 11
+ 23376U, // 2 - 12
+ 11168U, // 2 - 13
+ 38320U, // 2 - 14
+ 37744U, // 2 - 15
+ 18800U, // 2 - 16
+ 42168U, // 2 - 17
+ 21680U, // 2 - 18
+ 27216U, // 2 - 19
+ 55968U, // 2 - 20
+ 23376U, // 2 - 21
+ 11112U, // 2 - 22
+ 9952U, // 2 - 23
+ 37616U, // 2 - 24
+ 18800U, // 2 - 25
+ 51552U, // 2 - 26
+ 54432U, // 2 - 27
+ 55888U, // 2 - 28
+ 46736U, // 2 - 29
+ 22224U, // 2 - 30
+ 21968U, // 2 - 31
+ 9696U, // 2 - 32
+ 37608U, // 2 - 33
+ 37584U, // 2 - 34
+ 43344U, // 2 - 35
+ 54440U, // 2 - 36
+ 44192U, // 2 - 37
+ 46416U, // 2 - 38
+ 44384U, // 2 - 39
+ 19888U, // 2 - 40
+ 9688U, // 2 - 41
+ 9648U, // 2 - 42
+ 21168U, // 2 - 43
+ 43352U, // 2 - 44
+ 26960U, // 2 - 45
+ 27296U, // 2 - 46
+ 44368U, // 2 - 47
+ 39760U, // 2 - 48
+ 19376U, // 2 - 49
+ 19296U, // 2 - 50
+ 42352U, // 2 - 51
+ 21168U, // 2 - 52
+ 53920U, // 2 - 53
+ 54608U, // 2 - 54
+ 27304U, // 2 - 55
+ 22176U, // 2 - 56
+ 38736U, // 2 - 57
+ 38608U, // 2 - 58
+ 19168U, // 2 - 59
+ 42216U, // 3 - 0
+ 42192U, // 3 - 1
+ 53856U, // 3 - 2
+ 54608U, // 3 - 3
+ 46416U, // 3 - 4
+ 13984U, // 3 - 5
+ 38608U, // 3 - 6
+ 38352U, // 3 - 7
+ 18904U, // 3 - 8
+ 18864U, // 3 - 9
+ 42192U, // 3 - 10
+ 43608U, // 3 - 11
+ 27280U, // 3 - 12
+ 44352U, // 3 - 13
+ 44456U, // 3 - 14
+ 11168U, // 3 - 15
+ 38320U, // 3 - 16
+ 18872U, // 3 - 17
+ 18800U, // 3 - 18
+ 25784U, // 3 - 19
+ 21680U, // 3 - 20
+ 27216U, // 3 - 21
+ 27464U, // 3 - 22
+ 23376U, // 3 - 23
+ 11104U, // 3 - 24
+ 37744U, // 3 - 25
+ 37616U, // 3 - 26
+ 18800U, // 3 - 27
+ 43360U, // 3 - 28
+ 54432U, // 3 - 29
+ 55888U, // 3 - 30
+ 46480U, // 3 - 31
+ 22224U, // 3 - 32
+ 9960U, // 3 - 33
+ 9696U, // 3 - 34
+ 37600U, // 3 - 35
+ 51560U, // 3 - 36
+ 43344U, // 3 - 37
+ 54440U, // 3 - 38
+ 43680U, // 3 - 39
+ 44368U, // 3 - 40
+ 21928U, // 3 - 41
+ 19376U, // 3 - 42
+ 9680U, // 3 - 43
+ 37592U, // 3 - 44
+ 21168U, // 3 - 45
+ 43352U, // 3 - 46
+ 26960U, // 3 - 47
+ 27296U, // 3 - 48
+ 44368U, // 3 - 49
+ 39760U, // 3 - 50
+ 19360U, // 3 - 51
+ 42352U, // 3 - 52
+ 42352U, // 3 - 53
+ 21104U, // 3 - 54
+ 26960U, // 3 - 55
+ 54608U, // 3 - 56
+ 23208U, // 3 - 57
+ 22176U, // 3 - 58
+ 38736U, // 3 - 59
+ 19304U, // 4 - 0
+ 19168U, // 4 - 1
+ 42208U, // 4 - 2
+ 53864U, // 4 - 3
+ 53856U, // 4 - 4
+ 54608U, // 4 - 5
+ 46416U, // 4 - 6
+ 13984U, // 4 - 7
+ 38608U, // 4 - 8
+ 38352U, // 4 - 9
+ 17872U, // 4 - 10
+ 41688U, // 4 - 11
+ 42160U, // 4 - 12
+ 43600U, // 4 - 13
+ 46376U, // 4 - 14
+ 44352U, // 4 - 15
+ 44456U, // 4 - 16
+ 11168U, // 4 - 17
+ 37808U, // 4 - 18
+ 17848U, // 4 - 19
+ 17776U, // 4 - 20
+ 25776U, // 4 - 21
+ 43608U, // 4 - 22
+ 27216U, // 4 - 23
+ 27464U, // 4 - 24
+ 22208U, // 4 - 25
+ 43872U, // 4 - 26
+ 37744U, // 4 - 27
+ 35568U, // 4 - 28
+ 17776U, // 4 - 29
+ 21680U, // 4 - 30
+ 54432U, // 4 - 31
+ 55888U, // 4 - 32
+ 46416U, // 4 - 33
+ 22208U, // 4 - 34
+ 42728U, // 4 - 35
+ 9680U, // 4 - 36
+ 37600U, // 4 - 37
+ 51560U, // 4 - 38
+ 43344U, // 4 - 39
+ 46240U, // 4 - 40
+ 54608U, // 4 - 41
+ 44368U, // 4 - 42
+ 21928U, // 4 - 43
+ 19360U, // 4 - 44
+ 42448U, // 4 - 45
+ 37592U, // 4 - 46
+ 21168U, // 4 - 47
+ 43344U, // 4 - 48
+ 45736U, // 4 - 49
+ 27296U, // 4 - 50
+ 44368U, // 4 - 51
+ 19880U, // 4 - 52
+ 19360U, // 4 - 53
+ 42352U, // 4 - 54
+ 41840U, // 4 - 55
+ 21104U, // 4 - 56
+ 25904U, // 4 - 57
+ 54608U, // 4 - 58
+ 23200U, // 4 - 59
+ 43856U, // 5 - 0
+ 38608U, // 5 - 1
+ 19176U, // 5 - 2
+ 18144U, // 5 - 3
+ 41696U, // 5 - 4
+ 53608U, // 5 - 5
+ 51808U, // 5 - 6
+ 54560U, // 5 - 7
+ 55968U, // 5 - 8
+ 46496U, // 5 - 9
+ 22224U, // 5 - 10
+ 19176U, // 5 - 11
+ 17872U, // 5 - 12
+ 41688U, // 5 - 13
+ 41648U, // 5 - 14
+ 43600U, // 5 - 15
+ 46376U, // 5 - 16
+ 27968U, // 5 - 17
+ 44448U, // 5 - 18
+ 21968U, // 5 - 19
+ 37808U, // 5 - 20
+ 17848U, // 5 - 21
+ 17776U, // 5 - 22
+ 21168U, // 5 - 23
+ 27224U, // 5 - 24
+ 23120U, // 5 - 25
+ 27456U, // 5 - 26
+ 43872U, // 5 - 27
+ 43872U, // 5 - 28
+ 35696U, // 5 - 29
+ 17776U, // 5 - 30
+ 50544U, // 5 - 31
+ 21168U, // 5 - 32
+ 53920U, // 5 - 33
+ 54608U, // 5 - 34
+ 23208U, // 5 - 35
+ 22208U, // 5 - 36
+ 42720U, // 5 - 37
+ 35560U, // 5 - 38
+ 35552U, // 5 - 39
+ 42344U, // 5 - 40
+ 42320U, // 5 - 41
+ 45728U, // 5 - 42
+ 46416U, // 5 - 43
+ 44368U, // 5 - 44
+ 19872U, // 5 - 45
+ 38352U, // 5 - 46
+ 38352U, // 5 - 47
+ 19152U, // 5 - 48
+ 42200U, // 5 - 49
+ 42320U, // 5 - 50
+ 43688U, // 5 - 51
+ 27296U, // 5 - 52
+ 44368U, // 5 - 53
+ 19880U, // 5 - 54
+ 11104U, // 5 - 55
+ 38256U, // 5 - 56
+ 18872U, // 5 - 57
+ 18800U, // 5 - 58
+ 25904U, // 5 - 59
+ 54608U, // 6 - 0
+ 23200U, // 6 - 1
+ 39760U, // 6 - 2
+ 22224U, // 6 - 3
+ 10976U, // 6 - 4
+ 37744U, // 6 - 5
+ 41696U, // 6 - 6
+ 51552U, // 6 - 7
+ 54448U, // 6 - 8
+ 54560U, // 6 - 9
+ 54944U, // 6 - 10
+ 44448U, // 6 - 11
+ 22224U, // 6 - 12
+ 9960U, // 6 - 13
+ 9680U, // 6 - 14
+ 41680U, // 6 - 15
+ 51544U, // 6 - 16
+ 43344U, // 6 - 17
+ 46376U, // 6 - 18
+ 27968U, // 6 - 19
+ 44448U, // 6 - 20
+ 21968U, // 6 - 21
+ 19376U, // 6 - 22
+ 17840U, // 6 - 23
+ 37560U, // 6 - 24
+ 21168U, // 6 - 25
+ 26960U, // 6 - 26
+ 27816U, // 6 - 27
+ 23328U, // 6 - 28
+ 43872U, // 6 - 29
+ 42848U, // 6 - 30
+ 19312U, // 6 - 31
+ 9584U, // 6 - 32
+ 42352U, // 6 - 33
+ 21168U, // 6 - 34
+ 26960U, // 6 - 35
+ 54608U, // 6 - 36
+ 23208U, // 6 - 37
+ 22176U, // 6 - 38
+ 38624U, // 6 - 39
+ 19176U, // 6 - 40
+ 19168U, // 6 - 41
+ 42336U, // 6 - 42
+ 53928U, // 6 - 43
+ 45728U, // 6 - 44
+ 46416U, // 6 - 45
+ 22184U, // 6 - 46
+ 19872U, // 6 - 47
+ 38352U, // 6 - 48
+ 38352U, // 6 - 49
+ 18864U, // 6 - 50
+ 42200U, // 6 - 51
+ 42320U, // 6 - 52
+ 43680U, // 6 - 53
+ 46416U, // 6 - 54
+ 43856U, // 6 - 55
+ 11176U, // 6 - 56
+ 11104U, // 6 - 57
+ 37744U, // 6 - 58
+ 18872U, // 6 - 59
+ 18800U, // 7 - 0
+ 25776U, // 7 - 1
+ 27288U, // 7 - 2
+ 23200U, // 7 - 3
+ 23376U, // 7 - 4
+ 11112U, // 7 - 5
+ 10976U, // 7 - 6
+ 37744U, // 7 - 7
+ 37600U, // 7 - 8
+ 51552U, // 7 - 9
+ 54448U, // 7 - 10
+ 54560U, // 7 - 11
+ 54944U, // 7 - 12
+ 22224U, // 7 - 13
+ 22224U, // 7 - 14
+ 9952U, // 7 - 15
+ 37608U, // 7 - 16
+ 37584U, // 7 - 17
+ 51544U, // 7 - 18
+ 43344U, // 7 - 19
+ 46240U, // 7 - 20
+ 46496U, // 7 - 21
+ 44448U, // 7 - 22
+ 21968U, // 7 - 23
+ 9688U, // 7 - 24
+ 9648U, // 7 - 25
+ 37560U, // 7 - 26
+ 21168U, // 7 - 27
+ 26960U, // 7 - 28
+ 27816U, // 7 - 29
+ 23200U, // 7 - 30
+ 43872U, // 7 - 31
+ 19376U, // 7 - 32
+ 19312U, // 7 - 33
+ 9584U, // 7 - 34
+ 42352U, // 7 - 35
+ 21168U, // 7 - 36
+ 26960U, // 7 - 37
+ 54608U, // 7 - 38
+ 23200U, // 7 - 39
+ 43856U, // 7 - 40
+ 38608U, // 7 - 41
+ 19168U, // 7 - 42
+ 42352U, // 7 - 43
+ 42320U, // 7 - 44
+ 53928U, // 7 - 45
+ 45728U, // 7 - 46
+ 46416U, // 7 - 47
+ 22184U, // 7 - 48
+ 11680U, // 7 - 49
+ 38352U, // 7 - 50
+ 19176U, // 7 - 51
+ 18864U, // 7 - 52
+ 42200U, // 7 - 53
+ 42192U, // 7 - 54
+ 43680U, // 7 - 55
+ 46416U, // 7 - 56
+ 27472U, // 7 - 57
+ 11168U, // 7 - 58
+ 38320U, // 7 - 59
+ 37744U, // 8 - 0
+ 18864U, // 8 - 1
+ 42168U, // 8 - 2
+ 25776U, // 8 - 3
+ 27288U, // 8 - 4
+ 23200U, // 8 - 5
+ 23376U, // 8 - 6
+ 11112U, // 8 - 7
+ 9952U, // 8 - 8
+ 37616U, // 8 - 9
+ 18800U, // 8 - 10
+ 51552U, // 8 - 11
+ 54440U, // 8 - 12
+ 46368U, // 8 - 13
+ 54944U, // 8 - 14
+ 22224U, // 8 - 15
+ 21968U, // 8 - 16
+ 9696U, // 8 - 17
+ 37608U, // 8 - 18
+ 37584U, // 8 - 19
+ 43344U, // 8 - 20
+ 54440U, // 8 - 21
+ 46240U, // 8 - 22
+ 46480U, // 8 - 23
+ 44448U, // 8 - 24
+ 19888U, // 8 - 25
+ 9688U, // 8 - 26
+ 9648U, // 8 - 27
+ 37552U, // 8 - 28
+ 43352U, // 8 - 29
+ 26960U, // 8 - 30
+ 27304U, // 8 - 31
+ 23200U, // 8 - 32
+ 43872U, // 8 - 33
+ 19376U, // 8 - 34
+ 19312U, // 8 - 35
+ 9584U, // 8 - 36
+ 21168U, // 8 - 37
+ 53920U, // 8 - 38
+ 59728U, // 8 - 39
+ 27304U, // 8 - 40
+ 22176U, // 8 - 41
+ 39760U, // 8 - 42
+ 38608U, // 8 - 43
+ 19168U, // 8 - 44
+ 42352U, // 8 - 45
+ 42192U, // 8 - 46
+ 53920U, // 8 - 47
+ 54608U, // 8 - 48
+ 46416U, // 8 - 49
+ 22176U, // 8 - 50
+ 38608U, // 8 - 51
+ 38352U, // 8 - 52
+ 19176U, // 8 - 53
+ 18864U, // 8 - 54
+ 42192U, // 8 - 55
+ 45656U, // 8 - 56
+ 27280U, // 8 - 57
+ 44368U, // 8 - 58
+ 13736U, // 8 - 59
+ 11168U, // 9 - 0
+ 38320U, // 9 - 1
+ 37744U, // 9 - 2
+ 18800U, // 9 - 3
+ 42168U, // 9 - 4
+ 21680U, // 9 - 5
+ 27280U, // 9 - 6
+ 27976U, // 9 - 7
+ 23376U, // 9 - 8
+ 11104U, // 9 - 9
+ 37744U, // 9 - 10
+ 37616U, // 9 - 11
+ 18800U, // 9 - 12
+ 51552U, // 9 - 13
+ 54432U, // 9 - 14
+ 55888U, // 9 - 15
+ 54928U, // 9 - 16
+ 22224U, // 9 - 17
+ 10984U, // 9 - 18
+ 9696U, // 9 - 19
+ 37608U, // 9 - 20
+ 37584U, // 9 - 21
+ 43344U, // 9 - 22
+ 54440U, // 9 - 23
+ 46240U, // 9 - 24
+ 46480U, // 9 - 25
+ 22224U, // 9 - 26
+ 19888U, // 9 - 27
+ 9680U, // 9 - 28
+ 37592U, // 9 - 29
+ 21168U, // 9 - 30
+ 43352U, // 9 - 31
+ 26960U, // 9 - 32
+ 27296U, // 9 - 33
+ 44368U, // 9 - 34
+ 43856U, // 9 - 35
+ 19376U, // 9 - 36
+ 9656U, // 9 - 37
+ 9584U, // 9 - 38
+ 21168U, // 9 - 39
+ 53920U, // 9 - 40
+ 55632U, // 9 - 41
+ 27304U, // 9 - 42
+ 22176U, // 9 - 43
+ 38736U, // 9 - 44
+ 19304U, // 9 - 45
+ 19168U, // 9 - 46
+ 42224U, // 9 - 47
+ 21096U, // 9 - 48
+ 53856U, // 9 - 49
+ 54608U, // 9 - 50
+ 46416U, // 9 - 51
+ 22176U, // 9 - 52
+ 38608U, // 9 - 53
+ 38352U, // 9 - 54
+ 18896U, // 9 - 55
+ 42200U, // 9 - 56
+ 42192U, // 9 - 57
+ 45656U, // 9 - 58
+ 27280U, // 9 - 59
+ 44368U, // 10 - 0
+ 11688U, // 10 - 1
+ 11168U, // 10 - 2
+ 38320U, // 10 - 3
+ 18872U, // 10 - 4
+ 18800U, // 10 - 5
+ 42160U, // 10 - 6
+ 43608U, // 10 - 7
+ 27216U, // 10 - 8
+ 27464U, // 10 - 9
+ 23376U, // 10 - 10
+ 11104U, // 10 - 11
+ 37744U, // 10 - 12
+ 37616U, // 10 - 13
+ 18800U, // 10 - 14
+ 25776U, // 10 - 15
+ 54432U, // 10 - 16
+ 55888U, // 10 - 17
+ 46480U, // 10 - 18
+ 22224U, // 10 - 19
+ 9960U, // 10 - 20
+ 9696U, // 10 - 21
+ 37600U, // 10 - 22
+ 51560U, // 10 - 23
+ 43344U, // 10 - 24
+ 54432U, // 10 - 25
+ 54864U, // 10 - 26
+ 46416U, // 10 - 27
+ 22184U, // 10 - 28
+ 19888U, // 10 - 29
+ 9680U, // 10 - 30
+ 37592U, // 10 - 31
+ 21168U, // 10 - 32
+ 43344U, // 10 - 33
+ 46248U, // 10 - 34
+ 27296U, // 10 - 35
+ 44368U, // 10 - 36
+ 39760U, // 10 - 37
+ 19360U, // 10 - 38
+ 42416U, // 10 - 39
+ 42352U, // 10 - 40
+ 21168U, // 10 - 41
+ 26960U, // 10 - 42
+ 54608U, // 10 - 43
+ 23200U, // 10 - 44
+ 43856U, // 10 - 45
+ 38736U, // 10 - 46
+ 19304U, // 10 - 47
+ 19168U, // 10 - 48
+ 42208U, // 10 - 49
+ 53864U, // 10 - 50
+ 53856U, // 10 - 51
+ 54608U, // 10 - 52
+ 23208U, // 10 - 53
+ 13984U, // 10 - 54
+ 38608U, // 10 - 55
+ 38352U, // 10 - 56
+ 18896U, // 10 - 57
+ 42200U, // 10 - 58
+ 42192U, // 10 - 59
+ 43600U, // 11 - 0
+ 46376U, // 11 - 1
+ 44352U, // 11 - 2
+ 44448U, // 11 - 3
+ 38352U, // 11 - 4
+ 37808U, // 11 - 5
+ 18872U, // 11 - 6
+ 18800U, // 11 - 7
+ 42160U, // 11 - 8
+ 43608U, // 11 - 9
+ 27216U, // 11 - 10
+ 27456U, // 11 - 11
+ 44392U, // 11 - 12
+ 11104U, // 11 - 13
+ 37744U, // 11 - 14
+ 37616U, // 11 - 15
+ 18800U, // 11 - 16
+ 21680U, // 11 - 17
+ 54432U, // 11 - 18
+ 55888U, // 11 - 19
+ 23208U, // 11 - 20
+ 22208U, // 11 - 21
+ 42720U, // 11 - 22
+ 37608U, // 11 - 23
+ 37600U, // 11 - 24
+ 51560U, // 11 - 25
+ 43344U, // 11 - 26
+ 54432U, // 11 - 27
+ 54608U, // 11 - 28
+ 44368U, // 11 - 29
+ 21920U, // 11 - 30
+ 42456U, // 11 - 31
+ 9680U, // 11 - 32
+ 37592U, // 11 - 33
+ 21168U, // 11 - 34
+ 43344U, // 11 - 35
+ 45736U, // 11 - 36
+ 27296U, // 11 - 37
+ 44368U, // 11 - 38
+ 19880U, // 11 - 39
+ 19360U, // 11 - 40
+ 42352U, // 11 - 41
+ 21176U, // 11 - 42
+ 21168U, // 11 - 43
+ 26928U, // 11 - 44
+ 54608U, // 11 - 45
+ 23200U, // 11 - 46
+ 43856U, // 11 - 47
+ 38736U, // 11 - 48
+ 19296U, // 11 - 49
+ 42352U, // 11 - 50
+ 41696U, // 11 - 51
+ 53608U, // 11 - 52
+ 51808U, // 11 - 53
+ 54560U, // 11 - 54
+ 55968U, // 11 - 55
+ 46752U, // 11 - 56
+ 38608U, // 11 - 57
+ 19176U, // 11 - 58
+ 17872U, // 11 - 59
+ 41680U, // 12 - 0
+ 53608U, // 12 - 1
+ 43600U, // 12 - 2
+ 46376U, // 12 - 3
+ 44352U, // 12 - 4
+ 44448U, // 12 - 5
+ 38352U, // 12 - 6
+ 37808U, // 12 - 7
+ 17840U, // 12 - 8
+ 41656U, // 12 - 9
+ 25264U, // 12 - 10
+ 27224U, // 12 - 11
+ 27216U, // 12 - 12
+ 27456U, // 12 - 13
+ 43872U, // 12 - 14
+ 43872U, // 12 - 15
+ 35696U, // 12 - 16
+ 17776U, // 12 - 17
+ 50544U, // 12 - 18
+ 21168U, // 12 - 19
+ 26960U, // 12 - 20
+ 55632U, // 12 - 21
+ 23208U, // 12 - 22
+ 22208U, // 12 - 23
+ 42720U, // 12 - 24
+ 35560U, // 12 - 25
+ 35552U, // 12 - 26
+ 42336U, // 12 - 27
+ 53928U, // 12 - 28
+ 45728U, // 12 - 29
+ 54608U, // 12 - 30
+ 44368U, // 12 - 31
+ 21920U, // 12 - 32
+ 42448U, // 12 - 33
+ 38352U, // 12 - 34
+ 19152U, // 12 - 35
+ 43352U, // 12 - 36
+ 42320U, // 12 - 37
+ 45728U, // 12 - 38
+ 46416U, // 12 - 39
+ 44368U, // 12 - 40
+ 19880U, // 12 - 41
+ 19360U, // 12 - 42
+ 38256U, // 12 - 43
+ 20920U, // 12 - 44
+ 20848U, // 12 - 45
+ 25904U, // 12 - 46
+ 27304U, // 12 - 47
+ 23200U, // 12 - 48
+ 43856U, // 12 - 49
+ 22352U, // 12 - 50
+ 19296U, // 12 - 51
+ 41840U, // 12 - 52
+ 41696U, // 12 - 53
+ 53600U, // 12 - 54
+ 54448U, // 12 - 55
+ 54560U, // 12 - 56
+ 55968U, // 12 - 57
+ 23248U, // 12 - 58
+ 22224U, // 12 - 59
+ 19176U, // 13 - 0
+ 17872U, // 13 - 1
+ 41680U, // 13 - 2
+ 51544U, // 13 - 3
+ 43344U, // 13 - 4
+ 46368U, // 13 - 5
+ 46752U, // 13 - 6
+ 44448U, // 13 - 7
+ 21968U, // 13 - 8
+ 35760U, // 13 - 9
+ 17840U, // 13 - 10
+ 41656U, // 13 - 11
+ 21168U, // 13 - 12
+ 26960U, // 13 - 13
+ 44200U, // 13 - 14
+ 27424U, // 13 - 15
+ 43872U, // 13 - 16
+ 21424U, // 13 - 17
+ 19312U, // 13 - 18
+ 17776U, // 13 - 19
+ 42352U, // 13 - 20
+ 21168U, // 13 - 21
+ 26960U, // 13 - 22
+ 54608U, // 13 - 23
+ 23200U, // 13 - 24
+ 43872U, // 13 - 25
+ 42720U, // 13 - 26
+ 19168U, // 13 - 27
+ 50544U, // 13 - 28
+ 42336U, // 13 - 29
+ 53928U, // 13 - 30
+ 45728U, // 13 - 31
+ 46416U, // 13 - 32
+ 22184U, // 13 - 33
+ 19872U, // 13 - 34
+ 38352U, // 13 - 35
+ 19176U, // 13 - 36
+ 18864U, // 13 - 37
+ 42200U, // 13 - 38
+ 42320U, // 13 - 39
+ 43680U, // 13 - 40
+ 46416U, // 13 - 41
+ 44368U, // 13 - 42
+ 11680U, // 13 - 43
+ 38352U, // 13 - 44
+ 37744U, // 13 - 45
+ 18872U, // 13 - 46
+ 18800U, // 13 - 47
+ 25776U, // 13 - 48
+ 27288U, // 13 - 49
+ 23200U, // 13 - 50
+ 23376U, // 13 - 51
+ 11112U, // 13 - 52
+ 10976U, // 13 - 53
+ 37744U, // 13 - 54
+ 18800U, // 13 - 55
+ 51552U, // 13 - 56
+ 54448U, // 13 - 57
+ 54560U, // 13 - 58
+ 54944U, // 13 - 59
+ 23248U, // 14 - 0
+ 22224U, // 14 - 1
+ 9952U, // 14 - 2
+ 37608U, // 14 - 3
+ 37584U, // 14 - 4
+ 51544U, // 14 - 5
+ 43344U, // 14 - 6
+ 46368U, // 14 - 7
+ 46752U, // 14 - 8
+ 44448U, // 14 - 9
+ 21968U, // 14 - 10
+ 9688U, // 14 - 11
+ 9648U, // 14 - 12
+ 37552U, // 14 - 13
+ 43352U, // 14 - 14
+ 26960U, // 14 - 15
+ 44200U, // 14 - 16
+ 23200U, // 14 - 17
+ 43872U, // 14 - 18
+ 19376U, // 14 - 19
+ 19312U, // 14 - 20
+ 9584U, // 14 - 21
+ 21176U, // 14 - 22
+ 21168U, // 14 - 23
+ 26960U, // 14 - 24
+ 54608U, // 14 - 25
+ 23200U, // 14 - 26
+ 43856U, // 14 - 27
+ 38624U, // 14 - 28
+ 19168U, // 14 - 29
+ 42352U, // 14 - 30
+ 42320U, // 14 - 31
+ 53920U, // 14 - 32
+ 55632U, // 14 - 33
+ 46416U, // 14 - 34
+ 22184U, // 14 - 35
+ 11680U, // 14 - 36
+ 38352U, // 14 - 37
+ 19176U, // 14 - 38
+ 18864U, // 14 - 39
+ 42192U, // 14 - 40
+ 53864U, // 14 - 41
+ 43680U, // 14 - 42
+ 46416U, // 14 - 43
+ 43856U, // 14 - 44
+ 11680U, // 14 - 45
+ 38320U, // 14 - 46
+ 37744U, // 14 - 47
+ 18864U, // 14 - 48
+ 42168U, // 14 - 49
+ 25776U, // 14 - 50
+ 27280U, // 14 - 51
+ 44368U, // 14 - 52
+ 23376U, // 14 - 53
+ 11112U, // 14 - 54
+ 10976U, // 14 - 55
+ 37616U, // 14 - 56
+ 18800U, // 14 - 57
+ 51552U, // 14 - 58
+ 54432U, // 14 - 59
+ 60048U, // 15 - 0
+ 54928U, // 15 - 1
+ 22224U, // 15 - 2
+ 11112U, // 15 - 3
+ 9952U, // 15 - 4
+ 37608U, // 15 - 5
+ 37584U, // 15 - 6
+ 51536U, // 15 - 7
+ 54440U, // 15 - 8
+ 46240U, // 15 - 9
+ 46480U, // 15 - 10
+ 22224U, // 15 - 11
+ 19888U, // 15 - 12
+ 9688U, // 15 - 13
+ 9648U, // 15 - 14
+ 37552U, // 15 - 15
+ 43352U, // 15 - 16
+ 26960U, // 15 - 17
+ 27808U, // 15 - 18
+ 44368U, // 15 - 19
+ 43872U, // 15 - 20
+ 19376U, // 15 - 21
+ 9656U, // 15 - 22
+ 9584U, // 15 - 23
+ 21168U, // 15 - 24
+ 53920U, // 15 - 25
+ 59728U, // 15 - 26
+ 27304U, // 15 - 27
+ 23200U, // 15 - 28
+ 43856U, // 15 - 29
+ 19304U, // 15 - 30
+ 19168U, // 15 - 31
+ 42352U, // 15 - 32
+ 42208U, // 15 - 33
+ 53920U, // 15 - 34
+ 55632U, // 15 - 35
+ 46416U, // 15 - 36
+ 22176U, // 15 - 37
+ 38608U, // 15 - 38
+ 38352U, // 15 - 39
+ 19168U, // 15 - 40
+ 42200U, // 15 - 41
+ 42192U, // 15 - 42
+ 45672U, // 15 - 43
+ 43664U, // 15 - 44
+ 46416U, // 15 - 45
+ 13736U, // 15 - 46
+ 11168U, // 15 - 47
+ 38320U, // 15 - 48
+ 18872U, // 15 - 49
+ 18800U, // 15 - 50
+ 42168U, // 15 - 51
+ 21680U, // 15 - 52
+ 27280U, // 15 - 53
+ 27976U, // 15 - 54
+ 23376U, // 15 - 55
+ 11104U, // 15 - 56
+ 37744U, // 15 - 57
+ 37616U, // 15 - 58
+ 18800U, // 15 - 59
+ 25776U, // 16 - 0
+ 54432U, // 16 - 1
+ 55888U, // 16 - 2
+ 54928U, // 16 - 3
+ 22224U, // 16 - 4
+ 10984U, // 16 - 5
+ 9952U, // 16 - 6
+ 37600U, // 16 - 7
+ 51560U, // 16 - 8
+ 43344U, // 16 - 9
+ 54440U, // 16 - 10
+ 46240U, // 16 - 11
+ 46480U, // 16 - 12
+ 22224U, // 16 - 13
+ 19888U, // 16 - 14
+ 9680U, // 16 - 15
+ 37592U, // 16 - 16
+ 37552U, // 16 - 17
+ 43344U, // 16 - 18
+ 46248U, // 16 - 19
+ 27296U, // 16 - 20
+ 44368U, // 16 - 21
+ 43856U, // 16 - 22
+ 19376U, // 16 - 23
+ 9656U, // 16 - 24
+ 9584U, // 16 - 25
+ 21168U, // 16 - 26
+ 26960U, // 16 - 27
+ 59728U, // 16 - 28
+ 27304U, // 16 - 29
+ 22176U, // 16 - 30
+ 39760U, // 16 - 31
+ 19304U, // 16 - 32
+ 19168U, // 16 - 33
+ 42352U, // 16 - 34
+ 21096U, // 16 - 35
+ 53856U, // 16 - 36
+ 54608U, // 16 - 37
+ 23208U, // 16 - 38
+ 22176U, // 16 - 39
+ 38608U, // 16 - 40
+ 38352U, // 16 - 41
+ 18896U, // 16 - 42
+ 42200U, // 16 - 43
+ 42192U, // 16 - 44
+ 45648U, // 16 - 45
+ 46408U, // 16 - 46
+ 44368U, // 16 - 47
+ 13736U, // 16 - 48
+ 11168U, // 16 - 49
+ 38320U, // 16 - 50
+ 18872U, // 16 - 51
+ 18800U, // 16 - 52
+ 42160U, // 16 - 53
+ 43608U, // 16 - 54
+ 27216U, // 16 - 55
+ 27968U, // 16 - 56
+ 44456U, // 16 - 57
+ 11104U, // 16 - 58
+ 37744U, // 16 - 59
+ 37616U, // 17 - 0
+ 18800U, // 17 - 1
+ 25776U, // 17 - 2
+ 54432U, // 17 - 3
+ 55888U, // 17 - 4
+ 23368U, // 17 - 5
+ 22224U, // 17 - 6
+ 10984U, // 17 - 7
+ 9696U, // 17 - 8
+ 37600U, // 17 - 9
+ 51560U, // 17 - 10
+ 43344U, // 17 - 11
+ 54432U, // 17 - 12
+ 54864U, // 17 - 13
+ 46416U, // 17 - 14
+ 22192U, // 17 - 15
+ 9944U, // 17 - 16
+ 9680U, // 17 - 17
+ 37592U, // 17 - 18
+ 21168U, // 17 - 19
+ 43344U, // 17 - 20
+ 46248U, // 17 - 21
+ 27296U, // 17 - 22
+ 44368U, // 17 - 23
+ 21928U, // 17 - 24
+ 19360U, // 17 - 25
+ 42416U, // 17 - 26
+ 42352U, // 17 - 27
+ 21168U, // 17 - 28
+ 26960U, // 17 - 29
+ 54608U, // 17 - 30
+ 27296U, // 17 - 31
+ 43856U, // 17 - 32
+ 38736U, // 17 - 33
+ 19296U, // 17 - 34
+ 42352U, // 17 - 35
+ 42208U, // 17 - 36
+ 53864U, // 17 - 37
+ 53856U, // 17 - 38
+ 54608U, // 17 - 39
+ 23208U, // 17 - 40
+ 13984U, // 17 - 41
+ 38608U, // 17 - 42
+ 19176U, // 17 - 43
+ 18896U, // 17 - 44
+ 42200U, // 17 - 45
+ 42192U, // 17 - 46
+ 43600U, // 17 - 47
+ 46376U, // 17 - 48
+ 44352U, // 17 - 49
+ 44448U, // 17 - 50
+ 38352U, // 17 - 51
+ 38320U, // 17 - 52
+ 18864U, // 17 - 53
+ 42168U, // 17 - 54
+ 42160U, // 17 - 55
+ 43608U, // 17 - 56
+ 27216U, // 17 - 57
+ 27456U, // 17 - 58
+ 44456U, // 17 - 59
+ 11104U, // 18 - 0
+ 37744U, // 18 - 1
+ 18808U, // 18 - 2
+ 18800U, // 18 - 3
+ 21680U, // 18 - 4
+ 54432U, // 18 - 5
+ 55888U, // 18 - 6
+ 23208U, // 18 - 7
+ 22224U, // 18 - 8
+ 9952U, // 18 - 9
+ 37616U, // 18 - 10
+ 37600U, // 18 - 11
+ 51552U, // 18 - 12
+ 54440U, // 18 - 13
+ 54432U, // 18 - 14
+ 54608U, // 18 - 15
+ 46416U, // 18 - 16
+ 22176U, // 18 - 17
+ 42712U, // 18 - 18
+ 9680U, // 18 - 19
+ 37584U, // 18 - 20
+ 43352U, // 18 - 21
+ 43344U, // 18 - 22
+ 45736U, // 18 - 23
+ 27296U, // 18 - 24
+ 44368U, // 18 - 25
+ 19880U, // 18 - 26
+ 19360U, // 18 - 27
+ 42416U, // 18 - 28
+ 21176U, // 18 - 29
+ 21104U, // 18 - 30
+ 26928U, // 18 - 31
+ 27304U, // 18 - 32
+ 27296U, // 18 - 33
+ 43856U, // 18 - 34
+ 38736U, // 18 - 35
+ 19296U, // 18 - 36
+ 42352U, // 18 - 37
+ 42208U, // 18 - 38
+ 53856U, // 18 - 39
+ 59696U, // 18 - 40
+ 54560U, // 18 - 41
+ 55968U, // 18 - 42
+ 46752U, // 18 - 43
+ 38608U, // 18 - 44
+ 19176U, // 18 - 45
+ 18896U, // 18 - 46
+ 41680U, // 18 - 47
+ 53864U, // 18 - 48
+ 43600U, // 18 - 49
+ 46368U, // 18 - 50
+ 54944U, // 18 - 51
+ 44448U, // 18 - 52
+ 21968U, // 18 - 53
+ 37808U, // 18 - 54
+ 17840U, // 18 - 55
+ 41656U, // 18 - 56
+ 25776U, // 18 - 57
+ 43600U, // 18 - 58
+ 46376U, // 18 - 59
+ 27456U, // 19 - 0
+ 44448U, // 19 - 1
+ 43872U, // 19 - 2
+ 37744U, // 19 - 3
+ 17784U, // 19 - 4
+ 17776U, // 19 - 5
+ 21680U, // 19 - 6
+ 27216U, // 19 - 7
+ 55632U, // 19 - 8
+ 23200U, // 19 - 9
+ 43872U, // 19 - 10
+ 42720U, // 19 - 11
+ 37608U, // 19 - 12
+ 35552U, // 19 - 13
+ 42336U, // 19 - 14
+ 54440U, // 19 - 15
+ 53920U, // 19 - 16
+ 54608U, // 19 - 17
+ 22184U, // 19 - 18
+ 21920U, // 19 - 19
+ 42448U, // 19 - 20
+ 42448U, // 19 - 21
+ 19152U, // 19 - 22
+ 43352U, // 19 - 23
+ 43344U, // 19 - 24
+ 45728U, // 19 - 25
+ 46416U, // 19 - 26
+ 44368U, // 19 - 27
+ 19872U, // 19 - 28
+ 42448U, // 19 - 29
+ 42416U, // 19 - 30
+ 20920U, // 19 - 31
+ 20848U, // 19 - 32
+ 25904U, // 19 - 33
+ 27304U, // 19 - 34
+ 23200U, // 19 - 35
+ 43856U, // 19 - 36
+ 11176U, // 19 - 37
+ 19296U, // 19 - 38
+ 41840U, // 19 - 39
+ 41696U, // 19 - 40
+ 53600U, // 19 - 41
+ 58672U, // 19 - 42
+ 54560U, // 19 - 43
+ 55968U, // 19 - 44
+ 23248U, // 19 - 45
+ 22224U, // 19 - 46
+ 19168U, // 19 - 47
+ 41704U, // 19 - 48
+ 41680U, // 19 - 49
+ 51544U, // 19 - 50
+ 43600U, // 19 - 51
+ 46368U, // 19 - 52
+ 46752U, // 19 - 53
+ 44448U, // 19 - 54
+ 21968U, // 19 - 55
+ 9688U, // 19 - 56
+ 17840U, // 19 - 57
+ 41656U, // 19 - 58
+ 21168U, // 19 - 59
+ 43344U, // 20 - 0
+ 46376U, // 20 - 1
+ 27424U, // 20 - 2
+ 43872U, // 20 - 3
+ 21936U, // 20 - 4
+ 19312U, // 20 - 5
+ 17776U, // 20 - 6
+ 25272U, // 20 - 7
+ 21168U, // 20 - 8
+ 26960U, // 20 - 9
+ 55632U, // 20 - 10
+ 23200U, // 20 - 11
+ 43872U, // 20 - 12
+ 42720U, // 20 - 13
+ 19168U, // 20 - 14
+ 42352U, // 20 - 15
+ 42336U, // 20 - 16
+ 53928U, // 20 - 17
+ 45728U, // 20 - 18
+ 46416U, // 20 - 19
+ 22184U, // 20 - 20
+ 21920U, // 20 - 21
+ 38352U, // 20 - 22
+ 19176U, // 20 - 23
+ 18896U, // 20 - 24
+ 42192U, // 20 - 25
+ 53928U, // 20 - 26
+ 43680U, // 20 - 27
+ 46416U, // 20 - 28
+ 44368U, // 20 - 29
+ 11680U, // 20 - 30
+ 38352U, // 20 - 31
+ 38256U, // 20 - 32
+ 18864U, // 20 - 33
+ 42168U, // 20 - 34
+ 25776U, // 20 - 35
+ 27288U, // 20 - 36
+ 23200U, // 20 - 37
+ 23376U, // 20 - 38
+ 11112U, // 20 - 39
+ 10976U, // 20 - 40
+ 37744U, // 20 - 41
+ 18800U, // 20 - 42
+ 51552U, // 20 - 43
+ 54448U, // 20 - 44
+ 27280U, // 20 - 45
+ 54944U, // 20 - 46
+ 23248U, // 20 - 47
+ 22224U, // 20 - 48
+ 10976U, // 20 - 49
+ 37608U, // 20 - 50
+ 37584U, // 20 - 51
+ 51536U, // 20 - 52
+ 54440U, // 20 - 53
+ 46368U, // 20 - 54
+ 46736U, // 20 - 55
+ 44448U, // 20 - 56
+ 21968U, // 20 - 57
+ 9688U, // 20 - 58
+ 9648U, // 20 - 59
+ 37552U, // 21 - 0
+ 43352U, // 21 - 1
+ 26960U, // 21 - 2
+ 27808U, // 21 - 3
+ 46416U, // 21 - 4
+ 43872U, // 21 - 5
+ 19888U, // 21 - 6
+ 19312U, // 21 - 7
+ 9584U, // 21 - 8
+ 21176U, // 21 - 9
+ 21168U, // 21 - 10
+ 26960U, // 21 - 11
+ 27304U, // 21 - 12
+ 23200U, // 21 - 13
+ 43856U, // 21 - 14
+ 38608U, // 21 - 15
+ 19168U, // 21 - 16
+ 42352U, // 21 - 17
+ 42208U, // 21 - 18
+ 53920U, // 21 - 19
+ 55632U, // 21 - 20
+ 46416U, // 21 - 21
+ 22176U, // 21 - 22
+ 42704U, // 21 - 23
+ 38352U, // 21 - 24
+ 19176U, // 21 - 25
+ 18864U, // 21 - 26
+ 42192U, // 21 - 27
+ 53864U, // 21 - 28
+ 43680U, // 21 - 29
+ 46416U, // 21 - 30
+ 22184U, // 21 - 31
+ 11680U, // 21 - 32
+ 38320U, // 21 - 33
+ 18872U, // 21 - 34
+ 18864U, // 21 - 35
+ 42168U, // 21 - 36
+ 25776U, // 21 - 37
+ 27280U, // 21 - 38
+ 44368U, // 21 - 39
+ 23376U, // 21 - 40
+ 11104U, // 21 - 41
+ 38256U, // 21 - 42
+ 37744U, // 21 - 43
+ 18800U, // 21 - 44
+ 51552U, // 21 - 45
+ 54432U, // 21 - 46
+ 60048U, // 21 - 47
+ 54928U, // 21 - 48
+ 22224U, // 21 - 49
+ 11112U, // 21 - 50
+ 9952U, // 21 - 51
+ 37600U, // 21 - 52
+ 51560U, // 21 - 53
+ 51536U, // 21 - 54
+ 54440U, // 21 - 55
+ 46240U, // 21 - 56
+ 46480U, // 21 - 57
+ 22224U, // 21 - 58
+ 21936U, // 21 - 59
+ 9680U, // 22 - 0
+ 37592U, // 22 - 1
+ 37552U, // 22 - 2
+ 43352U, // 22 - 3
+ 26960U, // 22 - 4
+ 27808U, // 22 - 5
+ 44368U, // 22 - 6
+ 43856U, // 22 - 7
+ 19376U, // 22 - 8
+ 9656U, // 22 - 9
+ 9584U, // 22 - 10
+ 21168U, // 22 - 11
+ 43352U, // 22 - 12
+ 26960U, // 22 - 13
+ 27304U, // 22 - 14
+ 23200U, // 22 - 15
+ 43856U, // 22 - 16
+ 19304U, // 22 - 17
+ 19168U, // 22 - 18
+ 42352U, // 22 - 19
+ 21096U, // 22 - 20
+ 53856U, // 22 - 21
+ 55632U, // 22 - 22
+ 46416U, // 22 - 23
+ 22176U, // 22 - 24
+ 38608U, // 22 - 25
+ 38352U, // 22 - 26
+ 19152U, // 22 - 27
+ 42200U, // 22 - 28
+ 42192U, // 22 - 29
+ 53848U, // 22 - 30
+ 43680U, // 22 - 31
+ 46416U, // 22 - 32
+ 13736U, // 22 - 33
+ 11168U, // 22 - 34
+ 38320U, // 22 - 35
+ 18872U, // 22 - 36
+ 18800U, // 22 - 37
+ 42160U, // 22 - 38
+ 45656U, // 22 - 39
+ 27216U, // 22 - 40
+ 27984U, // 22 - 41
+ 23376U, // 22 - 42
+ 11104U, // 22 - 43
+ 37744U, // 22 - 44
+ 37616U, // 22 - 45
+ 18800U, // 22 - 46
+ 25776U, // 22 - 47
+ 54432U, // 22 - 48
+ 55888U, // 22 - 49
+ 54928U, // 22 - 50
+ 22224U, // 22 - 51
+ 10984U, // 22 - 52
+ 9952U, // 22 - 53
+ 37600U, // 22 - 54
+ 51560U, // 22 - 55
+ 43344U, // 22 - 56
+ 54432U, // 22 - 57
+ 55888U, // 22 - 58
+ 46416U, // 22 - 59
+ 22224U, // 23 - 0
+ 19888U, // 23 - 1
+ 9680U, // 23 - 2
+ 37592U, // 23 - 3
+ 37552U, // 23 - 4
+ 43344U, // 23 - 5
+ 46248U, // 23 - 6
+ 27296U, // 23 - 7
+ 44368U, // 23 - 8
+ 21928U, // 23 - 9
+ 19376U, // 23 - 10
+ 9648U, // 23 - 11
+ 42352U, // 23 - 12
+ 21168U, // 23 - 13
+ 26960U, // 23 - 14
+ 59728U, // 23 - 15
+ 27296U, // 23 - 16
+ 44368U, // 23 - 17
+ 39760U, // 23 - 18
+ 19304U, // 23 - 19
+ 19168U, // 23 - 20
+ 42224U, // 23 - 21
+ 21096U, // 23 - 22
+ 53856U, // 23 - 23
+ 54608U, // 23 - 24
+ 23208U, // 23 - 25
+ 22176U, // 23 - 26
+ 38608U, // 23 - 27
+ 19176U, // 23 - 28
+ 18896U, // 23 - 29
+ 42200U, // 23 - 30
+ 42192U, // 23 - 31
+ 45648U, // 23 - 32
+ 54568U, // 23 - 33
+ 44368U, // 23 - 34
+ 13728U, // 23 - 35
+ 38352U, // 23 - 36
+ 38320U, // 23 - 37
+ 18872U, // 23 - 38
+ 18800U, // 23 - 39
+ 42160U, // 23 - 40
+ 43608U, // 23 - 41
+ 27216U, // 23 - 42
+ 27968U, // 23 - 43
+ 44456U, // 23 - 44
+ 11104U, // 23 - 45
+ 37744U, // 23 - 46
+ 18808U, // 23 - 47
+ 18800U, // 23 - 48
+ 25776U, // 23 - 49
+ 54432U, // 23 - 50
+ 55888U, // 23 - 51
+ 27464U, // 23 - 52
+ 22224U, // 23 - 53
+ 10976U, // 23 - 54
+ 37616U, // 23 - 55
+ 37600U, // 23 - 56
+ 51560U, // 23 - 57
+ 43344U, // 23 - 58
+ 54432U, // 23 - 59
+ 55888U, // 24 - 0
+ 46416U, // 24 - 1
+ 22176U, // 24 - 2
+ 42712U, // 24 - 3
+ 9680U, // 24 - 4
+ 37584U, // 24 - 5
+ 43352U, // 24 - 6
+ 43344U, // 24 - 7
+ 46248U, // 24 - 8
+ 27296U, // 24 - 9
+ 44368U, // 24 - 10
+ 21928U, // 24 - 11
+ 19360U, // 24 - 12
+ 42416U, // 24 - 13
+ 21176U, // 24 - 14
+ 21168U, // 24 - 15
+ 26960U, // 24 - 16
+ 58704U, // 24 - 17
+ 27296U, // 24 - 18
+ 43856U, // 24 - 19
+ 39760U, // 24 - 20
+ 19296U, // 24 - 21
+ 42352U, // 24 - 22
+ 42208U, // 24 - 23
+ 53856U, // 24 - 24
+ 59696U, // 24 - 25
+ 54608U, // 24 - 26
+ 23208U, // 24 - 27
+ 22176U, // 24 - 28
+ 38608U, // 24 - 29
+ 19176U, // 24 - 30
+ 18896U, // 24 - 31
+ 42192U, // 24 - 32
+ 53864U, // 24 - 33
+ 45648U, // 24 - 34
+ 46376U, // 24 - 35
+ 44352U, // 24 - 36
+ 44448U, // 24 - 37
+ 38352U, // 24 - 38
+ 38320U, // 24 - 39
+ 18864U, // 24 - 40
+ 42168U, // 24 - 41
+ 42160U, // 24 - 42
+ 43600U, // 24 - 43
+ 46376U, // 24 - 44
+ 27456U, // 24 - 45
+ 44456U, // 24 - 46
+ 11104U, // 24 - 47
+ 37744U, // 24 - 48
+ 18808U, // 24 - 49
+ 18800U, // 24 - 50
+ 21680U, // 24 - 51
+ 27216U, // 24 - 52
+ 55888U, // 24 - 53
+ 23208U, // 24 - 54
+ 22208U, // 24 - 55
+ 42720U, // 24 - 56
+ 37608U, // 24 - 57
+ 37600U, // 24 - 58
+ 51552U, // 24 - 59
+ 54440U, // 25 - 0
+ 54432U, // 25 - 1
+ 54608U, // 25 - 2
+ 23208U, // 25 - 3
+ 22176U, // 25 - 4
+ 42712U, // 25 - 5
+ 9680U, // 25 - 6
+ 37584U, // 25 - 7
+ 43352U, // 25 - 8
+ 43344U, // 25 - 9
+ 46240U, // 25 - 10
+ 46416U, // 25 - 11
+ 44368U, // 25 - 12
+ 21928U, // 25 - 13
+ 19360U, // 25 - 14
+ 42416U, // 25 - 15
+ 21176U, // 25 - 16
+ 21104U, // 25 - 17
+ 26928U, // 25 - 18
+ 27304U, // 25 - 19
+ 27296U, // 25 - 20
+ 43856U, // 25 - 21
+ 19368U, // 25 - 22
+ 19296U, // 25 - 23
+ 42352U, // 25 - 24
+ 41696U, // 25 - 25
+ 53856U, // 25 - 26
+ 59696U, // 25 - 27
+ 54560U, // 25 - 28
+ 55968U, // 25 - 29
+ 23376U, // 25 - 30
+ 22224U, // 25 - 31
+ 19168U, // 25 - 32
+ 41704U, // 25 - 33
+ 41680U, // 25 - 34
+ 53848U, // 25 - 35
+ 43600U, // 25 - 36
+ 46368U, // 25 - 37
+ 54944U, // 25 - 38
+ 44448U, // 25 - 39
+ 21968U, // 25 - 40
+ 18904U, // 25 - 41
+ 17840U, // 25 - 42
+ 41656U, // 25 - 43
+ 42160U, // 25 - 44
+ 43600U, // 25 - 45
+ 46376U, // 25 - 46
+ 27456U, // 25 - 47
+ 44384U, // 25 - 48
+ 21936U, // 25 - 49
+ 37744U, // 25 - 50
+ 17784U, // 25 - 51
+ 17776U, // 25 - 52
+ 21680U, // 25 - 53
+ 27216U, // 25 - 54
+ 55888U, // 25 - 55
+ 23200U, // 25 - 56
+ 43872U, // 25 - 57
+ 42720U, // 25 - 58
+ 37600U, // 25 - 59
+ 50544U, // 26 - 0
+ 50528U, // 26 - 1
+ 54440U, // 26 - 2
+ 54432U, // 26 - 3
+ 54608U, // 26 - 4
+ 23208U, // 26 - 5
+ 21920U, // 26 - 6
+ 42448U, // 26 - 7
+ 21224U, // 26 - 8
+ 21200U, // 26 - 9
+ 43352U, // 26 - 10
+ 42320U, // 26 - 11
+ 45728U, // 26 - 12
+ 46416U, // 26 - 13
+ 44368U, // 26 - 14
+ 19872U, // 26 - 15
+ 42448U, // 26 - 16
+ 42416U, // 26 - 17
+ 20912U, // 26 - 18
+ 43192U, // 26 - 19
+ 25904U, // 26 - 20
+ 27288U, // 26 - 21
+ 23200U, // 26 - 22
+ 43856U, // 26 - 23
+ 11112U, // 26 - 24
+ 11104U, // 26 - 25
+ 41840U, // 26 - 26
+ 20848U, // 26 - 27
+ 53600U, // 26 - 28
+ 58672U, // 26 - 29
+ 54560U, // 26 - 30
+ 55968U, // 26 - 31
+ 23376U, // 26 - 32
+ 22224U, // 26 - 33
+ 10976U, // 26 - 34
+ 41704U, // 26 - 35
+ 41680U, // 26 - 36
+ 53584U, // 26 - 37
+ 54568U, // 26 - 38
+ 46368U, // 26 - 39
+ 54928U, // 26 - 40
+ 44448U, // 26 - 41
+ 21968U, // 26 - 42
+ 10712U, // 26 - 43
+ 17840U, // 26 - 44
+ 41648U, // 26 - 45
+ 43352U, // 26 - 46
+ 43344U, // 26 - 47
+ 46376U, // 26 - 48
+ 27424U, // 26 - 49
+ 44384U, // 26 - 50
+ 21936U, // 26 - 51
+ 19312U, // 26 - 52
+ 17776U, // 26 - 53
+ 25272U, // 26 - 54
+ 21168U, // 26 - 55
+ 26960U, // 26 - 56
+ 27816U, // 26 - 57
+ 23200U, // 26 - 58
+ 43856U, // 26 - 59
+ 42720U, // 27 - 0
+ 19168U, // 27 - 1
+ 42352U, // 27 - 2
+ 42336U, // 27 - 3
+ 53920U, // 27 - 4
+ 59728U, // 27 - 5
+ 54608U, // 27 - 6
+ 22184U, // 27 - 7
+ 21920U, // 27 - 8
+ 38352U, // 27 - 9
+ 19176U, // 27 - 10
+ 18896U, // 27 - 11
+ 42192U, // 27 - 12
+ 53928U, // 27 - 13
+ 45728U, // 27 - 14
+ 46416U, // 27 - 15
+ 22184U, // 27 - 16
+ 11680U, // 27 - 17
+ 38320U, // 27 - 18
+ 38256U, // 27 - 19
+ 18864U, // 27 - 20
+ 42168U, // 27 - 21
+ 25776U, // 27 - 22
+ 27280U, // 27 - 23
+ 44368U, // 27 - 24
+ 27472U, // 27 - 25
+ 11104U, // 27 - 26
+ 38320U, // 27 - 27
+ 37744U, // 27 - 28
+ 18800U, // 27 - 29
+ 51552U, // 27 - 30
+ 58544U, // 27 - 31
+ 27280U, // 27 - 32
+ 55952U, // 27 - 33
+ 23248U, // 27 - 34
+ 11112U, // 27 - 35
+ 10976U, // 27 - 36
+ 37608U, // 27 - 37
+ 37584U, // 27 - 38
+ 51536U, // 27 - 39
+ 54440U, // 27 - 40
+ 46368U, // 27 - 41
+ 46736U, // 27 - 42
+ 22224U, // 27 - 43
+ 21936U, // 27 - 44
+ 9680U, // 27 - 45
+ 37592U, // 27 - 46
+ 37552U, // 27 - 47
+ 43352U, // 27 - 48
+ 26960U, // 27 - 49
+ 29856U, // 27 - 50
+ 46416U, // 27 - 51
+ 43872U, // 27 - 52
+ 21936U, // 27 - 53
+ 9656U, // 27 - 54
+ 9584U, // 27 - 55
+ 21176U, // 27 - 56
+ 21168U, // 27 - 57
+ 26960U, // 27 - 58
+ 27304U, // 27 - 59
+ 23200U, // 28 - 0
+ 43856U, // 28 - 1
+ 19304U, // 28 - 2
+ 19168U, // 28 - 3
+ 42352U, // 28 - 4
+ 21104U, // 28 - 5
+ 53920U, // 28 - 6
+ 55632U, // 28 - 7
+ 46416U, // 28 - 8
+ 22176U, // 28 - 9
+ 42704U, // 28 - 10
+ 38352U, // 28 - 11
+ 19168U, // 28 - 12
+ 42200U, // 28 - 13
+ 42192U, // 28 - 14
+ 53864U, // 28 - 15
+ 43680U, // 28 - 16
+ 46416U, // 28 - 17
+ 22184U, // 28 - 18
+ 11680U, // 28 - 19
+ 38320U, // 28 - 20
+ 18872U, // 28 - 21
+ 18864U, // 28 - 22
+ 42168U, // 28 - 23
+ 25776U, // 28 - 24
+ 27280U, // 28 - 25
+ 44368U, // 28 - 26
+ 23376U, // 28 - 27
+ 11104U, // 28 - 28
+ 38256U, // 28 - 29
+ 37744U, // 28 - 30
+ 18800U, // 28 - 31
+ 25776U, // 28 - 32
+ 54432U, // 28 - 33
+ 59984U, // 28 - 34
+ 54928U, // 28 - 35
+ 23248U, // 28 - 36
+ 11112U, // 28 - 37
+ 9952U, // 28 - 38
+ 37600U, // 28 - 39
+ 51560U, // 28 - 40
+ 51536U, // 28 - 41
+ 54440U, // 28 - 42
+ 46240U, // 28 - 43
+ 46480U, // 28 - 44
+ 22224U, // 28 - 45
+ 21936U, // 28 - 46
+ 9680U, // 28 - 47
+ 37592U, // 28 - 48
+ 37552U, // 28 - 49
+ 43344U, // 28 - 50
+ 46248U, // 28 - 51
+ 27808U, // 28 - 52
+ 44368U, // 28 - 53
+ 43856U, // 28 - 54
+ 19376U, // 28 - 55
+ 9656U, // 28 - 56
+ 9584U, // 28 - 57
+ 21168U, // 28 - 58
+ 43352U, // 28 - 59
+ 26960U, // 29 - 0
+ 27296U, // 29 - 1
+ 44368U, // 29 - 2
+ 43856U, // 29 - 3
+ 19304U, // 29 - 4
+ 19168U, // 29 - 5
+ 42352U, // 29 - 6
+ 21096U, // 29 - 7
+ 53856U, // 29 - 8
+ 55632U, // 29 - 9
+ 23208U, // 29 - 10
+ 22176U, // 29 - 11
+ 38608U, // 29 - 12
+ 38352U, // 29 - 13
+ 19168U, // 29 - 14
+ 42200U, // 29 - 15
+ 42192U, // 29 - 16
+ 53840U, // 29 - 17
+ 54600U, // 29 - 18
+ 46416U, // 29 - 19
+ 13728U, // 29 - 20
+ 38608U, // 29 - 21
+ 38320U, // 29 - 22
+ 18872U, // 29 - 23
+ 18864U, // 29 - 24
+ 42160U, // 29 - 25
+ 45656U, // 29 - 26
+ 27216U, // 29 - 27
+ 27968U, // 29 - 28
+ 44456U, // 29 - 29
+ 11104U, // 29 - 30
+ 38256U, // 29 - 31
+ 37616U, // 29 - 32
+ 18800U, // 29 - 33
+ 25776U, // 29 - 34
+ 54432U, // 29 - 35
+ 59984U, // 29 - 36
+ 27464U, // 29 - 37
+ 22224U, // 29 - 38
+ 11104U, // 29 - 39
+ 37744U, // 29 - 40
+ 37600U, // 29 - 41
+ 51560U, // 29 - 42
+ 43344U, // 29 - 43
+ 54432U, // 29 - 44
+ 55888U, // 29 - 45
+ 46416U, // 29 - 46
+ 22192U, // 29 - 47
+ 9944U, // 29 - 48
+ 9680U, // 29 - 49
+ 37592U, // 29 - 50
+ 37552U, // 29 - 51
+ 43344U, // 29 - 52
+ 46248U, // 29 - 53
+ 27296U, // 29 - 54
+ 44368U, // 29 - 55
+ 21928U, // 29 - 56
+ 19376U, // 29 - 57
+ 9648U, // 29 - 58
+ 21176U, // 29 - 59
+ 21168U, // 30 - 0
+ 26960U, // 30 - 1
+ 59728U, // 30 - 2
+ 27296U, // 30 - 3
+ 44368U, // 30 - 4
+ 39760U, // 30 - 5
+ 19296U, // 30 - 6
+ 42352U, // 30 - 7
+ 42224U, // 30 - 8
+ 21096U, // 30 - 9
+ 53856U, // 30 - 10
+ 54608U, // 30 - 11
+ 23208U, // 30 - 12
+ 22176U, // 30 - 13
+ 38608U, // 30 - 14
+ 19176U, // 30 - 15
+ 19152U, // 30 - 16
+ 42192U, // 30 - 17
+ 53864U, // 30 - 18
+ 45648U, // 30 - 19
+ 54568U, // 30 - 20
+ 46400U, // 30 - 21
+ 46496U, // 30 - 22
+ 38352U, // 30 - 23
+ 38320U, // 30 - 24
+ 18864U, // 30 - 25
+ 42168U, // 30 - 26
+ 42160U, // 30 - 27
+ 43608U, // 30 - 28
+ 27216U, // 30 - 29
+ 27968U, // 30 - 30
+ 44456U, // 30 - 31
+ 11104U, // 30 - 32
+ 37744U, // 30 - 33
+ 18808U, // 30 - 34
+ 18800U, // 30 - 35
+ 25776U, // 30 - 36
+ 27216U, // 30 - 37
+ 55888U, // 30 - 38
+ 27464U, // 30 - 39
+ 22208U, // 30 - 40
+ 43744U, // 30 - 41
+ 37616U, // 30 - 42
+ 37600U, // 30 - 43
+ 51552U, // 30 - 44
+ 54440U, // 30 - 45
+ 54432U, // 30 - 46
+ 55888U, // 30 - 47
+ 46416U, // 30 - 48
+ 22176U, // 30 - 49
+ 42712U, // 30 - 50
+ 9680U, // 30 - 51
+ 37584U, // 30 - 52
+ 43352U, // 30 - 53
+ 43344U, // 30 - 54
+ 46240U, // 30 - 55
+ 46416U, // 30 - 56
+ 44368U, // 30 - 57
+ 21928U, // 30 - 58
+ 19360U, // 30 - 59
+ 42416U, // 31 - 0
+ 21176U, // 31 - 1
+ 21104U, // 31 - 2
+ 26928U, // 31 - 3
+ 29864U, // 31 - 4
+ 27296U, // 31 - 5
+ 43856U, // 31 - 6
+ 39760U, // 31 - 7
+ 19296U, // 31 - 8
+ 42352U, // 31 - 9
+ 42224U, // 31 - 10
+ 21088U, // 31 - 11
+ 59696U, // 31 - 12
+ 54576U, // 31 - 13
+ 23200U, // 31 - 14
+ 27472U, // 31 - 15
+ 38608U, // 31 - 16
+ 19176U, // 31 - 17
+ 18896U, // 31 - 18
+ 42192U, // 31 - 19
+ 53848U, // 31 - 20
+ 45648U, // 31 - 21
+ 46368U, // 31 - 22
+ 54944U, // 31 - 23
+ 46496U, // 31 - 24
+ 21968U, // 31 - 25
+ 38320U, // 31 - 26
+ 18864U, // 31 - 27
+ 42168U, // 31 - 28
+ 42160U, // 31 - 29
+ 43600U, // 31 - 30
+ 46376U, // 31 - 31
+ 27968U, // 31 - 32
+ 44448U, // 31 - 33
+ 21936U, // 31 - 34
+ 37744U, // 31 - 35
+ 18808U, // 31 - 36
+ 18800U, // 31 - 37
+ 21680U, // 31 - 38
+ 27216U, // 31 - 39
+ 55888U, // 31 - 40
+ 23200U, // 31 - 41
+ 43872U, // 31 - 42
+ 43744U, // 31 - 43
+ 37608U, // 31 - 44
+ 37600U, // 31 - 45
+ 51552U, // 31 - 46
+ 54440U, // 31 - 47
+ 54432U, // 31 - 48
+ 54608U, // 31 - 49
+ 23208U, // 31 - 50
+ 22176U, // 31 - 51
+ 42704U, // 31 - 52
+ 21224U, // 31 - 53
+ 37584U, // 31 - 54
+ 43352U, // 31 - 55
+ 43344U, // 31 - 56
+ 46240U, // 31 - 57
+ 46416U, // 31 - 58
+ 44368U, // 31 - 59
+ 21920U, // 32 - 0
+ 42448U, // 32 - 1
+ 42416U, // 32 - 2
+ 21176U, // 32 - 3
+ 21104U, // 32 - 4
+ 26928U, // 32 - 5
+ 27288U, // 32 - 6
+ 27296U, // 32 - 7
+ 43856U, // 32 - 8
+ 19880U, // 32 - 9
+ 19296U, // 32 - 10
+ 42352U, // 32 - 11
+ 20848U, // 32 - 12
+ 53600U, // 32 - 13
+ 59696U, // 32 - 14
+ 54560U, // 32 - 15
+ 55968U, // 32 - 16
+ 23376U, // 32 - 17
+ 22224U, // 32 - 18
+ 19168U, // 32 - 19
+ 42216U, // 32 - 20
+ 41680U, // 32 - 21
+ 53592U, // 32 - 22
+ 43600U, // 32 - 23
+ 46368U, // 32 - 24
+ 54944U, // 32 - 25
+ 44448U, // 32 - 26
+ 21968U, // 32 - 27
+ 18904U, // 32 - 28
+ 17840U, // 32 - 29
+ 41648U, // 32 - 30
+ 45400U, // 32 - 31
+ 43600U, // 32 - 32
+ 46376U, // 32 - 33
+ 27424U, // 32 - 34
+ 44384U, // 32 - 35
+ 21936U, // 32 - 36
+ 37744U, // 32 - 37
+ 17776U, // 32 - 38
+ 25272U, // 32 - 39
+ 21168U, // 32 - 40
+ 27216U, // 32 - 41
+ 55888U, // 32 - 42
+ 23200U, // 32 - 43
+ 43856U, // 32 - 44
+ 42720U, // 32 - 45
+ 21216U, // 32 - 46
+ 51568U, // 32 - 47
+ 42336U, // 32 - 48
+ 53920U, // 32 - 49
+ 59728U, // 32 - 50
+ 54608U, // 32 - 51
+ 23208U, // 32 - 52
+ 22176U, // 32 - 53
+ 42704U, // 32 - 54
+ 19176U, // 32 - 55
+ 21200U, // 32 - 56
+ 43216U, // 32 - 57
+ 53928U, // 32 - 58
+ 45728U, // 32 - 59
+ 46416U, // 33 - 0
+ 44368U, // 33 - 1
+ 19872U, // 33 - 2
+ 38352U, // 33 - 3
+ 38256U, // 33 - 4
+ 20912U, // 33 - 5
+ 43192U, // 33 - 6
+ 25904U, // 33 - 7
+ 27280U, // 33 - 8
+ 46416U, // 33 - 9
+ 43856U, // 33 - 10
+ 11112U, // 33 - 11
+ 11104U, // 33 - 12
+ 42352U, // 33 - 13
+ 20848U, // 33 - 14
+ 53600U, // 33 - 15
+ 58544U, // 33 - 16
+ 27280U, // 33 - 17
+ 55968U, // 33 - 18
+ 23376U, // 33 - 19
+ 22224U, // 33 - 20
+ 10976U, // 33 - 21
+ 41704U, // 33 - 22
+ 41680U, // 33 - 23
+ 53584U, // 33 - 24
+ 54440U, // 33 - 25
+ 46368U, // 33 - 26
+ 54928U, // 33 - 27
+ 22224U, // 33 - 28
+ 21968U, // 33 - 29
+ 9688U, // 33 - 30
+ 17840U, // 33 - 31
+ 41648U, // 33 - 32
+ 43352U, // 33 - 33
+ 43344U, // 33 - 34
+ 46240U, // 33 - 35
+ 46480U, // 33 - 36
+ 44384U, // 33 - 37
+ 21936U, // 33 - 38
+ 9656U, // 33 - 39
+ 17776U, // 33 - 40
+ 21176U, // 33 - 41
+ 21168U, // 33 - 42
+ 26960U, // 33 - 43
+ 27816U, // 33 - 44
+ 23200U, // 33 - 45
+ 43856U, // 33 - 46
+ 21352U, // 33 - 47
+ 19168U, // 33 - 48
+ 42352U, // 33 - 49
+ 42336U, // 33 - 50
+ 53920U, // 33 - 51
+ 59728U, // 33 - 52
+ 54608U, // 33 - 53
+ 22176U, // 33 - 54
+ 43728U, // 33 - 55
+ 38352U, // 33 - 56
+ 19168U, // 33 - 57
+ 42328U, // 33 - 58
+ 42192U, // 33 - 59
+ 53864U, // 34 - 0
+ 45728U, // 34 - 1
+ 46416U, // 34 - 2
+ 22184U, // 34 - 3
+ 11680U, // 34 - 4
+ 38320U, // 34 - 5
+ 19128U, // 34 - 6
+ 18864U, // 34 - 7
+ 42168U, // 34 - 8
+ 25776U, // 34 - 9
+ 27280U, // 34 - 10
+ 44368U, // 34 - 11
+ 27472U, // 34 - 12
+ 11104U, // 34 - 13
+ 38320U, // 34 - 14
+ 37744U, // 34 - 15
+ 18800U, // 34 - 16
+ 25776U, // 34 - 17
+ 54448U, // 34 - 18
+ 27280U, // 34 - 19
+ 55952U, // 34 - 20
+ 23248U, // 34 - 21
+ 11112U, // 34 - 22
+ 10976U, // 34 - 23
+ 37600U, // 34 - 24
+ 51560U, // 34 - 25
+ 51536U, // 34 - 26
+ 54440U, // 34 - 27
+ 46240U, // 34 - 28
+ 46736U, // 34 - 29
+ 22224U, // 34 - 30
+ 21936U, // 34 - 31
+ 9680U, // 34 - 32
+ 37592U, // 34 - 33
+ 37552U, // 34 - 34
+ 43352U, // 34 - 35
+ 26960U, // 34 - 36
+ 46240U, // 34 - 37
+ 46416U, // 34 - 38
+ 43856U, // 34 - 39
+ 21936U, // 34 - 40
+ 9656U, // 34 - 41
+ 9584U, // 34 - 42
+ 21168U, // 34 - 43
+ 43352U, // 34 - 44
+ 26960U, // 34 - 45
+ 27304U, // 34 - 46
+ 23200U, // 34 - 47
+ 43856U, // 34 - 48
+ 19304U, // 34 - 49
+ 19168U, // 34 - 50
+ 42352U, // 34 - 51
+ 21096U, // 34 - 52
+ 53856U, // 34 - 53
+ 55632U, // 34 - 54
+ 46416U, // 34 - 55
+ 22176U, // 34 - 56
+ 39632U, // 34 - 57
+ 38352U, // 34 - 58
+ 19168U, // 34 - 59
+ 42200U, // 35 - 0
+ 42192U, // 35 - 1
+ 53840U, // 35 - 2
+ 54600U, // 35 - 3
+ 46416U, // 35 - 4
+ 22184U, // 35 - 5
+ 11680U, // 35 - 6
+ 38320U, // 35 - 7
+ 18872U, // 35 - 8
+ 18864U, // 35 - 9
+ 42160U, // 35 - 10
+ 45656U, // 35 - 11
+ 27216U, // 35 - 12
+ 44360U, // 35 - 13
+ 23376U, // 35 - 14
+ 11104U, // 35 - 15
+ 38256U, // 35 - 16
+ 37744U, // 35 - 17
+ 18800U, // 35 - 18
+ 25776U, // 35 - 19
+ 54432U, // 35 - 20
+ 59984U, // 35 - 21
+ 27464U, // 35 - 22
+ 23248U, // 35 - 23
+ 11112U, // 35 - 24
+ 9952U, // 35 - 25
+ 37600U, // 35 - 26
+ 51560U, // 35 - 27
+ 51536U, // 35 - 28
+ 54432U, // 35 - 29
+ 55888U, // 35 - 30
+ 46416U, // 35 - 31
+ 22192U, // 35 - 32
+ 10968U, // 35 - 33
+ 9680U, // 35 - 34
+ 37592U, // 35 - 35
+ 37552U, // 35 - 36
+ 43344U, // 35 - 37
+ 46248U, // 35 - 38
+ 27808U, // 35 - 39
+ 44368U, // 35 - 40
+ 21928U, // 35 - 41
+ 19376U, // 35 - 42
+ 9648U, // 35 - 43
+ 42352U, // 35 - 44
+ 21168U, // 35 - 45
+ 43344U, // 35 - 46
+ 59728U, // 35 - 47
+ 27296U, // 35 - 48
+ 44368U, // 35 - 49
+ 43856U, // 35 - 50
+ 19296U, // 35 - 51
+ 42352U, // 35 - 52
+ 42352U, // 35 - 53
+ 21096U, // 35 - 54
+ 53856U, // 35 - 55
+ 55632U, // 35 - 56
+ 23208U, // 35 - 57
+ 22176U, // 35 - 58
+ 38608U, // 35 - 59
+ 19176U, // 36 - 0
+ 19168U, // 36 - 1
+ 42200U, // 36 - 2
+ 42192U, // 36 - 3
+ 53840U, // 36 - 4
+ 54568U, // 36 - 5
+ 46400U, // 36 - 6
+ 46752U, // 36 - 7
+ 38608U, // 36 - 8
+ 38320U, // 36 - 9
+ 18864U, // 36 - 10
+ 42168U, // 36 - 11
+ 42160U, // 36 - 12
+ 45656U, // 36 - 13
+ 27216U, // 36 - 14
+ 27968U, // 36 - 15
+ 44456U, // 36 - 16
+ 11104U, // 36 - 17
+ 38256U, // 36 - 18
+ 18808U, // 36 - 19
+ 18800U, // 36 - 20
+ 25776U, // 36 - 21
+ 54432U, // 36 - 22
+ 59984U, // 36 - 23
+ 27464U, // 36 - 24
+ 22224U, // 36 - 25
+ 11104U, // 36 - 26
+ 37744U, // 36 - 27
+ 37600U, // 36 - 28
+ 51552U, // 36 - 29
+ 54440U, // 36 - 30
+ 54432U, // 36 - 31
+ 55888U, // 36 - 32
+ 46416U, // 36 - 33
+ 22176U, // 36 - 34
+ 42712U, // 36 - 35
+ 9680U, // 36 - 36
+ 37584U, // 36 - 37
+ 51544U, // 36 - 38
+ 43344U, // 36 - 39
+ 46248U, // 36 - 40
+ 27296U, // 36 - 41
+ 44368U, // 36 - 42
+ 21928U, // 36 - 43
+ 19360U, // 36 - 44
+ 42416U, // 36 - 45
+ 21176U, // 36 - 46
+ 21168U, // 36 - 47
+ 26928U, // 36 - 48
+ 29864U, // 36 - 49
+ 27296U, // 36 - 50
+ 44368U, // 36 - 51
+ 39760U, // 36 - 52
+ 19296U, // 36 - 53
+ 42352U, // 36 - 54
+ 42224U, // 36 - 55
+ 21088U, // 36 - 56
+ 59696U, // 36 - 57
+ 54576U, // 36 - 58
+ 23208U, // 36 - 59
+ 22176U, // 37 - 0
+ 38608U, // 37 - 1
+ 19176U, // 37 - 2
+ 19152U, // 37 - 3
+ 42192U, // 37 - 4
+ 53864U, // 37 - 5
+ 45648U, // 37 - 6
+ 54560U, // 37 - 7
+ 55968U, // 37 - 8
+ 46496U, // 37 - 9
+ 38352U, // 37 - 10
+ 38320U, // 37 - 11
+ 18864U, // 37 - 12
+ 42168U, // 37 - 13
+ 42160U, // 37 - 14
+ 43600U, // 37 - 15
+ 46376U, // 37 - 16
+ 27968U, // 37 - 17
+ 44448U, // 37 - 18
+ 43872U, // 37 - 19
+ 37744U, // 37 - 20
+ 18808U, // 37 - 21
+ 18800U, // 37 - 22
+ 25776U, // 37 - 23
+ 27216U, // 37 - 24
+ 55888U, // 37 - 25
+ 27424U, // 37 - 26
+ 43872U, // 37 - 27
+ 43744U, // 37 - 28
+ 37608U, // 37 - 29
+ 37600U, // 37 - 30
+ 51552U, // 37 - 31
+ 54440U, // 37 - 32
+ 54432U, // 37 - 33
+ 55888U, // 37 - 34
+ 23208U, // 37 - 35
+ 22176U, // 37 - 36
+ 42704U, // 37 - 37
+ 42448U, // 37 - 38
+ 37584U, // 37 - 39
+ 43352U, // 37 - 40
+ 43344U, // 37 - 41
+ 46240U, // 37 - 42
+ 46416U, // 37 - 43
+ 44368U, // 37 - 44
+ 21920U, // 37 - 45
+ 42448U, // 37 - 46
+ 42416U, // 37 - 47
+ 21176U, // 37 - 48
+ 21104U, // 37 - 49
+ 26928U, // 37 - 50
+ 29864U, // 37 - 51
+ 27296U, // 37 - 52
+ 44368U, // 37 - 53
+ 19880U, // 37 - 54
+ 19296U, // 37 - 55
+ 42352U, // 37 - 56
+ 42208U, // 37 - 57
+ 53856U, // 37 - 58
+ 59696U, // 37 - 59
+ 54560U, // 38 - 0
+ 55968U, // 38 - 1
+ 23376U, // 38 - 2
+ 22224U, // 38 - 3
+ 19168U, // 38 - 4
+ 42216U, // 38 - 5
+ 42192U, // 38 - 6
+ 53848U, // 38 - 7
+ 43600U, // 38 - 8
+ 46368U, // 38 - 9
+ 54944U, // 38 - 10
+ 46496U, // 38 - 11
+ 21968U, // 38 - 12
+ 19160U, // 38 - 13
+ 18864U, // 38 - 14
+ 42168U, // 38 - 15
+ 42160U, // 38 - 16
+ 43600U, // 38 - 17
+ 46376U, // 38 - 18
+ 27936U, // 38 - 19
+ 44384U, // 38 - 20
+ 21936U, // 38 - 21
+ 37744U, // 38 - 22
+ 18800U, // 38 - 23
+ 42168U, // 38 - 24
+ 25776U, // 38 - 25
+ 27216U, // 38 - 26
+ 55888U, // 38 - 27
+ 23200U, // 38 - 28
+ 43856U, // 38 - 29
+ 43744U, // 38 - 30
+ 21216U, // 38 - 31
+ 51568U, // 38 - 32
+ 51552U, // 38 - 33
+ 54440U, // 38 - 34
+ 54432U, // 38 - 35
+ 54608U, // 38 - 36
+ 23208U, // 38 - 37
+ 22176U, // 38 - 38
+ 42704U, // 38 - 39
+ 21224U, // 38 - 40
+ 21200U, // 38 - 41
+ 43344U, // 38 - 42
+ 54440U, // 38 - 43
+ 45728U, // 38 - 44
+ 46416U, // 38 - 45
+ 44368U, // 38 - 46
+ 19872U, // 38 - 47
+ 42448U, // 38 - 48
+ 42416U, // 38 - 49
+ 21168U, // 38 - 50
+ 43192U, // 38 - 51
+ 26928U, // 38 - 52
+ 27288U, // 38 - 53
+ 27296U, // 38 - 54
+ 43856U, // 38 - 55
+ 19880U, // 38 - 56
+ 19296U, // 38 - 57
+ 42352U, // 38 - 58
+ 20848U, // 38 - 59
+ 53600U, // 39 - 0
+ 59696U, // 39 - 1
+ 27280U, // 39 - 2
+ 55968U, // 39 - 3
+ 23376U, // 39 - 4
+ 22224U, // 39 - 5
+ 19168U, // 39 - 6
+ 42216U, // 39 - 7
+ 41680U, // 39 - 8
+ 53584U, // 39 - 9
+ 54440U, // 39 - 10
+ 46368U, // 39 - 11
+ 54928U, // 39 - 12
+ 44448U, // 39 - 13
+ 21968U, // 39 - 14
+ 10968U, // 39 - 15
+ 17840U, // 39 - 16
+ 41648U, // 39 - 17
+ 45400U, // 39 - 18
+ 43344U, // 39 - 19
+ 46368U, // 39 - 20
+ 46480U, // 39 - 21
+ 44384U, // 39 - 22
+ 21936U, // 39 - 23
+ 21360U, // 39 - 24
+ 17776U, // 39 - 25
+ 25272U, // 39 - 26
+ 21168U, // 39 - 27
+ 26960U, // 39 - 28
+ 27816U, // 39 - 29
+ 23200U, // 39 - 30
+ 43856U, // 39 - 31
+ 42704U, // 39 - 32
+ 19168U, // 39 - 33
+ 42352U, // 39 - 34
+ 42336U, // 39 - 35
+ 53920U, // 39 - 36
+ 59728U, // 39 - 37
+ 54608U, // 39 - 38
+ 23200U, // 39 - 39
+ 43856U, // 39 - 40
+ 42704U, // 39 - 41
+ 19176U, // 39 - 42
+ 19120U, // 39 - 43
+ 43216U, // 39 - 44
+ 53864U, // 39 - 45
+ 45728U, // 39 - 46
+ 46416U, // 39 - 47
+ 22184U, // 39 - 48
+ 19872U, // 39 - 49
+ 38320U, // 39 - 50
+ 19128U, // 39 - 51
+ 18864U, // 39 - 52
+ 43192U, // 39 - 53
+ 25776U, // 39 - 54
+ 27280U, // 39 - 55
+ 46416U, // 39 - 56
+ 27472U, // 39 - 57
+ 11168U, // 39 - 58
+ 38320U, // 39 - 59
+ 37744U, // 40 - 0
+ 20848U, // 40 - 1
+ 53600U, // 40 - 2
+ 58544U, // 40 - 3
+ 27280U, // 40 - 4
+ 55952U, // 40 - 5
+ 23376U, // 40 - 6
+ 11112U, // 40 - 7
+ 10976U, // 40 - 8
+ 37600U, // 40 - 9
+ 53608U, // 40 - 10
+ 51536U, // 40 - 11
+ 54440U, // 40 - 12
+ 46240U, // 40 - 13
+ 46736U, // 40 - 14
+ 22224U, // 40 - 15
+ 21936U, // 40 - 16
+ 9680U, // 40 - 17
+ 41688U, // 40 - 18
+ 37552U, // 40 - 19
+ 43352U, // 40 - 20
+ 43344U, // 40 - 21
+ 46240U, // 40 - 22
+ 46416U, // 40 - 23
+ 44368U, // 40 - 24
+ 21936U, // 40 - 25
+ 9656U, // 40 - 26
+ 9584U, // 40 - 27
+ 21176U, // 40 - 28
+ 21168U, // 40 - 29
+ 26960U, // 40 - 30
+ 27816U, // 40 - 31
+ 23200U, // 40 - 32
+ 43856U, // 40 - 33
+ 21352U, // 40 - 34
+ 19168U, // 40 - 35
+ 42352U, // 40 - 36
+ 21168U, // 40 - 37
+ 53856U, // 40 - 38
+ 59728U, // 40 - 39
+ 54608U, // 40 - 40
+ 23200U, // 40 - 41
+ 43728U, // 40 - 42
+ 38352U, // 40 - 43
+ 19168U, // 40 - 44
+ 42200U, // 40 - 45
+ 42192U, // 40 - 46
+ 53848U, // 40 - 47
+ 45712U, // 40 - 48
+ 46416U, // 40 - 49
+ 22184U, // 40 - 50
+ 11680U, // 40 - 51
+ 38320U, // 40 - 52
+ 19128U, // 40 - 53
+ 18864U, // 40 - 54
+ 42160U, // 40 - 55
+ 45656U, // 40 - 56
+ 27216U, // 40 - 57
+ 44360U, // 40 - 58
+ 27472U, // 40 - 59
+ 11104U, // 41 - 0
+ 38320U, // 41 - 1
+ 37744U, // 41 - 2
+ 18800U, // 41 - 3
+ 25776U, // 41 - 4
+ 54432U, // 41 - 5
+ 59984U, // 41 - 6
+ 55952U, // 41 - 7
+ 23248U, // 41 - 8
+ 11112U, // 41 - 9
+ 10976U, // 41 - 10
+ 37600U, // 41 - 11
+ 51560U, // 41 - 12
+ 51536U, // 41 - 13
+ 54432U, // 41 - 14
+ 55888U, // 41 - 15
+ 46672U, // 41 - 16
+ 22224U, // 41 - 17
+ 21936U, // 41 - 18
+ 9680U, // 41 - 19
+ 37592U, // 41 - 20
+ 37552U, // 41 - 21
+ 43344U, // 41 - 22
+ 46248U, // 41 - 23
+ 46240U, // 41 - 24
+ 46416U, // 41 - 25
+ 22184U, // 41 - 26
+ 21936U, // 41 - 27
+ 9656U, // 41 - 28
+ 9584U, // 41 - 29
+ 21168U, // 41 - 30
+ 43344U, // 41 - 31
+ 59728U, // 41 - 32
+ 27296U, // 41 - 33
+ 44368U, // 41 - 34
+ 43856U, // 41 - 35
+ 19304U, // 41 - 36
+ 19168U, // 41 - 37
+ 42352U, // 41 - 38
+ 21096U, // 41 - 39
+ 53856U, // 41 - 40
+ 55632U, // 41 - 41
+ 23208U, // 41 - 42
+ 22176U, // 41 - 43
+ 39632U, // 41 - 44
+ 19176U, // 41 - 45
+ 19168U, // 41 - 46
+ 42200U, // 41 - 47
+ 42192U, // 41 - 48
+ 53840U, // 41 - 49
+ 54568U, // 41 - 50
+ 46400U, // 41 - 51
+ 54944U, // 41 - 52
+ 38608U, // 41 - 53
+ 38320U, // 41 - 54
+ 18872U, // 41 - 55
+ 18800U, // 41 - 56
+ 42160U, // 41 - 57
+ 45656U, // 41 - 58
+ 27216U, // 41 - 59
+ 27968U, // 42 - 0
+ 44456U, // 42 - 1
+ 11104U, // 42 - 2
+ 38256U, // 42 - 3
+ 18808U, // 42 - 4
+ 18800U, // 42 - 5
+ 25776U, // 42 - 6
+ 54432U, // 42 - 7
+ 59984U, // 42 - 8
+ 27976U, // 42 - 9
+ 23248U, // 42 - 10
+ 11104U, // 42 - 11
+ 37744U, // 42 - 12
+ 37600U, // 42 - 13
+ 51560U, // 42 - 14
+ 51536U, // 42 - 15
+ 54432U, // 42 - 16
+ 55888U, // 42 - 17
+ 46416U, // 42 - 18
+ 22176U, // 42 - 19
+ 43736U, // 42 - 20
+ 9680U, // 42 - 21
+ 37584U, // 42 - 22
+ 51544U, // 42 - 23
+ 43344U, // 42 - 24
+ 46248U, // 42 - 25
+ 27808U, // 42 - 26
+ 46416U, // 42 - 27
+ 21928U, // 42 - 28
+ 19872U, // 42 - 29
+ 42416U, // 42 - 30
+ 21176U, // 42 - 31
+ 21168U, // 42 - 32
+ 43344U, // 42 - 33
+ 59728U, // 42 - 34
+ 27296U, // 42 - 35
+ 44368U, // 42 - 36
+ 43856U, // 42 - 37
+ 19296U, // 42 - 38
+ 42352U, // 42 - 39
+ 42352U, // 42 - 40
+ 21088U, // 42 - 41
+ 59696U, // 42 - 42
+ 55632U, // 42 - 43
+ 23208U, // 42 - 44
+ 22176U, // 42 - 45
+ 38608U, // 42 - 46
+ 19176U, // 42 - 47
+ 19152U, // 42 - 48
+ 42192U, // 42 - 49
+ 53864U, // 42 - 50
+ 53840U, // 42 - 51
+ 54568U, // 42 - 52
+ 46400U, // 42 - 53
+ 46752U, // 42 - 54
+ 38608U, // 42 - 55
+ 38320U, // 42 - 56
+ 18864U, // 42 - 57
+ 42168U, // 42 - 58
+ 42160U, // 42 - 59
+ 45656U, // 43 - 0
+ 27216U, // 43 - 1
+ 27968U, // 43 - 2
+ 44448U, // 43 - 3
+ 43872U, // 43 - 4
+ 38256U, // 43 - 5
+ 18808U, // 43 - 6
+ 18800U, // 43 - 7
+ 25776U, // 43 - 8
+ 27216U, // 43 - 9
+ 59984U, // 43 - 10
+ 27432U, // 43 - 11
+ 23232U, // 43 - 12
+ 43872U, // 43 - 13
+ 37736U, // 43 - 14
+ 37600U, // 43 - 15
+ 51552U, // 43 - 16
+ 54440U, // 43 - 17
+ 54432U, // 43 - 18
+ 55888U, // 43 - 19
+ 23208U, // 43 - 20
+ 22176U, // 43 - 21
+ 43736U, // 43 - 22
+ 9680U, // 43 - 23
+ 37584U, // 43 - 24
+ 51544U, // 43 - 25
+ 43344U, // 43 - 26
+ 46240U, // 43 - 27
+ 46416U, // 43 - 28
+ 44368U, // 43 - 29
+ 21928U, // 43 - 30
+ 19360U, // 43 - 31
+ 42416U, // 43 - 32
+ 21176U, // 43 - 33
+ 21168U, // 43 - 34
+ 43312U, // 43 - 35
+ 29864U, // 43 - 36
+ 27296U, // 43 - 37
+ 44368U, // 43 - 38
+ 19880U, // 43 - 39
+ 19296U, // 43 - 40
+ 42352U, // 43 - 41
+ 42208U, // 43 - 42
+ 53856U, // 43 - 43
+ 59696U, // 43 - 44
+ 54576U, // 43 - 45
+ 23200U, // 43 - 46
+ 27472U, // 43 - 47
+ 38608U, // 43 - 48
+ 19176U, // 43 - 49
+ 19152U, // 43 - 50
+ 42192U, // 43 - 51
+ 53848U, // 43 - 52
+ 53840U, // 43 - 53
+ 54560U, // 43 - 54
+ 55968U, // 43 - 55
+ 46496U, // 43 - 56
+ 22224U, // 43 - 57
+ 19160U, // 43 - 58
+ 18864U, // 43 - 59
+ 42168U, // 44 - 0
+ 42160U, // 44 - 1
+ 43600U, // 44 - 2
+ 46376U, // 44 - 3
+ 27936U, // 44 - 4
+ 44448U, // 44 - 5
+ 21936U, // 44 - 6
+ 37744U, // 44 - 7
+ 18808U, // 44 - 8
+ 18800U, // 44 - 9
+ 25776U, // 44 - 10
+ 27216U, // 44 - 11
+ 59984U, // 44 - 12
+ 27296U, // 44 - 13
+ 43872U, // 44 - 14
+ 43744U, // 44 - 15
+ 37600U, // 44 - 16
+ 51568U, // 44 - 17
+ 51552U, // 44 - 18
+ 54440U, // 44 - 19
+ 54432U, // 44 - 20
+ 55888U, // 44 - 21
+ 23208U, // 44 - 22
+ 22176U, // 44 - 23
+ 42704U, // 44 - 24
+ 21224U, // 44 - 25
+ 21200U, // 44 - 26
+ 43352U, // 44 - 27
+ 43344U, // 44 - 28
+ 46240U, // 44 - 29
+ 46416U, // 44 - 30
+ 44368U, // 44 - 31
+ 21920U, // 44 - 32
+ 42448U, // 44 - 33
+ 42416U, // 44 - 34
+ 21168U, // 44 - 35
+ 43320U, // 44 - 36
+ 26928U, // 44 - 37
+ 29336U, // 44 - 38
+ 27296U, // 44 - 39
+ 44368U, // 44 - 40
+ 19880U, // 44 - 41
+ 19296U, // 44 - 42
+ 42352U, // 44 - 43
+ 21104U, // 44 - 44
+ 53600U, // 44 - 45
+ 59696U, // 44 - 46
+ 54560U, // 44 - 47
+ 55968U, // 44 - 48
+ 27472U, // 44 - 49
+ 22224U, // 44 - 50
+ 19168U, // 44 - 51
+ 42216U, // 44 - 52
+ 41680U, // 44 - 53
+ 53584U, // 44 - 54
+ 55592U, // 44 - 55
+};
+const TUint32 TCalconData::iCalConDataYear[]={
+ 1506335U, // 0 - 8
+ 1612119426U, // 0 - 9
+ 1507074U, // 0 - 10
+ 1507428U, // 0 - 11
+ 1075249607U, // 0 - 12
+ 1508167U, // 0 - 13
+ 1508521U, // 0 - 14
+ 538379787U, // 0 - 15
+ 1509259U, // 0 - 16
+ 1612122349U, // 0 - 17
+ 1509997U, // 0 - 18
+ 1510352U, // 0 - 19
+ 1343687986U, // 0 - 20
+ 1511090U, // 0 - 21
+ 1511444U, // 0 - 22
+ 806818166U, // 0 - 23
+ 1512182U, // 0 - 24
+ 3222738008U, // 0 - 25
+ 1512920U, // 0 - 26
+ 1513275U, // 0 - 27
+ 1343690910U, // 0 - 28
+ 1514014U, // 0 - 29
+ 1514368U, // 0 - 30
+ 1075256546U, // 0 - 31
+ 1515106U, // 0 - 32
+ 1515460U, // 0 - 33
+ 538386726U, // 0 - 34
+ 1516198U, // 0 - 35
+ 1880564745U, // 0 - 36
+ 1516937U, // 0 - 37
+ 1517292U, // 0 - 38
+ 1343694926U, // 0 - 39
+ 1518030U, // 0 - 40
+ 1518384U, // 0 - 41
+ 1075260562U, // 0 - 42
+ 1519122U, // 0 - 43
+ 3491180404U, // 0 - 44
+ 1519860U, // 0 - 45
+ 1520215U, // 0 - 46
+ 1343697850U, // 0 - 47
+ 1520953U, // 0 - 48
+ 1521307U, // 0 - 49
+ 1075263485U, // 0 - 50
+ 1522045U, // 0 - 51
+ 1522400U, // 0 - 52
+ 538393666U, // 0 - 53
+ 1523138U, // 0 - 54
+ 1612136229U, // 0 - 55
+ 1523877U, // 0 - 56
+ 1524231U, // 0 - 57
+ 1343701865U, // 0 - 58
+ 1524969U, // 0 - 59
+ 1525323U, // 1 - 0
+ 806832046U, // 1 - 1
+ 1526062U, // 1 - 2
+ 3491187344U, // 1 - 3
+ 1526800U, // 1 - 4
+ 1527155U, // 1 - 5
+ 1612140245U, // 1 - 6
+ 1527893U, // 1 - 7
+ 1528247U, // 1 - 8
+ 1075270425U, // 1 - 9
+ 1528985U, // 1 - 10
+ 1529340U, // 1 - 11
+ 538400606U, // 1 - 12
+ 1530078U, // 1 - 13
+ 1880578625U, // 1 - 14
+ 1530817U, // 1 - 15
+ 1531171U, // 1 - 16
+ 1343708805U, // 1 - 17
+ 1531908U, // 1 - 18
+ 1532263U, // 1 - 19
+ 806838986U, // 1 - 20
+ 1533002U, // 1 - 21
+ 3491194284U, // 1 - 22
+ 1533740U, // 1 - 23
+ 1534094U, // 1 - 24
+ 1612147184U, // 1 - 25
+ 1534832U, // 1 - 26
+ 1535186U, // 1 - 27
+ 1075277365U, // 1 - 28
+ 1535925U, // 1 - 29
+ 1536280U, // 1 - 30
+ 806843002U, // 1 - 31
+ 1537018U, // 1 - 32
+ 1880585564U, // 1 - 33
+ 1537756U, // 1 - 34
+ 1538110U, // 1 - 35
+ 1343715744U, // 1 - 36
+ 1538848U, // 1 - 37
+ 1539203U, // 1 - 38
+ 1075281382U, // 1 - 39
+ 1539942U, // 1 - 40
+ 1540296U, // 1 - 41
+ 538411562U, // 1 - 42
+ 1541034U, // 1 - 43
+ 1612154124U, // 1 - 44
+ 1541772U, // 1 - 45
+ 1542126U, // 1 - 46
+ 1075284305U, // 1 - 47
+ 1542865U, // 1 - 48
+ 1543219U, // 1 - 49
+ 806849942U, // 1 - 50
+ 1543957U, // 1 - 51
+ 1880592503U, // 1 - 52
+ 1544695U, // 1 - 53
+ 1545050U, // 1 - 54
+ 1343722684U, // 1 - 55
+ 1545788U, // 1 - 56
+ 1546143U, // 1 - 57
+ 1075288321U, // 1 - 58
+ 1546881U, // 1 - 59
+ 3222772707U, // 2 - 0
+ 1547619U, // 2 - 1
+ 1547973U, // 2 - 2
+ 1612161064U, // 2 - 3
+ 1548712U, // 2 - 4
+ 1549066U, // 2 - 5
+ 1075291245U, // 2 - 6
+ 1549805U, // 2 - 7
+ 1550159U, // 2 - 8
+ 806856881U, // 2 - 9
+ 1550897U, // 2 - 10
+ 1880599443U, // 2 - 11
+ 1551635U, // 2 - 12
+ 1551990U, // 2 - 13
+ 1343729624U, // 2 - 14
+ 1552728U, // 2 - 15
+ 1553083U, // 2 - 16
+ 1075295261U, // 2 - 17
+ 1553821U, // 2 - 18
+ 2417473279U, // 2 - 19
+ 1554558U, // 2 - 20
+ 1554913U, // 2 - 21
+ 1612168004U, // 2 - 22
+ 1555652U, // 2 - 23
+ 1556006U, // 2 - 24
+ 1075298185U, // 2 - 25
+ 1556744U, // 2 - 26
+ 1557098U, // 2 - 27
+ 806863820U, // 2 - 28
+ 1557836U, // 2 - 29
+ 2149041839U, // 2 - 30
+ 1558575U, // 2 - 31
+ 1558930U, // 2 - 32
+ 1343736564U, // 2 - 33
+ 1559668U, // 2 - 34
+ 1560022U, // 2 - 35
+ 1075302200U, // 2 - 36
+ 1560760U, // 2 - 37
+ 3491222042U, // 2 - 38
+ 1561498U, // 2 - 39
+ 1561853U, // 2 - 40
+ 1612174944U, // 2 - 41
+ 1562592U, // 2 - 42
+ 1562946U, // 2 - 43
+ 1343740580U, // 2 - 44
+ 1563684U, // 2 - 45
+ 1564038U, // 2 - 46
+ 538435304U, // 2 - 47
+ 1564776U, // 2 - 48
+ 1880613323U, // 2 - 49
+ 1565515U, // 2 - 50
+ 1565869U, // 2 - 51
+ 1343743504U, // 2 - 52
+ 1566607U, // 2 - 53
+ 1566961U, // 2 - 54
+ 1075309140U, // 2 - 55
+ 1567700U, // 2 - 56
+ 3491228982U, // 2 - 57
+ 1568438U, // 2 - 58
+ 1568793U, // 2 - 59
+ 1612181883U, // 3 - 0
+ 1569531U, // 3 - 1
+ 1569885U, // 3 - 2
+ 1343747519U, // 3 - 3
+ 1570623U, // 3 - 4
+ 1570978U, // 3 - 5
+ 806877700U, // 3 - 6
+ 1571716U, // 3 - 7
+ 1880620263U, // 3 - 8
+ 1572455U, // 3 - 9
+ 1572809U, // 3 - 10
+ 1612185899U, // 3 - 11
+ 1573547U, // 3 - 12
+ 1573901U, // 3 - 13
+ 1075316079U, // 3 - 14
+ 1574640U, // 3 - 15
+ 1574994U, // 3 - 16
+ 538446261U, // 3 - 17
+ 1575733U, // 3 - 18
+ 1612188823U, // 3 - 19
+ 1576471U, // 3 - 20
+ 1576825U, // 3 - 21
+ 1075319003U, // 3 - 22
+ 1577563U, // 3 - 23
+ 1577918U, // 3 - 24
+ 806884640U, // 3 - 25
+ 1578656U, // 3 - 26
+ 1880627203U, // 3 - 27
+ 1579394U, // 3 - 28
+ 1579748U, // 3 - 29
+ 1612192838U, // 3 - 30
+ 1580486U, // 3 - 31
+ 1580841U, // 3 - 32
+ 1075323020U, // 3 - 33
+ 1581580U, // 3 - 34
+ 1581934U, // 3 - 35
+ 806888656U, // 3 - 36
+ 1582672U, // 3 - 37
+ 1880631218U, // 3 - 38
+ 1583410U, // 3 - 39
+ 1583764U, // 3 - 40
+ 1343761399U, // 3 - 41
+ 1584503U, // 3 - 42
+ 1584858U, // 3 - 43
+ 806891580U, // 3 - 44
+ 1585596U, // 3 - 45
+ 1880634142U, // 3 - 46
+ 1586334U, // 3 - 47
+ 1586688U, // 3 - 48
+ 1343764322U, // 3 - 49
+ 1587426U, // 3 - 50
+ 1587781U, // 3 - 51
+ 1075329959U, // 3 - 52
+ 1588519U, // 3 - 53
+ 1588874U, // 3 - 54
+ 538460140U, // 3 - 55
+ 1589611U, // 3 - 56
+ 1612202702U, // 3 - 57
+ 1590350U, // 3 - 58
+ 1590704U, // 3 - 59
+ 1075332883U, // 4 - 0
+ 1591443U, // 4 - 1
+ 1591797U, // 4 - 2
+ 806898519U, // 4 - 3
+ 1592535U, // 4 - 4
+ 1880641081U, // 4 - 5
+ 1593273U, // 4 - 6
+ 1593628U, // 4 - 7
+ 1343771262U, // 4 - 8
+ 1594366U, // 4 - 9
+ 1594721U, // 4 - 10
+ 1075336899U, // 4 - 11
+ 1595459U, // 4 - 12
+ 1595813U, // 4 - 13
+ 538467079U, // 4 - 14
+ 1596551U, // 4 - 15
+ 1880645097U, // 4 - 16
+ 1597290U, // 4 - 17
+ 1597644U, // 4 - 18
+ 1343775279U, // 4 - 19
+ 1598383U, // 4 - 20
+ 1598737U, // 4 - 21
+ 806905459U, // 4 - 22
+ 1599475U, // 4 - 23
+ 2417518933U, // 4 - 24
+ 1600213U, // 4 - 25
+ 1600567U, // 4 - 26
+ 1343778202U, // 4 - 27
+ 1601306U, // 4 - 28
+ 1601661U, // 4 - 29
+ 1075343839U, // 4 - 30
+ 1602398U, // 4 - 31
+ 3491263680U, // 4 - 32
+ 1603136U, // 4 - 33
+ 1603491U, // 4 - 34
+ 1612216581U, // 4 - 35
+ 1604230U, // 4 - 36
+ 1604584U, // 4 - 37
+ 1343782218U, // 4 - 38
+ 1605322U, // 4 - 39
+ 1605676U, // 4 - 40
+ 806912398U, // 4 - 41
+ 1606414U, // 4 - 42
+ 1880654961U, // 4 - 43
+ 1607153U, // 4 - 44
+ 1607507U, // 4 - 45
+ 1612220598U, // 4 - 46
+ 1608246U, // 4 - 47
+ 1608600U, // 4 - 48
+ 1075350778U, // 4 - 49
+ 1609338U, // 4 - 50
+ 1609692U, // 4 - 51
+ 538480959U, // 4 - 52
+ 1610431U, // 4 - 53
+ 1612223521U, // 4 - 54
+ 1611169U, // 4 - 55
+ 1611524U, // 4 - 56
+ 1343789158U, // 4 - 57
+ 1612261U, // 4 - 58
+ 1612616U, // 4 - 59
+ 806919338U, // 5 - 0
+ 1613354U, // 5 - 1
+ 3222839181U, // 5 - 2
+ 1614093U, // 5 - 3
+ 1614447U, // 5 - 4
+ 1612227537U, // 5 - 5
+ 1615185U, // 5 - 6
+ 1615539U, // 5 - 7
+ 1075357717U, // 5 - 8
+ 1616277U, // 5 - 9
+ 1616632U, // 5 - 10
+ 806923355U, // 5 - 11
+ 1617371U, // 5 - 12
+ 1612230461U, // 5 - 13
+ 1618109U, // 5 - 14
+ 1618463U, // 5 - 15
+ 1343796097U, // 5 - 16
+ 1619201U, // 5 - 17
+ 1619555U, // 5 - 18
+ 806926278U, // 5 - 19
+ 1620294U, // 5 - 20
+ 1880668841U, // 5 - 21
+ 1621033U, // 5 - 22
+ 1621387U, // 5 - 23
+ 1612234477U, // 5 - 24
+ 1622125U, // 5 - 25
+ 1622479U, // 5 - 26
+ 1075364657U, // 5 - 27
+ 1623217U, // 5 - 28
+ 1623572U, // 5 - 29
+ 806930295U, // 5 - 30
+ 1624310U, // 5 - 31
+ 1612237401U, // 5 - 32
+ 1625048U, // 5 - 33
+ 1625402U, // 5 - 34
+ 1343803037U, // 5 - 35
+ 1626141U, // 5 - 36
+ 1626495U, // 5 - 37
+ 806933218U, // 5 - 38
+ 1627234U, // 5 - 39
+ 3222853060U, // 5 - 40
+ 1627972U, // 5 - 41
+ 1628326U, // 5 - 42
+ 1612241416U, // 5 - 43
+ 1629064U, // 5 - 44
+ 1629419U, // 5 - 45
+ 1075371597U, // 5 - 46
+ 1630157U, // 5 - 47
+ 1630512U, // 5 - 48
+ 538501778U, // 5 - 49
+ 1631250U, // 5 - 50
+ 1880679796U, // 5 - 51
+ 1631988U, // 5 - 52
+ 1632342U, // 5 - 53
+ 1343809977U, // 5 - 54
+ 1633081U, // 5 - 55
+ 1633435U, // 5 - 56
+ 806940158U, // 5 - 57
+ 1634174U, // 5 - 58
+ 2417553632U, // 5 - 59
+ 1634911U, // 6 - 0
+ 1635266U, // 6 - 1
+ 1612248356U, // 6 - 2
+ 1636004U, // 6 - 3
+ 1636359U, // 6 - 4
+ 1075378537U, // 6 - 5
+ 1637097U, // 6 - 6
+ 1637451U, // 6 - 7
+ 806944173U, // 6 - 8
+ 1638189U, // 6 - 9
+ 1880686735U, // 6 - 10
+ 1638927U, // 6 - 11
+ 1639282U, // 6 - 12
+ 1343816917U, // 6 - 13
+ 1640021U, // 6 - 14
+ 1640375U, // 6 - 15
+ 1075382553U, // 6 - 16
+ 1641113U, // 6 - 17
+ 2417560571U, // 6 - 18
+ 1641851U, // 6 - 19
+ 1642205U, // 6 - 20
+ 1612255296U, // 6 - 21
+ 1642944U, // 6 - 22
+ 1643299U, // 6 - 23
+ 1075385477U, // 6 - 24
+ 1644037U, // 6 - 25
+ 1644391U, // 6 - 26
+ 538515657U, // 6 - 27
+ 1645129U, // 6 - 28
+ 1612258219U, // 6 - 29
+ 1645867U, // 6 - 30
+ 1646222U, // 6 - 31
+ 1343823857U, // 6 - 32
+ 1646960U, // 6 - 33
+ 1647315U, // 6 - 34
+ 1075389493U, // 6 - 35
+ 1648052U, // 6 - 36
+ 3222873879U, // 6 - 37
+ 1648791U, // 6 - 38
+ 1649145U, // 6 - 39
+ 1612262236U, // 6 - 40
+ 1649884U, // 6 - 41
+ 1650238U, // 6 - 42
+ 1343827872U, // 6 - 43
+ 1650976U, // 6 - 44
+ 1651330U, // 6 - 45
+ 806958053U, // 6 - 46
+ 1652069U, // 6 - 47
+ 1880700615U, // 6 - 48
+ 1652807U, // 6 - 49
+ 1653162U, // 6 - 50
+ 1343830796U, // 6 - 51
+ 1653900U, // 6 - 52
+ 1654254U, // 6 - 53
+ 806960976U, // 6 - 54
+ 1654992U, // 6 - 55
+ 3491316275U, // 6 - 56
+ 1655731U, // 6 - 57
+ 1656085U, // 6 - 58
+ 1612269176U, // 6 - 59
+ 1656824U, // 7 - 0
+ 1657178U, // 7 - 1
+ 1075399356U, // 7 - 2
+ 1657916U, // 7 - 3
+ 1658270U, // 7 - 4
+ 538529537U, // 7 - 5
+ 1659009U, // 7 - 6
+ 1612272099U, // 7 - 7
+ 1659747U, // 7 - 8
+ 1660101U, // 7 - 9
+ 1343837735U, // 7 - 10
+ 1660839U, // 7 - 11
+ 1661193U, // 7 - 12
+ 806967916U, // 7 - 13
+ 1661932U, // 7 - 14
+ 1662287U, // 7 - 15
+ 538533553U, // 7 - 16
+ 1663025U, // 7 - 17
+ 1612276115U, // 7 - 18
+ 1663763U, // 7 - 19
+ 1664117U, // 7 - 20
+ 1343841751U, // 7 - 21
+ 1664855U, // 7 - 22
+ 1665210U, // 7 - 23
+ 538536477U, // 7 - 24
+ 1665949U, // 7 - 25
+ 1880714495U, // 7 - 26
+ 1666687U, // 7 - 27
+ 1667041U, // 7 - 28
+ 1343844675U, // 7 - 29
+ 1667779U, // 7 - 30
+ 1668133U, // 7 - 31
+ 806974856U, // 7 - 32
+ 1668872U, // 7 - 33
+ 3491330155U, // 7 - 34
+ 1669610U, // 7 - 35
+ 1669965U, // 7 - 36
+ 1612283055U, // 7 - 37
+ 1670702U, // 7 - 38
+ 1671057U, // 7 - 39
+ 1075413235U, // 7 - 40
+ 1671795U, // 7 - 41
+ 1672150U, // 7 - 42
+ 806978872U, // 7 - 43
+ 1672888U, // 7 - 44
+ 1880721434U, // 7 - 45
+ 1673626U, // 7 - 46
+ 1673980U, // 7 - 47
+ 1343851615U, // 7 - 48
+ 1674719U, // 7 - 49
+ 1675073U, // 7 - 50
+ 1075417252U, // 7 - 51
+ 1675812U, // 7 - 52
+ 2149159814U, // 7 - 53
+ 1676550U, // 7 - 54
+ 1676904U, // 7 - 55
+ 1612289994U, // 7 - 56
+ 1677642U, // 7 - 57
+ 1677997U, // 7 - 58
+ 1075420175U, // 7 - 59
+ 1678735U, // 8 - 0
+ 1679090U, // 8 - 1
+ 806985812U, // 8 - 2
+ 1679828U, // 8 - 3
+ 2149163830U, // 8 - 4
+ 1680566U, // 8 - 5
+ 1680920U, // 8 - 6
+ 1343858555U, // 8 - 7
+ 1681659U, // 8 - 8
+ 1682013U, // 8 - 9
+ 1075424192U, // 8 - 10
+ 1682751U, // 8 - 11
+ 3222908577U, // 8 - 12
+ 1683489U, // 8 - 13
+ 1683843U, // 8 - 14
+ 1612296934U, // 8 - 15
+ 1684582U, // 8 - 16
+ 1684937U, // 8 - 17
+ 1343862571U, // 8 - 18
+ 1685675U, // 8 - 19
+ 1686029U, // 8 - 20
+ 806992751U, // 8 - 21
+ 1686767U, // 8 - 22
+ 1880735313U, // 8 - 23
+ 1687505U, // 8 - 24
+ 1687860U, // 8 - 25
+ 1343865495U, // 8 - 26
+ 1688599U, // 8 - 27
+ 1688953U, // 8 - 28
+ 1075431131U, // 8 - 29
+ 1689691U, // 8 - 30
+ 3222915517U, // 8 - 31
+ 1690429U, // 8 - 32
+ 1690783U, // 8 - 33
+ 1612303874U, // 8 - 34
+ 1691522U, // 8 - 35
+ 1691877U, // 8 - 36
+ 1343869511U, // 8 - 37
+ 1692614U, // 8 - 38
+ 1692968U, // 8 - 39
+ 806999691U, // 8 - 40
+ 1693707U, // 8 - 41
+ 1880742253U, // 8 - 42
+ 1694445U, // 8 - 43
+ 1694800U, // 8 - 44
+ 1343872434U, // 8 - 45
+ 1695538U, // 8 - 46
+ 1695892U, // 8 - 47
+ 1075438070U, // 8 - 48
+ 1696630U, // 8 - 49
+ 1696985U, // 8 - 50
+ 538568251U, // 8 - 51
+ 1697723U, // 8 - 52
+ 1612310814U, // 8 - 53
+ 1698462U, // 8 - 54
+ 1698816U, // 8 - 55
+ 1343876450U, // 8 - 56
+ 1699554U, // 8 - 57
+ 1699908U, // 8 - 58
+ 538571175U, // 8 - 59
+ 1700647U, // 9 - 0
+ 1880749193U, // 9 - 1
+ 1701385U, // 9 - 2
+ 1701740U, // 9 - 3
+ 1343879374U, // 9 - 4
+ 1702478U, // 9 - 5
+ 1702832U, // 9 - 6
+ 1075445010U, // 9 - 7
+ 1703570U, // 9 - 8
+ 1703925U, // 9 - 9
+ 538575191U, // 9 - 10
+ 1704663U, // 9 - 11
+ 1612317754U, // 9 - 12
+ 1705401U, // 9 - 13
+ 1705755U, // 9 - 14
+ 1343883389U, // 9 - 15
+ 1706493U, // 9 - 16
+ 1706848U, // 9 - 17
+ 807013571U, // 9 - 18
+ 1707587U, // 9 - 19
+ 1880756133U, // 9 - 20
+ 1708325U, // 9 - 21
+ 1708679U, // 9 - 22
+ 1612321769U, // 9 - 23
+ 1709417U, // 9 - 24
+ 1709771U, // 9 - 25
+ 1075451950U, // 9 - 26
+ 1710510U, // 9 - 27
+ 1710865U, // 9 - 28
+ 538582131U, // 9 - 29
+ 1711603U, // 9 - 30
+ 1612324693U, // 9 - 31
+ 1712341U, // 9 - 32
+ 1712695U, // 9 - 33
+ 1075454873U, // 9 - 34
+ 1713433U, // 9 - 35
+ 1713788U, // 9 - 36
+ 807020511U, // 9 - 37
+ 1714527U, // 9 - 38
+ 2149198529U, // 9 - 39
+ 1715264U, // 9 - 40
+ 1715618U, // 9 - 41
+ 1612328709U, // 9 - 42
+ 1716357U, // 9 - 43
+ 1716711U, // 9 - 44
+ 1075458890U, // 9 - 45
+ 1717450U, // 9 - 46
+ 1717804U, // 9 - 47
+ 538589071U, // 9 - 48
+ 1718542U, // 9 - 49
+ 1880767088U, // 9 - 50
+ 1719280U, // 9 - 51
+ 1719635U, // 9 - 52
+ 1343897269U, // 9 - 53
+ 1720373U, // 9 - 54
+ 1720728U, // 9 - 55
+ 807027450U, // 9 - 56
+ 1721466U, // 9 - 57
+ 2149205468U, // 9 - 58
+ 1722204U, // 9 - 59
+ 1722558U, // 10 - 0
+ 1343900193U, // 10 - 1
+ 1723297U, // 10 - 2
+ 1723651U, // 10 - 3
+ 1075465830U, // 10 - 4
+ 1724390U, // 10 - 5
+ 1724744U, // 10 - 6
+ 538596010U, // 10 - 7
+ 1725482U, // 10 - 8
+ 1612338572U, // 10 - 9
+ 1726220U, // 10 - 10
+ 1726575U, // 10 - 11
+ 1343904209U, // 10 - 12
+ 1727313U, // 10 - 13
+ 1727668U, // 10 - 14
+ 1075469846U, // 10 - 15
+ 1728405U, // 10 - 16
+ 2149212407U, // 10 - 17
+ 1729143U, // 10 - 18
+ 1729498U, // 10 - 19
+ 1343907133U, // 10 - 20
+ 1730237U, // 10 - 21
+ 1730591U, // 10 - 22
+ 1075472769U, // 10 - 23
+ 1731329U, // 10 - 24
+ 1731683U, // 10 - 25
+ 538602949U, // 10 - 26
+ 1732421U, // 10 - 27
+ 1880780968U, // 10 - 28
+ 1733160U, // 10 - 29
+ 1733515U, // 10 - 30
+ 1343911149U, // 10 - 31
+ 1734253U, // 10 - 32
+ 1734607U, // 10 - 33
+ 807041329U, // 10 - 34
+ 1735345U, // 10 - 35
+ 2149219347U, // 10 - 36
+ 1736083U, // 10 - 37
+ 1736438U, // 10 - 38
+ 1343914072U, // 10 - 39
+ 1737176U, // 10 - 40
+ 1737531U, // 10 - 41
+ 1075479709U, // 10 - 42
+ 1738268U, // 10 - 43
+ 1738623U, // 10 - 44
+ 538609889U, // 10 - 45
+ 1739361U, // 10 - 46
+ 1612352452U, // 10 - 47
+ 1740100U, // 10 - 48
+ 1740454U, // 10 - 49
+ 1343918088U, // 10 - 50
+ 1741192U, // 10 - 51
+ 1741546U, // 10 - 52
+ 807048269U, // 10 - 53
+ 1742285U, // 10 - 54
+ 2149226287U, // 10 - 55
+ 1743023U, // 10 - 56
+ 1743378U, // 10 - 57
+ 1612356468U, // 10 - 58
+ 1744116U, // 10 - 59
+ 1744470U, // 11 - 0
+ 1075486648U, // 11 - 1
+ 1745208U, // 11 - 2
+ 1745562U, // 11 - 3
+ 538616829U, // 11 - 4
+ 1746301U, // 11 - 5
+ 1612359392U, // 11 - 6
+ 1747040U, // 11 - 7
+ 1747394U, // 11 - 8
+ 1343925028U, // 11 - 9
+ 1748132U, // 11 - 10
+ 1748486U, // 11 - 11
+ 807055208U, // 11 - 12
+ 1749225U, // 11 - 13
+ 2149233227U, // 11 - 14
+ 1749963U, // 11 - 15
+ 1750318U, // 11 - 16
+ 1612363408U, // 11 - 17
+ 1751055U, // 11 - 18
+ 1751409U, // 11 - 19
+ 1075493588U, // 11 - 20
+ 1752148U, // 11 - 21
+ 1752502U, // 11 - 22
+ 538623769U, // 11 - 23
+ 1753241U, // 11 - 24
+ 1880801787U, // 11 - 25
+ 1753979U, // 11 - 26
+ 1754333U, // 11 - 27
+ 1343931967U, // 11 - 28
+ 1755071U, // 11 - 29
+ 1755426U, // 11 - 30
+ 807062148U, // 11 - 31
+ 1756165U, // 11 - 32
+ 2149240167U, // 11 - 33
+ 1756903U, // 11 - 34
+ 1757257U, // 11 - 35
+ 1612370347U, // 11 - 36
+ 1757995U, // 11 - 37
+ 1758349U, // 11 - 38
+ 1075500528U, // 11 - 39
+ 1759088U, // 11 - 40
+ 1759442U, // 11 - 41
+ 807066165U, // 11 - 42
+ 1760181U, // 11 - 43
+ 1880808727U, // 11 - 44
+ 1760918U, // 11 - 45
+ 1761273U, // 11 - 46
+ 1343938907U, // 11 - 47
+ 1762011U, // 11 - 48
+ 1762366U, // 11 - 49
+ 1075504544U, // 11 - 50
+ 1763104U, // 11 - 51
+ 1880811650U, // 11 - 52
+ 1763842U, // 11 - 53
+ 1764196U, // 11 - 54
+ 1612377286U, // 11 - 55
+ 1764934U, // 11 - 56
+ 1765289U, // 11 - 57
+ 1075507468U, // 11 - 58
+ 1766028U, // 11 - 59
+ 1766382U, // 12 - 0
+ 807073104U, // 12 - 1
+ 1767120U, // 12 - 2
+ 1880815666U, // 12 - 3
+ 1767858U, // 12 - 4
+ 1768212U, // 12 - 5
+ 1343945847U, // 12 - 6
+ 1768951U, // 12 - 7
+ 1769306U, // 12 - 8
+ 1075511484U, // 12 - 9
+ 1770044U, // 12 - 10
+ 2149254046U, // 12 - 11
+ 1770782U, // 12 - 12
+ 1771136U, // 12 - 13
+ 1612384226U, // 12 - 14
+ 1771874U, // 12 - 15
+ 1772229U, // 12 - 16
+ 1075514408U, // 12 - 17
+ 1772967U, // 12 - 18
+ 1773322U, // 12 - 19
+ 807080044U, // 12 - 20
+ 1774059U, // 12 - 21
+ 1880822606U, // 12 - 22
+ 1774798U, // 12 - 23
+ 1775152U, // 12 - 24
+ 1343952787U, // 12 - 25
+ 1775891U, // 12 - 26
+ 1776245U, // 12 - 27
+ 1075518423U, // 12 - 28
+ 1776983U, // 12 - 29
+ 2417696441U, // 12 - 30
+ 1777721U, // 12 - 31
+ 1778076U, // 12 - 32
+ 1612391166U, // 12 - 33
+ 1778814U, // 12 - 34
+ 1779169U, // 12 - 35
+ 1075521347U, // 12 - 36
+ 1779907U, // 12 - 37
+ 1780261U, // 12 - 38
+ 538651527U, // 12 - 39
+ 1780999U, // 12 - 40
+ 1880829546U, // 12 - 41
+ 1781738U, // 12 - 42
+ 1782092U, // 12 - 43
+ 1343959727U, // 12 - 44
+ 1782831U, // 12 - 45
+ 1783185U, // 12 - 46
+ 1075525363U, // 12 - 47
+ 1783923U, // 12 - 48
+ 2417703381U, // 12 - 49
+ 1784661U, // 12 - 50
+ 1785016U, // 12 - 51
+ 1612398106U, // 12 - 52
+ 1785754U, // 12 - 53
+ 1786108U, // 12 - 54
+ 1343963742U, // 12 - 55
+ 1786846U, // 12 - 56
+ 1787200U, // 12 - 57
+ 538658467U, // 12 - 58
+ 1787939U, // 12 - 59
+ 1880836486U, // 13 - 0
+ 1788678U, // 13 - 1
+ 1789032U, // 13 - 2
+ 1343966666U, // 13 - 3
+ 1789770U, // 13 - 4
+ 1790124U, // 13 - 5
+ 807096846U, // 13 - 6
+ 1790862U, // 13 - 7
+ 3491452145U, // 13 - 8
+ 1791601U, // 13 - 9
+ 1791956U, // 13 - 10
+ 1612405046U, // 13 - 11
+ 1792694U, // 13 - 12
+ 1793048U, // 13 - 13
+ 1075535226U, // 13 - 14
+ 1793786U, // 13 - 15
+ 1794140U, // 13 - 16
+ 807100863U, // 13 - 17
+ 1794879U, // 13 - 18
+ 1880843426U, // 13 - 19
+ 1795617U, // 13 - 20
+ 1795972U, // 13 - 21
+ 1612409062U, // 13 - 22
+ 1796709U, // 13 - 23
+ 1797064U, // 13 - 24
+ 1075539242U, // 13 - 25
+ 1797802U, // 13 - 26
+ 1798157U, // 13 - 27
+ 538669423U, // 13 - 28
+ 1798895U, // 13 - 29
+ 1612411985U, // 13 - 30
+ 1799633U, // 13 - 31
+ 1799987U, // 13 - 32
+ 1343977622U, // 13 - 33
+ 1800726U, // 13 - 34
+ 1801080U, // 13 - 35
+ 807107803U, // 13 - 36
+ 1801819U, // 13 - 37
+ 1880850365U, // 13 - 38
+ 1802557U, // 13 - 39
+ 1802911U, // 13 - 40
+ 1343980545U, // 13 - 41
+ 1803649U, // 13 - 42
+ 1804004U, // 13 - 43
+ 807110726U, // 13 - 44
+ 1804742U, // 13 - 45
+ 2149288745U, // 13 - 46
+ 1805481U, // 13 - 47
+ 1805835U, // 13 - 48
+ 1612418925U, // 13 - 49
+ 1806573U, // 13 - 50
+ 1806927U, // 13 - 51
+ 1075549106U, // 13 - 52
+ 1807666U, // 13 - 53
+ 1808020U, // 13 - 54
+ 807114743U, // 13 - 55
+ 1808758U, // 13 - 56
+ 1880857304U, // 13 - 57
+ 1809496U, // 13 - 58
+ 1809850U, // 13 - 59
+ 1612422941U, // 14 - 0
+ 1810589U, // 14 - 1
+ 1810944U, // 14 - 2
+ 1075553122U, // 14 - 3
+ 1811682U, // 14 - 4
+ 2417731140U, // 14 - 5
+ 1812420U, // 14 - 6
+ 1812774U, // 14 - 7
+ 1612425864U, // 14 - 8
+ 1813512U, // 14 - 9
+ 1813867U, // 14 - 10
+ 1075556046U, // 14 - 11
+ 1814606U, // 14 - 12
+ 1814960U, // 14 - 13
+ 807121682U, // 14 - 14
+ 1815698U, // 14 - 15
+ 1880864244U, // 14 - 16
+ 1816436U, // 14 - 17
+ 1816790U, // 14 - 18
+ 1343994425U, // 14 - 19
+ 1817529U, // 14 - 20
+ 1817884U, // 14 - 21
+ 1075560062U, // 14 - 22
+ 1818622U, // 14 - 23
+ 2417738080U, // 14 - 24
+ 1819359U, // 14 - 25
+ 1819714U, // 14 - 26
+ 1612432804U, // 14 - 27
+ 1820452U, // 14 - 28
+ 1820807U, // 14 - 29
+ 1343998441U, // 14 - 30
+ 1821545U, // 14 - 31
+ 1821899U, // 14 - 32
+ 807128621U, // 14 - 33
+ 1822637U, // 14 - 34
+ 2149306640U, // 14 - 35
+ 1823376U, // 14 - 36
+ 1823730U, // 14 - 37
+ 1344001365U, // 14 - 38
+ 1824469U, // 14 - 39
+ 1824823U, // 14 - 40
+ 1075567001U, // 14 - 41
+ 1825561U, // 14 - 42
+ 3491486843U, // 14 - 43
+ 1826299U, // 14 - 44
+ 1826654U, // 14 - 45
+ 1612439744U, // 14 - 46
+ 1827392U, // 14 - 47
+ 1827747U, // 14 - 48
+ 1344005381U, // 14 - 49
+ 1828485U, // 14 - 50
+ 1828839U, // 14 - 51
+ 807135561U, // 14 - 52
+ 1829577U, // 14 - 53
+ 1880878124U, // 14 - 54
+ 1830316U, // 14 - 55
+ 1830670U, // 14 - 56
+ 1612443761U, // 14 - 57
+ 1831408U, // 14 - 58
+ 1831762U, // 14 - 59
+ 1075573940U, // 15 - 0
+ 1832500U, // 15 - 1
+ 1832855U, // 15 - 2
+ 538704122U, // 15 - 3
+ 1833594U, // 15 - 4
+ 1612446684U, // 15 - 5
+ 1834332U, // 15 - 6
+ 1834686U, // 15 - 7
+ 1344012320U, // 15 - 8
+ 1835424U, // 15 - 9
+ 1835778U, // 15 - 10
+ 807142501U, // 15 - 11
+ 1836517U, // 15 - 12
+ 1880885064U, // 15 - 13
+ 1837256U, // 15 - 14
+ 1837610U, // 15 - 15
+ 1612450700U, // 15 - 16
+ 1838348U, // 15 - 17
+ 1838702U, // 15 - 18
+ 1075580880U, // 15 - 19
+ 1839440U, // 15 - 20
+ 1839795U, // 15 - 21
+ 538711062U, // 15 - 22
+ 1840534U, // 15 - 23
+ 1612453624U, // 15 - 24
+ 1841271U, // 15 - 25
+ 1841625U, // 15 - 26
+ 1344019260U, // 15 - 27
+ 1842364U, // 15 - 28
+ 1842718U, // 15 - 29
+ 807149441U, // 15 - 30
+ 1843457U, // 15 - 31
+ 1880892003U, // 15 - 32
+ 1844195U, // 15 - 33
+ 1844549U, // 15 - 34
+ 1612457639U, // 15 - 35
+ 1845287U, // 15 - 36
+ 1845642U, // 15 - 37
+ 1075587820U, // 15 - 38
+ 1846380U, // 15 - 39
+ 1846735U, // 15 - 40
+ 538718001U, // 15 - 41
+ 1847473U, // 15 - 42
+ 1612460563U, // 15 - 43
+ 1848211U, // 15 - 44
+ 1848565U, // 15 - 45
+ 1344026200U, // 15 - 46
+ 1849304U, // 15 - 47
+ 1849658U, // 15 - 48
+ 807156381U, // 15 - 49
+ 1850397U, // 15 - 50
+ 1880898943U, // 15 - 51
+ 1851135U, // 15 - 52
+ 1851489U, // 15 - 53
+ 1612464579U, // 15 - 54
+ 1852227U, // 15 - 55
+ 1852582U, // 15 - 56
+ 1075594760U, // 15 - 57
+ 1853320U, // 15 - 58
+ 1853675U, // 15 - 59
+ 538724941U, // 16 - 0
+ 1854412U, // 16 - 1
+ 1880902958U, // 16 - 2
+ 1855150U, // 16 - 3
+ 1855505U, // 16 - 4
+ 1344033140U, // 16 - 5
+ 1856244U, // 16 - 6
+ 1856598U, // 16 - 7
+ 807163320U, // 16 - 8
+ 1857336U, // 16 - 9
+ 2149341338U, // 16 - 10
+ 1858074U, // 16 - 11
+ 1858428U, // 16 - 12
+ 1344036063U, // 16 - 13
+ 1859167U, // 16 - 14
+ 1859522U, // 16 - 15
+ 1075601700U, // 16 - 16
+ 1860260U, // 16 - 17
+ 1860614U, // 16 - 18
+ 538731880U, // 16 - 19
+ 1861352U, // 16 - 20
+ 1880909898U, // 16 - 21
+ 1862090U, // 16 - 22
+ 1862445U, // 16 - 23
+ 1344040080U, // 16 - 24
+ 1863184U, // 16 - 25
+ 1863538U, // 16 - 26
+ 1075605716U, // 16 - 27
+ 1864275U, // 16 - 28
+ 2149348278U, // 16 - 29
+ 1865014U, // 16 - 30
+ 1865368U, // 16 - 31
+ 1612478459U, // 16 - 32
+ 1866107U, // 16 - 33
+ 1866461U, // 16 - 34
+ 1344044096U, // 16 - 35
+ 1867199U, // 16 - 36
+ 1867553U, // 16 - 37
+ 538738820U, // 16 - 38
+ 1868292U, // 16 - 39
+ 1612481382U, // 16 - 40
+ 1869030U, // 16 - 41
+ 1869385U, // 16 - 42
+ 1344047019U, // 16 - 43
+ 1870123U, // 16 - 44
+ 1870477U, // 16 - 45
+ 807177199U, // 16 - 46
+ 1871215U, // 16 - 47
+ 2149355218U, // 16 - 48
+ 1871954U, // 16 - 49
+ 1872308U, // 16 - 50
+ 1612485399U, // 16 - 51
+ 1873047U, // 16 - 52
+ 1873401U, // 16 - 53
+ 1075615579U, // 16 - 54
+ 1874139U, // 16 - 55
+ 1874493U, // 16 - 56
+ 538745759U, // 16 - 57
+ 1875232U, // 16 - 58
+ 1612488322U, // 16 - 59
+ 1875970U, // 17 - 0
+ 1876325U, // 17 - 1
+ 1344053959U, // 17 - 2
+ 1877062U, // 17 - 3
+ 1877416U, // 17 - 4
+ 807184139U, // 17 - 5
+ 1878155U, // 17 - 6
+ 3223103982U, // 17 - 7
+ 1878894U, // 17 - 8
+ 1879248U, // 17 - 9
+ 1612492338U, // 17 - 10
+ 1879986U, // 17 - 11
+ 1880340U, // 17 - 12
+ 1075622518U, // 17 - 13
+ 1881078U, // 17 - 14
+ 1881433U, // 17 - 15
+ 538752700U, // 17 - 16
+ 1882172U, // 17 - 17
+ 1612495262U, // 17 - 18
+ 1882910U, // 17 - 19
+ 1883264U, // 17 - 20
+ 1344060898U, // 17 - 21
+ 1884002U, // 17 - 22
+ 1884356U, // 17 - 23
+ 807191079U, // 17 - 24
+ 1885095U, // 17 - 25
+ 1880933641U, // 17 - 26
+ 1885833U, // 17 - 27
+ 1886188U, // 17 - 28
+ 1612499278U, // 17 - 29
+ 1886925U, // 17 - 30
+ 1887280U, // 17 - 31
+ 1075629458U, // 17 - 32
+ 1888018U, // 17 - 33
+ 1888373U, // 17 - 34
+ 538759639U, // 17 - 35
+ 1889111U, // 17 - 36
+ 1880937657U, // 17 - 37
+ 1889849U, // 17 - 38
+ 1890203U, // 17 - 39
+ 1344067838U, // 17 - 40
+ 1890942U, // 17 - 41
+ 1891296U, // 17 - 42
+ 807198019U, // 17 - 43
+ 1892035U, // 17 - 44
+ 2149376037U, // 17 - 45
+ 1892773U, // 17 - 46
+ 1893127U, // 17 - 47
+ 1612506217U, // 17 - 48
+ 1893865U, // 17 - 49
+ 1894219U, // 17 - 50
+ 1075636398U, // 17 - 51
+ 1894958U, // 17 - 52
+ 1895313U, // 17 - 53
+ 807202035U, // 17 - 54
+ 1896051U, // 17 - 55
+ 1880944597U, // 17 - 56
+ 1896789U, // 17 - 57
+ 1897143U, // 17 - 58
+ 1344074777U, // 17 - 59
+ 1897882U, // 18 - 0
+ 1898236U, // 18 - 1
+ 1075640415U, // 18 - 2
+ 1898975U, // 18 - 3
+ 2149382977U, // 18 - 4
+ 1899712U, // 18 - 5
+ 1900066U, // 18 - 6
+ 1612513157U, // 18 - 7
+ 1900805U, // 18 - 8
+ 1901160U, // 18 - 9
+ 1344078794U, // 18 - 10
+ 1901898U, // 18 - 11
+ 1902252U, // 18 - 12
+ 807208974U, // 18 - 13
+ 1902990U, // 18 - 14
+ 1880951536U, // 18 - 15
+ 1903728U, // 18 - 16
+ 1904083U, // 18 - 17
+ 1344081717U, // 18 - 18
+ 1904822U, // 18 - 19
+ 1905176U, // 18 - 20
+ 1075647354U, // 18 - 21
+ 1905914U, // 18 - 22
+ 2149389916U, // 18 - 23
+ 1906652U, // 18 - 24
+ 1907006U, // 18 - 25
+ 1612520097U, // 18 - 26
+ 1907745U, // 18 - 27
+ 1908099U, // 18 - 28
+ 1344085734U, // 18 - 29
+ 1908838U, // 18 - 30
+ 1909192U, // 18 - 31
+ 538780458U, // 18 - 32
+ 1909930U, // 18 - 33
+ 1880958476U, // 18 - 34
+ 1910668U, // 18 - 35
+ 1911023U, // 18 - 36
+ 1344088657U, // 18 - 37
+ 1911761U, // 18 - 38
+ 1912115U, // 18 - 39
+ 1075654293U, // 18 - 40
+ 1912853U, // 18 - 41
+ 3223138679U, // 18 - 42
+ 1913591U, // 18 - 43
+ 1913946U, // 18 - 44
+ 1612527037U, // 18 - 45
+ 1914685U, // 18 - 46
+ 1915039U, // 18 - 47
+ 1344092673U, // 18 - 48
+ 1915777U, // 18 - 49
+ 1916131U, // 18 - 50
+ 807222853U, // 18 - 51
+ 1916869U, // 18 - 52
+ 1880965416U, // 18 - 53
+ 1917608U, // 18 - 54
+ 1917963U, // 18 - 55
+ 1344095597U, // 18 - 56
+ 1918701U, // 18 - 57
+ 1919055U, // 18 - 58
+ 1075661233U, // 18 - 59
+ 1919793U, // 19 - 0
+ 3223145619U, // 19 - 1
+ 1920531U, // 19 - 2
+ 1920886U, // 19 - 3
+ 1612533977U, // 19 - 4
+ 1921625U, // 19 - 5
+ 1921979U, // 19 - 6
+ 1344099613U, // 19 - 7
+ 1922716U, // 19 - 8
+ 1923071U, // 19 - 9
+ 538794337U, // 19 - 10
+ 1923809U, // 19 - 11
+ 1880972356U, // 19 - 12
+ 1924548U, // 19 - 13
+ 1924902U, // 19 - 14
+ 1344102536U, // 19 - 15
+ 1925640U, // 19 - 16
+ 1925994U, // 19 - 17
+ 807232717U, // 19 - 18
+ 1926733U, // 19 - 19
+ 2149410735U, // 19 - 20
+ 1927471U, // 19 - 21
+ 1927826U, // 19 - 22
+ 1612540916U, // 19 - 23
+ 1928564U, // 19 - 24
+ 1928918U, // 19 - 25
+ 1344106552U, // 19 - 26
+ 1929656U, // 19 - 27
+ 1930011U, // 19 - 28
+ 807236733U, // 19 - 29
+ 1930749U, // 19 - 30
+ 1880979296U, // 19 - 31
+ 1931488U, // 19 - 32
+ 1931842U, // 19 - 33
+ 1612544932U, // 19 - 34
+ 1932580U, // 19 - 35
+ 1932934U, // 19 - 36
+ 1075675113U, // 19 - 37
+ 1933673U, // 19 - 38
+ 3491594955U, // 19 - 39
+ 1934411U, // 19 - 40
+ 1934765U, // 19 - 41
+ 1612547855U, // 19 - 42
+ 1935503U, // 19 - 43
+ 1935857U, // 19 - 44
+ 1344113492U, // 19 - 45
+ 1936596U, // 19 - 46
+ 1936951U, // 19 - 47
+ 807243673U, // 19 - 48
+ 1937689U, // 19 - 49
+ 1880986235U, // 19 - 50
+ 1938427U, // 19 - 51
+ 1938781U, // 19 - 52
+ 1344116415U, // 19 - 53
+ 1939519U, // 19 - 54
+ 1939874U, // 19 - 55
+ 1075682053U, // 19 - 56
+ 1940613U, // 19 - 57
+ 2149424615U, // 19 - 58
+ 1941351U, // 19 - 59
+ 1941705U, // 20 - 0
+ 1880990251U, // 20 - 1
+ 1942443U, // 20 - 2
+ 1942797U, // 20 - 3
+ 1344120432U, // 20 - 4
+ 1943536U, // 20 - 5
+ 1943891U, // 20 - 6
+ 1075686069U, // 20 - 7
+ 1944629U, // 20 - 8
+ 1880993175U, // 20 - 9
+ 1945366U, // 20 - 10
+ 1945721U, // 20 - 11
+ 1612558811U, // 20 - 12
+ 1946459U, // 20 - 13
+ 1946814U, // 20 - 14
+ 1075688992U, // 20 - 15
+ 1947552U, // 20 - 16
+ 3223173378U, // 20 - 17
+ 1948290U, // 20 - 18
+ 1948644U, // 20 - 19
+ 1612561735U, // 20 - 20
+ 1949383U, // 20 - 21
+ 1949737U, // 20 - 22
+ 1075691916U, // 20 - 23
+ 1950476U, // 20 - 24
+ 1950830U, // 20 - 25
+ 807257552U, // 20 - 26
+ 1951568U, // 20 - 27
+ 1881000114U, // 20 - 28
+ 1952306U, // 20 - 29
+ 1952661U, // 20 - 30
+ 1344130295U, // 20 - 31
+ 1953399U, // 20 - 32
+ 1953754U, // 20 - 33
+ 1075695932U, // 20 - 34
+ 1954492U, // 20 - 35
+ 2686309406U, // 20 - 36
+ 1955230U, // 20 - 37
+ 1955584U, // 20 - 38
+ 1612568675U, // 20 - 39
+ 1956323U, // 20 - 40
+ 1956677U, // 20 - 41
+ 1344134312U, // 20 - 42
+ 1957415U, // 20 - 43
+ 1957769U, // 20 - 44
+ 807264492U, // 20 - 45
+ 1958507U, // 20 - 46
+ 2149442510U, // 20 - 47
+ 1959246U, // 20 - 48
+ 1959601U, // 20 - 49
+ 1344137235U, // 20 - 50
+ 1960339U, // 20 - 51
+ 1960693U, // 20 - 52
+ 1075702871U, // 20 - 53
+ 1961431U, // 20 - 54
+ 2954751801U, // 20 - 55
+ 1962169U, // 20 - 56
+ 1962524U, // 20 - 57
+ 1612575615U, // 20 - 58
+ 1963263U, // 20 - 59
+ 1963617U, // 21 - 0
+ 1344141251U, // 21 - 1
+ 1964355U, // 21 - 2
+ 1964709U, // 21 - 3
+ 807271431U, // 21 - 4
+ 1965447U, // 21 - 5
+ 1881013994U, // 21 - 6
+ 1966186U, // 21 - 7
+ 1966541U, // 21 - 8
+ 1612579631U, // 21 - 9
+ 1967279U, // 21 - 10
+ 1967633U, // 21 - 11
+ 1075709811U, // 21 - 12
+ 1968371U, // 21 - 13
+ 3491629653U, // 21 - 14
+ 1969109U, // 21 - 15
+ 1969464U, // 21 - 16
+ 1612582554U, // 21 - 17
+ 1970202U, // 21 - 18
+ 1970556U, // 21 - 19
+ 1344148190U, // 21 - 20
+ 1971294U, // 21 - 21
+ 1971649U, // 21 - 22
+ 807278371U, // 21 - 23
+ 1972387U, // 21 - 24
+ 2149456390U, // 21 - 25
+ 1973126U, // 21 - 26
+ 1973480U, // 21 - 27
+ 1612586570U, // 21 - 28
+ 1974218U, // 21 - 29
+ 1974572U, // 21 - 30
+ 1075716751U, // 21 - 31
+ 1975311U, // 21 - 32
+ 1975665U, // 21 - 33
+ 538846932U, // 21 - 34
+ 1976404U, // 21 - 35
+ 1881024950U, // 21 - 36
+ 1977142U, // 21 - 37
+ 1977496U, // 21 - 38
+ 1344155130U, // 21 - 39
+ 1978234U, // 21 - 40
+ 1978589U, // 21 - 41
+ 807285311U, // 21 - 42
+ 1979327U, // 21 - 43
+ 1881027874U, // 21 - 44
+ 1980065U, // 21 - 45
+ 1980419U, // 21 - 46
+ 1612593509U, // 21 - 47
+ 1981157U, // 21 - 48
+ 1981512U, // 21 - 49
+ 1075723691U, // 21 - 50
+ 1982251U, // 21 - 51
+ 1982605U, // 21 - 52
+ 807289327U, // 21 - 53
+ 1983343U, // 21 - 54
+ 1881031889U, // 21 - 55
+ 1984081U, // 21 - 56
+ 1984435U, // 21 - 57
+ 1344162070U, // 21 - 58
+ 1985174U, // 21 - 59
+ 1985529U, // 22 - 0
+ 807292251U, // 22 - 1
+ 1986267U, // 22 - 2
+ 1881034813U, // 22 - 3
+ 1987005U, // 22 - 4
+ 1987359U, // 22 - 5
+ 1612600449U, // 22 - 6
+ 1988097U, // 22 - 7
+ 1988452U, // 22 - 8
+ 1075730631U, // 22 - 9
+ 1989191U, // 22 - 10
+ 1989545U, // 22 - 11
+ 538860811U, // 22 - 12
+ 1990283U, // 22 - 13
+ 1881038829U, // 22 - 14
+ 1991021U, // 22 - 15
+ 1991375U, // 22 - 16
+ 1344169010U, // 22 - 17
+ 1992114U, // 22 - 18
+ 1992468U, // 22 - 19
+ 807299191U, // 22 - 20
+ 1993206U, // 22 - 21
+ 2149477208U, // 22 - 22
+ 1993944U, // 22 - 23
+ 1994299U, // 22 - 24
+ 1344171933U, // 22 - 25
+ 1995037U, // 22 - 26
+ 1995392U, // 22 - 27
+ 1075737570U, // 22 - 28
+ 1996130U, // 22 - 29
+ 2417915588U, // 22 - 30
+ 1996868U, // 22 - 31
+ 1997222U, // 22 - 32
+ 1881045769U, // 22 - 33
+ 1997961U, // 22 - 34
+ 1998315U, // 22 - 35
+ 1344175950U, // 22 - 36
+ 1999054U, // 22 - 37
+ 1999408U, // 22 - 38
+ 1075741586U, // 22 - 39
+ 2000146U, // 22 - 40
+ 2417919604U, // 22 - 41
+ 2000884U, // 22 - 42
+ 2001239U, // 22 - 43
+ 1612614329U, // 22 - 44
+ 2001977U, // 22 - 45
+ 2002332U, // 22 - 46
+ 1344179966U, // 22 - 47
+ 2003069U, // 22 - 48
+ 3491664351U, // 22 - 49
+ 2003807U, // 22 - 50
+ 2004162U, // 22 - 51
+ 1881052709U, // 22 - 52
+ 2004901U, // 22 - 53
+ 2005255U, // 22 - 54
+ 1344182889U, // 22 - 55
+ 2005993U, // 22 - 56
+ 2006347U, // 22 - 57
+ 807313069U, // 22 - 58
+ 2007085U, // 22 - 59
+ 2149491088U, // 23 - 0
+ 2007824U, // 23 - 1
+ 2008179U, // 23 - 2
+ 1612621269U, // 23 - 3
+ 2008917U, // 23 - 4
+ 2009271U, // 23 - 5
+ 1344186905U, // 23 - 6
+ 2010009U, // 23 - 7
+ 2010363U, // 23 - 8
+ 538881630U, // 23 - 9
+ 2011102U, // 23 - 10
+ 1881059649U, // 23 - 11
+ 2011840U, // 23 - 12
+ 2012195U, // 23 - 13
+ 1612625285U, // 23 - 14
+ 2012932U, // 23 - 15
+ 2013287U, // 23 - 16
+ 1075755465U, // 23 - 17
+ 2014025U, // 23 - 18
+ 2149498028U, // 23 - 19
+ 2014764U, // 23 - 20
+ 2015118U, // 23 - 21
+ 1612628209U, // 23 - 22
+ 2015856U, // 23 - 23
+ 2016210U, // 23 - 24
+ 1075758389U, // 23 - 25
+ 2016949U, // 23 - 26
+ 2017303U, // 23 - 27
+ 807324026U, // 23 - 28
+ 2018042U, // 23 - 29
+ 1881066588U, // 23 - 30
+ 2018780U, // 23 - 31
+ 2019134U, // 23 - 32
+ 1344196768U, // 23 - 33
+ 2019872U, // 23 - 34
+ 2020227U, // 23 - 35
+ 807326949U, // 23 - 36
+ 2020965U, // 23 - 37
+ 1881069512U, // 23 - 38
+ 2021704U, // 23 - 39
+ 2022058U, // 23 - 40
+ 1612635148U, // 23 - 41
+ 2022796U, // 23 - 42
+ 2023150U, // 23 - 43
+ 1075765328U, // 23 - 44
+ 2023889U, // 23 - 45
+ 2024243U, // 23 - 46
+ 807330966U, // 23 - 47
+ 2024982U, // 23 - 48
+ 1881073528U, // 23 - 49
+ 2025719U, // 23 - 50
+ 2026073U, // 23 - 51
+ 1344203708U, // 23 - 52
+ 2026812U, // 23 - 53
+ 2027167U, // 23 - 54
+ 807333889U, // 23 - 55
+ 2027905U, // 23 - 56
+ 2149511907U, // 23 - 57
+ 2028643U, // 23 - 58
+ 2028997U, // 23 - 59
+ 1612642087U, // 24 - 0
+ 2029735U, // 24 - 1
+ 2030090U, // 24 - 2
+ 1075772268U, // 24 - 3
+ 2030829U, // 24 - 4
+ 2031183U, // 24 - 5
+ 807337905U, // 24 - 6
+ 2031921U, // 24 - 7
+ 1881080467U, // 24 - 8
+ 2032659U, // 24 - 9
+ 2033013U, // 24 - 10
+ 1344210648U, // 24 - 11
+ 2033752U, // 24 - 12
+ 2034106U, // 24 - 13
+ 1075776285U, // 24 - 14
+ 2034845U, // 24 - 15
+ 2417954303U, // 24 - 16
+ 2035582U, // 24 - 17
+ 2035937U, // 24 - 18
+ 1612649027U, // 24 - 19
+ 2036675U, // 24 - 20
+ 2037030U, // 24 - 21
+ 1344214664U, // 24 - 22
+ 2037768U, // 24 - 23
+ 2038122U, // 24 - 24
+ 807344844U, // 24 - 25
+ 2038860U, // 24 - 26
+ 1881087407U, // 24 - 27
+ 2039599U, // 24 - 28
+ 2039953U, // 24 - 29
+ 1344217588U, // 24 - 30
+ 2040692U, // 24 - 31
+ 2041046U, // 24 - 32
+ 1075783224U, // 24 - 33
+ 2041784U, // 24 - 34
+ 2417961242U, // 24 - 35
+ 2042522U, // 24 - 36
+ 2042876U, // 24 - 37
+ 1612655967U, // 24 - 38
+ 2043615U, // 24 - 39
+ 2043970U, // 24 - 40
+ 1344221604U, // 24 - 41
+ 2044708U, // 24 - 42
+ 2045062U, // 24 - 43
+ 538916328U, // 24 - 44
+ 2045800U, // 24 - 45
+ 1881094346U, // 24 - 46
+ 2046539U, // 24 - 47
+ 2046893U, // 24 - 48
+ 1612659984U, // 24 - 49
+ 2047632U, // 24 - 50
+ 2047986U, // 24 - 51
+ 1075790164U, // 24 - 52
+ 2048723U, // 24 - 53
+ 2149532726U, // 24 - 54
+ 2049462U, // 24 - 55
+ 2049816U, // 24 - 56
+ 1612662907U, // 24 - 57
+ 2050555U, // 24 - 58
+ 2050909U, // 24 - 59
+ 1344228543U, // 25 - 0
+ 2051647U, // 25 - 1
+ 2052001U, // 25 - 2
+ 807358724U, // 25 - 3
+ 2052740U, // 25 - 4
+ 1881101286U, // 25 - 5
+ 2053479U, // 25 - 6
+ 2053833U, // 25 - 7
+ 1612666923U, // 25 - 8
+ 2054571U, // 25 - 9
+ 2054925U, // 25 - 10
+ 1075797103U, // 25 - 11
+ 2055663U, // 25 - 12
+ 3223281490U, // 25 - 13
+ 2056402U, // 25 - 14
+ 2056756U, // 25 - 15
+ 1612669847U, // 25 - 16
+ 2057495U, // 25 - 17
+ 2057849U, // 25 - 18
+ 1344235483U, // 25 - 19
+ 2058587U, // 25 - 20
+ 2058941U, // 25 - 21
+ 807365664U, // 25 - 22
+ 2059680U, // 25 - 23
+ 1881108226U, // 25 - 24
+ 2060418U, // 25 - 25
+ 2060772U, // 25 - 26
+ 1612673862U, // 25 - 27
+ 2061510U, // 25 - 28
+ 2061864U, // 25 - 29
+ 807368587U, // 25 - 30
+ 2062603U, // 25 - 31
+ 2062958U, // 25 - 32
+ 538934224U, // 25 - 33
+ 2063696U, // 25 - 34
+ 1612676786U, // 25 - 35
+ 2064434U, // 25 - 36
+ 2064788U, // 25 - 37
+ 1344242422U, // 25 - 38
+ 2065526U, // 25 - 39
+ 2065881U, // 25 - 40
+ 807372604U, // 25 - 41
+ 2066620U, // 25 - 42
+ 1881115166U, // 25 - 43
+ 2067358U, // 25 - 44
+ 2067712U, // 25 - 45
+ 1612680802U, // 25 - 46
+ 2068450U, // 25 - 47
+ 2068804U, // 25 - 48
+ 1075810983U, // 25 - 49
+ 2069543U, // 25 - 50
+ 2417989002U, // 25 - 51
+ 2070282U, // 25 - 52
+ 2070636U, // 25 - 53
+ 1612683726U, // 25 - 54
+ 2071373U, // 25 - 55
+ 2071728U, // 25 - 56
+ 1344249362U, // 25 - 57
+ 2072466U, // 25 - 58
+ 2072821U, // 25 - 59
+ 807379543U, // 26 - 0
+ 2073559U, // 26 - 1
+ 1881122105U, // 26 - 2
+ 2074297U, // 26 - 3
+ 2074651U, // 26 - 4
+ 1612687742U, // 26 - 5
+ 2075390U, // 26 - 6
+ 2075744U, // 26 - 7
+ 1075817923U, // 26 - 8
+ 2076483U, // 26 - 9
+ 2417995941U, // 26 - 10
+ 2077221U, // 26 - 11
+ 2077575U, // 26 - 12
+ 1881126121U, // 26 - 13
+ 2078313U, // 26 - 14
+ 2078668U, // 26 - 15
+ 1344256302U, // 26 - 16
+ 2079406U, // 26 - 17
+ 2079761U, // 26 - 18
+ 1075821939U, // 26 - 19
+ 2080499U, // 26 - 20
+ 2149564501U, // 26 - 21
+ 2081237U, // 26 - 22
+ 2081591U, // 26 - 23
+ 1612694682U, // 26 - 24
+ 2082330U, // 26 - 25
+ 2082684U, // 26 - 26
+ 1075824863U, // 26 - 27
+ 2083422U, // 26 - 28
+ 2418002880U, // 26 - 29
+ 2084160U, // 26 - 30
+ 2084514U, // 26 - 31
+ 1612697605U, // 26 - 32
+ 2085253U, // 26 - 33
+ 2085608U, // 26 - 34
+ 1344263242U, // 26 - 35
+ 2086346U, // 26 - 36
+ 2086700U, // 26 - 37
+ 807393422U, // 26 - 38
+ 2087438U, // 26 - 39
+ 2149571440U, // 26 - 40
+ 2088176U, // 26 - 41
+ 2088531U, // 26 - 42
+ 1612701622U, // 26 - 43
+ 2089270U, // 26 - 44
+ 2089624U, // 26 - 45
+ 1075831802U, // 26 - 46
+ 2090362U, // 26 - 47
+ 3223316188U, // 26 - 48
+ 2091100U, // 26 - 49
+ 2091454U, // 26 - 50
+ 1881140001U, // 26 - 51
+ 2092193U, // 26 - 52
+ 2092548U, // 26 - 53
+ 1344270182U, // 26 - 54
+ 2093286U, // 26 - 55
+ 2093640U, // 26 - 56
+ 807400362U, // 26 - 57
+ 2094378U, // 26 - 58
+ 2149578380U, // 26 - 59
+ 2095116U, // 27 - 0
+ 2095471U, // 27 - 1
+ 1344273105U, // 27 - 2
+ 2096209U, // 27 - 3
+ 2096563U, // 27 - 4
+ 1075838741U, // 27 - 5
+ 2097301U, // 27 - 6
+ 3223323128U, // 27 - 7
+ 2098040U, // 27 - 8
+ 2098394U, // 27 - 9
+ 1612711485U, // 27 - 10
+ 2099133U, // 27 - 11
+ 2099487U, // 27 - 12
+ 1344277121U, // 27 - 13
+ 2100225U, // 27 - 14
+ 2100579U, // 27 - 15
+ 807407302U, // 27 - 16
+ 2101318U, // 27 - 17
+ 1881149864U, // 27 - 18
+ 2102056U, // 27 - 19
+ 2102411U, // 27 - 20
+ 1612715501U, // 27 - 21
+ 2103149U, // 27 - 22
+ 2103503U, // 27 - 23
+ 1075845681U, // 27 - 24
+ 2104241U, // 27 - 25
+ 2104596U, // 27 - 26
+ 538975862U, // 27 - 27
+ 2105334U, // 27 - 28
+ 1881153881U, // 27 - 29
+ 2106072U, // 27 - 30
+ 2106426U, // 27 - 31
+ 1344284061U, // 27 - 32
+ 2107164U, // 27 - 33
+ 2107519U, // 27 - 34
+ 807414242U, // 27 - 35
+ 2108258U, // 27 - 36
+ 1881156804U, // 27 - 37
+ 2108996U, // 27 - 38
+ 2109350U, // 27 - 39
+ 1612722440U, // 27 - 40
+ 2110088U, // 27 - 41
+ 2110442U, // 27 - 42
+ 1075852621U, // 27 - 43
+ 2111181U, // 27 - 44
+ 2111536U, // 27 - 45
+ 538982802U, // 27 - 46
+ 2112274U, // 27 - 47
+ 1881160820U, // 27 - 48
+ 2113012U, // 27 - 49
+ 2113366U, // 27 - 50
+ 1344291000U, // 27 - 51
+ 2114104U, // 27 - 52
+ 2114459U, // 27 - 53
+ 1075856638U, // 27 - 54
+ 2115198U, // 27 - 55
+ 2149599200U, // 27 - 56
+ 2115936U, // 27 - 57
+ 2116290U, // 27 - 58
+ 1612729380U, // 27 - 59
+ 2117028U, // 28 - 0
+ 2117382U, // 28 - 1
+ 1075859561U, // 28 - 2
+ 2118121U, // 28 - 3
+ 2118475U, // 28 - 4
+ 807425198U, // 28 - 5
+ 2119213U, // 28 - 6
+ 1881167759U, // 28 - 7
+ 2119951U, // 28 - 8
+ 2120306U, // 28 - 9
+ 1344297940U, // 28 - 10
+ 2121044U, // 28 - 11
+ 2121399U, // 28 - 12
+ 1075863577U, // 28 - 13
+ 2122137U, // 28 - 14
+ 2149606139U, // 28 - 15
+ 2122875U, // 28 - 16
+ 2123229U, // 28 - 17
+ 1612736320U, // 28 - 18
+ 2123968U, // 28 - 19
+ 2124322U, // 28 - 20
+ 1075866501U, // 28 - 21
+ 2125061U, // 28 - 22
+ 2686479975U, // 28 - 23
+ 2125799U, // 28 - 24
+ 2126153U, // 28 - 25
+ 1881174699U, // 28 - 26
+ 2126891U, // 28 - 27
+ 2127246U, // 28 - 28
+ 1344304880U, // 28 - 29
+ 2127984U, // 28 - 30
+ 2128339U, // 28 - 31
+ 1075870517U, // 28 - 32
+ 2129076U, // 28 - 33
+ 2149613078U, // 28 - 34
+ 2129814U, // 28 - 35
+ 2130169U, // 28 - 36
+ 1612743260U, // 28 - 37
+ 2130908U, // 28 - 38
+ 2131262U, // 28 - 39
+ 1075873440U, // 28 - 40
+ 2132000U, // 28 - 41
+ 3223357826U, // 28 - 42
+ 2132738U, // 28 - 43
+ 2133092U, // 28 - 44
+ 1881181639U, // 28 - 45
+ 2133831U, // 28 - 46
+ 2134186U, // 28 - 47
+ 1344311820U, // 28 - 48
+ 2134924U, // 28 - 49
+ 2135278U, // 28 - 50
+ 1075877456U, // 28 - 51
+ 2136016U, // 28 - 52
+ 2149620018U, // 28 - 53
+ 2136754U, // 28 - 54
+ 2137109U, // 28 - 55
+ 1612750200U, // 28 - 56
+ 2137848U, // 28 - 57
+ 2138202U, // 28 - 58
+ 1344315836U, // 28 - 59
+ 2138940U, // 29 - 0
+ 2139294U, // 29 - 1
+ 539010560U, // 29 - 2
+ 2140032U, // 29 - 3
+ 1881188579U, // 29 - 4
+ 2140771U, // 29 - 5
+ 2141125U, // 29 - 6
+ 1344318760U, // 29 - 7
+ 2141863U, // 29 - 8
+ 2142217U, // 29 - 9
+ 807448940U, // 29 - 10
+ 2142956U, // 29 - 11
+ 2149626958U, // 29 - 12
+ 2143694U, // 29 - 13
+ 2144049U, // 29 - 14
+ 1612757139U, // 29 - 15
+ 2144787U, // 29 - 16
+ 2145141U, // 29 - 17
+ 1344322775U, // 29 - 18
+ 2145879U, // 29 - 19
+ 2146234U, // 29 - 20
+ 539017500U, // 29 - 21
+ 2146972U, // 29 - 22
+ 1881195519U, // 29 - 23
+ 2147711U, // 29 - 24
+ 2148065U, // 29 - 25
+ 1612761155U, // 29 - 26
+ 2148803U, // 29 - 27
+ 2149157U, // 29 - 28
+ 1075891335U, // 29 - 29
+ 2149896U, // 29 - 30
+ 2149633898U, // 29 - 31
+ 2150634U, // 29 - 32
+ 2150989U, // 29 - 33
+ 1612764079U, // 29 - 34
+ 2151726U, // 29 - 35
+ 2152080U, // 29 - 36
+ 1075894259U, // 29 - 37
+ 2152819U, // 29 - 38
+ 2153174U, // 29 - 39
+ 807459896U, // 29 - 40
+ 2153912U, // 29 - 41
+ 1881202458U, // 29 - 42
+ 2154650U, // 29 - 43
+ 2155004U, // 29 - 44
+ 1612768094U, // 29 - 45
+ 2155742U, // 29 - 46
+ 2156097U, // 29 - 47
+ 1075898276U, // 29 - 48
+ 2156836U, // 29 - 49
+ 2149640838U, // 29 - 50
+ 2157574U, // 29 - 51
+ 2157928U, // 29 - 52
+ 1881206474U, // 29 - 53
+ 2158666U, // 29 - 54
+ 2159020U, // 29 - 55
+ 1344336655U, // 29 - 56
+ 2159759U, // 29 - 57
+ 2160114U, // 29 - 58
+ 807466836U, // 29 - 59
+ 2160852U, // 30 - 0
+ 1881209398U, // 30 - 1
+ 2161589U, // 30 - 2
+ 2161944U, // 30 - 3
+ 1344339578U, // 30 - 4
+ 2162682U, // 30 - 5
+ 2163037U, // 30 - 6
+ 1075905215U, // 30 - 7
+ 2163775U, // 30 - 8
+ 2149647778U, // 30 - 9
+ 2164513U, // 30 - 10
+ 2164867U, // 30 - 11
+ 1612777958U, // 30 - 12
+ 2165606U, // 30 - 13
+ 2165960U, // 30 - 14
+ 1075908139U, // 30 - 15
+ 2166699U, // 30 - 16
+ 2167053U, // 30 - 17
+ 807473775U, // 30 - 18
+ 2167791U, // 30 - 19
+ 1881216337U, // 30 - 20
+ 2168529U, // 30 - 21
+ 2168883U, // 30 - 22
+ 1344346518U, // 30 - 23
+ 2169622U, // 30 - 24
+ 2169977U, // 30 - 25
+ 1075912155U, // 30 - 26
+ 2170715U, // 30 - 27
+ 2149654717U, // 30 - 28
+ 2171453U, // 30 - 29
+ 2171807U, // 30 - 30
+ 1881220353U, // 30 - 31
+ 2172546U, // 30 - 32
+ 2172900U, // 30 - 33
+ 1344350535U, // 30 - 34
+ 2173639U, // 30 - 35
+ 2173993U, // 30 - 36
+ 807480715U, // 30 - 37
+ 2174730U, // 30 - 38
+ 1881223277U, // 30 - 39
+ 2175469U, // 30 - 40
+ 2175823U, // 30 - 41
+ 1344353458U, // 30 - 42
+ 2176562U, // 30 - 43
+ 2176916U, // 30 - 44
+ 1075919094U, // 30 - 45
+ 2177654U, // 30 - 46
+ 2418097112U, // 30 - 47
+ 2178392U, // 30 - 48
+ 2178747U, // 30 - 49
+ 1612791837U, // 30 - 50
+ 2179486U, // 30 - 51
+ 2179840U, // 30 - 52
+ 1344357474U, // 30 - 53
+ 2180578U, // 30 - 54
+ 2180932U, // 30 - 55
+ 539052198U, // 30 - 56
+ 2181670U, // 30 - 57
+ 1881230217U, // 30 - 58
+ 2182409U, // 30 - 59
+ 2182763U, // 31 - 0
+ 1612795854U, // 31 - 1
+ 2183502U, // 31 - 2
+ 2183856U, // 31 - 3
+ 1075926034U, // 31 - 4
+ 2184594U, // 31 - 5
+ 2418104052U, // 31 - 6
+ 2185332U, // 31 - 7
+ 2185687U, // 31 - 8
+ 1612798777U, // 31 - 9
+ 2186425U, // 31 - 10
+ 2186780U, // 31 - 11
+ 1344364413U, // 31 - 12
+ 2187517U, // 31 - 13
+ 2187872U, // 31 - 14
+ 807494594U, // 31 - 15
+ 2188610U, // 31 - 16
+ 1881237157U, // 31 - 17
+ 2189349U, // 31 - 18
+ 2189703U, // 31 - 19
+ 1612802793U, // 31 - 20
+ 2190441U, // 31 - 21
+ 2190795U, // 31 - 22
+ 1075932973U, // 31 - 23
+ 2191533U, // 31 - 24
+ 2418110992U, // 31 - 25
+ 2192272U, // 31 - 26
+ 2192627U, // 31 - 27
+ 1881241173U, // 31 - 28
+ 2193365U, // 31 - 29
+ 2193719U, // 31 - 30
+ 1344371353U, // 31 - 31
+ 2194457U, // 31 - 32
+ 2194811U, // 31 - 33
+ 807501534U, // 31 - 34
+ 2195550U, // 31 - 35
+ 1881244097U, // 31 - 36
+ 2196289U, // 31 - 37
+ 2196643U, // 31 - 38
+ 1612809733U, // 31 - 39
+ 2197380U, // 31 - 40
+ 2197735U, // 31 - 41
+ 1075939913U, // 31 - 42
+ 2198473U, // 31 - 43
+ 3223424300U, // 31 - 44
+ 2199212U, // 31 - 45
+ 2199566U, // 31 - 46
+ 1881248112U, // 31 - 47
+ 2200304U, // 31 - 48
+ 2200658U, // 31 - 49
+ 1344378293U, // 31 - 50
+ 2201397U, // 31 - 51
+ 2201751U, // 31 - 52
+ 807508474U, // 31 - 53
+ 2202490U, // 31 - 54
+ 1881251036U, // 31 - 55
+ 2203228U, // 31 - 56
+ 2203582U, // 31 - 57
+ 1612816672U, // 31 - 58
+ 2204320U, // 31 - 59
+ 2204675U, // 32 - 0
+ 1075946853U, // 32 - 1
+ 2205413U, // 32 - 2
+ 2149689416U, // 32 - 3
+ 2206152U, // 32 - 4
+ 2206506U, // 32 - 5
+ 1881255052U, // 32 - 6
+ 2207244U, // 32 - 7
+ 2207598U, // 32 - 8
+ 1344385233U, // 32 - 9
+ 2208337U, // 32 - 10
+ 2208691U, // 32 - 11
+ 807515414U, // 32 - 12
+ 2209429U, // 32 - 13
+ 1881257975U, // 32 - 14
+ 2210167U, // 32 - 15
+ 2210521U, // 32 - 16
+ 1612823612U, // 32 - 17
+ 2211260U, // 32 - 18
+ 2211615U, // 32 - 19
+ 1075953793U, // 32 - 20
+ 2212353U, // 32 - 21
+ 2418131811U, // 32 - 22
+ 2213091U, // 32 - 23
+ 2213445U, // 32 - 24
+ 1881261991U, // 32 - 25
+ 2214183U, // 32 - 26
+ 2214538U, // 32 - 27
+ 1344392173U, // 32 - 28
+ 2215277U, // 32 - 29
+ 2215631U, // 32 - 30
+ 1075957809U, // 32 - 31
+ 2216369U, // 32 - 32
+ 2149700371U, // 32 - 33
+ 2217107U, // 32 - 34
+ 2217461U, // 32 - 35
+ 1612830552U, // 32 - 36
+ 2218200U, // 32 - 37
+ 2218555U, // 32 - 38
+ 1075960733U, // 32 - 39
+ 2219293U, // 32 - 40
+ 2418138751U, // 32 - 41
+ 2220030U, // 32 - 42
+ 2220385U, // 32 - 43
+ 1612833475U, // 32 - 44
+ 2221123U, // 32 - 45
+ 2221478U, // 32 - 46
+ 1344399112U, // 32 - 47
+ 2222216U, // 32 - 48
+ 2222570U, // 32 - 49
+ 1075964748U, // 32 - 50
+ 2223308U, // 32 - 51
+ 2149707311U, // 32 - 52
+ 2224047U, // 32 - 53
+ 2224401U, // 32 - 54
+ 1612837492U, // 32 - 55
+ 2225140U, // 32 - 56
+ 2225494U, // 32 - 57
+ 1344403128U, // 32 - 58
+ 2226232U, // 32 - 59
+ 2418145690U, // 33 - 0
+ 2226970U, // 33 - 1
+ 2227325U, // 33 - 2
+ 1881275871U, // 33 - 3
+ 2228063U, // 33 - 4
+ 2228418U, // 33 - 5
+ 1612841508U, // 33 - 6
+ 2229156U, // 33 - 7
+ 2229510U, // 33 - 8
+ 807536232U, // 33 - 9
+ 2230248U, // 33 - 10
+ 2149714251U, // 33 - 11
+ 2230987U, // 33 - 12
+ 2231341U, // 33 - 13
+ 1612844432U, // 33 - 14
+ 2232079U, // 33 - 15
+ 2232433U, // 33 - 16
+ 1075974612U, // 33 - 17
+ 2233171U, // 33 - 18
+ 3491894454U, // 33 - 19
+ 2233910U, // 33 - 20
+ 2234265U, // 33 - 21
+ 1612847355U, // 33 - 22
+ 2235003U, // 33 - 23
+ 2235357U, // 33 - 24
+ 1344412991U, // 33 - 25
+ 2236095U, // 33 - 26
+ 2236449U, // 33 - 27
+ 807543172U, // 33 - 28
+ 2237188U, // 33 - 29
+ 1881285735U, // 33 - 30
+ 2237927U, // 33 - 31
+ 2238281U, // 33 - 32
+ 1612851371U, // 33 - 33
+ 2239019U, // 33 - 34
+ 2239373U, // 33 - 35
+ 1344417007U, // 33 - 36
+ 2240111U, // 33 - 37
+ 2240466U, // 33 - 38
+ 539111733U, // 33 - 39
+ 2241205U, // 33 - 40
+ 1881289751U, // 33 - 41
+ 2241943U, // 33 - 42
+ 2242297U, // 33 - 43
+ 1344419931U, // 33 - 44
+ 2243035U, // 33 - 45
+ 2243389U, // 33 - 46
+ 807550112U, // 33 - 47
+ 2244128U, // 33 - 48
+ 1881292674U, // 33 - 49
+ 2244866U, // 33 - 50
+ 2245220U, // 33 - 51
+ 1612858310U, // 33 - 52
+ 2245958U, // 33 - 53
+ 2246313U, // 33 - 54
+ 1075988491U, // 33 - 55
+ 2247051U, // 33 - 56
+ 2247406U, // 33 - 57
+ 539118672U, // 33 - 58
+ 2248144U, // 33 - 59
+ 1881296690U, // 34 - 0
+ 2248882U, // 34 - 1
+ 2249236U, // 34 - 2
+ 1344426871U, // 34 - 3
+ 2249975U, // 34 - 4
+ 2250329U, // 34 - 5
+ 1075992508U, // 34 - 6
+ 2251068U, // 34 - 7
+ 2149735070U, // 34 - 8
+ 2251806U, // 34 - 9
+ 2252160U, // 34 - 10
+ 1612865250U, // 34 - 11
+ 2252898U, // 34 - 12
+ 2253253U, // 34 - 13
+ 1075995431U, // 34 - 14
+ 2253991U, // 34 - 15
+ 2254346U, // 34 - 16
+ 539125612U, // 34 - 17
+ 2255083U, // 34 - 18
+ 1881303630U, // 34 - 19
+ 2255821U, // 34 - 20
+ 2256176U, // 34 - 21
+ 1344433811U, // 34 - 22
+ 2256915U, // 34 - 23
+ 2257269U, // 34 - 24
+ 1075999447U, // 34 - 25
+ 2258007U, // 34 - 26
+ 2149742009U, // 34 - 27
+ 2258745U, // 34 - 28
+ 2259099U, // 34 - 29
+ 1612872190U, // 34 - 30
+ 2259838U, // 34 - 31
+ 2260193U, // 34 - 32
+ 1344437827U, // 34 - 33
+ 2260931U, // 34 - 34
+ 2418180389U, // 34 - 35
+ 2261669U, // 34 - 36
+ 2262023U, // 34 - 37
+ 1881310569U, // 34 - 38
+ 2262761U, // 34 - 39
+ 2263116U, // 34 - 40
+ 1344440751U, // 34 - 41
+ 2263855U, // 34 - 42
+ 2264209U, // 34 - 43
+ 1076006387U, // 34 - 44
+ 2264947U, // 34 - 45
+ 2149748949U, // 34 - 46
+ 2265685U, // 34 - 47
+ 2266039U, // 34 - 48
+ 1612879130U, // 34 - 49
+ 2266778U, // 34 - 50
+ 2267132U, // 34 - 51
+ 1344444767U, // 34 - 52
+ 2267870U, // 34 - 53
+ 2955058240U, // 34 - 54
+ 2268608U, // 34 - 55
+ 2268963U, // 34 - 56
+ 1881317509U, // 34 - 57
+ 2269701U, // 34 - 58
+ 2270056U, // 34 - 59
+ 1344447690U, // 35 - 0
+ 2270794U, // 35 - 1
+ 2271148U, // 35 - 2
+ 1076013326U, // 35 - 3
+ 2271886U, // 35 - 4
+ 2149755889U, // 35 - 5
+ 2272625U, // 35 - 6
+ 2272979U, // 35 - 7
+ 1612886070U, // 35 - 8
+ 2273718U, // 35 - 9
+ 2274072U, // 35 - 10
+ 1344451706U, // 35 - 11
+ 2274810U, // 35 - 12
+ 3223500636U, // 35 - 13
+ 2275548U, // 35 - 14
+ 2275903U, // 35 - 15
+ 1881324449U, // 35 - 16
+ 2276641U, // 35 - 17
+ 2276996U, // 35 - 18
+ 1344454630U, // 35 - 19
+ 2277733U, // 35 - 20
+ 2278087U, // 35 - 21
+ 1076020266U, // 35 - 22
+ 2278826U, // 35 - 23
+ 2418198285U, // 35 - 24
+ 2279565U, // 35 - 25
+ 2279919U, // 35 - 26
+ 1612893009U, // 35 - 27
+ 2280657U, // 35 - 28
+ 2281011U, // 35 - 29
+ 1344458645U, // 35 - 30
+ 2281749U, // 35 - 31
+ 2282104U, // 35 - 32
+ 539153371U, // 35 - 33
+ 2282843U, // 35 - 34
+ 1881331389U, // 35 - 35
+ 2283581U, // 35 - 36
+ 2283935U, // 35 - 37
+ 1612897025U, // 35 - 38
+ 2284673U, // 35 - 39
+ 2285027U, // 35 - 40
+ 1076027206U, // 35 - 41
+ 2285766U, // 35 - 42
+ 2149769769U, // 35 - 43
+ 2286504U, // 35 - 44
+ 2286859U, // 35 - 45
+ 1612899949U, // 35 - 46
+ 2287596U, // 35 - 47
+ 2287951U, // 35 - 48
+ 1344465585U, // 35 - 49
+ 2288689U, // 35 - 50
+ 2289044U, // 35 - 51
+ 539160310U, // 35 - 52
+ 2289782U, // 35 - 53
+ 1881338329U, // 35 - 54
+ 2290520U, // 35 - 55
+ 2290874U, // 35 - 56
+ 1612903965U, // 35 - 57
+ 2291613U, // 35 - 58
+ 2291967U, // 35 - 59
+ 1076034146U, // 36 - 0
+ 2292706U, // 36 - 1
+ 2149776708U, // 36 - 2
+ 2293444U, // 36 - 3
+ 2293798U, // 36 - 4
+ 1881342344U, // 36 - 5
+ 2294536U, // 36 - 6
+ 2294890U, // 36 - 7
+ 1344472525U, // 36 - 8
+ 2295629U, // 36 - 9
+ 2295984U, // 36 - 10
+ 807602706U, // 36 - 11
+ 2296722U, // 36 - 12
+ 2149780724U, // 36 - 13
+ 2297460U, // 36 - 14
+ 2297814U, // 36 - 15
+ 1612910904U, // 36 - 16
+ 2298553U, // 36 - 17
+ 2298907U, // 36 - 18
+ 1076041086U, // 36 - 19
+ 2299646U, // 36 - 20
+ 2149783648U, // 36 - 21
+ 2300383U, // 36 - 22
+ 2300737U, // 36 - 23
+ 1612913828U, // 36 - 24
+ 2301476U, // 36 - 25
+ 2301831U, // 36 - 26
+ 1344479465U, // 36 - 27
+ 2302569U, // 36 - 28
+ 2302923U, // 36 - 29
+ 807609645U, // 36 - 30
+ 2303661U, // 36 - 31
+ 2149787663U, // 36 - 32
+ 2304399U, // 36 - 33
+ 2304754U, // 36 - 34
+ 1344482388U, // 36 - 35
+ 2305493U, // 36 - 36
+ 2305847U, // 36 - 37
+ 1076048025U, // 36 - 38
+ 2306585U, // 36 - 39
+ 2149790587U, // 36 - 40
+ 2307323U, // 36 - 41
+ 2307677U, // 36 - 42
+ 1881356224U, // 36 - 43
+ 2308416U, // 36 - 44
+ 2308770U, // 36 - 45
+ 1344486405U, // 36 - 46
+ 2309509U, // 36 - 47
+ 2309863U, // 36 - 48
+ 807616585U, // 36 - 49
+ 2310601U, // 36 - 50
+ 1881359147U, // 36 - 51
+ 2311339U, // 36 - 52
+ 2311694U, // 36 - 53
+ 1344489328U, // 36 - 54
+ 2312432U, // 36 - 55
+ 2312787U, // 36 - 56
+ 1076054964U, // 36 - 57
+ 2313524U, // 36 - 58
+ 2418232983U, // 36 - 59
+ 2314263U, // 37 - 0
+ 2314617U, // 37 - 1
+ 1612927708U, // 37 - 2
+ 2315356U, // 37 - 3
+ 2315710U, // 37 - 4
+ 1344493344U, // 37 - 5
+ 2316448U, // 37 - 6
+ 2316802U, // 37 - 7
+ 807623524U, // 37 - 8
+ 2317540U, // 37 - 9
+ 1881366087U, // 37 - 10
+ 2318279U, // 37 - 11
+ 2318634U, // 37 - 12
+ 1612931724U, // 37 - 13
+ 2319372U, // 37 - 14
+ 2319726U, // 37 - 15
+ 1076061904U, // 37 - 16
+ 2320464U, // 37 - 17
+ 3223546290U, // 37 - 18
+ 2321202U, // 37 - 19
+ 2321557U, // 37 - 20
+ 1612934648U, // 37 - 21
+ 2322296U, // 37 - 22
+ 2322650U, // 37 - 23
+ 1344500284U, // 37 - 24
+ 2323387U, // 37 - 25
+ 2323742U, // 37 - 26
+ 539195008U, // 37 - 27
+ 2324480U, // 37 - 28
+ 1881373027U, // 37 - 29
+ 2325219U, // 37 - 30
+ 2325573U, // 37 - 31
+ 1612938663U, // 37 - 32
+ 2326311U, // 37 - 33
+ 2326665U, // 37 - 34
+ 1076068844U, // 37 - 35
+ 2327404U, // 37 - 36
+ 2418246862U, // 37 - 37
+ 2328142U, // 37 - 38
+ 2328497U, // 37 - 39
+ 1881377043U, // 37 - 40
+ 2329235U, // 37 - 41
+ 2329589U, // 37 - 42
+ 1344507223U, // 37 - 43
+ 2330327U, // 37 - 44
+ 2330682U, // 37 - 45
+ 807637404U, // 37 - 46
+ 2331420U, // 37 - 47
+ 2149815423U, // 37 - 48
+ 2332159U, // 37 - 49
+ 2332513U, // 37 - 50
+ 1612945603U, // 37 - 51
+ 2333251U, // 37 - 52
+ 2333605U, // 37 - 53
+ 1076075784U, // 37 - 54
+ 2334344U, // 37 - 55
+ 2418253802U, // 37 - 56
+ 2335082U, // 37 - 57
+ 2335436U, // 37 - 58
+ 1881383982U, // 37 - 59
+ 2336174U, // 38 - 0
+ 2336528U, // 38 - 1
+ 1344514163U, // 38 - 2
+ 2337267U, // 38 - 3
+ 2337622U, // 38 - 4
+ 1076079800U, // 38 - 5
+ 2338360U, // 38 - 6
+ 2149822362U, // 38 - 7
+ 2339098U, // 38 - 8
+ 2339452U, // 38 - 9
+ 1612952542U, // 38 - 10
+ 2340190U, // 38 - 11
+ 2340545U, // 38 - 12
+ 1076082724U, // 38 - 13
+ 2341284U, // 38 - 14
+ 2149825286U, // 38 - 15
+ 2342022U, // 38 - 16
+ 2342376U, // 38 - 17
+ 1881390922U, // 38 - 18
+ 2343114U, // 38 - 19
+ 2343468U, // 38 - 20
+ 1344521103U, // 38 - 21
+ 2344207U, // 38 - 22
+ 2344562U, // 38 - 23
+ 1076086740U, // 38 - 24
+ 2345300U, // 38 - 25
+ 2149829302U, // 38 - 26
+ 2346037U, // 38 - 27
+ 2346392U, // 38 - 28
+ 1612959482U, // 38 - 29
+ 2347130U, // 38 - 30
+ 2347485U, // 38 - 31
+ 1076089663U, // 38 - 32
+ 2348223U, // 38 - 33
+ 2418267681U, // 38 - 34
+ 2348961U, // 38 - 35
+ 2349315U, // 38 - 36
+ 1881397862U, // 38 - 37
+ 2350054U, // 38 - 38
+ 2350408U, // 38 - 39
+ 1344528043U, // 38 - 40
+ 2351147U, // 38 - 41
+ 2351501U, // 38 - 42
+ 807658223U, // 38 - 43
+ 2352239U, // 38 - 44
+ 2149836241U, // 38 - 45
+ 2352977U, // 38 - 46
+ 2353332U, // 38 - 47
+ 1612966422U, // 38 - 48
+ 2354070U, // 38 - 49
+ 2354425U, // 38 - 50
+ 1344532059U, // 38 - 51
+ 2355163U, // 38 - 52
+ 2686710077U, // 38 - 53
+ 2355901U, // 38 - 54
+ 2356255U, // 38 - 55
+ 1881404802U, // 38 - 56
+ 2356994U, // 38 - 57
+ 2357348U, // 38 - 58
+ 1344534983U, // 38 - 59
+ 2358086U, // 39 - 0
+ 2358440U, // 39 - 1
+ 1076100619U, // 39 - 2
+ 2359178U, // 39 - 3
+ 2149843181U, // 39 - 4
+ 2359917U, // 39 - 5
+ 2360272U, // 39 - 6
+ 1612973362U, // 39 - 7
+ 2361010U, // 39 - 8
+ 2361364U, // 39 - 9
+ 1344538998U, // 39 - 10
+ 2362102U, // 39 - 11
+ 2686717016U, // 39 - 12
+ 2362840U, // 39 - 13
+ 2363195U, // 39 - 14
+ 1881411742U, // 39 - 15
+ 2363934U, // 39 - 16
+ 2364288U, // 39 - 17
+ 1612977378U, // 39 - 18
+ 2365026U, // 39 - 19
+ 2365380U, // 39 - 20
+ 807672102U, // 39 - 21
+ 2366118U, // 39 - 22
+ 2149850121U, // 39 - 23
+ 2366857U, // 39 - 24
+ 2367212U, // 39 - 25
+ 1612980302U, // 39 - 26
+ 2367950U, // 39 - 27
+ 2368304U, // 39 - 28
+ 1076110482U, // 39 - 29
+ 2369042U, // 39 - 30
+ 2955159412U, // 39 - 31
+ 2369780U, // 39 - 32
+ 2370135U, // 39 - 33
+ 1881418681U, // 39 - 34
+ 2370873U, // 39 - 35
+ 2371227U, // 39 - 36
+ 1612984317U, // 39 - 37
+ 2371965U, // 39 - 38
+ 2372320U, // 39 - 39
+ 1076114498U, // 39 - 40
+ 2373058U, // 39 - 41
+ 2149857061U, // 39 - 42
+ 2373797U, // 39 - 43
+ 2374151U, // 39 - 44
+ 1612987241U, // 39 - 45
+ 2374889U, // 39 - 46
+ 2375243U, // 39 - 47
+ 1344552878U, // 39 - 48
+ 2375982U, // 39 - 49
+ 2376336U, // 39 - 50
+ 807683059U, // 39 - 51
+ 2377075U, // 39 - 52
+ 1881425621U, // 39 - 53
+ 2377813U, // 39 - 54
+ 2378167U, // 39 - 55
+ 1344555801U, // 39 - 56
+ 2378905U, // 39 - 57
+ 2379260U, // 39 - 58
+ 807685982U, // 39 - 59
+ 2379998U, // 40 - 0
+ 2149864001U, // 40 - 1
+ 2380736U, // 40 - 2
+ 2381090U, // 40 - 3
+ 1612994181U, // 40 - 4
+ 2381828U, // 40 - 5
+ 2382183U, // 40 - 6
+ 1076124362U, // 40 - 7
+ 2382922U, // 40 - 8
+ 2383276U, // 40 - 9
+ 807689998U, // 40 - 10
+ 2384014U, // 40 - 11
+ 1881432560U, // 40 - 12
+ 2384752U, // 40 - 13
+ 2385106U, // 40 - 14
+ 1344562741U, // 40 - 15
+ 2385845U, // 40 - 16
+ 2386200U, // 40 - 17
+ 1076128378U, // 40 - 18
+ 2386938U, // 40 - 19
+ 2149870940U, // 40 - 20
+ 2387676U, // 40 - 21
+ 2388030U, // 40 - 22
+ 1613001120U, // 40 - 23
+ 2388768U, // 40 - 24
+ 2389123U, // 40 - 25
+ 1344566758U, // 40 - 26
+ 2389862U, // 40 - 27
+ 2686744776U, // 40 - 28
+ 2390600U, // 40 - 29
+ 2390954U, // 40 - 30
+ 1881439500U, // 40 - 31
+ 2391692U, // 40 - 32
+ 2392046U, // 40 - 33
+ 1344569681U, // 40 - 34
+ 2392785U, // 40 - 35
+ 2393139U, // 40 - 36
+ 1076135318U, // 40 - 37
+ 2393877U, // 40 - 38
+ 2149877879U, // 40 - 39
+ 2394615U, // 40 - 40
+ 2394970U, // 40 - 41
+ 1613008060U, // 40 - 42
+ 2395708U, // 40 - 43
+ 2396063U, // 40 - 44
+ 1344573697U, // 40 - 45
+ 2396801U, // 40 - 46
+ 2418316259U, // 40 - 47
+ 2397539U, // 40 - 48
+ 2397893U, // 40 - 49
+ 2149881896U, // 40 - 50
+ 2398632U, // 40 - 51
+ 2398986U, // 40 - 52
+ 1613012077U, // 40 - 53
+ 2399725U, // 40 - 54
+ 2400079U, // 40 - 55
+ 1076142257U, // 40 - 56
+ 2400817U, // 40 - 57
+ 2418320275U, // 40 - 58
+ 2401555U, // 40 - 59
+ 2401910U, // 41 - 0
+ 1613015000U, // 41 - 1
+ 2402648U, // 41 - 2
+ 2403003U, // 41 - 3
+ 1344580637U, // 41 - 4
+ 2403740U, // 41 - 5
+ 2955194110U, // 41 - 6
+ 2404478U, // 41 - 7
+ 2404833U, // 41 - 8
+ 1881453380U, // 41 - 9
+ 2405572U, // 41 - 10
+ 2405926U, // 41 - 11
+ 1613019016U, // 41 - 12
+ 2406664U, // 41 - 13
+ 2407018U, // 41 - 14
+ 1076149196U, // 41 - 15
+ 2407756U, // 41 - 16
+ 2149891759U, // 41 - 17
+ 2408495U, // 41 - 18
+ 2408850U, // 41 - 19
+ 1613021940U, // 41 - 20
+ 2409588U, // 41 - 21
+ 2409942U, // 41 - 22
+ 1344587576U, // 41 - 23
+ 2410680U, // 41 - 24
+ 2411034U, // 41 - 25
+ 807717757U, // 41 - 26
+ 2411773U, // 41 - 27
+ 1881460320U, // 41 - 28
+ 2412512U, // 41 - 29
+ 2412866U, // 41 - 30
+ 1613025956U, // 41 - 31
+ 2413603U, // 41 - 32
+ 2413958U, // 41 - 33
+ 1076156136U, // 41 - 34
+ 2414696U, // 41 - 35
+ 2418334155U, // 41 - 36
+ 2415435U, // 41 - 37
+ 2415789U, // 41 - 38
+ 1613028880U, // 41 - 39
+ 2416527U, // 41 - 40
+ 2416881U, // 41 - 41
+ 1344594516U, // 41 - 42
+ 2417620U, // 41 - 43
+ 2417974U, // 41 - 44
+ 807724697U, // 41 - 45
+ 2418713U, // 41 - 46
+ 1881467259U, // 41 - 47
+ 2419451U, // 41 - 48
+ 2419805U, // 41 - 49
+ 1613032895U, // 41 - 50
+ 2420543U, // 41 - 51
+ 2420897U, // 41 - 52
+ 807727620U, // 41 - 53
+ 2421636U, // 41 - 54
+ 2149905639U, // 41 - 55
+ 2422375U, // 41 - 56
+ 2422729U, // 41 - 57
+ 1613035819U, // 41 - 58
+ 2423467U, // 41 - 59
+ 2423821U, // 42 - 0
+ 1344601455U, // 42 - 1
+ 2424560U, // 42 - 2
+ 2424914U, // 42 - 3
+ 807731637U, // 42 - 4
+ 2425653U, // 42 - 5
+ 1881474199U, // 42 - 6
+ 2426390U, // 42 - 7
+ 2426744U, // 42 - 8
+ 1613039835U, // 42 - 9
+ 2427483U, // 42 - 10
+ 2427838U, // 42 - 11
+ 1076170016U, // 42 - 12
+ 2428576U, // 42 - 13
+ 2149912578U, // 42 - 14
+ 2429314U, // 42 - 15
+ 2429668U, // 42 - 16
+ 1881478214U, // 42 - 17
+ 2430406U, // 42 - 18
+ 2430761U, // 42 - 19
+ 1344608395U, // 42 - 20
+ 2431500U, // 42 - 21
+ 2431854U, // 42 - 22
+ 807738576U, // 42 - 23
+ 2432592U, // 42 - 24
+ 2149916594U, // 42 - 25
+ 2433330U, // 42 - 26
+ 2433684U, // 42 - 27
+ 1613046775U, // 42 - 28
+ 2434423U, // 42 - 29
+ 2434777U, // 42 - 30
+ 1076176956U, // 42 - 31
+ 2435516U, // 42 - 32
+ 2418354974U, // 42 - 33
+ 2436253U, // 42 - 34
+ 2436608U, // 42 - 35
+ 1881485154U, // 42 - 36
+ 2437346U, // 42 - 37
+ 2437701U, // 42 - 38
+ 1344615335U, // 42 - 39
+ 2438439U, // 42 - 40
+ 2438794U, // 42 - 41
+ 1076180971U, // 42 - 42
+ 2439531U, // 42 - 43
+ 2149923534U, // 42 - 44
+ 2440270U, // 42 - 45
+ 2440624U, // 42 - 46
+ 1613053715U, // 42 - 47
+ 2441363U, // 42 - 48
+ 2441717U, // 42 - 49
+ 1344619351U, // 42 - 50
+ 2442455U, // 42 - 51
+ 2418361913U, // 42 - 52
+ 2443193U, // 42 - 53
+ 2443547U, // 42 - 54
+ 1881492094U, // 42 - 55
+ 2444286U, // 42 - 56
+ 2444641U, // 42 - 57
+ 1344622275U, // 42 - 58
+ 2445379U, // 42 - 59
+ 2955235749U, // 43 - 0
+ 2446117U, // 43 - 1
+ 2446471U, // 43 - 2
+ 1881495017U, // 43 - 3
+ 2447209U, // 43 - 4
+ 2447564U, // 43 - 5
+ 1613060655U, // 43 - 6
+ 2448303U, // 43 - 7
+ 2448657U, // 43 - 8
+ 1076190835U, // 43 - 9
+ 2449394U, // 43 - 10
+ 2418368853U, // 43 - 11
+ 2450133U, // 43 - 12
+ 2450487U, // 43 - 13
+ 1613063578U, // 43 - 14
+ 2451226U, // 43 - 15
+ 2451580U, // 43 - 16
+ 1344629214U, // 43 - 17
+ 2452318U, // 43 - 18
+ 2452672U, // 43 - 19
+ 807759395U, // 43 - 20
+ 2453411U, // 43 - 21
+ 2149937413U, // 43 - 22
+ 2454150U, // 43 - 23
+ 2454504U, // 43 - 24
+ 1613067594U, // 43 - 25
+ 2455242U, // 43 - 26
+ 2455596U, // 43 - 27
+ 1344633230U, // 43 - 28
+ 2456334U, // 43 - 29
+ 2686811249U, // 43 - 30
+ 2457073U, // 43 - 31
+ 2457427U, // 43 - 32
+ 1881505974U, // 43 - 33
+ 2458166U, // 43 - 34
+ 2458520U, // 43 - 35
+ 1344636154U, // 43 - 36
+ 2459258U, // 43 - 37
+ 2459612U, // 43 - 38
+ 807766335U, // 43 - 39
+ 2460351U, // 43 - 40
+ 1881508897U, // 43 - 41
+ 2461089U, // 43 - 42
+ 2461443U, // 43 - 43
+ 1613074533U, // 43 - 44
+ 2462181U, // 43 - 45
+ 2462536U, // 43 - 46
+ 1076204714U, // 43 - 47
+ 2463274U, // 43 - 48
+ 3223689101U, // 43 - 49
+ 2464013U, // 43 - 50
+ 2464367U, // 43 - 51
+ 1881512913U, // 43 - 52
+ 2465105U, // 43 - 53
+ 2465459U, // 43 - 54
+ 1613078549U, // 43 - 55
+ 2466197U, // 43 - 56
+ 2466552U, // 43 - 57
+ 807773275U, // 43 - 58
+ 2467291U, // 43 - 59
+ 2149951293U, // 44 - 0
+ 2468029U, // 44 - 1
+ 2468383U, // 44 - 2
+ 1613081473U, // 44 - 3
+ 2469121U, // 44 - 4
+ 2469475U, // 44 - 5
+ 1076211654U, // 44 - 6
+ 2470214U, // 44 - 7
+ 2418389673U, // 44 - 8
+ 2470953U, // 44 - 9
+ 2471307U, // 44 - 10
+ 1881519853U, // 44 - 11
+ 2472044U, // 44 - 12
+ 2472399U, // 44 - 13
+ 1344650033U, // 44 - 14
+ 2473137U, // 44 - 15
+ 2473492U, // 44 - 16
+ 1076215670U, // 44 - 17
+ 2474230U, // 44 - 18
+ 2149958232U, // 44 - 19
+ 2474968U, // 44 - 20
+ 2475322U, // 44 - 21
+ 1613088413U, // 44 - 22
+ 2476061U, // 44 - 23
+ 2476415U, // 44 - 24
+ 1344654050U, // 44 - 25
+ 2477154U, // 44 - 26
+ 2418396612U, // 44 - 27
+ 2477892U, // 44 - 28
+ 2478246U, // 44 - 29
+ 1881526792U, // 44 - 30
+ 2478984U, // 44 - 31
+ 2479339U, // 44 - 32
+ 1344656973U, // 44 - 33
+ 2480077U, // 44 - 34
+ 2480432U, // 44 - 35
+ 1076222610U, // 44 - 36
+ 2481170U, // 44 - 37
+ 2149965172U, // 44 - 38
+ 2481908U, // 44 - 39
+ 2482262U, // 44 - 40
+ 1613095353U, // 44 - 41
+ 2483001U, // 44 - 42
+ 2483355U, // 44 - 43
+ 1344660990U, // 44 - 44
+ 2484093U, // 44 - 45
+ 2418403551U, // 44 - 46
+ 2484831U, // 44 - 47
+ 2485185U, // 44 - 48
+ 1881533732U, // 44 - 49
+ 2485924U, // 44 - 50
+ 2486279U, // 44 - 51
+ 1344663913U, // 44 - 52
+ 2487017U, // 44 - 53
+ 2487371U, // 44 - 54
+ 807794093U, // 44 - 55
+ 2488109U, // 44 - 56
+0xffffffff
+};
+
+//Took 20975 seconds to create
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/table-587-2100/calcondata.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,23 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Generated by CalconTable.exe
+//
+
+const TInt KFirstCycle=35;//1..n
+const TInt KFirstJulianDate=1506663;
+const TInt KLastJulianDate=2488434;
+const TInt KFirstYear=9; //1..60
+const TInt KLastCycle=79;//1..n
+const TInt KLastYear=57;//1..60
+const TInt KNumberOfYears=2689;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/table1900-2100/calcondata.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,427 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Generated by CalconTable.exe
+//
+
+#include "calconvusingtable.h"
+const TUint16 TCalconData::iCalConDataMonth[]={
+ 43856U, // 0 - 35
+ 19304U, // 0 - 36
+ 19168U, // 0 - 37
+ 42352U, // 0 - 38
+ 21096U, // 0 - 39
+ 53856U, // 0 - 40
+ 55632U, // 0 - 41
+ 23208U, // 0 - 42
+ 22176U, // 0 - 43
+ 39632U, // 0 - 44
+ 19176U, // 0 - 45
+ 19168U, // 0 - 46
+ 42200U, // 0 - 47
+ 42192U, // 0 - 48
+ 53840U, // 0 - 49
+ 54568U, // 0 - 50
+ 46400U, // 0 - 51
+ 54944U, // 0 - 52
+ 38608U, // 0 - 53
+ 38320U, // 0 - 54
+ 18872U, // 0 - 55
+ 18800U, // 0 - 56
+ 42160U, // 0 - 57
+ 45656U, // 0 - 58
+ 27216U, // 0 - 59
+ 27968U, // 1 - 0
+ 44456U, // 1 - 1
+ 11104U, // 1 - 2
+ 38256U, // 1 - 3
+ 18808U, // 1 - 4
+ 18800U, // 1 - 5
+ 25776U, // 1 - 6
+ 54432U, // 1 - 7
+ 59984U, // 1 - 8
+ 27976U, // 1 - 9
+ 23248U, // 1 - 10
+ 11104U, // 1 - 11
+ 37744U, // 1 - 12
+ 37600U, // 1 - 13
+ 51560U, // 1 - 14
+ 51536U, // 1 - 15
+ 54432U, // 1 - 16
+ 55888U, // 1 - 17
+ 46416U, // 1 - 18
+ 22176U, // 1 - 19
+ 43736U, // 1 - 20
+ 9680U, // 1 - 21
+ 37584U, // 1 - 22
+ 51544U, // 1 - 23
+ 43344U, // 1 - 24
+ 46248U, // 1 - 25
+ 27808U, // 1 - 26
+ 46416U, // 1 - 27
+ 21928U, // 1 - 28
+ 19872U, // 1 - 29
+ 42416U, // 1 - 30
+ 21176U, // 1 - 31
+ 21168U, // 1 - 32
+ 43344U, // 1 - 33
+ 59728U, // 1 - 34
+ 27296U, // 1 - 35
+ 44368U, // 1 - 36
+ 43856U, // 1 - 37
+ 19296U, // 1 - 38
+ 42352U, // 1 - 39
+ 42352U, // 1 - 40
+ 21088U, // 1 - 41
+ 59696U, // 1 - 42
+ 55632U, // 1 - 43
+ 23208U, // 1 - 44
+ 22176U, // 1 - 45
+ 38608U, // 1 - 46
+ 19176U, // 1 - 47
+ 19152U, // 1 - 48
+ 42192U, // 1 - 49
+ 53864U, // 1 - 50
+ 53840U, // 1 - 51
+ 54568U, // 1 - 52
+ 46400U, // 1 - 53
+ 46752U, // 1 - 54
+ 38608U, // 1 - 55
+ 38320U, // 1 - 56
+ 18864U, // 1 - 57
+ 42168U, // 1 - 58
+ 42160U, // 1 - 59
+ 45656U, // 2 - 0
+ 27216U, // 2 - 1
+ 27968U, // 2 - 2
+ 44448U, // 2 - 3
+ 43872U, // 2 - 4
+ 38256U, // 2 - 5
+ 18808U, // 2 - 6
+ 18800U, // 2 - 7
+ 25776U, // 2 - 8
+ 27216U, // 2 - 9
+ 59984U, // 2 - 10
+ 27432U, // 2 - 11
+ 23232U, // 2 - 12
+ 43872U, // 2 - 13
+ 37736U, // 2 - 14
+ 37600U, // 2 - 15
+ 51552U, // 2 - 16
+ 54440U, // 2 - 17
+ 54432U, // 2 - 18
+ 55888U, // 2 - 19
+ 23208U, // 2 - 20
+ 22176U, // 2 - 21
+ 43736U, // 2 - 22
+ 9680U, // 2 - 23
+ 37584U, // 2 - 24
+ 51544U, // 2 - 25
+ 43344U, // 2 - 26
+ 46240U, // 2 - 27
+ 46416U, // 2 - 28
+ 44368U, // 2 - 29
+ 21928U, // 2 - 30
+ 19360U, // 2 - 31
+ 42416U, // 2 - 32
+ 21176U, // 2 - 33
+ 21168U, // 2 - 34
+ 43312U, // 2 - 35
+ 29864U, // 2 - 36
+ 27296U, // 2 - 37
+ 44368U, // 2 - 38
+ 19880U, // 2 - 39
+ 19296U, // 2 - 40
+ 42352U, // 2 - 41
+ 42208U, // 2 - 42
+ 53856U, // 2 - 43
+ 59696U, // 2 - 44
+ 54576U, // 2 - 45
+ 23200U, // 2 - 46
+ 27472U, // 2 - 47
+ 38608U, // 2 - 48
+ 19176U, // 2 - 49
+ 19152U, // 2 - 50
+ 42192U, // 2 - 51
+ 53848U, // 2 - 52
+ 53840U, // 2 - 53
+ 54560U, // 2 - 54
+ 55968U, // 2 - 55
+ 46496U, // 2 - 56
+ 22224U, // 2 - 57
+ 19160U, // 2 - 58
+ 18864U, // 2 - 59
+ 42168U, // 3 - 0
+ 42160U, // 3 - 1
+ 43600U, // 3 - 2
+ 46376U, // 3 - 3
+ 27936U, // 3 - 4
+ 44448U, // 3 - 5
+ 21936U, // 3 - 6
+ 37744U, // 3 - 7
+ 18808U, // 3 - 8
+ 18800U, // 3 - 9
+ 25776U, // 3 - 10
+ 27216U, // 3 - 11
+ 59984U, // 3 - 12
+ 27296U, // 3 - 13
+ 43872U, // 3 - 14
+ 43744U, // 3 - 15
+ 37600U, // 3 - 16
+ 51568U, // 3 - 17
+ 51552U, // 3 - 18
+ 54440U, // 3 - 19
+ 54432U, // 3 - 20
+ 55888U, // 3 - 21
+ 23208U, // 3 - 22
+ 22176U, // 3 - 23
+ 42704U, // 3 - 24
+ 21224U, // 3 - 25
+ 21200U, // 3 - 26
+ 43352U, // 3 - 27
+ 43344U, // 3 - 28
+ 46240U, // 3 - 29
+ 46416U, // 3 - 30
+ 44368U, // 3 - 31
+ 21920U, // 3 - 32
+ 42448U, // 3 - 33
+ 42416U, // 3 - 34
+ 21168U, // 3 - 35
+ 43320U, // 3 - 36
+ 26928U, // 3 - 37
+ 29336U, // 3 - 38
+ 27296U, // 3 - 39
+ 44368U, // 3 - 40
+ 19880U, // 3 - 41
+ 19296U, // 3 - 42
+ 42352U, // 3 - 43
+ 21104U, // 3 - 44
+ 53600U, // 3 - 45
+ 59696U, // 3 - 46
+ 54560U, // 3 - 47
+ 55968U, // 3 - 48
+ 27472U, // 3 - 49
+ 22224U, // 3 - 50
+ 19168U, // 3 - 51
+ 42216U, // 3 - 52
+ 41680U, // 3 - 53
+ 53584U, // 3 - 54
+ 55592U, // 3 - 55
+};
+const TUint32 TCalconData::iCalConDataYear[]={
+ 2414696, // 0 - 35
+ 2418334155, // 0 - 36
+ 2415435, // 0 - 37
+ 2415789, // 0 - 38
+ 1613028880, // 0 - 39
+ 2416527, // 0 - 40
+ 2416881, // 0 - 41
+ 1344594516, // 0 - 42
+ 2417620, // 0 - 43
+ 2417974, // 0 - 44
+ 807724697, // 0 - 45
+ 2418713, // 0 - 46
+ 1881467259, // 0 - 47
+ 2419451, // 0 - 48
+ 2419805, // 0 - 49
+ 1613032895, // 0 - 50
+ 2420543, // 0 - 51
+ 2420897, // 0 - 52
+ 807727620, // 0 - 53
+ 2421636, // 0 - 54
+ 2149905639, // 0 - 55
+ 2422375, // 0 - 56
+ 2422729, // 0 - 57
+ 1613035819, // 0 - 58
+ 2423467, // 0 - 59
+ 2423821, // 1 - 0
+ 1344601455, // 1 - 1
+ 2424560, // 1 - 2
+ 2424914, // 1 - 3
+ 807731637, // 1 - 4
+ 2425653, // 1 - 5
+ 1881474199, // 1 - 6
+ 2426390, // 1 - 7
+ 2426744, // 1 - 8
+ 1613039835, // 1 - 9
+ 2427483, // 1 - 10
+ 2427838, // 1 - 11
+ 1076170016, // 1 - 12
+ 2428576, // 1 - 13
+ 2149912578, // 1 - 14
+ 2429314, // 1 - 15
+ 2429668, // 1 - 16
+ 1881478214, // 1 - 17
+ 2430406, // 1 - 18
+ 2430761, // 1 - 19
+ 1344608395, // 1 - 20
+ 2431500, // 1 - 21
+ 2431854, // 1 - 22
+ 807738576, // 1 - 23
+ 2432592, // 1 - 24
+ 2149916594, // 1 - 25
+ 2433330, // 1 - 26
+ 2433684, // 1 - 27
+ 1613046775, // 1 - 28
+ 2434423, // 1 - 29
+ 2434777, // 1 - 30
+ 1076176956, // 1 - 31
+ 2435516, // 1 - 32
+ 2418354974, // 1 - 33
+ 2436253, // 1 - 34
+ 2436608, // 1 - 35
+ 1881485154, // 1 - 36
+ 2437346, // 1 - 37
+ 2437701, // 1 - 38
+ 1344615335, // 1 - 39
+ 2438439, // 1 - 40
+ 2438794, // 1 - 41
+ 1076180971, // 1 - 42
+ 2439531, // 1 - 43
+ 2149923534, // 1 - 44
+ 2440270, // 1 - 45
+ 2440624, // 1 - 46
+ 1613053715, // 1 - 47
+ 2441363, // 1 - 48
+ 2441717, // 1 - 49
+ 1344619351, // 1 - 50
+ 2442455, // 1 - 51
+ 2418361913, // 1 - 52
+ 2443193, // 1 - 53
+ 2443547, // 1 - 54
+ 1881492094, // 1 - 55
+ 2444286, // 1 - 56
+ 2444641, // 1 - 57
+ 1344622275, // 1 - 58
+ 2445379, // 1 - 59
+ 2955235749, // 2 - 0
+ 2446117, // 2 - 1
+ 2446471, // 2 - 2
+ 1881495017, // 2 - 3
+ 2447209, // 2 - 4
+ 2447564, // 2 - 5
+ 1613060655, // 2 - 6
+ 2448303, // 2 - 7
+ 2448657, // 2 - 8
+ 1076190835, // 2 - 9
+ 2449394, // 2 - 10
+ 2418368853, // 2 - 11
+ 2450133, // 2 - 12
+ 2450487, // 2 - 13
+ 1613063578, // 2 - 14
+ 2451226, // 2 - 15
+ 2451580, // 2 - 16
+ 1344629214, // 2 - 17
+ 2452318, // 2 - 18
+ 2452672, // 2 - 19
+ 807759395, // 2 - 20
+ 2453411, // 2 - 21
+ 2149937413, // 2 - 22
+ 2454150, // 2 - 23
+ 2454504, // 2 - 24
+ 1613067594, // 2 - 25
+ 2455242, // 2 - 26
+ 2455596, // 2 - 27
+ 1344633230, // 2 - 28
+ 2456334, // 2 - 29
+ 2686811249, // 2 - 30
+ 2457073, // 2 - 31
+ 2457427, // 2 - 32
+ 1881505974, // 2 - 33
+ 2458166, // 2 - 34
+ 2458520, // 2 - 35
+ 1344636154, // 2 - 36
+ 2459258, // 2 - 37
+ 2459612, // 2 - 38
+ 807766335, // 2 - 39
+ 2460351, // 2 - 40
+ 1881508897, // 2 - 41
+ 2461089, // 2 - 42
+ 2461443, // 2 - 43
+ 1613074533, // 2 - 44
+ 2462181, // 2 - 45
+ 2462536, // 2 - 46
+ 1076204714, // 2 - 47
+ 2463274, // 2 - 48
+ 3223689101, // 2 - 49
+ 2464013, // 2 - 50
+ 2464367, // 2 - 51
+ 1881512913, // 2 - 52
+ 2465105, // 2 - 53
+ 2465459, // 2 - 54
+ 1613078549, // 2 - 55
+ 2466197, // 2 - 56
+ 2466552, // 2 - 57
+ 807773275, // 2 - 58
+ 2467291, // 2 - 59
+ 2149951293, // 3 - 0
+ 2468029, // 3 - 1
+ 2468383, // 3 - 2
+ 1613081473, // 3 - 3
+ 2469121, // 3 - 4
+ 2469475, // 3 - 5
+ 1076211654, // 3 - 6
+ 2470214, // 3 - 7
+ 2418389673, // 3 - 8
+ 2470953, // 3 - 9
+ 2471307, // 3 - 10
+ 1881519853, // 3 - 11
+ 2472044, // 3 - 12
+ 2472399, // 3 - 13
+ 1344650033, // 3 - 14
+ 2473137, // 3 - 15
+ 2473492, // 3 - 16
+ 1076215670, // 3 - 17
+ 2474230, // 3 - 18
+ 2149958232, // 3 - 19
+ 2474968, // 3 - 20
+ 2475322, // 3 - 21
+ 1613088413, // 3 - 22
+ 2476061, // 3 - 23
+ 2476415, // 3 - 24
+ 1344654050, // 3 - 25
+ 2477154, // 3 - 26
+ 2418396612, // 3 - 27
+ 2477892, // 3 - 28
+ 2478246, // 3 - 29
+ 1881526792, // 3 - 30
+ 2478984, // 3 - 31
+ 2479339, // 3 - 32
+ 1344656973, // 3 - 33
+ 2480077, // 3 - 34
+ 2480432, // 3 - 35
+ 1076222610, // 3 - 36
+ 2481170, // 3 - 37
+ 2149965172, // 3 - 38
+ 2481908, // 3 - 39
+ 2482262, // 3 - 40
+ 1613095353, // 3 - 41
+ 2483001, // 3 - 42
+ 2483355, // 3 - 43
+ 1344660990, // 3 - 44
+ 2484093, // 3 - 45
+ 2418403551, // 3 - 46
+ 2484831, // 3 - 47
+ 2485185, // 3 - 48
+ 1881533732, // 3 - 49
+ 2485924, // 3 - 50
+ 2486279, // 3 - 51
+ 1344663913, // 3 - 52
+ 2487017, // 3 - 53
+ 2487371, // 3 - 54
+ 807794093, // 3 - 55
+ 2488109, // 3 - 56
+0xffffffff
+};
+
+//Took 260 seconds to create
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/table1900-2100/calcondata.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,23 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Generated by CalconTable.exe
+//
+
+const TInt KFirstCycle=76;//1..n
+const TInt KFirstJulianDate=2415021;
+const TInt KLastJulianDate=2488434;
+const TInt KFirstYear=36; //1..60
+const TInt KLastCycle=79;//1..n
+const TInt KLastYear=57;//1..60
+const TInt KNumberOfYears=202;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/table1980-2100/calcondata.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,267 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Generated by CalconTable.exe
+//
+
+#include "calconvusingtable.h"
+const TUint16 TCalconData::iCalConDataMonth[]={
+ 38608U, // 0 - 55
+ 38320U, // 0 - 56
+ 18864U, // 0 - 57
+ 42168U, // 0 - 58
+ 42160U, // 0 - 59
+ 45656U, // 1 - 0
+ 27216U, // 1 - 1
+ 27968U, // 1 - 2
+ 44448U, // 1 - 3
+ 43872U, // 1 - 4
+ 38256U, // 1 - 5
+ 18808U, // 1 - 6
+ 18800U, // 1 - 7
+ 25776U, // 1 - 8
+ 27216U, // 1 - 9
+ 59984U, // 1 - 10
+ 27432U, // 1 - 11
+ 23232U, // 1 - 12
+ 43872U, // 1 - 13
+ 37736U, // 1 - 14
+ 37600U, // 1 - 15
+ 51552U, // 1 - 16
+ 54440U, // 1 - 17
+ 54432U, // 1 - 18
+ 55888U, // 1 - 19
+ 23208U, // 1 - 20
+ 22176U, // 1 - 21
+ 43736U, // 1 - 22
+ 9680U, // 1 - 23
+ 37584U, // 1 - 24
+ 51544U, // 1 - 25
+ 43344U, // 1 - 26
+ 46240U, // 1 - 27
+ 46416U, // 1 - 28
+ 44368U, // 1 - 29
+ 21928U, // 1 - 30
+ 19360U, // 1 - 31
+ 42416U, // 1 - 32
+ 21176U, // 1 - 33
+ 21168U, // 1 - 34
+ 43312U, // 1 - 35
+ 29864U, // 1 - 36
+ 27296U, // 1 - 37
+ 44368U, // 1 - 38
+ 19880U, // 1 - 39
+ 19296U, // 1 - 40
+ 42352U, // 1 - 41
+ 42208U, // 1 - 42
+ 53856U, // 1 - 43
+ 59696U, // 1 - 44
+ 54576U, // 1 - 45
+ 23200U, // 1 - 46
+ 27472U, // 1 - 47
+ 38608U, // 1 - 48
+ 19176U, // 1 - 49
+ 19152U, // 1 - 50
+ 42192U, // 1 - 51
+ 53848U, // 1 - 52
+ 53840U, // 1 - 53
+ 54560U, // 1 - 54
+ 55968U, // 1 - 55
+ 46496U, // 1 - 56
+ 22224U, // 1 - 57
+ 19160U, // 1 - 58
+ 18864U, // 1 - 59
+ 42168U, // 2 - 0
+ 42160U, // 2 - 1
+ 43600U, // 2 - 2
+ 46376U, // 2 - 3
+ 27936U, // 2 - 4
+ 44448U, // 2 - 5
+ 21936U, // 2 - 6
+ 37744U, // 2 - 7
+ 18808U, // 2 - 8
+ 18800U, // 2 - 9
+ 25776U, // 2 - 10
+ 27216U, // 2 - 11
+ 59984U, // 2 - 12
+ 27296U, // 2 - 13
+ 43872U, // 2 - 14
+ 43744U, // 2 - 15
+ 37600U, // 2 - 16
+ 51568U, // 2 - 17
+ 51552U, // 2 - 18
+ 54440U, // 2 - 19
+ 54432U, // 2 - 20
+ 55888U, // 2 - 21
+ 23208U, // 2 - 22
+ 22176U, // 2 - 23
+ 42704U, // 2 - 24
+ 21224U, // 2 - 25
+ 21200U, // 2 - 26
+ 43352U, // 2 - 27
+ 43344U, // 2 - 28
+ 46240U, // 2 - 29
+ 46416U, // 2 - 30
+ 44368U, // 2 - 31
+ 21920U, // 2 - 32
+ 42448U, // 2 - 33
+ 42416U, // 2 - 34
+ 21168U, // 2 - 35
+ 43320U, // 2 - 36
+ 26928U, // 2 - 37
+ 29336U, // 2 - 38
+ 27296U, // 2 - 39
+ 44368U, // 2 - 40
+ 19880U, // 2 - 41
+ 19296U, // 2 - 42
+ 42352U, // 2 - 43
+ 21104U, // 2 - 44
+ 53600U, // 2 - 45
+ 59696U, // 2 - 46
+ 54560U, // 2 - 47
+ 55968U, // 2 - 48
+ 27472U, // 2 - 49
+ 22224U, // 2 - 50
+ 19168U, // 2 - 51
+ 42216U, // 2 - 52
+ 41680U, // 2 - 53
+ 53584U, // 2 - 54
+ 55592U, // 2 - 55
+};
+const TUint32 TCalconData::iCalConDataYear[]={
+ 1881492094U, // 0 - 55
+ 2444286U, // 0 - 56
+ 2444641U, // 0 - 57
+ 1344622275U, // 0 - 58
+ 2445379U, // 0 - 59
+ 2955235749U, // 1 - 0
+ 2446117U, // 1 - 1
+ 2446471U, // 1 - 2
+ 1881495017U, // 1 - 3
+ 2447209U, // 1 - 4
+ 2447564U, // 1 - 5
+ 1613060655U, // 1 - 6
+ 2448303U, // 1 - 7
+ 2448657U, // 1 - 8
+ 1076190835U, // 1 - 9
+ 2449394U, // 1 - 10
+ 2418368853U, // 1 - 11
+ 2450133U, // 1 - 12
+ 2450487U, // 1 - 13
+ 1613063578U, // 1 - 14
+ 2451226U, // 1 - 15
+ 2451580U, // 1 - 16
+ 1344629214U, // 1 - 17
+ 2452318U, // 1 - 18
+ 2452672U, // 1 - 19
+ 807759395U, // 1 - 20
+ 2453411U, // 1 - 21
+ 2149937413U, // 1 - 22
+ 2454150U, // 1 - 23
+ 2454504U, // 1 - 24
+ 1613067594U, // 1 - 25
+ 2455242U, // 1 - 26
+ 2455596U, // 1 - 27
+ 1344633230U, // 1 - 28
+ 2456334U, // 1 - 29
+ 2686811249U, // 1 - 30
+ 2457073U, // 1 - 31
+ 2457427U, // 1 - 32
+ 1881505974U, // 1 - 33
+ 2458166U, // 1 - 34
+ 2458520U, // 1 - 35
+ 1344636154U, // 1 - 36
+ 2459258U, // 1 - 37
+ 2459612U, // 1 - 38
+ 807766335U, // 1 - 39
+ 2460351U, // 1 - 40
+ 1881508897U, // 1 - 41
+ 2461089U, // 1 - 42
+ 2461443U, // 1 - 43
+ 1613074533U, // 1 - 44
+ 2462181U, // 1 - 45
+ 2462536U, // 1 - 46
+ 1076204714U, // 1 - 47
+ 2463274U, // 1 - 48
+ 3223689101U, // 1 - 49
+ 2464013U, // 1 - 50
+ 2464367U, // 1 - 51
+ 1881512913U, // 1 - 52
+ 2465105U, // 1 - 53
+ 2465459U, // 1 - 54
+ 1613078549U, // 1 - 55
+ 2466197U, // 1 - 56
+ 2466552U, // 1 - 57
+ 807773275U, // 1 - 58
+ 2467291U, // 1 - 59
+ 2149951293U, // 2 - 0
+ 2468029U, // 2 - 1
+ 2468383U, // 2 - 2
+ 1613081473U, // 2 - 3
+ 2469121U, // 2 - 4
+ 2469475U, // 2 - 5
+ 1076211654U, // 2 - 6
+ 2470214U, // 2 - 7
+ 2418389673U, // 2 - 8
+ 2470953U, // 2 - 9
+ 2471307U, // 2 - 10
+ 1881519853U, // 2 - 11
+ 2472044U, // 2 - 12
+ 2472399U, // 2 - 13
+ 1344650033U, // 2 - 14
+ 2473137U, // 2 - 15
+ 2473492U, // 2 - 16
+ 1076215670U, // 2 - 17
+ 2474230U, // 2 - 18
+ 2149958232U, // 2 - 19
+ 2474968U, // 2 - 20
+ 2475322U, // 2 - 21
+ 1613088413U, // 2 - 22
+ 2476061U, // 2 - 23
+ 2476415U, // 2 - 24
+ 1344654050U, // 2 - 25
+ 2477154U, // 2 - 26
+ 2418396612U, // 2 - 27
+ 2477892U, // 2 - 28
+ 2478246U, // 2 - 29
+ 1881526792U, // 2 - 30
+ 2478984U, // 2 - 31
+ 2479339U, // 2 - 32
+ 1344656973U, // 2 - 33
+ 2480077U, // 2 - 34
+ 2480432U, // 2 - 35
+ 1076222610U, // 2 - 36
+ 2481170U, // 2 - 37
+ 2149965172U, // 2 - 38
+ 2481908U, // 2 - 39
+ 2482262U, // 2 - 40
+ 1613095353U, // 2 - 41
+ 2483001U, // 2 - 42
+ 2483355U, // 2 - 43
+ 1344660990U, // 2 - 44
+ 2484093U, // 2 - 45
+ 2418403551U, // 2 - 46
+ 2484831U, // 2 - 47
+ 2485185U, // 2 - 48
+ 1881533732U, // 2 - 49
+ 2485924U, // 2 - 50
+ 2486279U, // 2 - 51
+ 1344663913U, // 2 - 52
+ 2487017U, // 2 - 53
+ 2487371U, // 2 - 54
+ 807794093U, // 2 - 55
+ 2488109U, // 2 - 56
+0xffffffff
+};
+
+//Took 917 seconds to create
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/pluginsrc/table1980-2100/calcondata.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,23 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Generated by CalconTable.exe
+//
+
+const TInt KFirstCycle=77;//1..n
+const TInt KFirstJulianDate=2444240;
+const TInt KLastJulianDate=2488434;
+const TInt KFirstYear=56; //1..60
+const TInt KLastCycle=79;//1..n
+const TInt KLastYear=57;//1..60
+const TInt KNumberOfYears=122;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/test/group/bld.inf	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,42 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Calcon BLD.INF
+// 
+//
+
+PRJ_TESTMMPFILES
+../../tsrc/TCCn.mmp
+../../OriginalTsrc/TCCnoriginal.mmp manual
+cconoriginal.mmp manual
+calcontable.mmp manual
+
+PRJ_TESTEXPORTS
+calcontest.iby /epoc32/rom/include/calcontest.iby
+
+../../tsrc/input1.txt /epoc32/release/wins/udeb/z/calcontest/input1.txt
+../../tsrc/output1REFERENCE.txt /epoc32/release/wins/udeb/z/calcontest/output1reference.txt
+../../tsrc/Input2.txt /epoc32/release/wins/udeb/z/calcontest/input2.txt
+../../tsrc/output2REFERENCE.txt /epoc32/release/wins/udeb/z/calcontest/output2reference.txt
+../../tsrc/input1.txt /epoc32/release/winscw/udeb/z/calcontest/input1.txt
+../../tsrc/output1REFERENCE.txt /epoc32/release/winscw/udeb/z/calcontest/output1reference.txt
+../../tsrc/Input2.txt /epoc32/release/winscw/udeb/z/calcontest/input2.txt
+../../tsrc/output2REFERENCE.txt /epoc32/release/winscw/udeb/z/calcontest/output2reference.txt
+../../tsrc/input1.txt /epoc32/release/wins/urel/z/calcontest/input1.txt
+../../tsrc/output1REFERENCE.txt /epoc32/release/wins/urel/z/calcontest/output1reference.txt
+../../tsrc/Input2.txt /epoc32/release/wins/urel/z/calcontest/input2.txt
+../../tsrc/output2REFERENCE.txt /epoc32/release/wins/urel/z/calcontest/output2reference.txt
+../../tsrc/input1.txt /epoc32/release/winscw/urel/z/calcontest/input1.txt
+../../tsrc/output1REFERENCE.txt /epoc32/release/winscw/urel/z/calcontest/output1reference.txt
+../../tsrc/Input2.txt /epoc32/release/winscw/urel/z/calcontest/input2.txt
+../../tsrc/output2REFERENCE.txt /epoc32/release/winscw/urel/z/calcontest/output2reference.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/test/group/calcontable.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,28 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET calcontable.exe
+TARGETTYPE exe
+CAPABILITY   All -TCB
+UID 0        
+VENDORID 0x70000001
+SOURCEPATH ../../calcontablesrc
+SOURCE calcontable.cpp
+USERINCLUDE ../../calcontablesrc
+USERINCLUDE ../../originalinc
+SYSTEMINCLUDE /epoc32/include
+LIBRARY	euser.lib efsrv.lib cconoriginal.lib charconv.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/test/group/calcontest.iby	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,30 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CALCONTEST_IBY__
+#define __CALCONTEST_IBY__
+
+REM Calender Converter Test
+
+file=ABI_DIR\BUILD_DIR\tCCn.exe          	System\Programs\CalconTest\tCCn.exe
+#include <calcon.iby>
+
+
+
+data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\input1.txt			calcontest\input1.txt
+data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\input2.txt			calcontest\input2.txt
+data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\output1REFERENCE.txt			calcontest\output1REFERENCE.txt
+data=EPOCROOT##epoc32\release\wins\udeb\z\calcontest\output2REFERENCE.txt			calcontest\output2REFERENCE.txt
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/test/group/cconoriginal.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,35 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET cconoriginal.dll
+TARGETTYPE dll
+CAPABILITY   All -TCB
+UID 0x1000008d 0x10005407	//need to change UID
+VENDORID 0x70000001
+SOURCEPATH ../../originalsrc
+SOURCE CConmain.cpp Calendar.cpp ArithmeticalCal.cpp Gregorian.cpp 
+SOURCE ArithmeticalDate.cpp AstronomicalCal.cpp Chinese.cpp ChineseDate.cpp
+USERINCLUDE ../../OriginalInc
+SYSTEMINCLUDE /epoc32/include
+
+LIBRARY euser.lib
+
+#ifdef WINS
+DEFFILE	../../BWINS/CCONORIGINAL.DEF
+#else
+DEFFILE ../../EABI/CConOriginal.DEF
+#endif
+
+SMPSAFE
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/tsrc/ConvertDates.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,910 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "ConvertDates.h"
+
+// Constants 
+const TInt KFirstConvertYear = 0;
+const TInt KFromOffset = 0;
+const TInt KToOffset = 5;
+const TInt KCycleOffset = 10;
+const TInt KYearOffset = 13;
+const TInt KMnthOffset = 19;
+const TInt KLeapMonthOffset = 22;
+const TInt KDyOffset = 24;
+const TInt KCycleLen = 2;
+const TInt KSignLen = 1;
+const TInt KYearLen = 5;
+const TInt KMonthLen = 2;
+const TInt KDayLen = 2;
+//
+_LIT(KRoot,						"C:\\");
+_LIT(KSpace,					" ");
+_LIT(KResult,					" Result ");
+_LIT(KTestHeader,				"Test Results");
+_LIT(KFileNotPresent,			"test file %S not present - test failed\n");
+_LIT(KCalconDirectory,			"c:\\calcontest\\");
+_LIT(KCalconLogFileDirectory,	"c:\\calcon\\");
+_LIT(KCalconLogFile,			"c:\\calcon\\calcon.txt");
+_LIT(KInputFile1,				"z:\\calcontest\\input1.txt");
+_LIT(KOutputFile1,				"c:\\calcontest\\output1.txt");
+_LIT(KInputFile2,				"z:\\calcontest\\input2.txt");
+_LIT(KOutputFile2,				"c:\\calcontest\\output2.txt");
+_LIT(KOutputFileRef1,			"z:\\calcontest\\output1REFERENCE.txt");
+_LIT(KOutputFileRef2,			"z:\\calcontest\\output2REFERENCE.txt");
+_LIT8(KImcvCRLF,				"\r\n");
+_LIT8(KOutOfRange,				" *** Out of range ***");
+
+
+//
+// Construction/Destruction
+//
+
+CConvertDates::CConvertDates() : iTest(_L("Calcon Test"))
+	{
+	}
+
+CConvertDates::~CConvertDates()
+	{
+	if (iCalendarConverter)
+		delete iCalendarConverter;
+	iInputFile.Close();
+	iOutputFile.Close();
+	iLogger.Close();
+	iRFSession.Close();
+	}
+
+CConvertDates* CConvertDates::NewL()
+	{
+	CConvertDates* self = CConvertDates::NewLC();
+	CleanupStack::Pop();
+	return self;
+	}
+
+CConvertDates* CConvertDates::NewLC()
+	{
+	CConvertDates* self = new(ELeave) CConvertDates;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+void CConvertDates::ConstructL()
+	{
+	User::LeaveIfError(iRFSession.Connect());
+	iRFSession.SetSessionPath(KRoot);
+	iRFSession.MkDirAll(KCalconLogFileDirectory);			// ignore errors -- any FS errors will present themselves later
+	iRFSession.MkDirAll(KCalconDirectory);
+
+	if	(iLogger.LogValid())
+		iLogger.CloseLog();
+	TParse p;
+	p.Set(KCalconLogFile, NULL, NULL);
+	iLogger.Connect();
+	iLogger.CreateLog(KCalconLogFileDirectory, p.NameAndExt(), EFileLoggingModeOverwrite);
+	iLogger.SetDateAndTime(EFalse, EFalse);
+	iLogger.Write(KTestHeader);
+
+	iCalendarConverter=CChineseCalendarConverter::NewL();
+	}
+
+void CConvertDates::ConvertL(TInt aInput)
+	{
+	iInputFileNumber=aInput;
+
+	if (iInputFileNumber==1)
+		iTest.Printf(_L("Generating c:\\output1.txt\n"));
+	else
+		iTest.Printf(_L("Generating c:\\output2.txt\n"));
+
+	TBuf8<100> logLine;
+	TBuf<64> errBuf;
+	// open the input and output files
+	OpenFilesL();
+
+	TInt fileErr = KErrNone;
+	while(fileErr == KErrNone)
+		{
+		// read date from the input file
+		fileErr = ReadLine(iInputFile, iDateLine);
+		if	(fileErr==KErrNone)
+			{
+			// get the cal types to convert from and to
+			TRAPD(err,GetCalL(iDateLine));
+			if	(err)
+				{
+				errBuf.Format(_L("\r\nError get calendar conversion type %d\r\n"),err);
+				iLogger.Write(errBuf);
+				}
+			else
+				{
+				// do the conversion
+				TBool success=Cal1ToCal2();
+
+				// set the cal types to convert from and to
+				logLine.Zero();
+				TRAP(err,SetCalL(logLine,success));
+				if	(err)
+					{
+					errBuf.Format(_L("\r\nError set calendar conversion type %d\r\n"),err);
+					iDateLine.Append(errBuf);
+					}
+				else
+					{
+					iDateLine.Append(logLine);
+					iDateLine.Append(_L8("\r\n"));
+					iLogger.Write(iDateLine);
+					if	(iOutputFile.Write(iDateLine))
+						{
+						User::Leave(KErrCorrupt);
+						}
+					}
+				}
+			}
+		}
+	}
+
+void CConvertDates::OpenFilesL()
+	{
+	TInt err=KErrNone;
+	if (iInputFileNumber==1)
+		{
+		err = iInputFile.Open(iRFSession, KInputFile1, EFileStreamText|EFileRead|EFileShareExclusive);
+		if (err)
+			{
+			if(KErrNotFound == err)
+				{
+				iTest.Printf(KFileNotPresent,&(KInputFile1));
+				}
+			User::Leave(err);
+			}
+		err = iOutputFile.Replace(iRFSession, KOutputFile1, EFileStreamText|EFileWrite|EFileShareExclusive);
+		User::LeaveIfError(err);
+		}
+	else
+		{
+		err = iInputFile.Open(iRFSession, KInputFile2, EFileStreamText|EFileRead|EFileShareExclusive);
+		if (err)
+			{
+			if(KErrNotFound == err)
+				{
+				iTest.Printf(KFileNotPresent,&(KInputFile2));
+				}
+			User::Leave(err);
+			}
+		err = iOutputFile.Replace(iRFSession, KOutputFile2, EFileStreamText|EFileWrite|EFileShareExclusive);
+		User::LeaveIfError(err);
+		}
+	}
+
+void CConvertDates::GetCalL(TDes8& aDateToConvert)
+	{
+	TInt dateError=KErrNone;
+	TLex8 lexCycle(aDateToConvert.Mid(KCycleOffset,KCycleLen));
+	TLex8 lexYear(aDateToConvert.Mid(KYearOffset,KYearLen));
+	TLex8 lexMonth(aDateToConvert.Mid(KMnthOffset,KMonthLen));
+	TLex8 lexDay(aDateToConvert.Mid(KDyOffset,KDayLen));
+
+	// get cycle
+	if	(lexCycle.Val(iChinDateOut.iCycle) != KErrNone)
+		{
+		User::Leave(KErrCorrupt);
+		}
+	// get year
+	if	(lexYear.Val(iArithDateOut.iYear) != KErrNone)
+		{
+		User::Leave(KErrGeneral);
+		}
+	iChinDateOut.iYear = iArithDateOut.iYear;
+	// get month
+	if	(lexMonth.Val(iArithDateOut.iMonth) != KErrNone)
+		{
+		User::Leave(KErrGeneral);
+		}
+	iChinDateOut.iMonth = iArithDateOut.iMonth;
+	// get leap month
+	if	(aDateToConvert[KLeapMonthOffset] == 't')
+		{
+		iChinDateOut.iLeapMonth = ETrue;
+		}
+	else
+		{
+		iChinDateOut.iLeapMonth = EFalse;
+		}
+	// get day
+	if	(lexDay.Val(iArithDateOut.iDay) != KErrNone)
+		{
+		User::Leave(KErrCorrupt);
+		}
+	iChinDateOut.iDay = iArithDateOut.iDay;
+
+
+	switch(aDateToConvert[KFromOffset])
+		{
+	case 'g':	//iArithDateOut contains the date to convert from
+		iCalTypeFrom = EGreg;
+		break;
+	case 'c':
+		iCalTypeFrom = EChin;
+		break;
+	default:
+		dateError = KErrCorrupt;
+		break;
+		}
+
+	if	(dateError)
+		User::Leave(dateError);
+
+	switch(aDateToConvert[KToOffset])
+		{
+	case 'g':
+		iCalTypeTo = EGreg;
+		break;
+	case 'c':
+		iCalTypeTo = EChin;
+		break;
+	default:
+		break;
+		}
+	}
+
+TBool CConvertDates::Cal1ToCal2()
+	{
+	switch(iCalTypeFrom)
+		{
+	case EGreg:
+		{
+		switch(iCalTypeTo)
+			{
+		case EChin:
+			{	//iArithDateOut contains the date to convert from
+			TDateTime dt(iArithDateOut.iYear, (TMonth)(iArithDateOut.iMonth-1), iArithDateOut.iDay-1, 0,0,0,0);
+			CChineseCalendarConverter* c=iCalendarConverter;
+			TRAPD(err,c->DateTimeToChineseL(dt, iChinDateOut));
+			if (err)
+				return EFalse;
+			break;
+			}
+		default:
+			break;
+			}
+		}
+		break;
+	case EChin:
+		{
+		switch(iCalTypeTo)
+			{	//iArithDateOut contains the date to convert from
+			case EGreg:
+				{
+				CChineseCalendarConverter* c=iCalendarConverter;
+				TDateTime dt(0,EJanuary,0,0,0,0,0);
+				TRAPD(err,c->ChineseToDateTimeL(iChinDateOut, dt));
+				if (err)
+					return EFalse;
+				iArithDateOut.iYear=dt.Year();
+				iArithDateOut.iMonth=(TInt)(dt.Month())+1;
+				iArithDateOut.iDay=dt.Day()+1;
+				break;
+				}
+			default:
+				break;
+			}
+		}
+		break;
+	default:
+		break;
+		}
+	return ETrue;
+	}
+
+
+void CConvertDates::SetCalL(TDes8& aConvertedDate, TBool aSuccess)
+	{
+	TArithmeticalDate Date;
+	TChineseDate ChinDate;
+	TBuf8<KYearLen> TempDate;
+
+	switch(iCalTypeFrom)
+		{
+	case EGreg:
+		{
+		switch(iCalTypeTo)
+			{
+		case EChin:
+			ChinDate=iChinDateOut;
+			break;
+		default:
+			break;
+			}
+		}
+		break;
+	case EChin:
+		{
+		switch(iCalTypeTo)
+			{
+		case EGreg:
+			Date=iArithDateOut;
+			TempDate.Copy(_L("greg "));
+		default:
+			break;
+			}
+		}
+		break;
+	default:
+		break;
+		}
+
+	if (!aSuccess)
+		{
+		aConvertedDate.Append(KOutOfRange);
+		return;
+		}
+	
+	if	(iCalTypeTo == EChin)
+		{
+		TBuf8<10> TempFormatStr;
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KCycleLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iCycle);
+		aConvertedDate.Append(KResult);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempDate.FillZ();
+		TempDate.Format(_L8("+"));
+		aConvertedDate.Append(TempDate);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KYearLen - KSignLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iYear);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KMonthLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iMonth);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempDate.FillZ();
+		if	(ChinDate.iLeapMonth == EFalse)
+			{
+			TempDate.Format(_L8("f"));
+			}
+		else
+			{
+			TempDate.Format(_L8("t"));
+			}
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KDayLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iDay);
+		aConvertedDate.Append(TempDate);
+		}
+	else
+		{
+		TBuf8<10> TempFormatStr;
+
+		if	(Date.iYear >= KFirstConvertYear)
+			{
+			TempDate.Format(_L8("+"));
+			}
+		else
+			{
+			TempDate.Format(_L8("-"));
+			}
+		aConvertedDate.Append(KResult);
+		aConvertedDate.Append(TempDate);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KYearLen - KSignLen);
+		TempDate.FillZ();
+		if	(Date.iYear >= KFirstConvertYear)
+			{
+			TempDate.Format(TempFormatStr,Date.iYear);
+			}
+		else
+			{
+			TempDate.Format(TempFormatStr,-Date.iYear);
+			}
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KMonthLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,Date.iMonth);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L8("%%0%dd"),KDayLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,Date.iDay);
+		aConvertedDate.Append(TempDate);
+		}
+	}
+
+void CConvertDates::SetCal16L(TDes& aConvertedDate, TBool /*aSuccess*/)
+	{
+	TArithmeticalDate Date;
+	TChineseDate ChinDate;
+	TBuf<KYearLen> TempDate;
+
+	switch(iCalTypeFrom)
+		{
+	case EGreg:
+		{
+		switch(iCalTypeTo)
+			{
+		case EChin:
+			ChinDate=iChinDateOut;
+			break;
+		default:
+			break;
+			}
+		}
+		break;
+	case EChin:
+		{
+		switch(iCalTypeTo)
+			{
+		case EGreg:
+			Date=iArithDateOut;
+			TempDate.Copy(_L("greg "));
+		default:
+			break;
+			}
+		}
+		break;
+	default:
+		break;
+		}
+
+	if	(iCalTypeTo == EChin)
+		{
+		TBuf<10> TempFormatStr;
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L("%%0%dd"),KCycleLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iCycle);
+		aConvertedDate.Append(_L(" Chinese "));
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempDate.FillZ();
+		TempDate.Format(_L("+"));
+		aConvertedDate.Append(TempDate);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L("%%0%dd"),KYearLen - KSignLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iYear);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L("%%0%dd"),KMonthLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iMonth);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempDate.FillZ();
+		if	(ChinDate.iLeapMonth == EFalse)
+			{
+			TempDate.Format(_L("f"));
+			}
+		else
+			{
+			TempDate.Format(_L("t"));
+			}
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L("%%0%dd"),KDayLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,ChinDate.iDay);
+		aConvertedDate.Append(TempDate);
+		}
+	else
+		{
+		TBuf<10> TempFormatStr;
+
+		if	(Date.iYear >= KFirstConvertYear)
+			{
+			TempDate.Format(_L("+"));
+			}
+		else
+			{
+			TempDate.Format(_L("-"));
+			}
+		aConvertedDate.Append(_L("Greg "));
+		aConvertedDate.Append(TempDate);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L("%%0%dd"),KYearLen - KSignLen);
+		TempDate.FillZ();
+		if	(Date.iYear >= KFirstConvertYear)
+			{
+			TempDate.Format(TempFormatStr,Date.iYear);
+			}
+		else
+			{
+			TempDate.Format(TempFormatStr,-Date.iYear);
+			}
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L("%%0%dd"),KMonthLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,Date.iMonth);
+		aConvertedDate.Append(TempDate);
+		aConvertedDate.Append(KSpace);
+
+		TempFormatStr.FillZ();
+		TempFormatStr.Format(_L("%%0%dd"),KDayLen);
+		TempDate.FillZ();
+		TempDate.Format(TempFormatStr,Date.iDay);
+		aConvertedDate.Append(TempDate);
+		}
+	}
+
+//
+// Read line of test from file
+//
+TInt CConvertDates::ReadLine(RFile& aInputFile, TBuf8<KDateLen>& aDateLine)
+    {
+    TInt err = KErrNone;
+
+    //  Read into the buffer
+    TBuf8<256> buffer;              // Max read of the Read() function..    
+    aDateLine.Zero();
+
+    //  Get the current file position
+    TInt filePos = 0;
+    aInputFile.Seek(ESeekCurrent, filePos);
+
+    //  Read the buffer
+    err = aInputFile.Read(buffer);
+    
+    //end of file?
+    TInt s = buffer.Length();
+    if	( s == 0)
+        err = KErrEof;
+     
+    if	(err == KErrNone)
+        {
+        //  Copy to the lfcr and then set the file pointer
+        //  to the point after that...
+        TInt pos = buffer.Find(KImcvCRLF);
+        if	( pos != -1)
+            {
+            aDateLine.Justify(buffer, pos, ELeft, ' ');
+            filePos += (pos+2);
+
+            //  Set the file pointer back to after the lfcr..
+            aInputFile.Seek(ESeekStart, filePos);                
+            }
+        //  Else fill the whole buffer 256 chars..
+        else
+            {
+            aDateLine.Copy(buffer);
+            }
+        }
+    return err;
+    }
+
+TBool CConvertDates::IntegrityTestL()
+	{
+	iTest.Printf(_L("Integrity test:\n"));
+	iTest.Printf(_L("Stepping through every possible Chinese date in the range of the calendar\n"));
+	iTest.Printf(_L("checking that either the Chinese date is invalid, or that the\n"));
+	iTest.Printf(_L("returned Julian Day is one greater than the previous Julian Day."));
+
+	TDateTime dateTime;
+	CChineseCalendarConverter* chineseCalendar=CChineseCalendarConverter::NewL();
+
+	TChineseDate start;
+	TChineseDate finish;
+	chineseCalendar->DateRange(start, finish);
+	TDateTime startDT;
+	TDateTime finishDT;
+	chineseCalendar->DateRange(startDT, finishDT);
+
+	TBuf<KDateLen>	outputBuf;	
+	iCalTypeFrom=EChin;
+	iCalTypeTo=EGreg;
+	iArithDateOut.iDay=startDT.Day()+1;
+	iArithDateOut.iMonth=(TInt)startDT.Month()+1;
+	iArithDateOut.iYear=startDT.Year();
+	SetCal16L(outputBuf);
+	iChinDateOut=start;
+	iCalTypeFrom=EGreg;
+	iCalTypeTo=EChin;
+	SetCal16L(outputBuf);
+	iTest.Printf(_L("\n\nCalendar start date\n"));
+	iTest.Printf(outputBuf);
+
+	chineseCalendar->DateTimeToChineseL(startDT,start);
+	TReal startJulian=chineseCalendar->JulianDate();
+	chineseCalendar->DateTimeToChineseL(finishDT,finish);
+	TReal finishJulian=chineseCalendar->JulianDate();
+	iTest.Printf(_L("\nJulian: %f"),startJulian);
+
+	chineseCalendar->DateRange(start, finish);
+	//can check here that start & finish do not change
+
+	outputBuf.SetLength(0);
+	iCalTypeFrom=EChin;
+	iCalTypeTo=EGreg;
+	iArithDateOut.iDay=finishDT.Day()+1;
+	iArithDateOut.iMonth=(TInt)finishDT.Month()+1;
+	iArithDateOut.iYear=finishDT.Year();
+	SetCal16L(outputBuf);
+	iChinDateOut=finish;
+	iCalTypeFrom=EGreg;
+	iCalTypeTo=EChin;
+	SetCal16L(outputBuf);
+	iTest.Printf(_L("\n\nCalendar end date\n"));
+	iTest.Printf(outputBuf);
+	iTest.Printf(_L("\nJulian: %f\n\n"),finishJulian);
+
+	start.iCycle--; //check that errors are return for date earlier than the lower bound
+	finish.iCycle+=2;//check that errors are return for date later than the upper bound
+
+	TInt err=KErrNone;
+
+	do
+		{
+		NextDate(start);
+		TRAP(err,chineseCalendar->ChineseToDateTimeL(start, dateTime));
+		}
+	while (err==KErrArgument);
+
+	TReal currentJulian=chineseCalendar->JulianDate();
+
+	iState=EChangeDay;
+
+	TDateTime lowerBound;
+	TDateTime upperBound;
+	chineseCalendar->DateRange(lowerBound, upperBound);
+	TChineseDate lowerBoundChin;
+	TChineseDate upperBoundChin;
+	chineseCalendar->DateRange(lowerBoundChin, upperBoundChin);
+	TRAP(err,chineseCalendar->ChineseToDateTimeL(upperBoundChin, dateTime));
+
+	while (start.iCycle<finish.iCycle)
+		{
+		NextDate(start);
+		TRAP(err,chineseCalendar->ChineseToDateTimeL(start, dateTime));
+		
+		if (err==KErrNone)
+			{
+			TReal julian=chineseCalendar->JulianDate();
+		
+			if (julian!=++currentJulian)
+				{
+				iTest.Printf(_L("%f %f"),julian,currentJulian);
+
+				delete chineseCalendar;
+				return EFalse;
+				}
+			}
+
+		//	chineseCalendar.GetDate(checkDate);
+		//	if (!(checkDate==start))
+		//		User::Invariant();
+		}
+	delete chineseCalendar;
+	return ETrue;
+	}
+
+void CConvertDates::NextDate(TChineseDate& aDate)
+	{
+top:
+	TBool cont=EFalse;
+
+	switch (iState)
+		{
+		case EChangeDay:
+			if (aDate.iDay==30)
+				{
+				iState=EChangeMonth;
+				aDate.iDay=1;
+				cont=ETrue;
+				}
+			else
+				{
+				aDate.iDay++;
+				}
+			break;
+		case EChangeMonth:
+			if (aDate.iLeapMonth)
+				{
+				aDate.iLeapMonth=EFalse;
+				if (aDate.iMonth==12)
+					{
+					iState=EChangeYear;
+					aDate.iMonth=1;
+					cont=ETrue;
+					}
+				else
+					{
+					aDate.iMonth++;
+					iState=EChangeDay;
+					}
+				}
+			else
+				{
+				aDate.iLeapMonth=ETrue;
+				iState=EChangeDay;
+				}
+			break;
+		case EChangeYear:
+			if (aDate.iYear==60)
+				{
+				iState=EChangeCycle;
+				aDate.iYear=1;
+				cont=ETrue;
+				}
+			else
+				{
+				aDate.iYear++;
+				iState=EChangeDay;
+				}
+			break;
+		case EChangeCycle:
+			aDate.iCycle++;
+			iState=EChangeDay;
+			break;
+		default:
+			User::Invariant();
+		}
+	if (cont) goto top;
+	}
+
+				
+
+//
+// Construction/Destruction
+//
+
+//------------------------------------------------------
+// Class:       TArithmeticalDate
+// Function:    TArithmeticalDate
+// Arguments:   None
+//
+// Comments:    Constructor
+//
+// Return:      None
+//------------------------------------------------------
+TArithmeticalDate::TArithmeticalDate()
+	{
+	}
+
+//------------------------------------------------------
+// Class:       TArithmeticalDate
+// Function:    operator ==
+// Arguments:   const TArithmeticalDate &
+//
+// Comments:    overloaded == operator
+//
+// Return:      TBool - ETrue if both the TArithmeticalDate 
+//				classes are the same
+//------------------------------------------------------
+TBool TArithmeticalDate::operator ==(const TArithmeticalDate &aDate) const
+	{
+	TBool rtn = ETrue;
+	if(iYear != aDate.iYear)
+		{
+		rtn = EFalse;
+		}
+	if(iMonth != aDate.iMonth)
+		{
+		rtn = EFalse;
+		}
+	if(iDay != aDate.iDay)
+		{
+		rtn = EFalse;
+		}
+	return rtn;
+	}
+
+TBool CConvertDates::CompareL()
+	{
+	iInputFile.Close();
+	iOutputFile.Close();
+	
+	TBool ret=ETrue;
+	TInt err=KErrNone;
+
+	if (iInputFileNumber==1)
+		{
+		err = iOutputFile.Open(iRFSession, KOutputFile1, EFileStreamText|EFileRead|EFileShareExclusive);
+		if (err)
+			{
+			if(KErrNotFound == err)
+				{
+				iTest.Printf(KFileNotPresent,&(KOutputFile1));
+				}
+			User::Leave(err);
+			}
+		err = iOutputFileRef.Open(iRFSession, KOutputFileRef1, EFileStreamText|EFileRead|EFileShareExclusive);
+		if (err)
+			{
+			if(KErrNotFound == err)
+				{
+				iTest.Printf(KFileNotPresent,&(KOutputFileRef1));
+				}
+			User::Leave(err);
+			}
+		}
+	else
+		{
+		err = iOutputFile.Open(iRFSession, KOutputFile2, EFileStreamText|EFileRead|EFileShareExclusive);
+		if (err)
+			{
+			if(KErrNotFound == err)
+				{
+				iTest.Printf(KFileNotPresent,&(KOutputFile2));
+				}
+			User::Leave(err);
+			}
+		err = iOutputFileRef.Open(iRFSession, KOutputFileRef2, EFileStreamText|EFileRead|EFileShareExclusive);
+		if (err)
+			{
+			if(KErrNotFound == err)
+				{
+				iTest.Printf(KFileNotPresent,&(KOutputFileRef2));
+				}
+			User::Leave(err);
+			}
+		}
+	
+	TBuf8<KDateLen>	outputBuf;
+	TBuf8<KDateLen>	outputBufRef;
+
+	while (err==KErrNone)
+		{
+		err=ReadLine(iOutputFile,outputBuf);
+		if (err==KErrNone)
+			{
+			ReadLine(iOutputFileRef,outputBufRef);
+			TInt m=outputBuf.FindF(KOutOfRange);
+			if (m==KErrNotFound)
+				{
+				if (outputBuf.CompareF(outputBufRef)!=0)
+					{
+					ret=EFalse;
+					break;
+					}	
+				}
+			}
+		}
+	iOutputFile.Close();
+	iOutputFileRef.Close();
+	return ret;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/tsrc/ConvertDates.h	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,103 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CONVERTDATES_H__
+#define __CONVERTDATES_H__
+
+// System includes
+#include <e32base.h>
+#include <s32strm.h>
+#include <f32file.h>
+#include <calendarconverter.h>
+#include <flogger.h>
+#include <e32test.h>
+
+class TArithmeticalDate  
+	{
+public:
+	TArithmeticalDate();
+	TBool operator==(const TArithmeticalDate& aDate) const;
+
+public:
+	TInt iDay;
+	TInt iMonth;
+	TInt iYear;
+	};
+
+// Constants
+const TInt KDateLen = 60;
+
+// Enumerations
+enum TCalTypes
+	{
+	EGreg,
+	EHebr,
+	EChin
+	};
+
+// Classes
+class CConvertDates : public CBase 
+	{
+public:
+	CConvertDates();
+	static CConvertDates* NewLC();
+	static CConvertDates* NewL();
+	~CConvertDates();
+	TBool IntegrityTestL();
+	TBool CompareL();
+private:
+	void ConstructL();
+	void NextDate(TChineseDate& aDate);
+
+public:
+	void ConvertL(TInt aInputFile);
+
+public:
+	RTest iTest;
+
+private:
+	TBool Cal1ToCal2();
+	void GetCalL(TDes8& aDateToConvert);
+	void SetCalL(TDes8& aDate, TBool aSuccess=ETrue);
+	void SetCal16L(TDes& aDate, TBool aSuccess=ETrue);
+	void OpenFilesL();
+	TInt ReadLine(RFile& aInputFile, TBuf8<KDateLen>& aDateLine);
+	enum TNextDateState {EChangeDay, EChangeMonth, EChangeYear, EChangeCycle};
+	TNextDateState iState;
+
+
+private:
+	TInt iInputFileNumber;
+	CChineseCalendarConverter*	iCalendarConverter;
+	TCalTypes					iCalTypeFrom;
+	TCalTypes					iCalTypeTo;
+	TArithmeticalDate			iArithDateOut;
+	TArithmeticalDate			iArithDateIn;
+	TChineseDate				iChinDateOut;
+	TChineseDate				iChinDateIn;
+//	TGregorianCalendar			iGreg;
+//	TChineseCalendar			iChin;
+
+	RFs							iRFSession;
+	RFile						iInputFile;
+	RFile						iOutputFile;
+	RFile						iOutputFileRef;
+
+	RFileLogger					iLogger;
+
+	TBuf8<KDateLen>				iDateLine;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/tsrc/Input2.txt	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,76 @@
+greg chin 00 +1898 01 f 01
+greg chin 00 +1899 12 f 31
+greg chin 00 +1900 01 f 10
+greg chin 00 +1910 02 f 15
+greg chin 00 +1920 03 f 20
+greg chin 00 +1924 02 f 29
+greg chin 00 +1970 01 f 01
+greg chin 00 +1971 02 f 02
+greg chin 00 +1972 03 f 03
+greg chin 00 +1973 04 f 04
+greg chin 00 +1974 05 f 05
+greg chin 00 +1975 06 f 06
+greg chin 00 +1976 07 f 07
+greg chin 00 +1977 08 f 08
+greg chin 00 +1978 09 f 09
+greg chin 00 +1979 10 f 10
+greg chin 00 +1980 11 f 11
+greg chin 00 +1981 12 f 12
+greg chin 00 +1982 01 f 13
+greg chin 00 +1982 02 f 28
+greg chin 00 +1982 03 f 01
+greg chin 00 +1999 12 f 31
+greg chin 00 +2000 01 f 01
+greg chin 00 +2000 02 f 29
+greg chin 00 +1998 01 f 28
+greg chin 00 +1998 02 f 28
+greg chin 00 +1998 03 f 30
+greg chin 00 +1998 04 f 29
+greg chin 00 +1998 05 f 30
+greg chin 00 +1998 06 f 28
+greg chin 00 +1998 07 f 28
+greg chin 00 +1998 08 f 28
+greg chin 00 +1998 09 f 28
+greg chin 00 +1998 10 f 28
+greg chin 00 +1998 11 f 28
+greg chin 00 +1998 12 f 29
+greg chin 00 +1999 01 f 28
+greg chin 00 +2043 02 f 10
+greg chin 00 +2044 01 f 29
+chin greg 76 +0034 12 f 09
+chin greg 76 +0036 11 f 29
+chin greg 76 +0036 12 f 10
+chin greg 76 +0047 01 f 06
+chin greg 76 +0057 02 f 01
+chin greg 77 +0001 01 f 25
+chin greg 77 +0046 11 f 24
+chin greg 77 +0048 01 f 07
+chin greg 77 +0049 01 f 18
+chin greg 77 +0050 03 f 02
+chin greg 77 +0051 04 f 14
+chin greg 77 +0052 04 f 27
+chin greg 77 +0053 06 f 11
+chin greg 77 +0054 06 f 24
+chin greg 77 +0055 08 f 07
+chin greg 77 +0056 08 f 20
+chin greg 77 +0057 10 f 04
+chin greg 77 +0058 11 f 17
+chin greg 77 +0058 12 f 19
+chin greg 77 +0059 02 f 05
+chin greg 77 +0059 02 f 06
+chin greg 78 +0016 11 f 24
+chin greg 78 +0016 11 f 25
+chin greg 78 +0017 01 f 25
+chin greg 78 +0015 01 f 01
+chin greg 78 +0015 02 f 02
+chin greg 78 +0015 03 f 03
+chin greg 78 +0015 04 f 04
+chin greg 78 +0015 05 f 05
+chin greg 78 +0015 05 t 05
+chin greg 78 +0015 06 f 06
+chin greg 78 +0015 08 f 08
+chin greg 78 +0015 09 f 09
+chin greg 78 +0015 10 f 10
+chin greg 78 +0015 11 f 11
+chin greg 78 +0060 01 f 01
+chin greg 78 +0060 12 f 30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/tsrc/Input_2.txt	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,76 @@
+greg chin 00 +1898 01 f 01
+greg chin 00 +1899 12 f 31
+greg chin 00 +1900 01 f 10
+greg chin 00 +1910 02 f 15
+greg chin 00 +1920 03 f 20
+greg chin 00 +1924 02 f 29
+greg chin 00 +1970 01 f 01
+greg chin 00 +1971 02 f 02
+greg chin 00 +1972 03 f 03
+greg chin 00 +1973 04 f 04
+greg chin 00 +1974 05 f 05
+greg chin 00 +1975 06 f 06
+greg chin 00 +1976 07 f 07
+greg chin 00 +1977 08 f 08
+greg chin 00 +1978 09 f 09
+greg chin 00 +1979 10 f 10
+greg chin 00 +1980 11 f 11
+greg chin 00 +1981 12 f 12
+greg chin 00 +1982 01 f 13
+greg chin 00 +1982 02 f 28
+greg chin 00 +1982 03 f 01
+greg chin 00 +1999 12 f 31
+greg chin 00 +2000 01 f 01
+greg chin 00 +2000 02 f 29
+greg chin 00 +1998 01 f 28
+greg chin 00 +1998 02 f 28
+greg chin 00 +1998 03 f 30
+greg chin 00 +1998 04 f 29
+greg chin 00 +1998 05 f 30
+greg chin 00 +1998 06 f 28
+greg chin 00 +1998 07 f 28
+greg chin 00 +1998 08 f 28
+greg chin 00 +1998 09 f 28
+greg chin 00 +1998 10 f 28
+greg chin 00 +1998 11 f 28
+greg chin 00 +1998 12 f 29
+greg chin 00 +1999 01 f 28
+greg chin 00 +2043 02 f 10
+greg chin 00 +2044 01 f 29
+chin greg 76 +0034 12 f 09
+chin greg 76 +0036 11 f 29
+chin greg 76 +0036 12 f 10
+chin greg 76 +0047 01 f 06
+chin greg 76 +0057 02 f 01
+chin greg 77 +0001 01 f 25
+chin greg 77 +0046 11 f 24
+chin greg 77 +0048 01 f 07
+chin greg 77 +0049 01 f 18
+chin greg 77 +0050 03 f 02
+chin greg 77 +0051 04 f 14
+chin greg 77 +0052 04 f 27
+chin greg 77 +0053 06 f 11
+chin greg 77 +0054 06 f 24
+chin greg 77 +0055 08 f 07
+chin greg 77 +0056 08 f 20
+chin greg 77 +0057 10 f 04
+chin greg 77 +0058 11 f 17
+chin greg 77 +0058 12 f 19
+chin greg 77 +0059 02 f 05
+chin greg 77 +0059 02 f 06
+chin greg 78 +0016 11 f 24
+chin greg 78 +0016 11 f 25
+chin greg 78 +0017 01 f 25
+chin greg 78 +0015 01 f 01
+chin greg 78 +0015 02 f 02
+chin greg 78 +0015 03 f 03
+chin greg 78 +0015 04 f 04
+chin greg 78 +0015 05 f 05
+chin greg 78 +0015 05 t 05
+chin greg 78 +0015 06 f 06
+chin greg 78 +0015 08 f 08
+chin greg 78 +0015 09 f 09
+chin greg 78 +0015 10 f 10
+chin greg 78 +0015 11 f 11
+chin greg 78 +0060 01 f 01
+chin greg 78 +0060 12 f 30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/tsrc/TCCn.mmp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,26 @@
+// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET tccn.exe
+TARGETTYPE exe
+CAPABILITY   None
+UID 0
+VENDORID 0x70000001
+APP_LAYER_SYSTEMINCLUDE_SYMBIAN
+SOURCEPATH ../tsrc
+SOURCE TCCnMain.cpp ConvertDates.cpp
+LIBRARY euser.lib ccon.lib efsrv.lib flogger.lib ecom.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/tsrc/TCCnMain.cpp	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,62 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <e32test.h>
+#include <ecom/ecom.h>
+#include "ConvertDates.h"
+
+_LIT(KTestName,"Basic Calcon tests.");
+LOCAL_D RTest test(KTestName);
+
+void mainL();
+
+GLDEF_C TInt E32Main()
+    {
+	__UHEAP_MARK;
+	CTrapCleanup* cleanupStack=CTrapCleanup::New();
+
+	TRAPD(error,mainL());
+	test(KErrNone == error);
+	REComSession::FinalClose(); 
+
+	delete cleanupStack;
+	__UHEAP_MARKEND;
+	return KErrNone;
+    }
+
+/**
+@SYMTestCaseID PIM-TCCNMAIN-0001
+ */
+	
+void mainL()
+    {
+	CConvertDates* convDates = CConvertDates::NewL();
+	CleanupStack::PushL(convDates);
+
+	convDates->iTest(convDates->IntegrityTestL());
+
+ 	TInt err=KErrNone;
+ 	TRAP(err,convDates->ConvertL(1));
+ 	convDates->iTest(err == KErrNone);
+	TRAP(err,convDates->ConvertL(2));
+ 	convDates->iTest(err == KErrNone);
+
+	convDates->iTest(convDates->CompareL());
+	convDates->iTest.Start(_L("@SYMTestCaseID PIM-TCCNMAIN-0001"));
+	convDates->iTest.End();
+	convDates->iTest.Close();
+	
+	CleanupStack::PopAndDestroy(convDates);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/tsrc/input.txt	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,66 @@
+greg chin 00 -0586 07 f 24
+greg chin 00 -0168 12 f 05
+greg chin 00 +0070 09 f 24
+greg chin 00 +0135 10 f 02
+greg chin 00 +0470 01 f 08
+greg chin 00 +0576 05 f 20
+greg chin 00 +0694 11 f 10
+greg chin 00 +1013 04 f 25
+greg chin 00 +1096 05 f 24
+greg chin 00 +1190 03 f 23
+greg chin 00 +1240 03 f 10
+greg chin 00 +1288 04 f 02
+greg chin 00 +1298 04 f 27
+greg chin 00 +1391 06 f 12
+greg chin 00 +1436 02 f 03
+greg chin 00 +1492 04 f 09
+greg chin 00 +1553 09 f 19
+greg chin 00 +1560 03 f 05
+greg chin 00 +1648 06 f 10
+greg chin 00 +1680 06 f 30
+greg chin 00 +1716 07 f 24
+greg chin 00 +1768 06 f 19
+greg chin 00 +1819 08 f 02
+greg chin 00 +1839 03 f 27
+greg chin 00 +1903 04 f 19
+greg chin 00 +1929 08 f 25
+greg chin 00 +1941 09 f 29
+greg chin 00 +1943 04 f 19
+greg chin 00 +1943 10 f 07
+greg chin 00 +1992 03 f 17
+greg chin 00 +1996 02 f 25
+greg chin 00 +2038 11 f 10
+greg chin 00 +2094 07 f 18
+chin greg 35 +0011 06 f 12
+chin greg 42 +0009 10 f 27
+chin greg 46 +0007 08 f 04
+chin greg 47 +0012 08 f 09
+chin greg 52 +0046 11 f 20
+chin greg 54 +0033 04 f 05
+chin greg 56 +0031 10 f 15
+chin greg 61 +0050 03 f 07
+chin greg 63 +0013 04 f 24
+chin greg 64 +0047 02 f 09
+chin greg 65 +0037 02 f 09
+chin greg 66 +0025 02 f 23
+chin greg 66 +0035 03 f 09
+chin greg 68 +0008 05 f 02
+chin greg 68 +0053 01 f 08
+chin greg 69 +0049 03 f 04
+chin greg 70 +0050 08 f 02
+chin greg 70 +0057 01 f 29
+chin greg 72 +0025 04 t 20
+chin greg 72 +0057 06 f 05
+chin greg 73 +0033 06 f 06
+chin greg 74 +0025 05 f 05
+chin greg 75 +0016 06 f 12
+chin greg 75 +0036 02 f 13
+chin greg 76 +0040 03 f 22
+chin greg 77 +0006 07 f 21
+chin greg 77 +0018 08 f 09
+chin greg 77 +0020 03 f 15
+chin greg 77 +0020 09 f 09
+chin greg 78 +0009 02 f 14
+chin greg 78 +0013 01 f 07
+chin greg 78 +0055 10 f 14
+chin greg 79 +0051 06 f 07
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/tsrc/input1.txt	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,66 @@
+greg chin 00 -0586 07 f 24
+greg chin 00 -0168 12 f 05
+greg chin 00 +0070 09 f 24
+greg chin 00 +0135 10 f 02
+greg chin 00 +0470 01 f 08
+greg chin 00 +0576 05 f 20
+greg chin 00 +0694 11 f 10
+greg chin 00 +1013 04 f 25
+greg chin 00 +1096 05 f 24
+greg chin 00 +1190 03 f 23
+greg chin 00 +1240 03 f 10
+greg chin 00 +1288 04 f 02
+greg chin 00 +1298 04 f 27
+greg chin 00 +1391 06 f 12
+greg chin 00 +1436 02 f 03
+greg chin 00 +1492 04 f 09
+greg chin 00 +1553 09 f 19
+greg chin 00 +1560 03 f 05
+greg chin 00 +1648 06 f 10
+greg chin 00 +1680 06 f 30
+greg chin 00 +1716 07 f 24
+greg chin 00 +1768 06 f 19
+greg chin 00 +1819 08 f 02
+greg chin 00 +1839 03 f 27
+greg chin 00 +1903 04 f 19
+greg chin 00 +1929 08 f 25
+greg chin 00 +1941 09 f 29
+greg chin 00 +1943 04 f 19
+greg chin 00 +1943 10 f 07
+greg chin 00 +1992 03 f 17
+greg chin 00 +1996 02 f 25
+greg chin 00 +2038 11 f 10
+greg chin 00 +2094 07 f 18
+chin greg 35 +0011 06 f 12
+chin greg 42 +0009 10 f 27
+chin greg 46 +0007 08 f 04
+chin greg 47 +0012 08 f 09
+chin greg 52 +0046 11 f 20
+chin greg 54 +0033 04 f 05
+chin greg 56 +0031 10 f 15
+chin greg 61 +0050 03 f 07
+chin greg 63 +0013 04 f 24
+chin greg 64 +0047 02 f 09
+chin greg 65 +0037 02 f 09
+chin greg 66 +0025 02 f 23
+chin greg 66 +0035 03 f 09
+chin greg 68 +0008 05 f 02
+chin greg 68 +0053 01 f 08
+chin greg 69 +0049 03 f 04
+chin greg 70 +0050 08 f 02
+chin greg 70 +0057 01 f 29
+chin greg 72 +0025 04 t 20
+chin greg 72 +0057 06 f 05
+chin greg 73 +0033 06 f 06
+chin greg 74 +0025 05 f 05
+chin greg 75 +0016 06 f 12
+chin greg 75 +0036 02 f 13
+chin greg 76 +0040 03 f 22
+chin greg 77 +0006 07 f 21
+chin greg 77 +0018 08 f 09
+chin greg 77 +0020 03 f 15
+chin greg 77 +0020 09 f 09
+chin greg 78 +0009 02 f 14
+chin greg 78 +0013 01 f 07
+chin greg 78 +0055 10 f 14
+chin greg 79 +0051 06 f 07
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/tsrc/output1REFERENCE.txt	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,66 @@
+greg chin 00 -0586 07 f 24 Result 35 +0011 06 f 12
+greg chin 00 -0168 12 f 05 Result 42 +0009 10 f 27
+greg chin 00 +0070 09 f 24 Result 46 +0007 08 f 04
+greg chin 00 +0135 10 f 02 Result 47 +0012 08 f 09
+greg chin 00 +0470 01 f 08 Result 52 +0046 11 f 20
+greg chin 00 +0576 05 f 20 Result 54 +0033 04 f 05
+greg chin 00 +0694 11 f 10 Result 56 +0031 10 f 15
+greg chin 00 +1013 04 f 25 Result 61 +0050 03 f 07
+greg chin 00 +1096 05 f 24 Result 63 +0013 04 f 24
+greg chin 00 +1190 03 f 23 Result 64 +0047 02 f 09
+greg chin 00 +1240 03 f 10 Result 65 +0037 02 f 09
+greg chin 00 +1288 04 f 02 Result 66 +0025 02 f 23
+greg chin 00 +1298 04 f 27 Result 66 +0035 03 f 09
+greg chin 00 +1391 06 f 12 Result 68 +0008 05 f 02
+greg chin 00 +1436 02 f 03 Result 68 +0053 01 f 08
+greg chin 00 +1492 04 f 09 Result 69 +0049 03 f 04
+greg chin 00 +1553 09 f 19 Result 70 +0050 08 f 02
+greg chin 00 +1560 03 f 05 Result 70 +0057 01 f 29
+greg chin 00 +1648 06 f 10 Result 72 +0025 04 t 20
+greg chin 00 +1680 06 f 30 Result 72 +0057 06 f 05
+greg chin 00 +1716 07 f 24 Result 73 +0033 06 f 06
+greg chin 00 +1768 06 f 19 Result 74 +0025 05 f 05
+greg chin 00 +1819 08 f 02 Result 75 +0016 06 f 12
+greg chin 00 +1839 03 f 27 Result 75 +0036 02 f 13
+greg chin 00 +1903 04 f 19 Result 76 +0040 03 f 22
+greg chin 00 +1929 08 f 25 Result 77 +0006 07 f 21
+greg chin 00 +1941 09 f 29 Result 77 +0018 08 f 09
+greg chin 00 +1943 04 f 19 Result 77 +0020 03 f 15
+greg chin 00 +1943 10 f 07 Result 77 +0020 09 f 09
+greg chin 00 +1992 03 f 17 Result 78 +0009 02 f 14
+greg chin 00 +1996 02 f 25 Result 78 +0013 01 f 07
+greg chin 00 +2038 11 f 10 Result 78 +0055 10 f 14
+greg chin 00 +2094 07 f 18 Result 79 +0051 06 f 07
+chin greg 35 +0011 06 f 12 Result -0586 07 24
+chin greg 42 +0009 10 f 27 Result -0168 12 05
+chin greg 46 +0007 08 f 04 Result +0070 09 24
+chin greg 47 +0012 08 f 09 Result +0135 10 02
+chin greg 52 +0046 11 f 20 Result +0470 01 08
+chin greg 54 +0033 04 f 05 Result +0576 05 20
+chin greg 56 +0031 10 f 15 Result +0694 11 10
+chin greg 61 +0050 03 f 07 Result +1013 04 25
+chin greg 63 +0013 04 f 24 Result +1096 05 24
+chin greg 64 +0047 02 f 09 Result +1190 03 23
+chin greg 65 +0037 02 f 09 Result +1240 03 10
+chin greg 66 +0025 02 f 23 Result +1288 04 02
+chin greg 66 +0035 03 f 09 Result +1298 04 27
+chin greg 68 +0008 05 f 02 Result +1391 06 12
+chin greg 68 +0053 01 f 08 Result +1436 02 03
+chin greg 69 +0049 03 f 04 Result +1492 04 09
+chin greg 70 +0050 08 f 02 Result +1553 09 19
+chin greg 70 +0057 01 f 29 Result +1560 03 05
+chin greg 72 +0025 04 t 20 Result +1648 06 10
+chin greg 72 +0057 06 f 05 Result +1680 06 30
+chin greg 73 +0033 06 f 06 Result +1716 07 24
+chin greg 74 +0025 05 f 05 Result +1768 06 19
+chin greg 75 +0016 06 f 12 Result +1819 08 02
+chin greg 75 +0036 02 f 13 Result +1839 03 27
+chin greg 76 +0040 03 f 22 Result +1903 04 19
+chin greg 77 +0006 07 f 21 Result +1929 08 25
+chin greg 77 +0018 08 f 09 Result +1941 09 29
+chin greg 77 +0020 03 f 15 Result +1943 04 19
+chin greg 77 +0020 09 f 09 Result +1943 10 07
+chin greg 78 +0009 02 f 14 Result +1992 03 17
+chin greg 78 +0013 01 f 07 Result +1996 02 25
+chin greg 78 +0055 10 f 14 Result +2038 11 10
+chin greg 79 +0051 06 f 07 Result +2094 07 18
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappsupport/chinesecalendaralg/tsrc/output2REFERENCE.txt	Fri Mar 12 15:42:35 2010 +0200
@@ -0,0 +1,76 @@
+greg chin 00 +1898 01 f 01 Result 76 +0034 12 f 09
+greg chin 00 +1899 12 f 31 Result 76 +0036 11 f 29
+greg chin 00 +1900 01 f 10 Result 76 +0036 12 f 10
+greg chin 00 +1910 02 f 15 Result 76 +0047 01 f 06
+greg chin 00 +1920 03 f 20 Result 76 +0057 02 f 01
+greg chin 00 +1924 02 f 29 Result 77 +0001 01 f 25
+greg chin 00 +1970 01 f 01 Result 77 +0046 11 f 24
+greg chin 00 +1971 02 f 02 Result 77 +0048 01 f 07
+greg chin 00 +1972 03 f 03 Result 77 +0049 01 f 18
+greg chin 00 +1973 04 f 04 Result 77 +0050 03 f 02
+greg chin 00 +1974 05 f 05 Result 77 +0051 04 f 14
+greg chin 00 +1975 06 f 06 Result 77 +0052 04 f 27
+greg chin 00 +1976 07 f 07 Result 77 +0053 06 f 11
+greg chin 00 +1977 08 f 08 Result 77 +0054 06 f 24
+greg chin 00 +1978 09 f 09 Result 77 +0055 08 f 07
+greg chin 00 +1979 10 f 10 Result 77 +0056 08 f 20
+greg chin 00 +1980 11 f 11 Result 77 +0057 10 f 04
+greg chin 00 +1981 12 f 12 Result 77 +0058 11 f 17
+greg chin 00 +1982 01 f 13 Result 77 +0058 12 f 19
+greg chin 00 +1982 02 f 28 Result 77 +0059 02 f 05
+greg chin 00 +1982 03 f 01 Result 77 +0059 02 f 06
+greg chin 00 +1999 12 f 31 Result 78 +0016 11 f 24
+greg chin 00 +2000 01 f 01 Result 78 +0016 11 f 25
+greg chin 00 +2000 02 f 29 Result 78 +0017 01 f 25
+greg chin 00 +1998 01 f 28 Result 78 +0015 01 f 01
+greg chin 00 +1998 02 f 28 Result 78 +0015 02 f 02
+greg chin 00 +1998 03 f 30 Result 78 +0015 03 f 03
+greg chin 00 +1998 04 f 29 Result 78 +0015 04 f 04
+greg chin 00 +1998 05 f 30 Result 78 +0015 05 f 05
+greg chin 00 +1998 06 f 28 Result 78 +0015 05 t 05
+greg chin 00 +1998 07 f 28 Result 78 +0015 06 f 06
+greg chin 00 +1998 08 f 28 Result 78 +0015 07 f 07
+greg chin 00 +1998 09 f 28 Result 78 +0015 08 f 08
+greg chin 00 +1998 10 f 28 Result 78 +0015 09 f 09
+greg chin 00 +1998 11 f 28 Result 78 +0015 10 f 10
+greg chin 00 +1998 12 f 29 Result 78 +0015 11 f 11
+greg chin 00 +1999 01 f 28 Result 78 +0015 12 f 12
+greg chin 00 +2043 02 f 10 Result 78 +0060 01 f 01
+greg chin 00 +2044 01 f 29 Result 78 +0060 12 f 30
+chin greg 76 +0034 12 f 09 Result +1898 01 01
+chin greg 76 +0036 11 f 29 Result +1899 12 31
+chin greg 76 +0036 12 f 10 Result +1900 01 10
+chin greg 76 +0047 01 f 06 Result +1910 02 15
+chin greg 76 +0057 02 f 01 Result +1920 03 20
+chin greg 77 +0001 01 f 25 Result +1924 02 29
+chin greg 77 +0046 11 f 24 Result +1970 01 01
+chin greg 77 +0048 01 f 07 Result +1971 02 02
+chin greg 77 +0049 01 f 18 Result +1972 03 03
+chin greg 77 +0050 03 f 02 Result +1973 04 04
+chin greg 77 +0051 04 f 14 Result +1974 05 05
+chin greg 77 +0052 04 f 27 Result +1975 06 06
+chin greg 77 +0053 06 f 11 Result +1976 07 07
+chin greg 77 +0054 06 f 24 Result +1977 08 08
+chin greg 77 +0055 08 f 07 Result +1978 09 09
+chin greg 77 +0056 08 f 20 Result +1979 10 10
+chin greg 77 +0057 10 f 04 Result +1980 11 11
+chin greg 77 +0058 11 f 17 Result +1981 12 12
+chin greg 77 +0058 12 f 19 Result +1982 01 13
+chin greg 77 +0059 02 f 05 Result +1982 02 28
+chin greg 77 +0059 02 f 06 Result +1982 03 01
+chin greg 78 +0016 11 f 24 Result +1999 12 31
+chin greg 78 +0016 11 f 25 Result +2000 01 01
+chin greg 78 +0017 01 f 25 Result +2000 02 29
+chin greg 78 +0015 01 f 01 Result +1998 01 28
+chin greg 78 +0015 02 f 02 Result +1998 02 28
+chin greg 78 +0015 03 f 03 Result +1998 03 30
+chin greg 78 +0015 04 f 04 Result +1998 04 29
+chin greg 78 +0015 05 f 05 Result +1998 05 30
+chin greg 78 +0015 05 t 05 Result +1998 06 28
+chin greg 78 +0015 06 f 06 Result +1998 07 28
+chin greg 78 +0015 08 f 08 Result +1998 09 28
+chin greg 78 +0015 09 f 09 Result +1998 10 28
+chin greg 78 +0015 10 f 10 Result +1998 11 28
+chin greg 78 +0015 11 f 11 Result +1998 12 29
+chin greg 78 +0060 01 f 01 Result +2043 02 10
+chin greg 78 +0060 12 f 30 Result +2044 01 29
--- a/pimappsupport/vcardandvcal/Ticket/VTicket.MMP	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappsupport/vcardandvcal/Ticket/VTicket.MMP	Fri Mar 12 15:42:35 2010 +0200
@@ -23,6 +23,7 @@
 
 userinclude     ../inc
 systeminclude   /epoc32/include
+APP_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 source      	VTicketMaster.CPP
  
--- a/pimappsupport/vcardandvcal/group/BLD.INF	Fri Feb 19 22:49:53 2010 +0200
+++ b/pimappsupport/vcardandvcal/group/BLD.INF	Fri Mar 12 15:42:35 2010 +0200
@@ -22,7 +22,7 @@
 // specify the source file followed by its destination here
 // copy will be used to copy the source file to its destination
 // If there's no destination then the source file will be copied
-// to the same name in \epoc32\include
+// to the same name in /epoc32/include
 
 ../inc/VCAL.H SYMBIAN_APP_LAYER_PUBLIC_EXPORT_PATH(vcal.h)
 ../inc/VCAL.INL SYMBIAN_APP_LAYER_PUBLIC_EXPORT_PATH(vcal.inl)