@:P0   *u  @@p@.dynamic0 0 0 .liblist@ @ @.rel.dyn  .conflic  0 .dynstr   .dynsym  @.hash  j.text  p\$ .init) ) @).fini0) 0) @0).gotU@U@PnU:.data@@*@.xdata@@g9@.pdata. . pj.M .rconst    "  .sdata@@9:.sbss@@ :.bss@@u.comment`Ap pp p p p  p p     U@p p p p p@  $.:D )  0) pg7j 7b ;3 $735<.3A:f7#vD7YL( @a I @r Ƚ @r  @} 8 @  @ h @ X @  @ x @  @} H @~  @  @ I @  @  @  @  @ H @  @  @  @ H8@ P8@ libX11.solibm.soosf.1libUfor.solibfor.solibFutil.solibots.solibc.soosf.1.rconst.pdata.text.init.fini.data.xdata.rdata.lit8.lit4.sdata.sbss.bss_rld_dlclose_rld_dlsym_rld_dlopen_rld_dlerror__start_mcount__eproleprollistheadfreeallheadprinttransfreealldimgriblong_ecmwf_200gribshort_ecmwf_200gribunit_ecmwf_200pakrpakippbackspaceproctime_setlsm_setmask_jbess_ogridl_ogridg_jsymgg_gstore_jspleg2_jwscal_ipoleg_paddum_paddum1_paddum2_awisi_csum_gwtlt_rotate_unrotate_bilin_setup_bilin_bilin1_bilin2_bilin3_bilin4_mkmask_fillmiss_fillmiss1_qpassm_rpassm_Tk_Get3DBorderTk_Draw3DRectangleTk_NameOf3DBorderTk_3DBorderColorTk_3DBorderGCTk_Free3DBorderTk_SetBackgroundFromBorderTk_GetReliefTk_NameOfReliefTk_Draw3DPolygonTk_Fill3DRectangleTk_Fill3DPolygonTk_ParseArgvTk_InternAtomTk_GetAtomNameTkBindInitTkBindFreeTk_CreateBindingTableTk_DeleteBindingTableTk_CreateBindingTkCreateBindingProcedureTk_DeleteBindingTk_GetBindingTk_GetAllBindingsTk_DeleteAllBindingsTk_BindEventTkBindDeadWindowTk_EventObjCmdTkStringToKeysymTkKeysymToStringTkCopyAndGlobalEvalTk_GetBitmapTk_NameOfBitmapTk_SizeOfBitmapTk_FreeBitmapTk_GetBitmapFromDataTkReadBitmapFileTk_ClipboardClearTk_ClipboardAppendTk_ClipboardCmdTkClipInitTk_BellObjCmdTk_BindCmdTkBindEventProcTk_BindtagsCmdTkFreeBindingTagsTk_DestroyCmdTk_LowerCmdTk_RaiseCmdTk_TkObjCmdTk_TkwaitCmdTk_UpdateCmdTk_WinfoObjCmdTkGetDisplayOfTkDeadAppCmdTk_GetColorTk_GetColorByValueTk_NameOfColorTk_GCForColorTk_FreeColorTk_ConfigureWidgetTk_ConfigureInfoTk_ConfigureValueTk_FreeOptionsTk_GetCursorTk_GetCursorFromDataTk_NameOfCursorTk_FreeCursorTk_CreateErrorHandlerTk_DeleteErrorHandlerTk_CreateEventHandlerTk_DeleteEventHandlerTk_CreateGenericHandlerTk_DeleteGenericHandlerTk_HandleEventTkEventDeadWindowTkCurrentTimeTk_RestrictEventsTk_QueueWindowEventTkQueueEventForAllChildrenTk_FocusObjCmdTkFocusFilterEventTkGetFocusWinTkFocusKeyEventTkFocusDeadWindowTkFontPkgInitTkFontPkgFreeTk_FontObjCmdTkCreateNamedFontTk_GetFontTk_GetFontFromObjTk_NameOfFontTk_FreeFontTk_FontIdTk_GetFontMetricsTk_PostscriptFontNameTk_TextWidthTk_UnderlineCharsTk_ComputeTextLayoutTk_FreeTextLayoutTk_DrawTextLayoutTk_UnderlineTextLayoutTk_PointToCharTk_CharBboxTk_DistanceToTextLayoutTk_IntersectTextLayoutTk_TextLayoutToPostscriptTkInitFontAttributesTkParseXLFDTk_GetAnchorTk_NameOfAnchorTk_GetJoinStyleTk_NameOfJoinStyleTk_GetCapStyleTk_NameOfCapStyleTk_GetJustifyTk_NameOfJustifyTk_GetScreenMMTkGetScreenMMFromObjTk_GetDoublePixelsTk_GetPixelsTkGetPixelsFromObjTk_GetGCTk_FreeGCTk_ManageGeometryTk_GeometryRequestTk_SetInternalBorderTk_MaintainGeometryTk_UnmaintainGeometryTk_GrabCmdTk_GrabTk_UngrabTkPointerEventTkChangeEventWindowTkInOutEventsTkGrabDeadWindowTkPositionInTreeTkGrabStateTk_GridCmdTk_AddOptionTk_GetOptionTk_OptionCmdTkOptionDeadWindowTkOptionClassChangedTk_PackCmdTk_PlaceCmdTk_CreateSelHandlerTk_DeleteSelHandlerTk_OwnSelectionTk_ClearSelectionTk_GetSelectionTk_SelectionCmdTkSelDeadWindowTkSelInitTkSelClearSelectionTkSelDefaultSelectionTk_StateParseProcTk_StatePrintProcTk_OrientParseProcTk_OrientPrintProcTk_TileParseProcTk_TilePrintProcTk_OffsetParseProcTk_OffsetPrintProcTk_PixelParseProcTk_PixelPrintProcTkDrawInsetFocusHighlightTk_DrawFocusHighlightTk_GetScrollInfoTkComputeAnchorTkFindStateStringTkFindStateNumTkFindStateNumObjTk_GetVisualTk_GetColormapTk_FreeColormapTk_PreserveColormapTkGetDisplayTkAllocWindowTkCreateMainWindowTk_CreateWindowTk_CreateWindowFromPathTk_DestroyWindowTk_MapWindowTk_MakeWindowExistTk_UnmapWindowTk_ConfigureWindowTk_MoveWindowTk_ResizeWindowTk_MoveResizeWindowTk_SetWindowBorderWidthTk_ChangeWindowAttributesTk_SetWindowBackgroundTk_SetWindowBackgroundPixmapTk_SetWindowBorderTk_SetWindowBorderPixmapTk_DefineCursorTk_UndefineCursorTk_SetWindowColormapTk_SetWindowVisualTkDoConfigureNotifyTk_SetClassTkClassOptionTkClassOptionObjTkSetClassProcsTk_NameToWindowTk_IdToWindowTk_DisplayNameTk_RestackWindowTk_MainWindowTk_StrictMotifTk_GetNumMainWindowsTk_SafeInitTkGetServerInfoTkGetDefaultScreenNameTkpGetBorderTkpFreeBorderTk_3DVerticalBevelTk_3DHorizontalBevelTkpGetShadowsTkpCreateButtonTkpDisplayButtonTkpComputeButtonGeometryTkpFreeColorTkpGetColorTkpGetColorByValueTkpCmapStressedTkGetCursorByNameTkCreateCursorFromDataTkFreeCursorTk_ChooseColorCmdTk_GetOpenFileCmdTk_GetSaveFileCmdTk_MessageBoxCmdTkScrollWindowTkpUseWindowTkpMakeWindowTkpMakeContainerTkpGetOtherWindowTkpRedirectKeyEventTkpClaimFocusTkpTestembedCmdTkUnixContainerIdTkpOpenDisplayTkpCloseDisplayTkUnixDoOneXEventTkpSyncTkpChangeFocusTkpGetNativeFontTkpGetFontFromAttributesTkpDeleteFontTkpGetFontFamiliesTk_MeasureCharsTk_DrawCharsTkpNewMenuTkpDestroyMenuTkpDestroyMenuEntryTkpConfigureMenuEntryTkpMenuNewEntryTkpSetWindowMenuBarTkpSetMainMenubarTkpPostMenuTkpComputeMenubarGeometryTkpInitializeMenuBindingsTkpDrawMenuEntryTkpComputeStandardMenuGeometryTkpMenuNotifyToplevelCreateTkpMenuInitTkpCreateMenuButtonTkpDisplayMenuButtonTkpDestroyMenuButtonTkpComputeMenuButtonGeometryTkpCreateScaleTkpDestroyScaleTkpDisplayScaleTkpScaleElementTkpSetScaleValueTkpPixelToValueTkpValueToPixelTkpCreateScrollbarTkpDisplayScrollbarTkpComputeScrollbarGeometryTkpDestroyScrollbarTkpConfigureScrollbarTkpScrollbarPositionTkSelGetSelectionTkSelPropProcTkSelEventProcTk_SetAppNameTk_SendCmdTkGetInterpNamesTkWmNewWindowTkWmMapWindowTkWmUnmapWindowTkWmDeadWindowTkWmSetClassTk_WmCmdTk_SetGridTk_UnsetGridTk_GetRootCoordsTk_CoordsToWindowTk_GetVRootGeometryTk_MoveToplevelWindowTkWmProtocolEventProcTkWmRestackToplevelTkWmAddToColormapWindowsTkWmRemoveFromColormapWindowsTkGetPointerCoordsTkpMakeMenuWindowTkWmFocusToplevelTkUnixSetMenubarTkpGetWrapperWindowTkInitXIdTk_FreeXIdTkFreeWindowIdTk_GetPixmapTk_FreePixmapTkpWindowWasRecentlyDeletedTk_ButtonCmdTk_CheckbuttonCmdTk_LabelCmdTk_RadiobuttonCmdTkButtonWorldChangedTkInvokeButtonTk_EntryCmdTk_FrameCmdTk_ToplevelCmdTkCreateFrameTkInstallFrameMenuTk_ListboxCmdTk_MenuCmdTkInvokeMenuTkDestroyMenuTkGetMenuIndexTkActivateMenuEntryTkPostCommandTkNewMenuNameTkSetWindowMenuBarTkGetMenuHashTableTkCreateMenuReferencesTkFindMenuReferencesTkFreeMenuReferencesTkMenuInitTk_MenubuttonCmdTkMenuButtonWorldChangedTkMenuInitializeDrawingFieldsTkMenuInitializeEntryDrawingFieldsTkMenuFreeDrawOptionsTkMenuEntryFreeDrawOptionsTkMenuConfigureDrawOptionsTkMenuConfigureEntryDrawOptionsTkEventuallyRecomputeMenuTkRecomputeMenuTkEventuallyRedrawMenuTkMenuSelectImageProcTkMenuEventProcTkMenuImageProcTkPostTearoffMenuTkPostSubmenuTk_MessageCmdTk_ScaleCmdTkEventuallyRedrawScaleTkRoundToResolutionTk_ScrollbarCmdTkScrollbarEventProcTkScrollbarEventuallyRedrawTk_CanvasObjCmdTk_CanvasEventuallyRedrawTk_CreateItemTypeTk_CreateCanvasVisitorTk_GetCanvasVisitorTk_GetItemTypesTk_SetTileCanvasItemTk_CanvasPsColorTk_CanvasPsFontTk_CanvasPsBitmapTk_CanvasPsStippleTk_CanvasPsYTk_CanvasPsPathTkFillPolygonTkCanvPostscriptCmdTk_PostscriptColorTk_PostscriptFontTk_PostscriptBitmapTk_PostscriptStippleTk_PostscriptYTk_PostscriptPathTkPostscriptImageTk_CanvasTkwinTk_CanvasDrawableCoordsTk_CanvasWindowCoordsTk_CanvasGetCoordTk_CanvasGetCoordFromObjTk_CanvasSetStippleOriginTk_CanvasSetOffsetTk_CanvasGetTextInfoTk_CanvasTagsParseProcTk_CanvasTagsPrintProcTk_CanvasDashParseProcTk_CanvasDashPrintProcTk_CreateSmoothMethodTkSmoothParseProcTkSmoothPrintProcTk_GetDashTk_CreateOutlineTk_DeleteOutlineTk_ConfigOutlineGCTk_ChangeOutlineGCTk_ResetOutlineGCTk_CanvasPsOutlineTkLineToPointTkLineToAreaTkThickPolyLineToAreaTkPolygonToPointTkPolygonToAreaTkOvalToPointTkOvalToAreaTkIncludePointTkBezierScreenPointsTkBezierPointsTkMakeBezierCurveTkMakeBezierPostscriptTkGetMiterPointsTkGetButtPointsTk_CreateImageTypeTk_ImageObjCmdTk_ImageChangedTk_NameOfImageTk_GetImageTk_FreeImageTk_PostscriptImageTk_RedrawImageTk_SizeOfImageTk_DeleteImageTkDeleteAllImagesTk_GetTileTk_FreeTileTk_NameOfTileTk_PixmapOfTileTk_SizeOfTileTk_SetTileChangedProcTk_SetTileOriginTk_GetImageMasterDataTkGetBitmapDataTk_CreatePhotoImageFormatTk_PhotoPutZoomedBlockTk_DitherPhotoTk_PhotoBlankTk_PhotoExpandTk_PhotoGetSizeTk_PhotoSetSizeTk_PhotoGetImageTk_CreatePhotoOptionTk_TextCmdTkTextLostSelectionTkTextGetTabsTkBTreeCreateTkBTreeDestroyTkBTreeInsertCharsTkBTreeDeleteCharsTkBTreeFindLineTkBTreeNextLineTkBTreePreviousLineTkBTreeLineIndexTkBTreeLinkSegmentTkBTreeUnlinkSegmentTkBTreeTagTkBTreeStartSearchTkBTreeStartSearchBackTkBTreeNextTagTkBTreePrevTagTkBTreeCharTaggedTkBTreeGetTagsTkTextIsElidedTkBTreeCheckTkBTreeNumLinesTkBTreeCharsInLineTkTextCreateDInfoTkTextFreeDInfoTkTextEventuallyRepickTkTextRedrawRegionTkTextChangedTkTextRedrawTagTkTextRelayoutWindowTkTextSetYViewTkTextSeeCmdTkTextXviewCmdTkTextYviewCmdTkTextScanCmdTkTextPixelIndexTkTextCharBboxTkTextDLineInfoTkTextCharLayoutProcTkTextImageCmdTkTextImageIndexTkTextMakeIndexTkTextIndexToSegTkTextSegToOffsetTkTextGetIndexTkTextPrintIndexTkTextIndexCmpTkTextIndexForwCharsTkTextIndexBackCharsTkTextMarkCmdTkTextSetMarkTkTextMarkSegToIndexTkTextMarkNameToIndexTkTextInsertDisplayProcTkTextTagCmdTkTextCreateTagTkTextFreeTagTkTextBindProcTkTextPickCurrentTkTextWindowCmdTkTextWindowIndexTk_MainTcl_SetPanicProcTclRegCompTclRegExecTclRegErrorTclGetRegErrorTcl_AsyncCreateTcl_AsyncMarkTcl_AsyncInvokeTcl_AsyncDeleteTcl_AsyncReadyTclHideUnsafeCommandsTcl_CallWhenDeletedTcl_DontCallWhenDeletedTcl_DeleteAssocDataTcl_ExposeCommandTclInvokeStringCommandTclInvokeObjectCommandTclRenameCommandTcl_SetCommandInfoTcl_GetCommandNameTcl_GetCommandFullNameTcl_DeleteCommandTclCleanupCommandTcl_EvalObj2Tcl_ExprLongTcl_ExprDoubleTcl_ExprBooleanTcl_ExprLongObjTcl_ExprDoubleObjTcl_ExprBooleanObjTclInvokeTclGlobalInvokeTclObjInvokeGlobalTclObjInvokeTcl_ExprStringTcl_ExprObjTcl_CreateTraceTcl_DeleteTraceTcl_AddObjErrorInfoTcl_GlobalEvalObjTcl_SetRecursionLimitTcl_BinaryObjCmdTcl_DbCkallocTcl_ReallocTcl_DbCkreallocTcl_DbCkfreeTcl_InitMemoryTcl_DumpActiveMemoryTcl_ValidateAllMemoryTcl_ClockObjCmdTcl_BreakObjCmdTcl_CaseObjCmdTcl_CatchObjCmdTcl_CdObjCmdTcl_ConcatObjCmdTcl_ContinueObjCmdTcl_ErrorObjCmdTcl_EvalObjCmdTcl_ExitObjCmdTcl_ExprObjCmdTcl_FileObjCmdTcl_ForCmdTcl_ForeachObjCmdTcl_FormatObjCmdTcl_IfCmdTcl_IncrCmdTcl_InfoObjCmdTcl_JoinObjCmdTcl_LindexObjCmdTcl_LinsertObjCmdTcl_ListObjCmdTcl_LlengthObjCmdTcl_LrangeObjCmdTcl_LreplaceObjCmdTcl_LsearchObjCmdTcl_LsortObjCmdTcl_PwdCmdTcl_RegexpCmdTcl_RegsubCmdTcl_RenameObjCmdTcl_ReturnObjCmdTcl_ScanCmdTcl_GetStaticFileTcl_SourceObjCmdTcl_SplitObjCmdTcl_StringObjCmdTcl_SubstCmdTcl_SwitchObjCmdTcl_TimeObjCmdTcl_TraceCmdTcl_WhileCmdTclCompileExprTcl_CreateMathFuncTclPrintByteCodeObjTclPrintInstructionTclPrintSourceTclCleanupByteCodeTclInitCompileEnvTclFreeCompileEnvTclInitByteCodeObjTclCompileStringTclCompileQuotesTclCompileDollarVarTclCompileBreakCmdTclCompileCatchCmdTclCompileContinueCmdTclCompileExprCmdTclCompileForCmdTclCompileForeachCmdTclCompileIfCmdTclCompileIncrCmdTclCompileSetCmdTclCompileWhileCmdTclInitCompiledLocalsTclObjIndexForStringTclExpandCodeArrayTclCreateAuxDataTclInitJumpFixupArrayTclExpandJumpFixupArrayTclFreeJumpFixupArrayTclEmitForwardJumpTclFixupForwardJumpTclGetInstructionTableTclRegisterAuxDataTypeTclGetAuxDataTypeTclInitAuxDataTypeTableTclFinalizeAuxDataTypeTableTclGetDateTclDateparseTclSetupEnvTclSetEnvTcl_PutEnvTclUnsetEnvTclGetEnvTclFinalizeEnvironmentTcl_DeleteExitHandlerTcl_FinalizeTclInExitTcl_VwaitCmdTcl_UpdateCmdTclCreateExecEnvTclDeleteExecEnvTclFinalizeExecEnvTclExecuteByteCodeTclGetExceptionRangeForPcTclExprFloatErrorTcl_GetCommandFromObjTclFileRenameCmdTclFileCopyCmdTclFileMakeDirsCmdTclFileDeleteCmdTclFileAttrsCmdTcl_GetPathTypeTcl_SplitPathTcl_JoinPathTclGetExtensionTcl_GlobCmdTclDoGlobTclGetLongTcl_HashStatsTcl_RecordAndEvalObjTcl_GetIndexFromObjStructTclPreventAliasLoopTcl_MakeSafeTcl_InterpObjCmdTclInterpInitTcl_CreateSlaveTcl_GetSlaveTcl_CreateAliasTcl_CreateAliasObjTcl_GetAliasTcl_GetAliasObjTcl_SetStdChannelTcl_CreateCloseHandlerTcl_DeleteCloseHandlerTcl_UnregisterChannelTcl_RegisterChannelTcl_CreateChannelTcl_ReplaceChannelTcl_UndoReplaceChannelTcl_GetChannelModeTcl_GetChannelNameTcl_GetChannelTypeTcl_GetChannelHandleTcl_GetChannelInstanceDataTcl_GetsObjTcl_UngetsTcl_TellTcl_InputBlockedTcl_InputBufferedTcl_SetChannelBufferSizeTcl_GetChannelBufferSizeTcl_BadChannelOptionTcl_GetChannelByteorderTcl_GetHostByteorderTcl_GetChannelOptionTcl_NotifyChannelTcl_FileEventCmdTclTestChannelCmdTclTestChannelEventCmdTclCopyChannelTcl_PutsObjCmdTcl_FlushObjCmdTcl_GetsObjCmdTcl_ReadObjCmdTcl_SeekCmdTcl_TellCmdTcl_CloseObjCmdTcl_FconfigureCmdTcl_EofObjCmdTcl_ExecCmdTcl_FblockedObjCmdTcl_OpenObjCmdTcl_SocketCmdTcl_FcopyObjCmdTclSockGetPortTclSockMinimumBuffersTclGetOpenModeTcl_GetErrnoTcl_SetErrnoTclStatTclAccessTclStatInsertProcTclStatDeleteProcTclAccessInsertProcTclAccessDeleteProcTclOpenFileChannelInsertProcTclOpenFileChannelDeleteProcTcl_UpdateLinkedVarTcl_DbNewListObjTcl_SetListObjTcl_LoadCmdTclGetLoadedPackagesTcl_FindPackageHandleTclInitNamespacesTcl_GetCurrentNamespaceTcl_GetGlobalNamespaceTcl_PushCallFrameTcl_PopCallFrameTcl_CreateNamespaceTcl_DeleteNamespaceTclTeardownNamespaceTcl_ExportTcl_AppendExportListTcl_ImportTcl_ForgetImportTclGetOriginalCommandTclGetNamespaceForQualNameTcl_FindNamespaceTcl_FindCommandTcl_FindNamespaceVarTclResetShadowedCmdRefsTcl_NamespaceObjCmdTcl_DeleteEventsTcl_GetServiceModeTcl_SetServiceModeTcl_ServiceAllTclFinalizeCompExecEnvTcl_RegisterObjTypeTcl_AppendAllObjTypesTcl_DbNewObjTclAllocateFreeObjectsTcl_DuplicateObjTcl_GetStringTcl_GetByteArrayFromObjTcl_InvalidateStringRepTcl_NewBooleanObjTcl_DbNewBooleanObjTcl_DbNewDoubleObjTcl_NewLongObjTcl_DbNewLongObjTcl_DbIncrRefCountTcl_DbDecrRefCountTcl_DbIsSharedTclParseQuotesTclParseNestedCmdTclParseBracesTclExpandParseValueTcl_ParseVarTcl_DetachPidsTcl_ReapDetachedProcsTclCleanupChildrenTclCreatePipelineTcl_OpenCommandChannelTcl_PkgProvide2Tcl_PkgRequire2Tcl_PackageCmdTclFreePackageInfoTcl_ErrnoIdTcl_ErrnoMsgTcl_SignalIdTcl_SignalMsgTcl_ProcObjCmdTclCreateProcTclGetFrameTcl_UplevelObjCmdTclFindProcTclIsProcTclProcInterpProcTclObjInterpProcTclProcCompileProcTclProcDeleteProcTclProcCleanupProcTclUpdateReturnInfoTclGetInterpProcTclGetObjInterpProcTclNewProcBodyObjTcl_NewByteArrayObjTcl_DbNewStringObjTcl_DbNewByteArrayObjTcl_SetByteArrayObjTcl_SetByteArrayLengthTcl_SetObjLengthTcl_AppendToObjTclServiceIdleTcl_AfterObjCmdTclFindElementTclCopyAndCollapseTcl_ScanElementTcl_ConvertCountedElementTcl_ConcatTcl_ConcatObjTcl_SetErrorCodeTcl_SetObjErrorCodeTcl_RegExpMatchTclPrecTraceProcTclNeedSpaceTclFormatIntTclLooksLikeIntTclGetIntForIndexTcl_GetNameOfExecutableTcl_ExternalToUtfDStringTcl_ExternalToUtfTcl_UtfToExternalDStringTcl_UtfToExternalTcl_UtfCharCompleteTcl_NumUtfCharsTcl_UtfFindFirstTcl_UtfFindLastTcl_UtfNextTcl_UtfPrevTcl_UtfAtIndexTcl_UtfToUpperTcl_UtfToLowerTcl_UtfToTitleTclLookupVarTcl_ObjGetVar2Tcl_GetObjVar2TclGetIndexedScalarTclGetElementOfIndexedArrayTcl_SetCmdTcl_ObjSetVar2Tcl_SetObjVar2TclSetIndexedScalarTclSetElementOfIndexedArrayTclIncrVar2TclIncrIndexedScalarTclIncrElementOfIndexedArrayTcl_UnsetVarTcl_UnsetVar2Tcl_TraceVar2Tcl_UntraceVar2Tcl_VarTraceInfoTcl_VarTraceInfo2Tcl_UnsetObjCmdTcl_AppendObjCmdTcl_LappendObjCmdTcl_ArrayObjCmdTcl_UpVarTcl_UpVar2Tcl_GetVariableFullNameTcl_GlobalObjCmdTcl_VariableObjCmdTcl_UpvarObjCmdTclDeleteVarsTclDeleteCompiledLocalVarsTcl_AddInterpResolversTcl_GetInterpResolversTcl_RemoveInterpResolversTcl_SetNamespaceResolversTcl_GetNamespaceResolversTclLoadFileTclGuessPackageNameTclpOpenFileChannelTcl_MakeFileChannelTcl_OpenTcpClientTcl_MakeTcpClientChannelTcl_OpenTcpServerTclGetDefaultStdChannelTcl_GetOpenFileTclUnixWaitForFileTclpRenameFileTclpCopyFileTclpDeleteFileTclpCreateDirectoryTclpCopyDirectoryTclpRemoveDirectoryTclpListVolumesTclChdirTclGetCwdTclGetUserHomeTclMatchFilesTclpMakeFileTclpOpenFileTclpCreateTempFileTclpCreatePipeTclpCloseFileTclpCreateProcessTclpCreateCommandChannelTclGetAndDetachPidsTcl_WaitPidTcl_PidObjCmdTcl_GetHostNameTclpGetSecondsTclpGetClicksTclpGetTimeZoneTclpGetTimeTclSetPreInitScriptTclPlatformInitTcl_SetTimerTcl_WaitForEventTcl_MaindlcloseDrsautosyncDrssyncDrstestGetdatGetdimGetelemdGetpelemGetrge2GetvdimInqlunPrdictPutdicSetrepbcopy_bzero_drserr_drsrep_C8TOF8C8TOF4F8TOF4F8TOC8F4TOC8F4TOF8I8TOI4I4TOI8mifree_NCadvisencredefncsyncncabortncdimrenamencvarput1ncvarget1ncvarputgncvarrenamencattcopyncattnamencattrenamencattdelncsetfillncrecinqncrecgetncrecputnc__enddefnc_deletenc_inq_ndimsnc_inq_nvarsnc_inq_unlimdimnc_inq_dimnamenc_inq_dimlennc_inq_attidnc_inq_atttypenc_inq_attlennc_put_att_ucharnc_get_att_ucharnc_put_att_longnc_get_att_longnc_inq_varnamenc_inq_vartypenc_inq_varndimsnc_inq_vardimidnc_inq_varnattsnc_put_var1_ucharnc_put_var1_longnc_get_var1_ucharnc_get_var1_longnc_put_var_textnc_put_var_ucharnc_put_var_scharnc_put_var_shortnc_put_var_intnc_put_var_longnc_put_var_floatnc_put_var_doublenc_get_var_textnc_get_var_ucharnc_get_var_scharnc_get_var_shortnc_get_var_intnc_get_var_longnc_get_var_floatnc_get_var_doublenc_get_vars_textnc_get_vars_ucharnc_get_vars_scharnc_get_vars_shortnc_get_vars_intnc_get_vars_longnc_get_vars_floatnc_get_vars_doublenc_put_vars_textnc_put_vars_ucharnc_put_vars_scharnc_put_vars_shortnc_put_vars_intnc_put_vars_longnc_put_vars_floatnc_put_vars_doublenc_copy_varncx_get_float_floatncx_put_float_floatncx_get_double_doublencx_put_double_doublencx_getn_voidncx_pad_getn_voidncx_putn_voidncx_pad_putn_voidascinascindascoutnumvals_valpina_gbyte_sbyte_pbfppbseek_pbtell_pbread2_pbwrite_pbflush_pbread3_pbopen3_pbclose3_pbseek3_pbwrite3_gribread_bufrread_pseuread_pbsize_crexrd_cosopen_cosclose_cosrewind_cosbackspace_cosread_swapbytes_c8tor4_c8toi4_c8tol4_c8tor8_c8toi8_c8tol8_r8tor4_ii8toi4_r4tor8_ii4toi8_ibmi4toi4_ibmi2toi4_ibmr4tor4_ibmi4toi8_ibmi2toi8_ibmr4tor8_ibmr8tor8_expand21_r8__call_add_pc_range_table_call_remove_pc_range_table_call_add_gp_range_call_remove_gp_rangeetext__ldr_data__main_routinetkpButtonProcstkpMenubuttonClasstkpScrollbarProcstkpButtonConfigSpecstkMenuEntryConfigSpecstkMenuConfigSpecstkpScrollbarConfigSpecstkArcTypetkBitmapTypetkImageTypetkLineTypetkPolygonTypetkTextTypetkBezierSmoothMethodtkWindowTypetkRectangleTypetkOvalTypetkBitmapImageTypetkImgFmtGIFtkImgFmtPPMtkPhotoImageTypetextWrapModeOptiontkTextCharTypetkTextToggleOnTypetkTextToggleOffTypetkTextRightMarkTypetkTextLeftMarkTypeinstructionTabletclTypeTabletclByteCodeTypetclForeachInfoTypeTclDateexcaTclDateactTclDatepactTclDatepgoTclDater1TclDater2TclDatechkTclDatedefbuiltinFuncTabletclCmdNameTypetclIndexTypetclListTypetclNsNameTypetclBooleanTypetclDoubleTypetclIntTypetclProcBodyTypetclStringTypetclpFileAttrStringstclpFileAttrProcsdrssave_UTF_errorstclDummyMathPtr__EXEC__tclFocusDebugpendingPtrtkMainWindowListtkDisplayListtkDisabledUidtkActiveUidtkNormalUidtkSendSerialtkTextDebugtkBTreeDebugpanicProctclTraceCompileTclDatesTclDatevtclMemDumpFileNametclTraceExectcl_MathInProgresstclMatherrPtrtclPlatformtclFreeObjListtclEmptyStringReptclExecutableName_fbssedata_edataTclDatedebugend_end_ebss__environ__lc_ctype_iobenvironerrno_fpdata_size_fpdata_ftextumreadppread1Gribreaddrsreadncreadgrreadfillhead1fillhead2fillhead3fillhead4fillhead5fillhead6fillhead7readctlgetgribrecget_gausslatget_refdate1get_refdate2get_date1get_date2get_tmean1get_tmean2get_levelset_tunitset_tunit_datestrlenbblkstripcpstringcatstringfstrcpyfstrcmpgetztypegetdimidchksavedimget_gribdateget_gribrefdateget_gribtmeanget_lsmget_cfiset_refdateget_xsecdimget_xsecdim1get_datasizeget_ecmwf_ocean_valget_ecmwf_ocean_nameget_ecmwf_ocean_unitget_unitdateget_unitrefdateget_xcoordwritefileget_datagp2gp_allocsh2gp_allocls2gpoc2gprg2fglb2gplb52gpmean_dataextrap_gridfltcmpintcmpinitdrsinitncinitutfinitgradspostncget_namesamedimsametitlesametitle1isequiget_tvalismdprintallheadprintheadprintxheadnewheadnewhead_endinitheadnewxheadcopyheadget_numfieldscopyxheaddelallheaddelheaddelxheadfreeheadfreexheadsetlongtitlenewtranscopytransdeltransfreetransspectruncspec2gridgrid2gridredgauss2gausslbc2gridmeandelm2extraprmtransprintalldimprintdimdimaddfinddimnewdiminitdimcopydimcopydim1delalldimdeldimfreedimgetdimstrpplongppshortppunitstash2pp1griblonggribshortgribunitgriblevelgriblevelunitgriblong_standardgriblong_ncepgriblong_mfgriblong_ecmwf_128griblong_ecmwf_129griblong_ecmwf_130griblong_ecmwf_131griblong_ecmwf_140griblong_ecmwf_150griblong_ecmwf_151griblong_ecmwf_160griblong_ecmwf_170griblong_ecmwf_180griblong_ecmwf_190gribshort_standardgribshort_ncepgribshort_mfgribshort_ecmwf_128gribshort_ecmwf_129gribshort_ecmwf_130gribshort_ecmwf_131gribshort_ecmwf_140gribshort_ecmwf_150gribshort_ecmwf_151gribshort_ecmwf_160gribshort_ecmwf_170gribshort_ecmwf_180gribshort_ecmwf_190gribunit_standardgribunit_ncepgribunit_mfgribunit_ecmwf_128gribunit_ecmwf_129gribunit_ecmwf_130gribunit_ecmwf_131gribunit_ecmwf_140gribunit_ecmwf_150gribunit_ecmwf_151gribunit_ecmwf_160gribunit_ecmwf_170gribunit_ecmwf_180gribunit_ecmwf_190getstashgetstash1getstash2getstash3open_drsclose_drsset_drsread_drswrite_drsdimwrite_drsdataopen_ncclose_ncisnccharread_ncdimrealread_ncdimdataset_ncread_ncrealread_ncintread_ncwrite_ncglobwrite_ncdimwrite_ncdimdatawrite_ncfieldwrite_ncxattwrite_ncdataget_ncpackget_ncrealget_ncintget_ncattget_ncglobattget_dimindexget_nctypeopen_utfclose_utfwrite_utfdimwrite_utfdataascoutxgetgrfilenamegetgrlinegetgrwordgetgrstrget_dateincgrget_refdategrgetmongetgrnameget_grtimeget_grdate2get_grdate1unpakrunpakiread_grib_headerungribr2ungribi2p21bitsread_wgdos_headerunwgdos_xpndextrinbit_testmove_bitsreadfileget_typechecknamexreadintxreadrealxreadpackxreadppheadppopenppclosepprewindppskipppseekpptellppreadppreadpackppreadheadppwritexreadgribheadgetgribinfogetlocalgribinfo_4getlocalgribinfo_Wfreegribheadxwriterealxopenxclosextellxseekxrewindxskipxsetxreadxerrordatecmpdiff_datesdiff_dates_360diff_dates_juldiff_dates_noleapdiff_dates_caladd_hoursadd_hours_360add_hours_juladd_hours_noleapadd_hours_caladd_hours2date2dhmdate2dhm_juldate2dhm_noleapdate2dhm_360date2dhm_caldhm2datedhm2date_juldhm2date_noleapdhm2date_360dhm2date_calnum_daysfree_xbcopygetenv_gp2gp_sh2gp_sh2sh_newgrid_getlat_spdelm2_set99_fft99_ReadFileCmdWriteFileCmdClearallCmdListheadCmdSetdimCmdGetdimCmdGetvarCmdSetvarCmdGetdataCmdGetcolindexCmdGetdataimageCmdGetcolbarimageCmdSpectruncCmdSpec2gridCmdGrid2gridCmdMeanCmdDelm2CmdEditdimCmdExtrapCmdRmtransCmdFieldinfoCmdDiminfoCmdPrintdimCmdPrintalldimCmdDelalldimCmdDeldimCmdPrintheadCmdPrintallheadCmdDelallheadCmdDelheadCmdCopyheadCmdSwapumCmdOutwinCmdOuttermCmdSetVarAttCmdGetVarAttCmdSetDimAttCmdGetDimAttCmdSetGlobAttCmdGetGlobAttCmdGetStashMasterCmdPrintStashMasterCmdWriteGlobAttCmdExtendGlobAttCmdDeleteHeadgetdatagetdata1getvarsetvarget_incrnewsdglobTcl_AppInitTk_DefineBitmapTk_MainLoopTk_GetUidTk_InitTkCreateXEventSourceTk_FindPhotoTk_PhotoPutBlockTk_InitStandAloneTkMainTkpInitTkpGetAppNameTkpDisplayWarningpanicTcl_CreateInterpTcl_SetAssocDataTcl_GetAssocDataTcl_InterpDeletedTcl_DeleteInterpTcl_HideCommandTcl_CreateCommandTcl_CreateObjCommandTcl_GetCommandInfoTcl_DeleteCommandFromTokenTcl_EvalTcl_EvalObjTcl_AddErrorInfoTcl_VarEvalTcl_GlobalEvalTcl_AllowExceptionsTcl_AllocTcl_FreeTcl_DefineStaticFileTcl_BackgroundErrorTcl_CreateExitHandlerTcl_ExitTcl_TranslateFileNameTcl_GetIntTcl_GetDoubleTcl_GetBooleanTcl_InitHashTableTcl_DeleteHashEntryTcl_DeleteHashTableTcl_FirstHashEntryTcl_NextHashEntryTcl_RecordAndEvalTcl_GetIndexFromObjTcl_WrongNumArgsTcl_GetInterpPathTcl_IsSafeTcl_GetMasterTcl_GetStdChannelTcl_GetChannelTcl_CloseTcl_WriteTcl_FlushTcl_ReadTcl_GetsTcl_SeekTcl_EofTcl_SetChannelOptionTcl_CreateChannelHandlerTcl_DeleteChannelHandlerTcl_EvalFileTcl_PosixErrorTcl_OpenFileChannelTcl_LinkVarTcl_UnlinkVarTcl_NewListObjTcl_ListObjGetElementsTcl_ListObjAppendListTcl_ListObjAppendElementTcl_ListObjIndexTcl_ListObjLengthTcl_ListObjReplaceTcl_StaticPackageTcl_CreateEventSourceTcl_DeleteEventSourceTcl_QueueEventTcl_ServiceEventTcl_SetMaxBlockTimeTcl_DoOneEventTcl_GetObjTypeTcl_ConvertToTypeTcl_NewObjTclFreeObjTcl_GetStringFromObjTcl_SetBooleanObjTcl_GetBooleanFromObjTcl_NewDoubleObjTcl_SetDoubleObjTcl_GetDoubleFromObjTcl_NewIntObjTcl_SetIntObjTcl_GetIntFromObjTcl_SetLongObjTcl_GetLongFromObjTcl_PkgProvideTcl_PkgRequireTcl_PreserveTcl_ReleaseTcl_EventuallyFreeTcl_NewStringObjTcl_SetStringObjTcl_AppendStringsToObjTcl_CreateTimerHandlerTcl_DeleteTimerHandlerTcl_DoWhenIdleTcl_CancelIdleCallTcl_SplitListTcl_ScanCountedElementTcl_ConvertElementTcl_MergeTcl_StringMatchTcl_SetResultTcl_GetStringResultTcl_SetObjResultTcl_GetObjResultTcl_AppendResultTcl_AppendElementTcl_FreeResultTcl_ResetResultTcl_RegExpCompileTcl_RegExpExecTcl_RegExpRangeTcl_DStringInitTcl_DStringAppendTcl_DStringAppendElementTcl_DStringSetLengthTcl_DStringFreeTcl_DStringResultTcl_DStringGetResultTcl_DStringStartSublistTcl_DStringEndSublistTcl_PrintDoubleTcl_GetVarTcl_GetVar2Tcl_SetVarTcl_SetVar2Tcl_TraceVarTcl_UntraceVarTcl_SleepTcl_FindExecutableTcl_InitTcl_SourceRCFileTcl_CreateFileHandlerTcl_DeleteFileHandlerTcl_InitStandAloneTcl_BackslashTclWordEndTcl_CommandCompleteTclObjCommandCompleteTcl_MainLoopdlopendlsymdlerrorAslunCllunCluvdbGetcdimGetedimGetnameGetslabInqdictPutdatPutvdimSetdateSetdimSeterrSetnameSetvdimbytecopy_d_floor_getnd_aslun_cllun_cluvdb_drsautosync_drssync_drsrout_drstest_drstest2_getdat_getcdim_getdim_getedim_getelemd_getpelem_getname_getrge2_getslab_getslab1copybufgetvdim_inqdict_inqlun_prdict_putdic_putdat_putvdim_setdate_setdim_seterr_getdrser_setname_setrep_setvdim_readhd_drsreadb_writehd_iflun_drstrunc_setcdim_dictlook_redic_confnam_getrange_gd1_savevdbs_restvdbs_idenc_wrdic_putdat1_mvnbc_c8tof4_i8toi4_f4toc8_f8toc8_i4toi8_c8tof8_f8tof4_f4tof8_byteswap4_byteswap8_compnam_getindex_rdtrans_clavdb_midate_mitime_wrtrans_mialloc_miextend_miallocw_miextenw_bnsrch_gettbuf_redat_wrdat_nc_advisenccreatencopenncendefncclosencinquirencdimdefncdimidncdiminqncvardefncvaridncvarinqncvarputncvargetncvarputsncvargetsncvargetgncattputncattinqncattgetnctypelennc_strerrorNC_check_idnc_cktypencx_howmanyread_numrecswrite_numrecsNC_syncnc__createnc_createnc__opennc_opennc_enddefnc_closenc_abortnc_redefnc_inqnc_inq_nattsnc_syncnc_set_fillfree_NC_dimnew_x_NC_dimfind_NC_Udimfree_NC_dimarrayV0free_NC_dimarrayVdup_NC_dimarrayVelem_NC_dimarraync_def_dimnc_inq_dimidnc_inq_dimnc_rename_dimfree_NC_attrnew_x_NC_attrfree_NC_attrarrayV0free_NC_attrarrayVdup_NC_attrarrayVelem_NC_attrarrayNC_findattrnc_inq_attnamenc_inq_attnc_rename_attnc_copy_attnc_del_attnc_put_att_textnc_get_att_textnc_put_att_scharnc_get_att_scharnc_put_att_shortnc_get_att_shortnc_put_att_intnc_get_att_intnc_put_att_floatnc_get_att_floatnc_put_att_doublenc_get_att_doublenc_put_attnc_get_attfree_NC_varnew_x_NC_varfree_NC_vararrayV0free_NC_vararrayVdup_NC_vararrayVNC_findvarncx_szofNC_var_shapeNC_lookupvarnc_def_varnc_inq_varidnc_inq_varnc_rename_varfill_NC_varnc_put_var1_textnc_put_var1_scharnc_put_var1_shortnc_put_var1_intnc_put_var1_floatnc_put_var1_doublenc_put_var1nc_get_var1_textnc_get_var1_scharnc_get_var1_shortnc_get_var1_intnc_get_var1_floatnc_get_var1_doublenc_get_var1nc_put_vara_textnc_put_vara_ucharnc_put_vara_scharnc_put_vara_shortnc_put_vara_intnc_put_vara_longnc_put_vara_floatnc_put_vara_doublenc_put_varanc_get_vara_textnc_get_vara_ucharnc_get_vara_scharnc_get_vara_shortnc_get_vara_intnc_get_vara_longnc_get_vara_floatnc_get_vara_doublenc_get_varanc_get_varsnc_put_varsnc_get_varm_textnc_get_varm_ucharnc_get_varm_scharnc_get_varm_shortnc_get_varm_intnc_get_varm_longnc_get_varm_floatnc_get_varm_doublenc_get_varmnc_put_varm_textnc_put_varm_ucharnc_put_varm_scharnc_put_varm_shortnc_put_varm_intnc_put_varm_longnc_put_varm_floatnc_put_varm_doublenc_put_varmnc_inq_recnc_put_recnc_get_recncio_createncio_openncio_closencx_len_NCncx_put_NCnc_get_NCncx_get_short_scharncx_get_short_ucharncx_get_short_shortncx_get_short_intncx_get_short_longncx_get_short_floatncx_get_short_doublencx_put_short_scharncx_put_short_ucharncx_put_short_shortncx_put_short_intncx_put_short_longncx_put_short_floatncx_put_short_doublencx_get_int_scharncx_get_int_ucharncx_get_int_shortncx_get_int_intncx_get_int_longncx_get_int_floatncx_get_int_doublencx_put_int_scharncx_put_int_ucharncx_put_int_shortncx_put_int_intncx_put_int_longncx_put_int_floatncx_put_int_doublencx_get_float_scharncx_get_float_ucharncx_get_float_shortncx_get_float_intncx_get_float_longncx_get_float_doublencx_put_float_scharncx_put_float_ucharncx_put_float_shortncx_put_float_intncx_put_float_longncx_put_float_doublencx_get_double_scharncx_get_double_ucharncx_get_double_shortncx_get_double_intncx_get_double_longncx_get_double_floatncx_put_double_scharncx_put_double_ucharncx_put_double_shortncx_put_double_intncx_put_double_longncx_put_double_floatncx_put_size_tncx_get_size_tncx_put_off_tncx_get_off_tncx_getn_schar_scharncx_getn_schar_ucharncx_getn_schar_shortncx_getn_schar_intncx_getn_schar_longncx_getn_schar_floatncx_getn_schar_doublencx_pad_getn_schar_scharncx_pad_getn_schar_ucharncx_pad_getn_schar_shortncx_pad_getn_schar_intncx_pad_getn_schar_longncx_pad_getn_schar_floatncx_pad_getn_schar_doublencx_putn_schar_scharncx_putn_schar_ucharncx_putn_schar_shortncx_putn_schar_intncx_putn_schar_longncx_putn_schar_floatncx_putn_schar_doublencx_pad_putn_schar_scharncx_pad_putn_schar_ucharncx_pad_putn_schar_shortncx_pad_putn_schar_intncx_pad_putn_schar_longncx_pad_putn_schar_floatncx_pad_putn_schar_doublencx_getn_short_scharncx_getn_short_ucharncx_getn_short_shortncx_getn_short_intncx_getn_short_longncx_getn_short_floatncx_getn_short_doublencx_pad_getn_short_scharncx_pad_getn_short_ucharncx_pad_getn_short_shortncx_pad_getn_short_intncx_pad_getn_short_longncx_pad_getn_short_floatncx_pad_getn_short_doublencx_putn_short_scharncx_putn_short_ucharncx_putn_short_shortncx_putn_short_intncx_putn_short_longncx_putn_short_floatncx_putn_short_doublencx_pad_putn_short_scharncx_pad_putn_short_ucharncx_pad_putn_short_shortncx_pad_putn_short_intncx_pad_putn_short_longncx_pad_putn_short_floatncx_pad_putn_short_doublencx_getn_int_scharncx_getn_int_ucharncx_getn_int_shortncx_getn_int_intncx_getn_int_longncx_getn_int_floatncx_getn_int_doublencx_putn_int_scharncx_putn_int_ucharncx_putn_int_shortncx_putn_int_intncx_putn_int_longncx_putn_int_floatncx_putn_int_doublencx_getn_float_scharncx_getn_float_ucharncx_getn_float_shortncx_getn_float_intncx_getn_float_longncx_getn_float_floatncx_getn_float_doublencx_putn_float_scharncx_putn_float_ucharncx_putn_float_shortncx_putn_float_intncx_putn_float_longncx_putn_float_floatncx_putn_float_doublencx_getn_double_scharncx_getn_double_ucharncx_getn_double_shortncx_getn_double_intncx_getn_double_longncx_getn_double_floatncx_getn_double_doublencx_putn_double_scharncx_putn_double_ucharncx_putn_double_shortncx_putn_double_intncx_putn_double_longncx_putn_double_floatncx_putn_double_doublencx_getn_textncx_pad_getn_textncx_putn_textncx_pad_putn_textfree_NC_stringNC_check_namenew_NC_stringset_NC_stringwrite_UTF_headerwrite_UTF_fieldwrite_2d_UTF_fieldwrite_traj_UTF_fieldwrite_graph_UTF_fieldwrite_UTF_footerqu2reg2_gribex_readgribrowina2_jmalloc_abortx_grprs0_qu2reg3_extmap_exscal_inscal_insmp2_maxmin_maxmn2_grchk4_insmp1_grchk3_decfp2_confp3_grchk2_kwloc1_ecloc1_csgnbt_grchk1_dsgnbt_inxbit_rorint_grprs4w_grprs4_grprs3_grprs2_grprs1_grsdef_setpar_onebits_bitmapValueTotalbitmapValueseparationBetweenValuesref2grb_c2ordr_d2ordr_gbitmap_dsect4a_csect4_dsvsec2_esvsec2_docsec2_eocsec2_dshsec2_eshsec2_dllsec2_ellsec2_dggsec2_eggsec2_readprodscm0_rowina3_ecdef18_ecdef17_ecdef16_ecdef15_ecdef14_ecdef13_ecdef11_ecdef12_ecdef10_ecdef9_ecdef8_ecdef7_ecdef6_ecdef5_ecdef4_ecdef3_ecdef2_ecdef1_kwchk1_chktab2_gbytes_sbytes_prtbin_ptquasi_kwprs1_d2rosd_c2dosd_revero_c2gene_c2cwid_c2rows_maxmni_c2bitw_pbopen_pbread_pbclose_uncmpck_jfree_gscale_unpkcf_cmpck_calcop_packcf_ftn1cr_tab2fil_c2rnge_c2pack_emosnum_c2pkvw_cos_opencos_closecos_rewindcos_backspacecos_readswap_bytesc8_to_r4c8_to_i4c8_to_l4c8_to_r8c8_to_i8c8_to_l8r8_to_r4i8_to_i4r4_to_r8i4_to_i8ibmi4_to_i4ibmi2_to_i4ibmi4_to_i8ibmi2_to_i8ibmr4_to_r4ibmr4_to_r8ibmr8_to_r8expand21_expand21_r4___istart_etext_fdataredgreenbluetclLocalStubTabledrsidef_drserror_UTF_plot_group_gpinfoncerrncopts__Argc__Argv_auxv_ldr_presentvcsfixred_gauss_convumlongumdateclimmeanxinterputfcharsncprecgrotypebswap64utf_dxutf_dyutf_dzutf_dtgribnameTclDatecharTclDateerrflagTclDatelvalTclDatevalTclDatepvTclDatepsTclDatestateTclDatetmpTclDatenerrsdrslusav_drscerr_cdf_routine_namegrbcomr_grbcxt__gpdxdydzdtvarattdimattglobatttkPredefBitmapTabledrscdef_drscavdb_drsqavdb_drscuvdb_drsquvdb_drsiuvdb_drsqddb_drsblock_drsdict_drscuvd2_drscuvd3_drscycle_drssave2_grbcomi_for_closeXSyncfor_read_dirfor_read_dir_xmit_OtsMoveMinimum_OtsFill_OtsStringCompareEqlSameLen_OtsStringCompareEqlPaddedstrtoulvfprintfXFillRectanglefor_write_dirgettimeofdaysignalXFillPolygonfwritefread_OtsDivide64UnsignedXDeletePropertysscanf__exc_remove_gp_range__exc_remove_pc_range_table__exc_add_gp_range__exc_add_pc_range_table_OtsStringCompareLssSameLen_OtsStringCompareLeqSameLenabsXGetVisualInfoXListHostsmodffor_write_seq_fmt_xmitstrchrfgetsXCreateGCXFreeGClog10ftruncatestrncatstrrchrXReconfigureWMWindowXIconifyWindowXWithdrawWindowXParseColorXSetErrorHandlerXGetWMColormapWindows_OtsMove_OtsDivide32_OtsRemainder32callocXRefreshKeyboardMappingXCreateICXFilterEventaccessremoveXSetInputFocusXSetWMColormapWindowsXSetTransientForHintXQLengthXNoOpXNextEventXEventsQueuedXCloseDisplayXOpenDisplayhypotstrcasecmpstrncasecmpXGContextFromGCXGrabKeyboardXGrabPointerXQueryPointerXUngrabKeyboardidate_for_write_int_fmtfor_write_int_fmt_xmititime_XUngrabPointerXGetWindowPropertymalloc_XSetSelectionOwner_OtsRemainder64Unsignedfstatmemmovesysconffree_strcspnXGetGeometryXReparentWindowXFillRectanglesabortfflushisattytmpnamputsXRectInRegionXSetCommandXSetIconNameXCreateColormapXFreeColormapXTranslateCoordinatesXSynchronizeexpXAllocClassHintlogXRootWindowXChangeWindowAttributesXConfigureWindowXDefineCursorXDestroyWindow_OtsRemainder64XMapWindowXMoveResizeWindowstrpbrkselectXMoveWindowXResizeWindowXSetWindowBackgroundXSetWindowBackgroundPixmapXSendEventfloorXSelectInputXGetWindowAttributesXCreateWindowXSetWindowBorderXSetWindowBorderPixmapXSetWindowBorderWidthfcloseXSetWindowColormapXUnmapWindowXUnionRectWithRegionXEmptyRegionXOpenIMXGetIMValuesexitfopenXDestroyICXAllocSizeHintsXSetClassHintntohsgetsockoptsetsockoptfprintffputsqsortbasenametimegetservbynameXSetWMClientMachineXSetWMHintsXSetWMNamelocaltimestrftimeXSetWMNormalHintsfputc_XInitImageFuncPtrsXSetRegionXIntersectRegionXFreeCursorXLoadFontXCreateGlyphCursorXDestroyRegionXCreatePixmapCursorXCreateRegionXClipBoxprintfXSetClipMaskXPutImageXCreateImagesprintffseekXDrawRectangleftellatofXStringListToTextPropertyatoimallocXSetDashesgetuidctimeendpwentgetpwuidXGetImagestrlenstrcpyXQueryColorsXLookupColorXFreeColorsstrncpystrerrorstrcatstrcmpXDrawLinesstrncmpstrstrstrtokXAllocNamedColorXAllocColordirnamepowsinatan2XFillArcXDrawLineXDrawArcXCreatePixmap__powi_ef__pow_efXFreePixmapfdopenvallocopenlogffcntlhtonsreadwritecloselseekioctlacceptbindconnectgetpeernamegetsocknamerecvsendlistensocketinet_addrinet_ntoagethostbyaddrgethostbynamecfgetospeedcfsetospeedcfsetispeedtcgetattrtcsetattr_OtsStringIndexrenamegetpwnamopendirreaddirclosedirmkdirumaskchmodchownrmdirunlinksymlinkutimefabsgetgrgidXGetModifierMappinggetgrnamendgrentmknodchdirgetcwdwaitpiddup2execvp_exitfor_rewindfor_read_seq_fmtgetpidpipevforkunamesetvbufatolXKeysymToStringXKeycodeToKeysymXChangePropertyXStringToKeysymXForceScreenSaverXFreeModifiermapXTextWidthXGetFontPropertyXFreeFontNamesXFreeFontXDrawStringXListFontsbzeroXKeysymToKeycodeXWarpPointerXmbLookupStringfor_inquireXLoadQueryFontfor_write_seq_lis_xmitfor_read_int_fmtldexpXUngrabServerfor_write_seq_lisr_fmodf__sqrt4fabort_XQueryTreesqrtfsincosfXFreeXGrabServerXInternAtomXGetAtomNameclockXSetTSOriginXSetForegroundXSetClipOrigingetenvfreegmtimereallocstrtolstrtodcosfXCopyPlaneasinfacosfXCopyArea__sqrt4cosatansqrtsinffor_write_seq_fmtlstatXGetInputFocusgeteuidreadlink_OtsDivide64tmpfilefreopensetbufrewindmemcpyperrorttynamemkfifomemchrmemsetmemcmpXLookupStringXConvertSelectionXCreateBitmapFromDatafor_openXVisualIDFromVisualXBellXFlushtanstatasinceilcoshtanhfmodacossinhmainmatherrTclDate_TclDatesTclDate_TclDatevR  Z. a g) m0) s@y@@@@@@@ Я   "     3 2E F$ Y  ^` c0 o y6 7 ; = @ C J `O pV X Y Z P` e { {     ` @ & .  6 > F` P [ c  k2 z4 06 @6 P6 07 p8 8 : ; `A *@B ;H HS VpT e W pX {Y Y Z \ ] `_ _ ` a $k 5x D  UP f z P     й  p   ) 4 D S e sp  0 P   p  0      P % 8 I [ j w@  p   P @   2 A" S0# a# s# % ' * 0 @0 1 5 5 6 B 0C ;D M`G [G gPH q`H H N  O P V V @X  Y  `\ # ^ ; ` R a l c  0n  x  @{  {  0}  }  ~  @      P 1 P D  Q  d @ m  w                   P   ) P : г K ` W д b  o  |   p  p  P  `F  `  a  b  Pd  pe " h 2 u B 0w L x ` @{ v       `    @         ,  F ` \  m P } `        `  0  @    P    .0 F W dж w   P   0  p 1 DP ] m  P  @  p       # 4 Bp Q f  r P      @     $ 1 =P P@ ` rp    P   @  `  *0 > L \ n  }  P   @ $  % ' * 3 )3 84 L4 bp4 r4 4  @ @ PG H L 0S $@S 0PS DS Y@Z nPZ \ ] r v w x 0z { p{ "p >` RЊ h0 }  В          @  ' 20 ? P  b% v% ' ) - / 1 `3 6 $@6 59 I: S: ^; m= z> P> ? 0? `? ? @P U pZ   , :P M [ f s `  @  @" $ ( ( @) ) '+ 2 , C7 \? z@? p? @@ @ pD  G #G 30H JI `M p0O O P R c z @{ }   p ' 70 Q c z P p   @      $й 8 K@ ] q      `   ! ;P N c z  P         @ p  & 9 L ^ qPS T W [ @^ P_ ` @b b Pd g #m :@q KPt [u nu }       Ѕ   Ј  `   ,  < 0 J  `  q 0  @  @  2  ;  F  G  G !G !X %!@Z :!P] E!Є Y! g! u! !P !P ! !Ъ !@ ! ! " " "" 5" L" ["л j" |"P " " "@ "p " " "0  #  # $# 4#P I# X#p e# t# #$ #- #/ #1 #@3 #pC # S # T $ U $pU )$U 8$] I$p] X$a m$b $ g $m $po $o $p $u $` $0  %  %0 -% =% O% W% h% s% ~%` % % %  %P % % % %` &` (& <&p N& e& |& &p & &  & &p & &@ '@ '@ ''` 7'P I'@  \'@  f'@  v'  '  'P ' ' '  ' '  '`   (  (0B ,(B 8( C H(C U(D d(D y( D (0D ( K (K (O (0Q (@R (R (S )pT )U -)pV <)X K)n V)`p h)x y)` ) )` ) )P ) ) ) )@ * * '* 7* B* P*@ ^* o*P * * *P * * * * * *  + +@ &+I 9+@K M+V a+@] p+_ +`c +Pd + e +n +p + + , ,  ,, >,0 O,@ d, t,` , , ,) ,@, ,. ,7 ,8 -8 '-`9 =-9 P-: d-? {-? -@ -A -pA -@T -V -b -`d .f .g .Ph '.m >.u T.v a.@w k.`w x.x .z .`{ .{ .| . . . /  !/P 0/@ C/ T/  d/ t/ / /% / ( /. /: /pD /pS /PU /`Z 0[ 0 /0 =0 M0` Z0` j0и }0 0P 0 0 0 0P 0 1 1` )1@ @1 S1 f1  y10 1 1 1 1 1  1@ 1 2 2 32 K2 `2 u2  2 2 2# 2+ 24 27 2@9 2@<  3@A 3C %3D 53E G3H U3I a3L t3`N 3U 3Y 3\ 3] 3^ 3ph 3h 30i 3i 4j 40k %4l 94pl M4@m j4m 4p 4x 4x 4 4 4p 4 5P 5p 35 E5 V5p j5p ~5 5 5p 5P 5 5 5  6 6 "6  76P O6` c6@ t6 6 6 6 6  6 6 6 7 7  -7` E7 ]7P o7 7 7 7@ 7 7 7 7 7  8  8 /8 <8 K8 a8 t8` 80) 8@+ 8, 80 8; 8? 8D 8L 9@N 9PU "90X 09_ <9a N9pc Z9d d9d v9f 9m 9p 9@p 9@q 9r 9 r 9@r  :t :u 1:u G: v [:pw r:w :x : : : :` : :@ :  ; ; (; <;` L; ]; j;p w; ;p ; ; ;p ;0 ; <` <p +< << L<P X<` d< s< <p <P < < < <p < < = = $= 8= T= `=0 u= =! =! =@! =`! =! =! =! =! > ! !> ! 1> ! ;>!! F> "! ^>0#! o>$! >&! >-! >01! >6! >@8! >8! ?P:! ?:! 7?:! C?$ E0A$ EC$ &EE$ 6E@H$ GEJ$ XEL$ iE0O$ xEQ$ ES$ E V$ EpX$ EX$ EX$ E0Y$ EpY$ FY$ FY$ %F0Z$ 8FZ$ IFZ$ [F0[$ mFp[$ F[$ F[$ F0\$ Fp\$ F$ F0% F % F% G% %G0Q% 3GQ% EGR% SGpR% eGb% kGd% rG`f% yG\' G@a' G`) G) GX) Gc) G f) Gi) Gpj) Gpl) Gl) Gn) Gr) Gs) Gt) Gv) Hw)  Hx) Hx) HP|) &HP) /H) 9H) DHP) RH) [H) fH0) nHp) vH) ~H) H0) Hp) H) H) H0) Hp) H) H) H0) Hp) H) H) H0) I) I) +I) GIP) ZI0) pIp) vI@I@I@@I0@I@I@ @IPT@IpZ@J@Jh@$J@1JH@=J@HJH@VJ@aJ@vJ@J@ @J!@J0)@J+@J,@J8@JN@JV@JW@KXW@"Kb@6KPb@IK @ZK @gK @wK8 @Kx @K @K  @K @K @K @Kh @K0 @K @K @LP" @LL @LU @)L`W @8LW @FLW @QLt @aLu @oL @L @L@+@LS@Lx@L@L(@L@Lx@L@L@M@M@ Mh@-MP#@9M`#@FMh(@PMp4@`MH8@iMP8@rM9@Mh;@Mp;@Mx;@M=@MxG@MG@ML@M@M@M@N@N@N@N@!N+N6N;NCNINM VN. ^N eN lN tN }Np N` NP N N` N  N N8 N` Ni N{ N N` N@ O O O 'O` 2O =O0 GO QO `Op hO` qO@ zO O  O O O OP O O@ O O O  O  O PP P Pp 2P` GP  \P iP yP PP P! P3 P8 P: P< PP@ PB PF PJ P0L P`T PT PT P] Qo  Q t Q  Q #Q +Q 5Q0 @QP GQ PQ0 UQ bQ0 lQ wQ Q  Q Q Q Q Q@ Q` Q Q@ Q Q@ Q Q Rp  R0 R  Rp *R 4R >R@ MR VR [R aR hR pR |RP R R  R R R R R Rp R R R R R R@2 R` S  Sp Sp S +S =S KS` WS  jS }S0 Sp S  S SP S S# T ' T- (T 4 ;Ta JT WT kT T T@ T T T T T(  U / U: 3UE EUi SU _U rUP U U U U0 U` U U  V V 0VP$ 9V@& CV MV0 WV `Vp jV rV {V  V  V  V V Vp VP VP V V V V` W  W% W( +W2 8W`5 EWp9 PW: [W< eW= oWA }WD WpE W F WF W@G WJ W@R WW W@i Wj W0l Wl Xt X@w Xz #X{ .X :X FX MX@ TXP eX nXp wX  X0 X X X` X X X0 X X Xг X X X X Y  Y Y Y $Y +Y 2Y =YP HYP PYP ^Y0 jY }YP Yp Y Y Y  Y Y Y Y  Y Y Y@ Y Y Y Z Z $Z 3Z =Z KZ YZ jZ0 xZP Z Z  Z ZP Z  Z Z`  Z  Z  Z  [p  [ [ [` ![p ([. /[2 6[3 ?[`8 G[ P[ W[  ^[L j[P w[0T [T [V [^ [b [`f [j [p [ y [ [ \0  \ \ "\ +\ 6\ @\ K\ X\ c\ o\  ~\p \ \P \ \ \@ \ \ \ \ \ ]@ ]@ ]p *] 8] F] X]0 l] |] ]0 ]p ]P ]  ] ]P& ]' ]' ]` ]`' ] ] ^p ^* &^+ 7^P I^ P^и X^  f^й x^ ~^ ^  ^ ^ ^ ^ ^ ^@  _  _` 9_ B_ N_ __ k_ z_  _A _C _  _`m _Pu _@v _# _8  `= ` ? '`A 9``B M`C a`C t` D ``Q `T `X `p ` ` `  `   a0 a a0 'a 0a 9a@ Ba Ja _a  xa ac ah a0j apn ao av az b{ b{ 0b@} Ab} Sb0~ fb xb b b0 b@ bP b  b b c@ c c 3c Ec [c lc }c` c cP c cp c c+ cP, dPP  d0R dS ,ds =dPv Ndy ed`} |d~ d d d` dP d d d@ e e` )e :e0 Ke \e ne }eP e` e` e0 eо e e e` f f 0f` Ef ]f0 sfp fP f f f` f! f! f@d! f ~! f! f`! g! g0! 0g! Cg! Qg! \g! pg@! g! g@! gP! g`! g! g0! gp! g! g! g! g! g! g! gP! g! g! h! h! h@! h0! "h`! +h! 2h ! 9h! @h! Hh! UhP! ^h! gh! ph0! zh0! h! hp! h! h! hp! h ! hp! h " h " h" h@" h" h$" h%" h-" i8" i`;" iA"  i B" (iPC" 0iC" :iD" CiD" KiE" TiF" \iI" fipK" oiL" viM" i P" iQ" iR" iU" iX" i\" ih" il" ip" it" iv" i" i" i" i" i" j"  j" j" j" $j@" /j" :j0" Cj" Mj" Vj" ^jp" fjв" nj" wj" j@" jк" jP" j" j0" j" jP" j" j0" j" j" j" jp" j " j" k "  k@" k" k@" %k" .k`" 7k" Ak" Kk" Uk@" ^k" gkP" pk" zk" k@" k" k" kP" k" k`" k@" k" k" k" k" kP" l`"  l0" l" l`" *l " 2l" >l" Jl " Wl0" dl# wl# l# l# l0# l # l# l# l # l # l #  m # mp # 0mp# Bm# Nmp# ]m# hm # vmP# m# m&# m@)# m)# m,# m0# mp3# m3# n6# n:#  n=# 1n># Cn@# UnpA# `npB# knC# wnPD# nPG# nG# n0H# n`J# n`K# nK# nPM# nM# nO# oP#  oU# o[# %op# 6o# Ho`# Zo# joP# |o# o# o# o# o# o# o# o# p# p0# "pP$ 4pp$ Fp$ Xp $ hp $ yp$ p$ p0$ p $ p@$ p`$ p!$ p$$ q'$ q*$ $q.$ 7q 1$ CqpZ$ Oq\$ [q\$ lqb$ ~qh$ qn$ qt$ qpz$ q`$ qP$ q@$ q`$ r$ r $ )r$ ;r$ Kr`$ \rЯ$ nr@$ r$ r$ r$ r@$ rp$ rP$ r$ rp$ r$ r$ r$ s $ s$ +s$ =s$ Ps0$ ds$ ys$ s $ s`$ s$ s$ s@$ s$ t0% t% 't% 9tP% Itp% Zt% lt% t % t% tP% t% t% t% t% t0% u% #up% 7u % Iu% \uP% qu% u% u % up % u % u % u % u % v` % &v % 9v % Mv % bv% wv0% vp% v% v% vp% v% v% v %  w% w0% ,w% Aw% Vw0% iw% }w% w% w% wp% w% w@%  x% "x% ;x% Ux@% jx% x % x % x!% xp!% x"% x"% xP#% y#% 1y$% Hy%% `y&% yy'% y(% y@)% y)% y*% y*% y0+% z+% $zP,% =z,% Vz-% oz0.% z.% zp/% z0% z0% z@1% z1% {2% #{2% 7{03% L{3% b{P4% {{5% {5% {6% {P7% {8% {8% |9% "| :% 5|:% H|@;% Y|;% k|<% ~|<% |0=% |=% |P>% |>% | ?% |?% }@@% }@% *}`A% ?}A% T}B% g}C% {}C% }C% }pD% }E% }E% } F% }F%  ~@G% !~G% 7~H% M~H% c~0I% y~I% ~PJ% ~J% ~pK% ~K% ~@L% ~L% `M% %M% :N% PO% gPO% uO% 0P% P% S% @S% 0T% U% U% Y% [% _% )`% ?b% P`i% Ym% a@g& jg& sm& |Pm& m& n& ps& & &  & Њ& `& ŀ@& ̀& Հ& ݀& & @& & & &  & p& & %& -p& 6@& >& F& N ' VpY' ^[' fp^' o_' `' 0b' b' pe' @' ' Ɓ' ρ' ׁ' ( @( @( ( (  #(  /( 0;( (pF( 10S( :j( @pk( Ir( R0z( [( dЅ( m( v ( `( p( ( ( @( ( ( 0( ‚@( ʂp( ҂( ڂ ( ( @) ) )  )  )  )  ) $) ,+) 4/) <B) D0O) L X) TX) \Z) d@g) lk) u) ~) ) @) ) 0) ) ) ) ) Ń ) ̓) փ) ރ) p) ) p)  ) ) `) '0) 0) 9 ) B ) K) T@) ]) f`) o) x) p) ) ) P)  ) ) ̄p) ք) ) p) @d@e@f@ @@$p@.0S@=@ES@KS@R@Y@`@f@s@z@@@ @(@0@8@@@H@ȅP@υX@օ`@݅h@p@x@@@@@)@3@@@K@X@b@k@|@@p@PЃ@8Ѓ@8Ѓ@8Ѓ@80у@Hу@ Xу@ hу@Pdžhփ@00І@چ@x @x @ @@` @ @H 0@az@((}@82(~@d<~@,F@$OY_l~·և߇ $*?OVlЈ &-3=EKU]ez̉Չ(/6E[pyĊЊ  2IP_rzɋ֋ $0=M[q~ˌٌ$0>Sny׍)6>KPVaqˎߎ !5@Q]gzȏҏߏ!&-8?ENWaho|ǐΐՐ$2<EQX_diouzÑȑϑ֑*4>NU^fnw}̒Ւޒ '.39?GL\m}̓ۓ 0<Kbsy”ʔДܔ&-29AHOT_eku}ȕՕݕ %3E[dx~' t!kWa Q J#In"U = 2b mp SBFwA= p %S xm ~p[ dM y   t D ' jeQwI VqnZr[m='"rJlFjk 1Y(t q;w * ovPz+H xy|\d |Pj{Ygf( ) * \ixls ^h hUh` 3 h efZbYT>2 sC, -N 2|68Rc }  X&JoZ:< 4AUMenYU'T@v)Z>  Dvl0L= : ~PQ  ] )"FKW Ou1 4 -'[+ KX.h l ra@]jh2 vC,K ;5j0 :Ql>j/HFC Mg  {Z rbq HJ  U&b .[  v<NON {L8Pz e/G"J !t ;C x\ s~ 9c'*#PT3 \M Y,,b] %9B 1EjO! d p L Yo z E%{ 4 K `,u I$ - w IxUwdCE *<NC.O ; xnpS _3} l/r ^q +}8 T# \9k-X 8M vf O# (u (6 &^} A^  FGr S }1 eHi   (@ lfN\ cr L 4L.B &w/_X7 iP<v mc$~we x VTgAMX]GcBJo[qk_ *n | `k0|qo ,3s0 ?B C?R  -L dN iP xX7k"T h/vKSBJl HI?Jgseu Q   <3{d7 +: p( =  I S ;5;.y_z/ ?g1 z^~z ,n RR t954E S @ _ aRT6_  nQ}o u 7m ib6f mR s0fD_$ F9H B"<* G&d\zVt!  $:P#+zL1m$)@0 X _ X^k06)?+Ni-V *:Fsa   D?u(`A T @[\ X) U }Vf>UQ+ ] NgZV(y>3F ) s+^   P`/96sG/ Rr$ W :5 ~\ =6M A 2> ! ;SD~M' K  BodQ@J f9? Z F+> + Qp w!` HJ@3-!78L5=:G5EPpO   Z  !~{|r    ni  =k ` g\$x17; :A ^ V " #a (R uO <6E F bA j aSVW AW~}uN t >[d l "  Ew j> c:] t% q q  Ka R43 r  .&_ B @ -+ /9 :m QG] OM % d |S{i}Y / m & f c y g8$ C  * Y 8 1 "'/# w$2|5 ?AYHGIEW  q L @v|  o v N  .  "$'C  ._y h % g !h v #0256*79<=1QsN8 ?HFE MSU]XYTO G [ackefH bi= ou0 %  < 9 ; & # ? e , 0 f - 2 3 4 5   8 q } 2 U `  C t D 6    7 <   c l ' I ; . 4 > s u r | z @(#)$RCSfile: crt0.s,v $ $Revision: 1.1.21.11 $ (DEC) $Date: 1995/09/06 19:54:27 $zDpBDAC?AGy@@A@@@B APG?IȯH4Co:Bx`HyDMbP?ư>)QΠE>llF?> ףY` -C6?iGDAo:IqIx-aCCCCCCCy-C6??llf?ffffff??MbP?updateyB?IIqE?x-a?-C6??x-aB-C6?@x%D?_7E7Ev A !B!-C6?A? ף=u ףCBy?pBAD> ף` $tI?C84D4ý754CI@@A? Vx`o:=8 8yB@@׳?C?>.eB?ǴFd0_?llv?3Ey?.! ?;f?ؗҜ<.DT! @llf?8 888Reduced grid not supported in FILLMISS1Reduced grid not supported in FILLMISSNO CONVERGENCE IN GWTLTINCREASE VALUE OF NSIZE8  NSIZE = KLATI+1 = ERROR IN AWISI - KLATI+1 TOO SMALL iterations.No convergence in routine GETLAT after 8 ERROR UPON EXIT FROM AWISI - ABORT IERR = 88area weighted interpolation.Grids must have the same orientation for to minimum cutoff value of Precipitation field subject ??y?qx??y?qxs?>5?׳?׳]???8@ n ף wm title . "Xconv Version $version ($versiondate)" setupicon . "Xconv" xconv_icon xconv_icon_m wm minsize . 1 1 bind Listbox <1> { if [winfo exists %W] { tkListboxBeginToggle %W [%W index @%x,%y] } } bind Listbox <2> { if [winfo exists %W] { tkListboxBeginSelect %W [%W index @%x,%y] } } bind Listbox <3> { if [winfo exists %W] { tkListboxBeginExtend %W [%W index @%x,%y] } } frame $w frame $w1 -relief flat -borderwidth $bw1 frame $w2 -relief flat -borderwidth $bw1 frame .boxx0 frame .boxx1 frame .forcex0 frame .forcex1 frame .forcey0 pack $w -side top -fill both -expand yes pack $w1 -side left -fill both -expand yes -in $w pack .boxx0 -side top -in $w1 pack .forcex0 -side top -ipadx [expr $x2/2] -fill x -in .boxx0 pack .forcey0 -side left -ipady [expr $y0/2] -fill y -in $w1 pack $w2 -side right -fill both -expand yes -in $w pack .boxx1 -side top -in $w2 pack .forcex1 -side top -ipadx [expr $x3/2] -fill x -in .boxx1 frame .output -relief raised -borderwidth $bw3 pack .output -side top -ipady 1 -fill x -in $w1 label .filename -text "Output file name: " entry .fileentry -textvariable outfilename -width 27 pack .filename -side left -fill x -expand no -in .output pack .fileentry -side left -fill x -expand yes -in .output set xconv_disp new if {$xconv_disp == "new"} { if {[info exists initialoutputformat]} { set outformat $initialoutputformat } else { set outformat netcdf } if {$outformat == "netcdf"} { set menutitle "Netcdf " } elseif {$outformat == "grads"} { set menutitle " Grads " } elseif {$outformat == "drs"} { set menutitle " Drs " } elseif {$outformat == "utf"} { set menutitle " Utf " } label .outformat -text "Output format: " pack .outformat -side left -fill x -expand no -in .output frame .menu -relief raised -borderwidth $bw3 pack .menu -side top -fill x -expand yes -in .output menubutton .menu.file -pady 0 -padx 0 -text $menutitle -menu .menu.file.m menu .menu.file.m .menu.file.m add command -label "Netcdf" \ -command {set outformat netcdf ; .menu.file configure -text "Netcdf "} .menu.file.m add separator .menu.file.m add command -label "Grads" \ -command {set outformat grads ; .menu.file configure -text " Grads "} .menu.file.m add separator .menu.file.m add command -label "Drs" \ -command {set outformat drs ; .menu.file configure -text " Drs "} .menu.file.m add separator .menu.file.m add command -label "Utf" \ -command {set outformat utf ; .menu.file configure -text " Utf "} pack .menu.file -side left } else { radiobutton .drs -text Drs -variable outformat -value drs -anchor w radiobutton .netcdf -text Netcdf -variable outformat -value netcdf -anchor w radiobutton .grads -text Grads -variable outformat -value grads -anchor w radiobutton .utf -text Utf -variable outformat -value utf -anchor w pack .utf .grads .drs .netcdf -side right -in .output -expand yes -fill x if {[winfo exists .$initialoutputformat]} { .$initialoutputformat invoke } else { .netcdf invoke } } frame .topbuttons -relief groove -borderwidth $bw2 pack .topbuttons -side top -fill x -pady 2m -in $w1 button .open -width 8 -text "Open" -command "openbox" menubutton .setup -width 8 -relief raised -padx 11 -pady 5 \ -highlightthickness 1 -text "Setup" -menu .setup.m menu .setup.m .setup.m add command -label "Setup xconv defaults" -command "setup" .setup.m add separator .setup.m add command -label "Select STASH Master files" -command "sm_setup" .setup.m add separator .setup.m add command -label "Setup NetCDF attributes" -command "att_setup" .setup.m add separator .setup.m add command -label "Setup Global NetCDF attributes" -command "gatt_setup" button .help -width 8 -text "Help" -command "help" button .clear -width 8 -text "Clear" -command "clearlist" button .quit -width 8 -text "Quit" -command "destroy ." pack .open .setup .clear .quit -in .topbuttons -side left -expand yes set title [format " %-5s %-5s %-5s %-5s %s " \ "nx" "ny" "nz" "nt" "Field title"] label .title -text "$title" pack .title -anchor w -side top -padx 2 -in $w1 frame .listbox pack .listbox -side top -fill x -expand no -in $w1 frame .boxy pack .boxy -side left -in .listbox frame .liney pack .liney -side left -fill y -in .boxy -ipady [expr round($y1/2)] listbox .list -xscroll ".listbox.xscroll.x set" \ -yscroll ".listbox.yscroll.y set" \ -relief sunken -selectmode extended -setgrid yes \ -exportselection no -selectborderwidth $bw3 xyscrollbar .listbox.xscroll .listbox.yscroll .list pack .list -side left -fill both -expand yes -in .listbox frame .botbuttons -relief groove -borderwidth $bw2 pack .botbuttons -side top -fill x -pady 2m -in $w1 button .convert -width 8 -text "Convert" -command {convert [.list curselection]} button .delete -width 8 -text "Delete" -command {delete [.list curselection]} button .copy -width 8 -text "Copy" -command {copy [.list curselection]} pack .convert .delete .copy -in .botbuttons -side left -expand yes label .msglabel -text "Output messages" pack .msglabel -side top -fill x -in $w1 frame .out pack .out -side top -fill both -expand yes -in $w1 text .msg -wrap word -relief sunken -bd $bw3 -height 1 -width 1 \ -yscroll ".out.yscroll set" -state disabled yscrollbar .out.yscroll .msg pack .msg -side bottom -in .out -fill both -expand yes frame .dimtrans -relief raised -borderwidth $bw3 pack .dimtrans -side top -ipady 1 -fill x -in $w2 radiobutton .dimint -text "Dimensions" -variable rightbox \ -value dim -anchor w \ -command { packdimbox if {[info exists dim] && $dim != 0} { dim_info $dim } else { dim_info 1 } } radiobutton .namesint -text "Names" -variable rightbox \ -value names -anchor w \ -command "packnamesbox yes ; names_info" radiobutton .transint -text "Trans" -variable rightbox \ -value trans -anchor w \ -command "packtransbox yes ; trans_info" pack .dimint .namesint .transint -side left -expand yes -fill x -in .dimtrans frame .box4 -relief groove -borderwidth $bw2 menubutton .qmenu -width 8 -relief raised -padx 11 -pady 5 \ -highlightthickness 1 -text "x-y" \ -menu .qmenu.m -foreground $disablecolour -state disabled menu .qmenu.m .qmenu.m add command -label "x-y" -command {setplottype .qmenu 1 2 3 4 0 "x-y"} .qmenu.m add separator .qmenu.m add command -label "x-z" -command {setplottype .qmenu 1 3 2 4 0 "x-z"} .qmenu.m add separator .qmenu.m add command -label "x-log(z)" \ -command {setplottype .qmenu 1 3 2 4 1 "x-log(z)"} .qmenu.m add separator .qmenu.m add command -label "y-z" -command {setplottype .qmenu 2 3 1 4 0 "y-z"} .qmenu.m add separator .qmenu.m add command -label "y-log(z)" \ -command {setplottype .qmenu 2 3 1 4 1 "y-log(z)"} .qmenu.m add separator .qmenu.m add command -label "x-t" -command {setplottype .qmenu 1 4 2 3 0 "x-t"} .qmenu.m add separator .qmenu.m add command -label "t-x" -command {setplottype .qmenu 4 1 2 3 0 "t-x"} .qmenu.m add separator .qmenu.m add command -label "t-y" -command {setplottype .qmenu 4 2 1 3 0 "t-y"} .qmenu.m add separator .qmenu.m add command -label "t-z" -command {setplottype .qmenu 4 3 1 2 0 "t-z"} .qmenu.m add separator .qmenu.m add command -label "t-log(z)" \ -command {setplottype .qmenu 4 3 1 2 1 "t-log(z)"} button .qlook -width 8 -text "View Data" -command {busy {dataview}} \ -foreground $disablecolour -state disabled button .qplot -width 8 -text "Plot Data" -command {busy {dataplot}} \ -foreground $disablecolour -state disabled pack .box4 -side top -fill x -pady 2m -in $w2 pack .qmenu .qlook .qplot -side left -expand yes -in .box4 label .dimtitle -width 1 pack .dimtitle -side top -fill x -padx 2 -in $w2 frame .box5 pack .box5 -side top -fill x -expand no -in $w2 frame .line5box pack .line5box -side left -in .box5 frame .line5 pack .line5 -side left -fill y -in .line5box -ipady [expr round($y1/2)] dimbox namesbox transbox frame .box8 -relief groove -borderwidth $bw2 pack .box8 -side top -fill x -pady 2m -in $w2 button .selectall -width 8 -text "Select all" -command selectall \ -foreground $disablecolour -state disabled button .reset -width 8 -text "Reset" -command reset \ -foreground $disablecolour -state disabled button .apply -width 8 -text "Apply" -command apply \ -foreground $disablecolour -state disabled pack .selectall .reset .apply -side left -expand yes -in .box8 .${right_box}int invoke label .infolabel -text "Field information" pack .infolabel -side top -fill x -in $w2 frame .field pack .field -side bottom -fill both -expand yes -in $w2 text .info -wrap word -relief sunken -bd $bw3 -width 1 -height 1 \ -yscroll ".field.yscroll set" -state disabled yscrollbar .field.yscroll .info pack .info -side top -fill both -expand yes -in .field bind $w { if {$resize == 1} { set resize 0 set x [winfo width .] set y [winfo height .] set x0 [expr round($x * $x0fac)] set x1 [expr $x - $x0] set x2 [expr $x0 - 2*$bw1] set x3 [expr $x1 - 2*$bw1] set y0 [expr $y - 2*$bw1] set y1 [expr round($y * $y1fac)] pack forget .liney .line5 .forcex0 .forcex1 pack .liney -side left -fill y -ipady [expr round($y1/2)] -in .boxy pack .line5 -side left -fill y -ipady [expr round($y1/2)] -in .line5box pack .forcex0 -side top -ipadx [expr $x2/2] -fill x -in .boxx0 pack .forcex1 -side top -ipadx [expr $x3/2] -fill x -in .boxx1 update idletasks set resize 1 } } bind .list <1> {+ if {[info exists field]} {unset field} set dim 0 .dimtitle configure -width 1 -text "" .info configure -state normal .info delete 1.0 end .info configure -state disabled .qmenu configure -foreground $disablecolour -state disabled .qlook configure -foreground $disablecolour -state disabled .qplot configure -foreground $disablecolour -state disabled .selectall configure -foreground $disablecolour -state disabled .reset configure -foreground $disablecolour -state disabled .apply configure -foreground $disablecolour -state disabled .convert configure -foreground $foregroundcolour -state normal if {$rightbox == "dim"} { .select delete 0 end } elseif {$rightbox == "trans"} { transboxoff } elseif {$rightbox == "names"} { names_clear } } bind .list <2> {+ if {[info exists field]} {unset field} set dim 0 .dimtitle configure -width 1 -text "" .info configure -state normal .info delete 1.0 end .info configure -state disabled .qmenu configure -foreground $disablecolour -state disabled .qlook configure -foreground $disablecolour -state disabled .qplot configure -foreground $disablecolour -state disabled .selectall configure -foreground $disablecolour -state disabled .reset configure -foreground $disablecolour -state disabled .apply configure -foreground $disablecolour -state disabled .convert configure -foreground $foregroundcolour -state normal if {$rightbox == "dim"} { .select delete 0 end } elseif {$rightbox == "trans"} { transboxoff } elseif {$rightbox == "names"} { names_clear } } bind .list <3> {+ if {[info exists field]} {unset field} set dim 0 .dimtitle configure -width 1 -text "" .info configure -state normal .info delete 1.0 end .info configure -state disabled .qmenu configure -foreground $disablecolour -state disabled .qlook configure -foreground $disablecolour -state disabled .qplot configure -foreground $disablecolour -state disabled .selectall configure -foreground $disablecolour -state disabled .reset configure -foreground $disablecolour -state disabled .apply configure -foreground $disablecolour -state disabled .convert configure -foreground $foregroundcolour -state normal if {$rightbox == "dim"} { .select delete 0 end } elseif {$rightbox == "trans"} { transboxoff } elseif {$rightbox == "names"} { names_clear } } bind .list { if {[%W size] > 0} { set field [%W index @%x,%y] %W selection clear 0 end %W selection set [%W index @%x,%y] .qmenu configure -foreground $foregroundcolour -state normal .qlook configure -foreground $foregroundcolour -state normal .qplot configure -foreground $foregroundcolour -state normal .reset configure -foreground $foregroundcolour -state normal .apply configure -foreground $foregroundcolour -state normal .convert configure -foreground $foregroundcolour -state normal if {$rightbox == "dim"} { .selectall configure -foreground $foregroundcolour -state normal dim_info "1" } elseif {$rightbox == "trans"} { .selectall configure -foreground $disablecolour -state disabled trans_clear trans_info } elseif {$rightbox == "names"} { .selectall configure -foreground $disablecolour -state disabled names_info } field_info } } bind .list { if {[%W size] > 0} { set field [%W index @%x,%y] %W selection clear 0 end %W selection set [%W index @%x,%y] .qmenu configure -foreground $foregroundcolour -state normal .qlook configure -foreground $foregroundcolour -state normal .qplot configure -foreground $foregroundcolour -state normal .reset configure -foreground $foregroundcolour -state normal .apply configure -foreground $foregroundcolour -state normal .convert configure -foreground $foregroundcolour -state normal if {$rightbox == "dim"} { .selectall configure -foreground $foregroundcolour -state normal dim_info "1" } elseif {$rightbox == "trans"} { .selectall configure -foreground $disablecolour -state disabled trans_info } elseif {$rightbox == "names"} { .selectall configure -foreground $disablecolour -state disabled names_info } field_info } } if {$redirout} {window_output} .qmenu configure -foreground $disablecolour -state disabled .qlook configure -foreground $disablecolour -state disabled .qplot configure -foreground $disablecolour -state disabled .selectall configure -foreground $disablecolour -state disabled .reset configure -foreground $disablecolour -state disabled .apply configure -foreground $disablecolour -state disabled if {$argc > 0} readarg if {[info exists scriptfile]} { source $scriptfile } proc names_clear {} { global field desc lname sname stdname funit xtitle xunit global ytitle yunit ztitle zunit ttitle tunit global disablecolour .dimtitle configure -width 1 -text "" set desc "" ; set lname "" ; set sname "" ; set stdname "" ; set funit "" set xtitle "" ; set xunit "" ; set ytitle "" ; set yunit "" set ztitle "" ; set zunit "" ; set ttitle "" ; set tunit "" set www .box5.box10.canv.namesbox $www.desc.label configure -foreground $disablecolour $www.desc.name configure -foreground $disablecolour -state disabled $www.lname.label configure -foreground $disablecolour $www.lname.name configure -foreground $disablecolour -state disabled $www.sname.label configure -foreground $disablecolour $www.sname.name configure -foreground $disablecolour -state disabled $www.stdname.label configure -foreground $disablecolour $www.stdname.name configure -foreground $disablecolour -state disabled $www.funit.label configure -foreground $disablecolour $www.funit.name configure -foreground $disablecolour -state disabled $www.xtitle.label configure -foreground $disablecolour $www.xtitle.name configure -foreground $disablecolour -state disabled $www.xunit.label configure -foreground $disablecolour $www.xunit.name configure -foreground $disablecolour -state disabled $www.ytitle.label configure -foreground $disablecolour $www.ytitle.name configure -foreground $disablecolour -state disabled $www.yunit.label configure -foreground $disablecolour $www.yunit.name configure -foreground $disablecolour -state disabled $www.ztitle.label configure -foreground $disablecolour $www.ztitle.name configure -foreground $disablecolour -state disabled $www.zunit.label configure -foreground $disablecolour $www.zunit.name configure -foreground $disablecolour -state disabled $www.ttitle.label configure -foreground $disablecolour $www.ttitle.name configure -foreground $disablecolour -state disabled $www.tunit.label configure -foreground $disablecolour $www.tunit.name configure -foreground $disablecolour -state disabled } proc names_info {} { global field desc lname sname stdname funit xtitle xunit global ytitle yunit ztitle zunit ttitle tunit global foregroundcolour .select delete 0 end trans_clear if {[info exists field]} { .dimtitle configure -width 1 -text "Field and dimension names" set www .box5.box10.canv.namesbox $www.desc.label configure -foreground $foregroundcolour $www.desc.name configure -foreground $foregroundcolour -state normal $www.lname.label configure -foreground $foregroundcolour $www.lname.name configure -foreground $foregroundcolour -state normal $www.sname.label configure -foreground $foregroundcolour $www.sname.name configure -foreground $foregroundcolour -state normal $www.stdname.label configure -foreground $foregroundcolour $www.stdname.name configure -foreground $foregroundcolour -state normal $www.funit.label configure -foreground $foregroundcolour $www.funit.name configure -foreground $foregroundcolour -state normal $www.xtitle.label configure -foreground $foregroundcolour $www.xtitle.name configure -foreground $foregroundcolour -state normal $www.xunit.label configure -foreground $foregroundcolour $www.xunit.name configure -foreground $foregroundcolour -state normal $www.ytitle.label configure -foreground $foregroundcolour $www.ytitle.name configure -foreground $foregroundcolour -state normal $www.yunit.label configure -foreground $foregroundcolour $www.yunit.name configure -foreground $foregroundcolour -state normal $www.ztitle.label configure -foreground $foregroundcolour $www.ztitle.name configure -foreground $foregroundcolour -state normal $www.zunit.label configure -foreground $foregroundcolour $www.zunit.name configure -foreground $foregroundcolour -state normal $www.ttitle.label configure -foreground $foregroundcolour $www.ttitle.name configure -foreground $foregroundcolour -state normal $www.tunit.label configure -foreground $foregroundcolour $www.tunit.name configure -foreground $foregroundcolour -state normal set desc [getvar $field title] set lname [getvar $field ftitle2] set sname [getvar $field ftitle1] set stdname [getvar $field standard_name] set funit [getvar $field funit] set xtitle [getvar $field xtitle] set xunit [getvar $field xunit] set ytitle [getvar $field ytitle] set yunit [getvar $field yunit] set ztitle [getvar $field ztitle] set zunit [getvar $field zunit] set ttitle [getvar $field ttitle] set tunit [getvar $field tunit] } else { names_clear } } proc namesbox {} { global scrollbarwidth field set w .box5.box10 set ww .box5.box10.canv set www .box5.box10.canv.namesbox set entrywidth 50 frame $w -relief sunken -borderwidth 2 canvas $ww -height 10 -width 10 \ -yscrollcommand "$w.yscroll set" \ -xscrollcommand "$w.x.xscroll set" -scrollregion {0 0 515 440} scrollbar $w.yscroll -command "$ww yview" -width $scrollbarwidth set corner_width [expr {$scrollbarwidth + \ 2*[$w.yscroll cget -borderwidth] + \ 2*[$w.yscroll cget -highlightthickness]}] frame $w.x scrollbar $w.x.xscroll -command "$ww xview" -orient horizontal \ -width $scrollbarwidth frame $w.x.corner -width $corner_width frame $www frame $www.desc label $www.desc.label -text "Overall description: " entry $www.desc.name -width $entrywidth -textvariable desc frame $www.lname label $www.lname.label -text "Long field name: " entry $www.lname.name -width $entrywidth -textvariable lname frame $www.sname label $www.sname.label -text "Short field name: " entry $www.sname.name -width $entrywidth -textvariable sname frame $www.stdname label $www.stdname.label -text "Standard field name: " entry $www.stdname.name -width $entrywidth -textvariable stdname frame $www.funit label $www.funit.label -text "Field units: " entry $www.funit.name -width $entrywidth -textvariable funit frame $www.xtitle label $www.xtitle.label -text "x-dimension name: " entry $www.xtitle.name -width $entrywidth -textvariable xtitle frame $www.xunit label $www.xunit.label -text "x-dimension units: " entry $www.xunit.name -width $entrywidth -textvariable xunit frame $www.ytitle label $www.ytitle.label -text "y-dimension name: " entry $www.ytitle.name -width $entrywidth -textvariable ytitle frame $www.yunit label $www.yunit.label -text "y-dimension units: " entry $www.yunit.name -width $entrywidth -textvariable yunit frame $www.ztitle label $www.ztitle.label -text "z-dimension name: " entry $www.ztitle.name -width $entrywidth -textvariable ztitle frame $www.zunit label $www.zunit.label -text "z-dimension units: " entry $www.zunit.name -width $entrywidth -textvariable zunit frame $www.ttitle label $www.ttitle.label -text "t-dimension name: " entry $www.ttitle.name -width $entrywidth -textvariable ttitle frame $www.tunit label $www.tunit.label -text "t-dimension units: " entry $www.tunit.name -width $entrywidth -textvariable tunit } proc packnamesbox {usecanvas} { global backgroundcolour disablecolour set w .box5.box10 set ww .box5.box10.canv set www .box5.box10.canv.namesbox set ypad 8 .selectall configure -foreground $disablecolour -state disabled pack forget .dimbox .box6 .box5.box7 pack $w -side top -fill both -expand yes pack $w.x.xscroll -side left -fill x -expand yes pack $w.x.corner -side right -fill both pack $w.x -side bottom -fill x pack $w.yscroll -side right -fill y pack $ww -side top -fill both -expand yes pack $www -side top -fill both -expand yes pack $www.desc.label -side left -anchor w pack $www.desc.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.lname.label -side left -anchor w pack $www.lname.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.sname.label -side left -anchor w pack $www.sname.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.stdname.label -side left -anchor w pack $www.stdname.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.funit.label -side left -anchor w pack $www.funit.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.xtitle.label -side left -anchor w pack $www.xtitle.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.xunit.label -side left -anchor w pack $www.xunit.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.ytitle.label -side left -anchor w pack $www.ytitle.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.yunit.label -side left -anchor w pack $www.yunit.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.ztitle.label -side left -anchor w pack $www.ztitle.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.zunit.label -side left -anchor w pack $www.zunit.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.ttitle.label -side left -anchor w pack $www.ttitle.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.tunit.label -side left -anchor w pack $www.tunit.name -side left -anchor w -fill x -expand yes -pady $ypad pack $www.desc $www.lname $www.sname $www.stdname $www.funit \ $www.xtitle $www.xunit $www.ytitle $www.yunit \ $www.ztitle $www.zunit $www.ttitle $www.tunit \ -side top -anchor w -fill x -expand yes if {$usecanvas != "no"} { $ww create window 0 0 -anchor nw -window $www $ww config -bg $backgroundcolour } } proc trans_clear {} { global field nspec nx x0 dx ny y0 dy xpole ypole global trans gridtype miss pole lsm precip1 precip2 minnbr if {[info exists field]} { set nspec "" ; set nx "" ; set x0 "" ; set dx "" set ny "" ; set y0 "" ; set dy "" set trans "" ; set gridtype "" set miss 0 ; set pole 0 ; set lsm 0 set precip1 0 ; set precip2 "" ; set minnbr 2 set xpole "" ; set ypole "" } } proc trans_info {} { global field nspec nx x0 dx ny y0 dy xpole ypole global trans gridtype miss pole lsm precip1 precip2 minnbr set www .box5.box7.canv.box9 set ww0 $www.w0 set ww1 $www.w1 names_clear .select delete 0 end if {[info exists field]} { .dimtitle configure -width 1 \ -text "Transformation/Interpolation interface" set transvar [getvar $field transtype] set curgridtype [getvar $field gridtype] if {$transvar == 0 || $transvar == 2 || $transvar == 6} { diminfo xdim $field 1 diminfo ydim $field 2 if {! [info exist nx] || $nx == ""} {set nx [array size xdim]} if {$nx > 0} { if {! [info exist x0] || $x0 == ""} { set x0 [format "%f" $xdim(0)] } } if {$nx > 1} { if {! [info exist dx] || $dx == ""} { set dx [format "%f" [expr {$xdim(1)-$xdim(0)}]]} } if {! [info exist ny] || $ny == ""} {set ny [array size ydim]} if {$ny > 0} { if {! [info exist y0] || $y0 == ""} { set y0 [format "%f" $ydim(0)] } } if {$ny > 1} { if {! [info exist dy] || $dy == ""} { set dy [format "%f" [expr {$ydim(1)-$ydim(0)}]] } } if {! [info exist precip2] || $precip2 == ""} {set precip2 0.0} if {! [info exist gridtype] || $gridtype == ""} { set gridtype [getvar $field gridtype] } if {! [info exist xpole] || $xpole == ""} { set xpole [getvar $field xpole] } if {! [info exist ypole] || $ypole == ""} { set ypole [getvar $field ypole] } set transid [getvar $field transid] if {$transid == "3" && (! [info exists trans] || $trans == "")} { set interp [getvar $field traux2] set trans [expr {$interp+1}] set miss [getvar $field traux3] set pole [getvar $field traux4] set lsm [getvar $field traux5] set precip2 [getvar $field trfaux3] if {$precip2 < "-999.998"} { set precip1 0 set precip2 0.0 } else { set precip1 1 } } selecttransbox on on off off on on on on on on \ off off on on on on on - - on on on off on off if {! [info exists trans] || $trans == "" || $trans == "0" || \ $trans == "1" || $trans == "2" || \ $trans == "7"} { $ww0.lin invoke } elseif {$trans == "3"} { $ww0.area invoke } elseif {$trans == "4"} { $ww0.dim invoke } elseif {$trans == "5"} { $ww0.zmean invoke } elseif {$trans == "6"} { $ww0.mmean invoke } elseif {$trans == "8"} { $ww0.extrap invoke } if {$gridtype == "0" || $gridtype == "2"} { $ww1.rbut.gauss invoke } else { $ww1.rbut.reg invoke } if {$gridtype == "0" || $trans == "5" || \ $trans == "6" || $trans == "8"} { selecttransbox - - - - - - - - - - - - - - - - - off off - - - - - - } else { selecttransbox - - - - - - - - - - - - - - - - - on on - - - - - - } if {$curgridtype == "2"} { selecttransbox - - - - - - - - - - - - - - - - - - - - - - - off off } } elseif {$transvar == 1} { if {! [info exist nspec] || $nspec == ""} { diminfo xdim $field 1 set nspec [expr {[array size xdim]-1}] } if {! [info exist ny] || $ny == ""} { set ny [expr {(3*$nspec+1)/2}] if {$ny%2 != 0} {incr ny} } if {! [info exist nx] || $nx == ""} {set nx [expr {$ny*2}]} if {! [info exist x0] || $x0 == ""} {set x0 [format "%f" 0.0]} if {! [info exist dx] || $dx == ""} { set dx [format "%f" [expr {360.0 / $nx}]] } if {! [info exist dy] || $dy == ""} {set dy [format "%f" [expr {-$dx}]]} if {! [info exist y0] || $y0 == ""} { set y0 [format "%f" [expr {90.0 + ($dy/2.0)}]] } if {! [info exist gridtype] || $gridtype == ""} { set gridtype [getvar $field gridtype] } if {! [info exist xpole] || $xpole == ""} { set xpole [format "%f" 0.0] } if {! [info exist ypole] || $ypole == ""} { set ypole [format "%f" 90.0] } selecttransbox off off on on off on off off off off \ off on on on on on on - - off off off on off off if {! [info exists trans] || $trans == "" || $trans == "1" || \ $trans == "2" || $trans == "3" || $trans == "4" || \ $trans == "5" || $trans == "6"} { $ww0.grid invoke } elseif {$trans == "0"} { $ww0.trunc invoke } elseif {$trans == "7"} { $ww0.delm2 invoke } if {$gridtype == "1"} { $ww1.rbut.reg invoke } else { $ww1.rbut.gauss invoke } if {$gridtype == "0"} { selecttransbox - - - - - - - - - - - - - - - - - off off - - - - - - } elseif {$trans != "0" && $trans != "7"} { selecttransbox - - - - - - - - - - - - - - - - - on on - - - - - - } } else { transboxoff } } else { transboxoff } } proc transbox {} { global nspec nx ny field global scrollbarwidth set w .box5.box7 set ww .box5.box7.canv set www .box5.box7.canv.box9 frame $w -relief sunken -borderwidth 2 canvas $ww -height 10 -width 10 \ -yscrollcommand "$w.yscroll set" \ -xscrollcommand "$w.x.xscroll set" -scrollregion {0 0 500 600} scrollbar $w.yscroll -command "$ww yview" -width $scrollbarwidth set corner_width [expr {$scrollbarwidth + \ 2*[$w.yscroll cget -borderwidth] + \ 2*[$w.yscroll cget -highlightthickness]}] frame $w.x scrollbar $w.x.xscroll -command "$ww xview" -orient horizontal \ -width $scrollbarwidth frame $w.x.corner -width $corner_width frame $www set ww0 $www.w0 frame $ww0 set ww1 $www.w1 frame $ww1 set ww2 $www.w2 frame $ww2 set entrywidth 12 set gridtype 0 set precip1 0 set minnbr 2 radiobutton $ww0.trunc -text "Truncate spectral coefficients" \ -variable trans -value 0 -anchor w \ -command { selecttransbox off off on on off off off off off off \ off on on off off off off off off off \ off off on off off } radiobutton $ww0.grid -text "Spectral to gridpoint field" \ -variable trans -value 1 -anchor w \ -command { if {$gridtype == 0} {set yy off} else {set yy on } selecttransbox off off on on off on off off off off \ off off on on on on on $yy $yy off \ off off on off off } radiobutton $ww0.lin -text "Bilinear interpolation" \ -variable trans -value 2 -anchor w \ -command { if {$gridtype == 0} {set yy off} else {set yy on } if {$precip1 == 0} {set pp off} else {set pp on } selecttransbox on on off off on on on on on on \ $pp off on on on on on $yy $yy on \ on on off on off } radiobutton $ww0.area -text "Area weighted interpolation" \ -variable trans -value 3 -anchor w \ -command { if {$gridtype == 0} {set yy off} else {set yy on } selecttransbox on on off off on on off on on off \ off off on on on on on $yy $yy on \ on on off on off } radiobutton $ww0.dim -text "Change x-y dimensions" \ -variable trans -value 4 -anchor w \ -command { set type [getvar $field gridtype] if {$type == 0} {set yy off} else {set yy on } selecttransbox on on off off on off off off off off\ off off off off on on off $yy $yy \ off on on off on off } radiobutton $ww0.zmean -text "Zonal mean" \ -variable trans -value 5 -anchor w \ -command { selecttransbox on on off off on off off off off \ off off off off off off off off off \ off off on on off on off } radiobutton $ww0.mmean -text "Meridional mean" \ -variable trans -value 6 -anchor w \ -command { selecttransbox on on off off on off off off off \ off off off off off off off off off \ off off on on off on off } radiobutton $ww0.delm2 -text "Del**-2 of spectral data" \ -variable trans -value 7 -anchor w \ -command { selecttransbox off off on on off off off off off off \ off on off off off off off off off \ off off off on off off } radiobutton $ww0.extrap -text "Extrapolate over missing data" \ -variable trans -value 8 -anchor w \ -command { selecttransbox on on off off on off off off off \ off off off off off off off off off \ off off on on off on on } frame $ww1.rbut radiobutton $ww1.rbut.gauss -text "Gaussian grid" \ -variable gridtype -value 0 -anchor w \ -command { selecttransbox - - - - - - - - - - \ - - - - - - - off off - - - - - - } radiobutton $ww1.rbut.reg -text "Regular grid" \ -variable gridtype -value 1 -anchor w \ -command { selecttransbox - - - - - - - - - - \ - - - - - - - on on - - - - - - } checkbutton $ww1.pole -text "Average over poles" \ -variable pole -anchor w checkbutton $ww1.lsm -text "Land/Sea mask data" \ -variable lsm -anchor w checkbutton $ww1.miss -text "Field contains missing data" \ -variable miss -anchor w checkbutton $ww1.precip1 -text "Include precipitation cutoff" \ -variable precip1 -anchor w \ -command { if {$precip1 == 0} { selecttransbox - - - - - - - - - - \ off - - - - - - - - - - - - - - } elseif {$precip1 == 1} { selecttransbox - - - - - - - - - - \ on - - - - - - - - - - - - - - } } frame $ww1.spacer -height 2m frame $ww2.precip2 label $ww2.precip2.label -justify left \ -text "Enter precipitation \ncutoff value: " entry $ww2.precip2.name -width $entrywidth -textvariable precip2 frame $ww2.extrap label $ww2.extrap.label -justify left \ -text "Minimum number of \nnearest neighbours: " frame $ww2.extrap.t radiobutton $ww2.extrap.t.1 -text "1" -variable minnbr -value 1 -anchor w radiobutton $ww2.extrap.t.2 -text "2" -variable minnbr -value 2 -anchor w frame $ww2.extrap.b radiobutton $ww2.extrap.b.3 -text "3" -variable minnbr -value 3 -anchor w radiobutton $ww2.extrap.b.4 -text "4" -variable minnbr -value 4 -anchor w frame $ww2.coeff label $ww2.coeff.label -justify left \ -text "Enter number of \nspectral coefficients: " entry $ww2.coeff.name -width $entrywidth -textvariable nspec bind $ww2.coeff.name { set ny [expr (3*$nspec+1)/2] if {$ny%%2 != 0} {incr ny} set nx [expr $ny*2] set x0 [format "%%f" 0.0] set dx [format "%%f" [expr 360.0 / $nx]] set dy [format "%%f" [expr -$dx]] set y0 [format "%%f" [expr 90.0 + ($dy/2.0)]] } frame $ww2.nx label $ww2.nx.label -text "Enter number of columns: " entry $ww2.nx.name -width $entrywidth -textvariable nx bind $ww2.nx.name { set x0 [format "%%f" 0.0] set dx [format "%%f" [expr 360.0 / $nx]] } frame $ww2.x0 label $ww2.x0.label -text "Enter first longitude: " entry $ww2.x0.name -width $entrywidth -textvariable x0 frame $ww2.dx label $ww2.dx.label -text "Enter column spacing: " entry $ww2.dx.name -width $entrywidth -textvariable dx frame $ww2.ny label $ww2.ny.label -text "Enter number of rows: " entry $ww2.ny.name -width $entrywidth -textvariable ny bind $ww2.ny.name { if {$dy > 0} {set isign 1} else {set isign -1} if {$ny%%2 == 0} { set dy [format "%%f" [expr $isign*180.0 / $ny]] set y0 [format "%%f" [expr -$isign*90.0 + ($dy/2.0)]] } else { set dy [format "%%f" [expr $isign*180.0 / ($ny-1)]] set y0 [format "%%f" [expr -$isign*90.0]] } } frame $ww2.y0 label $ww2.y0.label -text "Enter first latitude: " entry $ww2.y0.name -width $entrywidth -textvariable y0 frame $ww2.dy label $ww2.dy.label -text "Enter row spacing: " entry $ww2.dy.name -width $entrywidth -textvariable dy frame $ww2.xpole label $ww2.xpole.label -text "Enter pole longitude: " entry $ww2.xpole.name -width $entrywidth -textvariable xpole frame $ww2.ypole label $ww2.ypole.label -text "Enter pole latitude: " entry $ww2.ypole.name -width $entrywidth -textvariable ypole } proc packtransbox {usecanvas} { global w2 backgroundcolour disablecolour set w .box5.box7 set ww .box5.box7.canv set www .box5.box7.canv.box9 set ww0 $www.w0 set ww1 $www.w1 set ww2 $www.w2 .selectall configure -foreground $disablecolour -state disabled pack forget .dimbox .box6 .box5.box10 pack $w -side top -fill both -expand yes pack $w.x.xscroll -side left -fill x -expand yes pack $w.x.corner -side right -fill both pack $w.x -side bottom -fill x pack $w.yscroll -side right -fill y pack $ww -side top -fill both -expand yes pack $www -side top -fill both -expand yes pack $ww0 -side top -fill both -expand yes pack $ww1 -side top -fill both -expand yes pack $ww2 -side top -fill both -expand yes pack $ww0.lin $ww0.area $ww0.extrap $ww0.grid $ww0.trunc $ww0.dim \ $ww0.zmean $ww0.mmean $ww0.delm2 -side top -expand yes -fill both pack $ww1.rbut.gauss $ww1.rbut.reg -side left -expand yes -fill both pack $ww1.rbut $ww1.miss $ww1.pole $ww1.lsm $ww1.precip1 \ -side top -expand yes -fill both pack $ww1.spacer -side top -anchor w -fill x -expand yes pack $ww2.extrap.label -side left -anchor w -fill x pack $ww2.extrap.t.1 $ww2.extrap.t.2 -side left -anchor w -fill x pack $ww2.extrap.b.3 $ww2.extrap.b.4 -side left -anchor w -fill x pack $ww2.extrap -side top -anchor w -fill x -expand yes pack $ww2.extrap.t -side top -anchor w -fill x -expand yes pack $ww2.extrap.b -side bottom -anchor w -fill x -expand yes pack $ww2.precip2.label $ww2.precip2.name -side left -anchor w -fill x pack $ww2.coeff.label $ww2.coeff.name -side left -anchor w -fill x pack $ww2.precip2 $ww2.coeff -side top -anchor w -fill x -expand yes pack $ww2.nx.label $ww2.nx.name -side left -anchor w -fill x pack $ww2.x0.label $ww2.x0.name -side left -anchor w -fill x pack $ww2.dx.label $ww2.dx.name -side left -anchor w -fill x pack $ww2.nx $ww2.x0 $ww2.dx -side top -anchor w -fill x -expand yes pack $ww2.ny.label $ww2.ny.name -side left -anchor w -fill x pack $ww2.y0.label $ww2.y0.name -side left -anchor w -fill x pack $ww2.dy.label $ww2.dy.name -side left -anchor w -fill x pack $ww2.ny $ww2.y0 $ww2.dy -side top -anchor w -fill x -expand yes pack $ww2.xpole.label $ww2.xpole.name -side left -anchor w -fill x pack $ww2.ypole.label $ww2.ypole.name -side left -anchor w -fill x pack $ww2.xpole $ww2.ypole -side top -anchor w -fill x -expand yes if {$usecanvas != "no"} { $ww create window 0 0 -anchor nw -window $www $ww config -bg $backgroundcolour } } proc selecttransbox {a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 \ a14 a15 a16 a17 a18 a19 a20 a21 a22 a23 a24 a25} { global disablecolour foregroundcolour set www .box5.box7.canv.box9 set ww0 $www.w0 set ww1 $www.w1 set ww2 $www.w2 if {$a1 == "on"} { $ww0.lin configure -foreground $foregroundcolour -state normal } elseif {$a1 == "off"} { $ww0.lin configure -foreground $disablecolour -state disabled } if {$a2 == "on"} { $ww0.area configure -foreground $foregroundcolour -state normal } elseif {$a2 == "off"} { $ww0.area configure -foreground $disablecolour -state disabled } if {$a3 == "on"} { $ww0.grid configure -foreground $foregroundcolour -state normal } elseif {$a3 == "off"} { $ww0.grid configure -foreground $disablecolour -state disabled } if {$a4 == "on"} { $ww0.trunc configure -foreground $foregroundcolour -state normal } elseif {$a4 == "off"} { $ww0.trunc configure -foreground $disablecolour -state disabled } if {$a5 == "on"} { $ww0.dim configure -foreground $foregroundcolour -state normal } elseif {$a5 == "off"} { $ww0.dim configure -foreground $disablecolour -state disabled } if {$a6 == "on"} { $ww1.rbut.gauss configure -foreground $foregroundcolour -state normal $ww1.rbut.reg configure -foreground $foregroundcolour -state normal } elseif {$a6 == "off"} { $ww1.rbut.gauss configure -foreground $disablecolour -state disabled $ww1.rbut.reg configure -foreground $disablecolour -state disabled } if {$a7 == "on"} { $ww1.miss configure -foreground $foregroundcolour -state normal } elseif {$a7 == "off"} { $ww1.miss configure -foreground $disablecolour -state disabled } if {$a8 == "on"} { $ww1.pole configure -foreground $foregroundcolour -state normal } elseif {$a8 == "off"} { $ww1.pole configure -foreground $disablecolour -state disabled } if {$a9 == "on"} { $ww1.lsm configure -foreground $foregroundcolour -state normal } elseif {$a9 == "off"} { $ww1.lsm configure -foreground $disablecolour -state disabled } if {$a10 == "on"} { $ww1.precip1 configure -foreground $foregroundcolour -state normal } elseif {$a10 == "off"} { $ww1.precip1 configure -foreground $disablecolour -state disabled } if {$a11 == "on"} { $ww2.precip2.name configure -foreground $foregroundcolour -state normal } elseif {$a11 == "off"} { $ww2.precip2.name configure -foreground $disablecolour -state disabled } if {$a12 == "on"} { } elseif {$a12 == "off"} { } if {$a13 == "on"} { $ww2.coeff.name configure -foreground $foregroundcolour -state normal } elseif {$a13 == "off"} { $ww2.coeff.name configure -foreground $disablecolour -state disabled } if {$a14 == "on"} { $ww2.nx.name configure -foreground $foregroundcolour -state normal } elseif {$a14 == "off"} { $ww2.nx.name configure -foreground $disablecolour -state disabled } if {$a15 == "on"} { $ww2.x0.name configure -foreground $foregroundcolour -state normal } elseif {$a15 == "off"} { $ww2.x0.name configure -foreground $disablecolour -state disabled } if {$a16 == "on"} { $ww2.dx.name configure -foreground $foregroundcolour -state normal } elseif {$a16 == "off"} { $ww2.dx.name configure -foreground $disablecolour -state disabled } if {$a17 == "on"} { $ww2.ny.name configure -foreground $foregroundcolour -state normal } elseif {$a17 == "off"} { $ww2.ny.name configure -foreground $disablecolour -state disabled } if {$a18 == "on"} { $ww2.y0.name configure -foreground $foregroundcolour -state normal } elseif {$a18 == "off"} { $ww2.y0.name configure -foreground $disablecolour -state disabled } if {$a19 == "on"} { $ww2.dy.name configure -foreground $foregroundcolour -state normal } elseif {$a19 == "off"} { $ww2.dy.name configure -foreground $disablecolour -state disabled } if {$a20 == "on"} { $ww2.xpole.name configure -foreground $foregroundcolour -state normal $ww2.ypole.name configure -foreground $foregroundcolour -state normal } elseif {$a20 == "off"} { $ww2.xpole.name configure -foreground $disablecolour -state disabled $ww2.ypole.name configure -foreground $disablecolour -state disabled } if {$a21 == "on"} { $ww0.zmean configure -foreground $foregroundcolour -state normal } elseif {$a21 == "off"} { $ww0.zmean configure -foreground $disablecolour -state disabled } if {$a22 == "on"} { $ww0.mmean configure -foreground $foregroundcolour -state normal } elseif {$a22 == "off"} { $ww0.mmean configure -foreground $disablecolour -state disabled } if {$a23 == "on"} { $ww0.delm2 configure -foreground $foregroundcolour -state normal } elseif {$a23 == "off"} { $ww0.delm2 configure -foreground $disablecolour -state disabled } if {$a24 == "on"} { $ww0.extrap configure -foreground $foregroundcolour -state normal } elseif {$a24 == "off"} { $ww0.extrap configure -foreground $disablecolour -state disabled } if {$a25 == "on"} { $ww2.extrap.t.1 configure -foreground $foregroundcolour -state normal $ww2.extrap.t.2 configure -foreground $foregroundcolour -state normal $ww2.extrap.b.3 configure -foreground $foregroundcolour -state normal $ww2.extrap.b.4 configure -foreground $foregroundcolour -state normal } elseif {$a25 == "off"} { $ww2.extrap.t.1 configure -foreground $disablecolour -state disable $ww2.extrap.t.2 configure -foreground $disablecolour -state disable $ww2.extrap.b.3 configure -foreground $disablecolour -state disable $ww2.extrap.b.4 configure -foreground $disablecolour -state disable } } proc transboxoff {} { global disablecolour foregroundcolour set www .box5.box7.canv.box9 set ww0 $www.w0 set ww1 $www.w1 set ww2 $www.w2 $ww2.extrap.t.1 configure -foreground $disablecolour -state disable $ww2.extrap.t.2 configure -foreground $disablecolour -state disable $ww2.extrap.b.3 configure -foreground $disablecolour -state disable $ww2.extrap.b.4 configure -foreground $disablecolour -state disable $ww2.precip2.name configure -foreground $disablecolour -state disabled $ww2.coeff.name configure -foreground $disablecolour -state disabled $ww2.nx.name configure -foreground $disablecolour -state disabled $ww2.x0.name configure -foreground $disablecolour -state disabled $ww2.dx.name configure -foreground $disablecolour -state disabled $ww2.ny.name configure -foreground $disablecolour -state disabled $ww2.y0.name configure -foreground $disablecolour -state disabled $ww2.dy.name configure -foreground $disablecolour -state disabled $ww2.xpole.name configure -foreground $disablecolour -state disabled $ww2.ypole.name configure -foreground $disablecolour -state disabled $ww0.lin configure -foreground $disablecolour -state disabled $ww0.area configure -foreground $disablecolour -state disabled $ww0.extrap configure -foreground $disablecolour -state disabled $ww0.grid configure -foreground $disablecolour -state disabled $ww0.trunc configure -foreground $disablecolour -state disabled $ww0.dim configure -foreground $disablecolour -state disabled $ww0.zmean configure -foreground $disablecolour -state disabled $ww0.mmean configure -foreground $disablecolour -state disabled $ww0.delm2 configure -foreground $disablecolour -state disabled $ww1.rbut.gauss configure -foreground $disablecolour -state disabled $ww1.rbut.reg configure -foreground $disablecolour -state disabled $ww1.miss configure -foreground $disablecolour -state disabled $ww1.pole configure -foreground $disablecolour -state disabled $ww1.lsm configure -foreground $disablecolour -state disabled $ww1.precip1 configure -foreground $disablecolour -state disabled } proc dim_info {d} { global field dim names_clear trans_clear if {[info exists field]} { set dim $d set select [getdim $dim $field] if {[lindex $select 0] < 0} {set select ""} set dimlist [diminfo adim $field $dim] set title [lindex $dimlist 0] set unit [lindex $dimlist 1] set n [array size adim] set tlong 0 if {$d == 4} { if {$n > 0} { set tlong [regexp {..../../..:..\... / .*} $adim(0)] } if {$tlong} { set s [string first since $unit] if {$s != -1} {set unit [string range $unit 0 [expr {$s - 2}]]} } } if {$unit != " " && $unit != ""} { set unit ($unit) } if {$tlong} { .dimtitle configure -justify left -width 1 -anchor w \ -text " date / $title $unit" } else { .dimtitle configure -justify center -width 1 -anchor s \ -text "$title $unit" } .select delete 0 end for {set i 0} {$i < $n} {incr i} { .select insert end $adim($i) } foreach i $select { .select selection set $i $i } } } proc dimbox {} { global scrollbarwidth frame .dimbox listbox .select -yscroll ".dimbox.yscroll set" -exportselection no \ -relief sunken -selectmode extended \ -setgrid yes -selectborderwidth 2 yscrollbar .dimbox.yscroll .select bind .select <1> {+ .qmenu configure -foreground $disablecolour -state disabled .qlook configure -foreground $disablecolour -state disabled .qplot configure -foreground $disablecolour -state disabled .convert configure -foreground $disablecolour -state disabled } bind .select <2> {+ .qmenu configure -foreground $disablecolour -state disabled .qlook configure -foreground $disablecolour -state disabled .qplot configure -foreground $disablecolour -state disabled .convert configure -foreground $disablecolour -state disabled } bind .select <3> {+ .qmenu configure -foreground $disablecolour -state disabled .qlook configure -foreground $disablecolour -state disabled .qplot configure -foreground $disablecolour -state disabled .convert configure -foreground $disablecolour -state disabled } frame .box6 radiobutton .x -width 0 -height 0 -text "x" \ -variable dim -value 1 -command {dim_info 1} radiobutton .y -width 0 -height 0 -text "y" \ -variable dim -value 2 -command {dim_info 2} radiobutton .z -width 0 -height 0 -text "z" \ -variable dim -value 3 -command {dim_info 3} radiobutton .t -width 0 -height 0 -text "t" \ -variable dim -value 4 -command {dim_info 4} set corner_width [expr {$scrollbarwidth + \ 2*[.dimbox.yscroll cget -borderwidth] + \ 2*[.dimbox.yscroll cget -highlightthickness]}] frame .corner -width $corner_width } proc packdimbox {} { global foregroundcolour .selectall configure -foreground $foregroundcolour -state normal pack forget .box5.box7 .box5.box10 pack .dimbox -side top -fill both -expand yes -in .box5 pack .select -side top -fill both -expand yes -in .dimbox pack .box6 -side top -fill x -in .box5 pack .x .y .z .t -side left -fill x -expand yes -in .box6 pack .corner -side right -fill both -in .box6 } # proc dataview {} { global field qlook qm qn qdimlist xdim ydim cursor fieldlen global dim1 dim2 dim3 dim4 if {[info exists field]} { set w .view catch { unset qdimlist xdim ydim destroy $w update } toplevel $w wm title $w "Data View" wm geometry $w 1000x744 set ww $w.frame frame $ww -relief flat -borderwidth 8 pack $ww -side left -fill both -expand yes set dim(1) $dim1 ; set dimname(1) x set dim(2) $dim2 ; set dimname(2) y set dim(3) $dim3 ; set dimname(3) z set dim(4) $dim4 ; set dimname(4) t set nz [lindex [getdim $dim3 $field] 0] if {$nz < 0} {set nz [expr {-$nz - 1}]} set nt [lindex [getdim $dim4 $field] 0] if {$nt < 0} {set nt [expr {-$nt - 1}]} set error [catch {set finfo \ [getdata a $field $dim1 $dim2 $dim3 $dim4 $nz $nt]} errormsg] if {$error} { errorbox "Error extracting data values" destroy $w return } set title [lindex $finfo 0] set ftitle1 [lindex $finfo 1] set ftitle2 [lindex $finfo 2] set funit [lindex $finfo 3] if {$funit != " " && $funit != ""} {set funit "($funit)"} setupicon $w "$ftitle1" xconv_icon xconv_icon_m label $ww.flab -wraplength 0 -justify left -text "$title $ftitle2 $funit" pack $ww.flab -anchor w -side top set j 1 set tlong 0 foreach i "x y z t" { set dname $dimname($dim($j)) set adim ${i}dim if {$dname == "t" && ($i == "x" || $i == "y")} { set usedate 0 } else { set usedate 1 } set qdimlist($i) [diminfo $adim $field $dim($j) $usedate] set n [array size $adim] if {$n > 0} { set nn [lindex [getdim $dim($j) $field] 0] if {$nn >= 0} { eval set v $[list $adim]($nn) set title [lindex $qdimlist($i) 0] if {$dname == "t"} { set tlong [regexp {..../../..:..\... / .*} $v] if {$tlong} { set title "date / $title" } else { set title "$title" } } set unit [lindex $qdimlist($i) 1] if {$unit != " " && $unit != ""} {set unit "($unit)"} label $ww.${i}lab -wraplength 0 -justify left \ -text "${dname}: $title $v $unit" pack $ww.${i}lab -anchor w -side top } } incr j } frame $ww.spacer -height 2m -width 20 pack $ww.spacer -anchor w -side top frame $ww.buttons -relief groove -borderwidth 4 pack $ww.buttons -side bottom -pady 2m -fill x button $ww.buttons.dismiss -width 8 -text Dismiss \ -command "catch {unset qdimlist xdim ydim} ; destroy $w" pack $ww.buttons.dismiss -side left -expand yes text $ww.text -relief sunken -bd 2 -wrap none -cursor watch \ -xscroll "$ww.xscroll.x set" -yscroll "$ww.yscroll.y set" xyscrollbar $ww.xscroll $ww.yscroll $ww.text pack $ww.text -side left -fill both -expand yes update if {! [winfo exists $w]} {unset a ; return} if {$a(-6) == 101} { # Spectral data set fieldlen [expr {2*$qm + 4}] set MP [array size xdim] for {set i 0} {$i < [expr {$MP/2}]} {incr i} { set temp $ydim($i) set ydim($i) $ydim([expr {$MP-$i-1}]) set ydim([expr {$MP-$i-1}]) $temp } $ww.text insert end " " for {set i 0} {$i < $MP} {incr i} { $ww.text insert end \ [format "%- #$qm.${qn}g " $xdim($i)] } $ww.text insert end "\n\n" set ii 0 for {set i 0} {$i < $MP} {incr i} { $ww.text insert end \ [format "% #$qm.${qn}g: " $xdim([expr {$MP - $i - 1}])] incr ii set jj [expr {-2*($i+1)}] for {set j $i} {$j < $MP} {incr j} { incr jj [expr {2*($MP-$j+$i)}] set jjp [expr {$jj + 1}] set real [format "%- #$qm.${qn}g" $a($jj)] set imag [format "%- #$qm.${qn}g" $a($jjp)] $ww.text insert end "($real,$imag) " } for {set j 0} {$j < $i} {incr j} { $ww.text insert end " " } $ww.text insert end \ [format ":%- #$qm.${qn}g\n" $xdim([expr {$MP - $i - 1}])] update if {! [winfo exists $w]} {unset a ; return} } $ww.text insert end "\n" $ww.text insert end " " for {set i 0} {$i < $MP} {incr i} { $ww.text insert end \ [format "%- #$qm.${qn}g " $xdim($i)] } $ww.text insert end "\n" } else { # Gridpoint data set fieldlen [expr {$qm + 1}] set nx [array size xdim] set ny [array size ydim] $ww.text insert end " " for {set i 0} {$i < $nx} {incr i} { $ww.text insert end [format "%- #$qm.${qn}g " $xdim($i)] } $ww.text insert end "\n\n" set ii 0 set jj 0 for {set i 0} {$i < $ny} {incr i} { $ww.text insert end [format "% #$qm.${qn}g: " $ydim($i)] incr ii for {set j 0} {$j < $nx} {incr j} { $ww.text insert end [format "%- #$qm.${qn}g " $a($jj)] incr jj } $ww.text insert end [format ":%- #$qm.${qn}g\n" $ydim($i)] update if {! [winfo exists $w]} {unset a ; return} } $ww.text insert end "\n" $ww.text insert end " " for {set i 0} {$i < $nx} {incr i} { $ww.text insert end [format "%- #$qm.${qn}g " $xdim($i)] } $ww.text insert end "\n" } $ww.text configure -state disabled -cursor $cursor update if {! [winfo exists $w]} {unset a ; return} bind $ww.text { set dimname(1) x set dimname(2) y set dimname(3) z set dimname(4) t scan [%W index @%x,%y] "%%d.%%d" lineno charno set ix [expr ($charno - $qm - 2)/$fieldlen] set iy [expr $lineno - 3] set nx [array size xdim] set ny [array size ydim] if {$ix >= 0 && $ix < $nx && $iy >= 0 && $iy < $ny} { set x $xdim($ix) set title [lindex $qdimlist(x) 0] set unit [lindex $qdimlist(x) 1] if {$unit != " " && $unit != ""} {set unit "($unit)"} regsub text %W xlab xlabel set label [format "%%1s: %%-s %%-f %%-s " $dimname($dim1) $title $x $unit] $xlabel configure -text $label set y $ydim($iy) set title [lindex $qdimlist(y) 0] set unit [lindex $qdimlist(y) 1] if {$unit != " " && $unit != ""} {set unit "($unit)"} regsub text %W ylab ylabel set label [format "%%1s: %%-s %%-f %%-s " $dimname($dim2) $title $y $unit] $ylabel configure -text $label } } unset a } } # proc dataplot {} { global field qplot plotfont plottype cursor global dim1 dim2 dim3 dim4 ylog if {[info exists field]} { append qplot "qp" set w .$qplot catch {destroy $w} toplevel $w -colormap new -visual best wm title $w "Data Plot" wm geometry $w 801x744 if {$plottype == "image"} { set plot [image create photo] set colbar [image create photo] } set ww $w.frame frame $ww -relief flat -borderwidth 8 -cursor watch pack $ww -side left -fill both -expand yes frame $ww.buttons -relief groove -borderwidth 4 pack $ww.buttons -side bottom -pady 2m -fill x if {$plottype == "image"} { button $ww.buttons.dismiss -width 8 -text Dismiss \ -command "image delete $plot $colbar ; destroy $w" } else { button $ww.buttons.dismiss -width 8 -text Dismiss -command "destroy $w" } button $ww.buttons.saveps -width 8 -text Save -command "savebox $ww.c" pack $ww.buttons.dismiss $ww.buttons.saveps -side left -expand yes update if {! [winfo exists $w]} {return} canvas $ww.c -cursor watch pack $ww.c -fill both -expand yes set dim(1) $dim1 ; set dimname(1) x set dim(2) $dim2 ; set dimname(2) y set dim(3) $dim3 ; set dimname(3) z set dim(4) $dim4 ; set dimname(4) t set nz [lindex [getdim $dim3 $field] 0] if {$nz < 0} {set nz [expr {-$nz - 1}]} set nt [lindex [getdim $dim4 $field] 0] if {$nt < 0} {set nt [expr {-$nt - 1}]} set ncolour 230 set dncolour [expr {double($ncolour)}] set xsize0 600 set ysize0 400 if {$plottype == "image"} { set error [catch {set finfo \ [getdataimage col $field $dim1 $dim2 $dim3 $dim4 \ $nz $nt $ylog $ncolour $xsize0 $ysize0 $plot \ [winfo rgb $ww.c [$ww.c cget -background]]]} \ errormsg] } else { set error [catch {set finfo \ [getcolindex col $field $dim1 $dim2 $dim3 $dim4 \ $nz $nt $ncolour]} errormsg] } if {$error} { errorbox "Error extracting data values" puts $errormsg if {$plottype == "image"} {image delete $plot $colbar} destroy $w return } set title [lindex $finfo 0] set ftitle1 [lindex $finfo 1] set ftitle2 [lindex $finfo 2] set funit [lindex $finfo 3] if {$funit != " " && $funit != ""} {set funit "($funit)"} setupicon $w "$ftitle1" xconv_icon xconv_icon_m set mdt $col(-5) set mdi $col(-4) set md $col(-3) set min $col(-2) set max $col(-1) set error [catch {set mdi1 [expr {$mdi + 0.0}]} errormsg] if {$error} { set mdi [expr {$max + 1.0}] } set range [expr {$max - $min}] update if {! [winfo exists $w]} { unset col if {$plottype == "image"} {catch "image delete $plot $colbar"} return } set height [winfo height $ww.c] set width [winfo width $ww.c] set linethickness 2 set xsize [expr {$xsize0 + $linethickness}] set xtl [expr {($width - $xsize)/2}] set xbr [expr {$xtl + $xsize}] set xtext $xtl set space 12 $ww.c create text $xtext $space -font $plotfont -anchor nw -tags title \ -text "$title $ftitle2 $funit" set titlepos [$ww.c bbox title] set textht [expr {[lindex $titlepos 3] - [lindex $titlepos 1]}] set j 1 set k 1 set tlong 0 foreach i "x y z t" { set dname $dimname($dim($j)) set adim ${i}dim if {$dname == "t" && ($i == "x" || $i == "y")} { set usedate 0 } else { set usedate 1 } set qdimlist($i) [diminfo $adim $field $dim($j) $usedate] set n($i) [array size $adim] if {$n($i) > 0} { if {$i == "x" || $i == "y"} { set nn 1 set v "" } else { set nn [lindex [getdim $dim($j) $field] 0] if {$nn >= 0} { eval set v $[list $adim]($nn) } } if {$nn >= 0} { set title [lindex $qdimlist($i) 0] if {$dname == "t"} { set tlong [regexp {..../../..:..\... / .*} $v] if {$tlong} { set title "date / $title" } else { set title "$title" } } set unit [lindex $qdimlist($i) 1] if {$unit != " " && $unit != ""} {set unit "($unit)"} set ytext [expr {$space + ($k * $textht)}] $ww.c create text $xtext $ytext -font $plotfont -anchor nw \ -text "${dname}: $title $v $unit" incr k } } elseif {$i == "x" || $i == "y"} { errorbox "First 2 dimensions must have at least 1 data point each" if {$plottype == "image"} {image delete $plot $colbar} destroy $w return } incr j } update if {! [winfo exists $w]} { unset col qdimlist n xdim ydim if {$plottype == "image"} {catch "image delete $plot $colbar"} return } set ysize [expr {$ysize0 + $linethickness}] set ytl [expr {$ytext + $textht + $space}] set ybr [expr {$ytl + $ysize}] $ww.c create rectangle $xtl $ytl $xbr $ybr -outline black \ -width $linethickness set nx $n(x) set ny $n(y) if {$ny > 1 && $dim2 == 2} { if {[expr {$ydim(0)-$ydim(1)}] < 0} { set ysign -1 } else { set ysign 1 } } elseif {$ny > 1 && $dim2 == 3} { set posup [getvar $field posup] if {[expr {$ydim(0)-$ydim(1)}] < 0 && $posup} { set ysign -1 } elseif {[expr {$ydim(0)-$ydim(1)}] > 0 && ! $posup} { set ysign -1 } else { set ysign 1 } } else { set ysign -1 } if ($ylog) { for {set i 0} {$i < $ny} {incr i} { set ydim($i) [expr log10($ydim($i))] } } set xrange [expr {$xdim(0) - $xdim([expr {$nx - 1}])}] set yrange [expr {$ydim(0) - $ydim([expr {$ny - 1}])}] if {$plottype == "image"} { set xpos1 [expr {(0.5 * $linethickness) + $xtl}] set ypos1 [expr {$ytl + (0.5 * $linethickness)}] $ww.c create image $xpos1 $ypos1 -image $plot -anchor nw } else { getcolourscale acolourscale set acolourscale($ncolour) {} set xpos1 [expr {(0.5 * $linethickness) + $xtl}] for {set ix 0} {$ix < $nx} {incr ix} { set xpos0 $xpos1 set xpos1 [expr {$xpos1 + [get_pos $ix xdim $nx $xsize0 $xrange]}] set xpos($ix) $xpos1 } set xpos10 [expr {(0.5 * $linethickness) + $xtl}] if {$ysign == -1} { set ypos1 [expr {$ybr - (0.5 * $linethickness)}] } else { set ypos1 [expr {$ytl + (0.5 * $linethickness)}] } set i 0 for {set iy 0} {$iy < $ny} {incr iy} { update if {! [winfo exists $w]} { unset col qdimlist n acolourscale xdim ydim return } set xpos1 $xpos10 set ypos0 $ypos1 set ypos1 [expr {$ypos1 + $ysign*[get_pos $iy ydim $ny $ysize0 $yrange]}] for {set ix 0} {$ix < $nx} {incr ix} { set xpos0 $xpos1 set xpos1 $xpos($ix) set colour $acolourscale($col($i)) $ww.c create rectangle $xpos0 $ypos0 $xpos1 $ypos1 \ -fill $colour -outline "" incr i } } } update if {! [winfo exists $w]} { unset col qdimlist n xdim ydim if {$plottype != "image"} {unset acolourscale} if {$plottype == "image"} {catch "image delete $plot $colbar"} return } set aformat "%#11.5g" set nyticks 6 set yticksize 10 set ylen [expr {($ysize0 + $linethickness) / double($nyticks - 1)}] if {$ysign == -1} { set ypos0 $ybr } else { set ypos0 $ytl } set xpos0 $xtl set xpos1 [expr {$xpos0 - $yticksize}] if {$ylog} {set y0 [expr pow(10,$ydim(0))]} else {set y0 $ydim(0)} set dy [expr {- $yrange / double($nyticks - 1)}] for {set i 0} {$i < $nyticks} {incr i} { $ww.c create line $xpos0 $ypos0 $xpos1 $ypos0 \ -fill black -width $linethickness $ww.c create text $xpos1 $ypos0 \ -font $plotfont -anchor e -text [format "$aformat " $y0] set ypos0 [expr {$ypos0 + $ysign*$ylen}] if ($ylog) { set y0 [expr {pow(10,log10($y0) + $dy)}] } else { set y0 [expr {$y0 + $dy}] } } set xtext [expr {$xpos1 - 66.0}] set ytext [expr {$ytl + $ysize/2.0}] $ww.c create text $xtext $ytext -font $plotfont -anchor e \ -text "$dimname($dim2)" set nxticks 6 set xticksize 10 set xlen [expr {($xsize0 + $linethickness) / double($nxticks - 1)}] set xpos0 $xtl set ypos0 $ybr set ypos1 [expr {$ypos0 + $xticksize}] set x0 $xdim(0) set dx [expr {- $xrange / double($nxticks - 1)}] for {set i 0} {$i < $nxticks} {incr i} { $ww.c create line $xpos0 $ypos0 $xpos0 $ypos1 \ -fill black -width $linethickness $ww.c create text $xpos0 [expr {$ypos1 + $linethickness}] \ -font $plotfont -anchor n -text [format "$aformat " $x0] set xpos0 [expr {$xpos0 + $xlen}] set x0 [expr {$x0 + $dx}] } set xtext [expr {$xtl + $xsize/2.0}] set ytext [expr {$ypos1 + 12.0}] $ww.c create text $xtext $ytext -font $plotfont -anchor n \ -text "$dimname($dim1)" update if {! [winfo exists $w]} { unset col qdimlist n xdim ydim if {$plottype != "image"} {unset acolourscale} if {$plottype == "image"} {catch "image delete $plot $colbar"} return } set nscale 10 set ctlt 2 set xsize1 [expr {($xsize + $linethickness - $ctlt) / $dncolour}] set ysize1 40 set xtl1 0 set xtl [expr {($width - ($dncolour * $xsize1))/2}] set ytl [expr {$height - (2 * $ysize1)}] set xbr [expr {$xtl + $xsize1}] set ybr [expr {$ytl + $ysize1}] set cformat "%#11.5g" set top false set xpos0 [expr {$xtl - (0.5 * $ctlt)}] if {$plottype == "image"} { getcolbarimage $ncolour $xsize $ysize1 $colbar $ww.c create image $xtl $ytl -image $colbar -anchor nw set step [expr $ncolour / $nscale] set dnscale [expr {double($nscale)}] set xsize2 [expr {($xsize + $linethickness - $ctlt) / $dnscale}] for {set i 0} {$i < $nscale} {incr i} { set xtext $xtl set v [expr {$min + $i * $step * ($range / $dncolour)}] if {$top} { set ytext [expr {$ytl - $ctlt}] set top false $ww.c create text $xtext $ytext -font $plotfont -anchor s \ -text [format "$cformat " $v] } else { set ytext [expr {$ybr + $ctlt}] set top true $ww.c create text $xtext $ytext -font $plotfont -anchor n \ -text [format "$cformat " $v] } $ww.c create line $xtl $ytl $xtl $ybr -fill black -width $ctlt update if {! [winfo exists $w]} { unset col qdimlist n xdim ydim catch "image delete $plot $colbar" return } set xtl [expr {$xtl + $xsize2}] set xbr [expr {$xbr + $xsize2}] } set xtext $xtl if {$top} { set ytext [expr {$ytl - $ctlt}] $ww.c create text $xtext $ytext -font $plotfont -anchor s \ -text [format "$cformat " $max] $ww.c create line $xbr $ytl $xbr $ybr -fill black -width $ctlt } else { set ytext [expr {$ybr + $ctlt}] $ww.c create text $xtext $ytext -font $plotfont -anchor n \ -text [format "$cformat " $max] $ww.c create line $xtl $ytl $xtl $ybr -fill black -width $ctlt } set xpos1 [expr {$xtl + (0.5 * $ctlt)}] $ww.c create line $xpos0 $ytl $xpos1 $ytl -fill black -width $ctlt $ww.c create line $xpos0 $ybr $xpos1 $ybr -fill black -width $ctlt } else { for {set i 0} {$i < $ncolour} {incr i} { if {$xbr > $xtl1} { set colour $acolourscale($i) $ww.c create rectangle $xtl $ytl $xbr $ybr \ -outline "" -fill $colour } if {[expr {$i % ($ncolour / $nscale)}] == 0} { set xtext $xtl set v [expr {$min + $i * ($range / $dncolour)}] if {$top} { set ytext [expr {$ytl - $ctlt}] set top false $ww.c create text $xtext $ytext -font $plotfont -anchor s \ -text [format "$cformat " $v] } else { set ytext [expr {$ybr + $ctlt}] set top true $ww.c create text $xtext $ytext -font $plotfont -anchor n \ -text [format "$cformat " $v] } $ww.c create line $xtl $ytl $xtl $ybr -fill black -width $ctlt set xtl1 [expr {$xtl + (0.5 * $ctlt)}] update if {! [winfo exists $w]} { unset col qdimlist n acolourscale xdim ydim return } } set xtl [expr {$xtl + $xsize1}] set xbr [expr {$xbr + $xsize1}] } if {[expr {$i % ($ncolour / $nscale)}] == 0} { set xtext $xtl if {$top} { set ytext [expr {$ytl - $ctlt}] $ww.c create text $xtext $ytext -font $plotfont -anchor s \ -text [format "$cformat " $max] $ww.c create line $xbr $ytl $xbr $ybr -fill black -width $ctlt } else { set ytext [expr {$ybr + $ctlt}] $ww.c create text $xtext $ytext -font $plotfont -anchor n \ -text [format "$cformat " $max] $ww.c create line $xtl $ytl $xtl $ybr -fill black -width $ctlt } } set xpos1 [expr {$xtl + (0.5 * $ctlt)}] $ww.c create line $xpos0 $ytl $xpos1 $ytl -fill black -width $ctlt $ww.c create line $xpos0 $ybr $xpos1 $ybr -fill black -width $ctlt } update $ww configure -cursor $cursor $ww.c configure -cursor $cursor unset col qdimlist n xdim ydim if {$plottype != "image"} {unset acolourscale} } } proc get_pos {inum a n size range} { upvar $a dim if {$n == 1} { set pos $size } elseif {$inum == 0} { set pos [expr {0.5 * $size * ($dim(0) - $dim(1)) / $range}] } elseif {$inum == [expr {$n - 1}]} { set pos [expr {0.5 * $size * ($dim([expr {$n - 2}]) - \ $dim([expr {$n - 1}])) / $range}] } else { set pos [expr {0.5 * $size * ($dim([expr {$inum - 1}]) - \ $dim([expr {$inum + 1}])) / $range}] } return $pos } # proc saveps {canvas {filename ""}} { if {$filename != ""} { busy {$canvas postscript -file $filename -rotate yes} puts "\nPlot saved as postscript file $filename\n" } else { errorbox "Please enter name of Postscript file" } } proc savebox {canvas} { global HOMEDIR psdirName filter psfileName set w .savebox catch {destroy $w} toplevel $w wm title $w "Save as Postscript" setupicon $w "Save" xconv_icon xconv_icon_m cd $HOMEDIR set ww $w.frame frame $ww -relief flat -borderwidth 8 pack $ww -side left -fill both -expand yes label $ww.file -wraplength 4i -justify left \ -text "Entry postscript filename:" if {! [info exists psfileName]} {set psfileName ""} entry $ww.fileName -width 30 -textvariable psfileName bind $ww.fileName "saveps $canvas \$psfileName" label $ww.dirLabel -text "Directory:" entry $ww.dirName -width 30 -textvariable psdirName bind $ww.dirName "set psdirName \[loadDir $ww.f.list \$psdirName\]" frame $ww.spacer1 -height 2m -width 20 label $ww.filterLabel -text "Filter:" set filter ".* *" entry $ww.filter -width 30 -textvariable filter bind $ww.filter "set psdirName \[loadDir $ww.f.list \$psdirName\]" frame $ww.spacer2 -height 2m -width 20 label $ww.fileLabel -text "Files:" frame $ww.spacer3 -height 2m -width 20 frame $ww.f pack $ww.file $ww.fileName $ww.dirLabel $ww.dirName $ww.spacer1 \ $ww.filterLabel $ww.filter $ww.spacer2 $ww.fileLabel \ -side top -anchor w -fill x -expand yes pack $ww.f -side top -anchor w -fill both -expand yes pack $ww.spacer3 -side top -anchor w -fill x -expand yes listbox $ww.f.list -width 20 -height 10 -selectmode extended \ -selectborderwidth 2 -exportselection no \ -yscrollcommand "$ww.f.yscroll set" yscrollbar $ww.f.yscroll $ww.f.list pack $ww.f.list -side left -fill both -expand yes set psdirName [loadDir $ww.f.list $psdirName] bind $ww.f.list { set psfileName [getname %W [%W index @%x,%y] $psfileName] } frame $ww.buttons -relief groove -borderwidth 4 pack $ww.buttons -side bottom -fill x button $ww.buttons.save -width 8 -text Save \ -command "saveps $canvas \$psfileName" button $ww.buttons.update -width 8 -text Update \ -command "set psdirName \[loadDir $ww.f.list \$psdirName\]" button $ww.buttons.dismiss -width 8 -text Dismiss -command "destroy $w" pack $ww.buttons.save $ww.buttons.update $ww.buttons.dismiss \ -side left -expand yes } # proc getname {w index psfile} { global psdirName set psdirName [noslash $psdirName] set file $psdirName/[$w get $index] if {[file isdirectory $file]} { cd $file set psdirName [loadDir $w [pwd]] set file $psfile } return [file tail $file] } proc getcolourscale {acolourscale} { upvar $acolourscale a set a(0) #0007ff ; set a(1) #000eff ; set a(2) #0017ff ; set a(3) #001dff set a(4) #0026ff ; set a(5) #002dff ; set a(6) #0036ff ; set a(7) #003dff set a(8) #0044ff ; set a(9) #004dff ; set a(10) #0054ff ; set a(11) #005bff set a(12) #0064ff ; set a(13) #006bff ; set a(14) #0072ff ; set a(15) #007bff set a(16) #0082ff ; set a(17) #008aff ; set a(18) #0092ff ; set a(19) #009aff set a(20) #00a1ff ; set a(21) #00aaff ; set a(22) #00b1ff ; set a(23) #00b8ff set a(24) #00c1ff ; set a(25) #00c8ff ; set a(26) #00cfff ; set a(27) #00d8ff set a(28) #00dfff ; set a(29) #00e6ff ; set a(30) #00efff ; set a(31) #00f6ff set a(32) #00ffff ; set a(33) #00fff6 ; set a(34) #00ffef ; set a(35) #00ffe6 set a(36) #00ffdf ; set a(37) #00ffd8 ; set a(38) #00ffcf ; set a(39) #00ffc8 set a(40) #00ffc1 ; set a(41) #00ffb8 ; set a(42) #00ffb1 ; set a(43) #00ffaa set a(44) #00ffa1 ; set a(45) #00ff9a ; set a(46) #00ff92 ; set a(47) #00ff8a set a(48) #00ff82 ; set a(49) #00ff7b ; set a(50) #00ff72 ; set a(51) #00ff6b set a(52) #00ff64 ; set a(53) #00ff5b ; set a(54) #00ff54 ; set a(55) #00ff4d set a(56) #00ff44 ; set a(57) #00ff3d ; set a(58) #00ff36 ; set a(59) #00ff2d set a(60) #00ff26 ; set a(61) #00ff1d ; set a(62) #00ff17 ; set a(63) #00ff0e set a(64) #00ff07 ; set a(65) #00ff00 ; set a(66) #07ff00 ; set a(67) #0eff00 set a(68) #17ff00 ; set a(69) #1dff00 ; set a(70) #26ff00 ; set a(71) #2dff00 set a(72) #36ff00 ; set a(73) #3dff00 ; set a(74) #44ff00 ; set a(75) #4dff00 set a(76) #54ff00 ; set a(77) #5bff00 ; set a(78) #64ff00 ; set a(79) #6bff00 set a(80) #72ff00 ; set a(81) #7bff00 ; set a(82) #82ff00 ; set a(83) #8aff00 set a(84) #92ff00 ; set a(85) #9aff00 ; set a(86) #a1ff00 ; set a(87) #aaff00 set a(88) #b1ff00 ; set a(89) #b8ff00 ; set a(90) #c1ff00 ; set a(91) #c8ff00 set a(92) #cfff00 ; set a(93) #d8ff00 ; set a(94) #dfff00 ; set a(95) #e6ff00 set a(96) #efff00 ; set a(97) #f6ff00 ; set a(98) #ffff00 ; set a(99) #fff900 set a(100) #fff400 ; set a(101) #ffef00 ; set a(102) #ffe900 set a(103) #ffe400 ; set a(104) #ffdf00 ; set a(105) #ffda00 set a(106) #ffd400 ; set a(107) #ffcf00 ; set a(108) #ffca00 set a(109) #ffc600 ; set a(110) #ffc100 ; set a(111) #ffbc00 set a(112) #ffb600 ; set a(113) #ffb100 ; set a(114) #ffac00 set a(115) #ffa700 ; set a(116) #ffa100 ; set a(117) #ff9c00 set a(118) #ff9700 ; set a(119) #ff9200 ; set a(120) #ff8c00 set a(121) #ff8700 ; set a(122) #ff8200 ; set a(123) #ff7e00 set a(124) #ff7900 ; set a(125) #ff7200 ; set a(126) #ff6e00 set a(127) #ff6900 ; set a(128) #ff6400 ; set a(129) #ff5f00 set a(130) #ff5900 ; set a(131) #ff5400 ; set a(132) #ff5200 set a(133) #ff4f00 ; set a(134) #ff4d00 ; set a(135) #ff4900 set a(136) #ff4800 ; set a(137) #ff4400 ; set a(138) #ff4200 set a(139) #ff3f00 ; set a(140) #ff3d00 ; set a(141) #ff3b00 set a(142) #ff3800 ; set a(143) #ff3600 ; set a(144) #ff3300 set a(145) #ff2f00 ; set a(146) #ff2d00 ; set a(147) #ff2a00 set a(148) #ff2800 ; set a(149) #ff2600 ; set a(150) #ff2300 set a(151) #ff2100 ; set a(152) #ff1d00 ; set a(153) #ff1c00 set a(154) #ff1800 ; set a(155) #ff1700 ; set a(156) #ff1400 set a(157) #ff1100 ; set a(158) #ff0e00 ; set a(159) #ff0b00 set a(160) #ff0a00 ; set a(161) #ff0700 ; set a(162) #ff0400 set a(163) #ff0200 ; set a(164) #ff0000 ; set a(165) #f90000 set a(166) #f40000 ; set a(167) #ef0000 ; set a(168) #eb0000 set a(169) #e60000 ; set a(170) #e10000 ; set a(171) #dd0000 set a(172) #d80000 ; set a(173) #d30000 ; set a(174) #cd0000 set a(175) #ca0000 ; set a(176) #c40000 ; set a(177) #bf0000 set a(178) #ba0000 ; set a(179) #b60000 ; set a(180) #b10000 set a(181) #ac0000 ; set a(182) #a80000 ; set a(183) #a30000 set a(184) #9e0000 ; set a(185) #990000 ; set a(186) #950000 set a(187) #900000 ; set a(188) #8a0000 ; set a(189) #850000 set a(190) #800000 ; set a(191) #7c0000 ; set a(192) #770000 set a(193) #720000 ; set a(194) #6e0000 ; set a(195) #690000 set a(196) #640000 ; set a(197) #600000 ; set a(198) #620004 set a(199) #64000a ; set a(200) #67000e ; set a(201) #690014 set a(202) #6b001a ; set a(203) #6e001f ; set a(204) #700023 set a(205) #720028 ; set a(206) #75002f ; set a(207) #770034 set a(208) #7b0038 ; set a(209) #7c003d ; set a(210) #800042 set a(211) #820049 ; set a(212) #85004d ; set a(213) #870052 set a(214) #890057 ; set a(215) #8c005d ; set a(216) #8e0062 set a(217) #900067 ; set a(218) #93006d ; set a(219) #950072 set a(220) #970077 ; set a(221) #9a007c ; set a(222) #9c0082 set a(223) #a00087 ; set a(224) #a1008c ; set a(225) #a50092 set a(226) #a70097 ; set a(227) #aa009c ; set a(228) #ac00a1 set a(229) #ae00a7 ; set a(230) #b100ac ; set a(231) #b300b1 set a(232) #b600b6 ; set a(233) #b800bc } proc openbox {} { global HOMEDIR dirName filter filetype set w .openbox catch {destroy $w} toplevel $w wm title $w "Open files" setupicon $w "Open" xconv_icon xconv_icon_m cd $HOMEDIR set ww $w.frame frame $ww pack $ww -side top -fill both -expand yes set ww0 $w.frame.w0 frame $ww0 -borderwidth 0 pack $ww0 -side top -fill both -expand yes set ww1 $ww0.w1 frame $ww1 -relief flat -borderwidth 6 pack $ww1 -side left -fill both -expand yes set ww2 $ww0.w2 frame $ww2 -relief flat -borderwidth 6 pack $ww2 -side right -fill both -expand yes set ww3 $w.frame.w3 frame $ww3 -relief flat -borderwidth 6 pack $ww3 -side bottom -fill both -expand yes label $ww1.msg -wraplength 4i -justify left \ -text "Select file to open" pack $ww1.msg -side top label $ww1.dirLabel -text "Directory:" entry $ww1.dirName -width 30 -textvariable dirName bind $ww1.dirName "set dirName \[loadDir $ww1.f.list \$dirName\]" frame $ww1.spacer1 -height 2m -width 20 label $ww1.filterLabel -text "Filter:" entry $ww1.filter -width 30 -textvariable filter bind $ww1.filter "set dirName \[loadDir $ww1.f.list \$dirName\]" frame $ww1.spacer2 -height 2m -width 20 label $ww1.fileLabel -text "Files:" frame $ww1.spacer3 -height 2m -width 20 frame $ww1.f pack $ww1.dirLabel $ww1.dirName $ww1.spacer1 $ww1.filterLabel $ww1.filter \ $ww1.spacer2 $ww1.fileLabel -side top -anchor w -fill x \ -expand yes pack $ww1.f -side top -anchor w -fill both -expand yes pack $ww1.spacer3 -side top -anchor w -fill x -expand yes listbox $ww1.f.list -width 20 -height 10 -selectmode extended \ -selectborderwidth 2 -exportselection no \ -yscrollcommand "$ww1.f.yscroll set" yscrollbar $ww1.f.yscroll $ww1.f.list pack $ww1.f.list -side left -fill both -expand yes set dirName [loadDir $ww1.f.list $dirName] bind $ww1.f.list {openfile %W [%W index @%x,%y]} label $ww2.msg -wraplength 4i -justify left -text "Select file type" pack $ww2.msg -side top label $ww2.label -text "" pack $ww2.label -side top -anchor w -fill x -expand yes set rbwidth 43 radiobutton $ww2.auto -text "Automatic" -variable filetype \ -value 0 -anchor w -width $rbwidth radiobutton $ww2.um1 -text "UM format (Cray)" -variable filetype \ -value 165 -anchor w -width $rbwidth radiobutton $ww2.um2 -text "UM format (32 bit IEEE)" -variable filetype \ -value 1 -anchor w -width $rbwidth radiobutton $ww2.um3 -text "UM format (64 bit IEEE)" -variable filetype \ -value 65 -anchor w -width $rbwidth radiobutton $ww2.um4 -text "UM format (32 bit IEEE byte swapped)" \ -variable filetype -value 201 -anchor w -width $rbwidth radiobutton $ww2.um5 -text "UM format (64 bit IEEE byte swapped)" \ -variable filetype -value 265 -anchor w -width $rbwidth radiobutton $ww2.pp1 -text "PP format (32 bit IEEE)" -variable filetype \ -value 2 -anchor w -width $rbwidth radiobutton $ww2.pp2 -text "PP format (64 bit IEEE)" -variable filetype \ -value 66 -anchor w -width $rbwidth radiobutton $ww2.pp3 -text "PP format (32 bit IEEE byte swapped)" -variable filetype \ -value 202 -anchor w -width $rbwidth radiobutton $ww2.pp4 -text "PP format (64 bit IEEE byte swapped)" -variable filetype \ -value 266 -anchor w -width $rbwidth radiobutton $ww2.pp5 -text "PP format (64 bit Real 32 bit Integer IEEE)" \ -variable filetype -value 34 -anchor w -width $rbwidth radiobutton $ww2.pp6 -text "PP format (Cray blocked Cray)" \ -variable filetype -value 166 -anchor w -width $rbwidth radiobutton $ww2.pp7 -text "PP format (Cray blocked 64 bit IEEE)" \ -variable filetype -value 167 -anchor w -width $rbwidth radiobutton $ww2.grib1 -text "GRIB format (unblocked)" -variable filetype \ -value 3 -anchor w -width $rbwidth radiobutton $ww2.grib2 -text "GRIB format (Cray blocked)" -variable filetype\ -value 4 -anchor w -width $rbwidth radiobutton $ww2.drs1 -text "Drs format" -variable filetype \ -value 5 -anchor w -width $rbwidth radiobutton $ww2.netcdf1 -text "Netcdf format" -variable filetype \ -value 7 -anchor w -width $rbwidth radiobutton $ww2.grads1 -text "Grads format" -variable filetype \ -value 8 -anchor w -width $rbwidth pack $ww2.auto $ww2.um1 $ww2.um2 $ww2.um3 $ww2.um4 $ww2.um5 $ww2.pp1 \ $ww2.pp2 $ww2.pp3 $ww2.pp4 $ww2.pp5 $ww2.pp6 $ww2.pp7 $ww2.grib1 \ $ww2.grib2 $ww2.netcdf1 $ww2.drs1 $ww2.grads1 \ -side top -expand yes -fill both frame $ww2.spacer2 -height 2m -width 20 pack $ww2.spacer2 -side top -anchor w -fill x -expand yes frame $ww3.buttons -relief groove -borderwidth 4 pack $ww3.buttons -side bottom -fill x button $ww3.buttons.load -width 8 -text Load \ -command "openfile $ww1.f.list \[$ww1.f.list curselection\]" button $ww3.buttons.update -width 8 -text Update \ -command "set dirName \[loadDir $ww1.f.list \$dirName\]" button $ww3.buttons.dismiss -width 8 -text Dismiss -command "destroy $w" pack $ww3.buttons.load $ww3.buttons.update $ww3.buttons.dismiss \ -side left -expand yes } # proc filetypebox {file} { global filetype set w .filetypebox catch {destroy $w} toplevel $w wm title $w "File Type" setupicon $w "File Type" xconv_icon xconv_icon_m set ww $w.frame frame $ww -relief flat -borderwidth 8 pack $ww -side left -fill both -expand yes message $ww.mess -width 300 -justify left \ -text "$file cannot be read, please reselect file type from below." frame $ww.spacer1 -height 2m -width 20 pack $ww.mess $ww.spacer1 -fill x -expand no set rbwidth 43 radiobutton $ww.auto -text "Automatic" -variable filetype \ -value 0 -anchor w -width $rbwidth radiobutton $ww.um1 -text "UM format (Cray)" -variable filetype \ -value 165 -anchor w -width $rbwidth radiobutton $ww.um2 -text "UM format (32 bit IEEE)" -variable filetype \ -value 1 -anchor w -width $rbwidth radiobutton $ww.um3 -text "UM format (64 bit IEEE)" -variable filetype \ -value 65 -anchor w -width $rbwidth radiobutton $ww.um4 -text "UM format (32 bit IEEE byte swapped)" \ -variable filetype -value 201 -anchor w -width $rbwidth radiobutton $ww.um5 -text "UM format (64 bit IEEE byte swapped)" \ -variable filetype -value 265 -anchor w -width $rbwidth radiobutton $ww.pp1 -text "PP format (32 bit IEEE)" -variable filetype \ -value 2 -anchor w -width $rbwidth radiobutton $ww.pp2 -text "PP format (64 bit IEEE)" -variable filetype \ -value 66 -anchor w -width $rbwidth radiobutton $ww.pp3 -text "PP format (32 bit IEEE byte swapped)" -variable filetype \ -value 202 -anchor w -width $rbwidth radiobutton $ww.pp4 -text "PP format (64 bit IEEE byte swapped)" -variable filetype \ -value 266 -anchor w -width $rbwidth radiobutton $ww.pp5 -text "PP format (64 bit Real 32 bit Integer IEEE)" \ -variable filetype -value 34 -anchor w -width $rbwidth radiobutton $ww.pp6 -text "PP format (Cray blocked Cray)" \ -variable filetype -value 166 -anchor w -width $rbwidth radiobutton $ww.pp7 -text "PP format (Cray blocked 64 bit IEEE)" \ -variable filetype -value 167 -anchor w -width $rbwidth radiobutton $ww.grib1 -text "GRIB format (unblocked)" -variable filetype \ -value 3 -anchor w -width $rbwidth radiobutton $ww.grib2 -text "GRIB format (Cray blocked)" -variable filetype \ -value 4 -anchor w -width $rbwidth radiobutton $ww.drs1 -text "Drs format" -variable filetype \ -value 5 -anchor w -width $rbwidth radiobutton $ww.netcdf1 -text "Netcdf format" -variable filetype \ -value 7 -anchor w -width $rbwidth radiobutton $ww.grads1 -text "Grads format" -variable filetype \ -value 8 -anchor w -width $rbwidth pack $ww.auto $ww.um1 $ww.um2 $ww.um3 $ww.um4 $ww.um5 \ $ww.pp1 $ww.pp2 $ww.pp3 $ww.pp4 $ww.pp5 $ww.pp6 $ww.pp7 \ $ww.grib1 $ww.grib2 $ww.netcdf1 $ww.drs1 $ww.grads1 \ -side top -expand yes -fill both frame $ww.spacer2 -height 2m -width 20 pack $ww.spacer2 -fill x -expand yes frame $ww.but -relief groove -borderwidth 4 pack $ww.but -fill x -expand yes button $ww.but.ok -width 8 -text OK \ -command "if {\$filetype == \"\"} \"destroy $w\" \ else \"readfile1 \$filetype $file\"" button $ww.but.dismiss -width 8 -text Dismiss -command "destroy $w" pack $ww.but.dismiss $ww.but.ok -side left -expand yes tkwait visibility $w grab set $w } # proc openfile {w index} { global dirName filetype set chdir 0 set update 0 set dirName [noslash $dirName] foreach i $index { set file $dirName/[$w get $i] if {[file isdirectory $file]} { set newdir $file set chdir 1 } else { readfile1 $filetype $file set update 1 } } if {$update} {updatelist} if {$chdir} { cd $newdir set dirName [loadDir $w [pwd]] } } # proc help {} { } # proc delete {fieldlist} { set len [llength $fieldlist] if {$len == 0} {return} set n 0 foreach i $fieldlist { delhead [expr {$i - $n}] incr n } updatelist .list see [expr {[lindex $fieldlist [expr {$len -1}]] - $n - 1}] } # proc copy {fieldlist} { set len [llength $fieldlist] if {$len == 0} {return} foreach i $fieldlist { copyhead $i } updatelist foreach i $fieldlist { .list selection set $i } } proc selectall {} { global field dim rightbox if {$rightbox == "dim" && [info exists field] && [info exists dim]} { .select selection set 0 end } } proc reset {} { global field dim rightbox foregroundcolour disablecolour if {$rightbox == "dim" && [info exists field] && [info exists dim]} { set select [getdim $dim $field] if {[lindex $select 0] < 0} {set select ""} .select selection clear 0 end foreach i $select { .select selection set $i $i } .qmenu configure -foreground $foregroundcolour -state normal .qlook configure -foreground $foregroundcolour -state normal .qplot configure -foreground $foregroundcolour -state normal .convert configure -foreground $foregroundcolour -state normal } elseif {$rightbox == "trans" && [info exists field]} { rmtrans $field updatefield $field field_info trans_clear trans_info } elseif {$rightbox == "names" && [info exists field]} { names_info updatefield $field } } proc apply {} { global field dim rightbox trans foregroundcolour disablecolour global nspec nx x0 dx ny y0 dy xpole ypole global gridtype miss pole lsm precip1 precip2 minnbr global field desc lname sname stdname funit xtitle xunit global ytitle yunit ztitle zunit ttitle tunit if {$rightbox == "dim" && [info exists field] && [info exists dim]} { setdim $dim $field [.select curselection] .qmenu configure -foreground $foregroundcolour -state normal .qlook configure -foreground $foregroundcolour -state normal .qplot configure -foreground $foregroundcolour -state normal .convert configure -foreground $foregroundcolour -state normal } elseif {$rightbox == "trans" && [info exists field]} { if {$trans == 0} { spectrunc $field $nspec } elseif {$trans == 1} { spec2grid $field $nx $x0 $dx $ny $y0 $dy $gridtype } elseif {$trans == 2 || $trans == 3} { set interp [expr {$trans - 1}] grid2grid $field $nx $x0 $dx $ny $y0 $dy $xpole $ypole \ $gridtype $interp $miss $pole $lsm $precip1 $precip2 } elseif {$trans == 4} { editdim $field $x0 $dx $y0 $dy $gridtype } elseif {$trans == 5} { mean $field 0 } elseif {$trans == 6} { mean $field 1 } elseif {$trans == 7} { delm2 $field } elseif {$trans == 8} { extrap $field $minnbr } updatefield $field field_info trans_info } elseif {$rightbox == "names" && [info exists field]} { setvar $field title $desc setvar $field ftitle2 $lname setvar $field ftitle1 $sname setvar $field standard_name $stdname setvar $field funit $funit setvar $field xtitle $xtitle setvar $field xunit $xunit setvar $field ytitle $ytitle setvar $field yunit $yunit setvar $field ztitle $ztitle setvar $field zunit $zunit setvar $field ttitle $ttitle setvar $field tunit $tunit updatefield $field field_info } } # proc convert {fieldlist} { global startdir outfilename outformat INTERRUPT set len [llength $fieldlist] if {$len == 0} {return} if {$outfilename == ""} { errorbox "Output file name must be specified" } else { set char0 [string range $outfilename 0 0] if {$char0 != "/"} { set outfile $startdir/$outfilename } else { set outfile $outfilename } set INTERRUPT 0 set error [catch {busy {writefile $outformat $outfile $fieldlist} \ .quit} errormsg] if {$error} { errorbox $errormsg } } } proc sm_setup {} { global filter global smdirName_s smfilelist_s global smdirName smfilelist setup_reset sm_setup_reset att_setup_reset gatt_setup_reset set spacerht 1m set width1 60 set width2 13 set width3 10 set width4 20 set w .sm_setupbox catch {destroy $w} toplevel $w wm title $w "Select STASH Master files" setupicon $w "STASH" xconv_icon xconv_icon_m set ww $w.frame frame $ww -relief flat -borderwidth 6 pack $ww -side left -fill both -expand yes set ww0 $w.frame.w0 frame $ww0 -borderwidth 0 pack $ww0 -side top -fill both -expand yes set ww1 $ww0.w1 frame $ww1 -relief flat -borderwidth 6 pack $ww1 -side left -fill both -expand yes set ww2 $ww0.w2 frame $ww2 -relief flat -borderwidth 6 pack $ww2 -side right -fill both -expand yes set ww3 $w.frame.w3 frame $ww3 -relief flat -borderwidth 6 pack $ww3 -side bottom -fill both -expand no label $ww1.msg -wraplength 4i -justify left \ -text "Select STASH Master files" pack $ww1.msg -side top label $ww1.dirLabel -text "Directory:" entry $ww1.dirName -width 30 -textvariable smdirName_s bind $ww1.dirName "set smdirName_s \[loadDir $ww1.f.list \$smdirName_s\]" frame $ww1.spacer1 -height 2m -width 20 label $ww1.filterLabel -text "Filter:" entry $ww1.filter -width 30 -textvariable filter bind $ww1.filter "set smdirName_s \[loadDir $ww1.f.list \$smdirName_s\]" frame $ww1.spacer2 -height 2m -width 20 label $ww1.fileLabel -text "Files:" frame $ww1.f pack $ww1.dirLabel $ww1.dirName $ww1.spacer1 $ww1.filterLabel $ww1.filter \ $ww1.spacer2 $ww1.fileLabel -side top -anchor w -fill x \ -expand no pack $ww1.f -side top -anchor w -fill both -expand yes listbox $ww1.f.list -width 35 -height 25 -selectmode extended \ -selectborderwidth 2 -exportselection no \ -yscrollcommand "$ww1.f.yscroll set" yscrollbar $ww1.f.yscroll $ww1.f.list pack $ww1.f.list -side left -fill both -expand yes set smdirName_s [loadDir $ww1.f.list $smdirName_s] bind $ww1.f.list {smselect %W [%W index @%x,%y]} label $ww2.msg -wraplength 4i -justify left \ -text "Selected STASH Master files" pack $ww2.msg -side top frame $ww2.f pack $ww2.f -side top -anchor w -fill both -expand yes listbox $ww2.f.list -width 60 -height 10 -selectmode extended \ -selectborderwidth 2 -exportselection no \ -xscrollcommand "$ww2.f.xscroll.x set" \ -yscrollcommand "$ww2.f.yscroll.y set" xyscrollbar $ww2.f.xscroll $ww2.f.yscroll $ww2.f.list pack $ww2.f.list -side left -fill both -expand yes foreach file $smfilelist_s { $ww2.f.list insert end $file } frame $ww2.spacer1 -height 2m -width 20 pack $ww2.spacer1 -side top -fill x -expand no frame $ww2.buttons -relief groove -borderwidth 4 pack $ww2.buttons -side bottom -fill x button $ww2.buttons.add -width 8 -text Add \ -command "sm_setup_add $ww1.f.list $ww2.f.list" button $ww2.buttons.delete -width 8 -text Delete \ -command "sm_setup_delete $ww2.f.list" button $ww2.buttons.clear -width 8 -text Clear \ -command "sm_setup_clear $ww2.f.list" button $ww2.buttons.sort -width 8 -text Sort \ -command "sm_setup_sort $ww2.f.list" pack $ww2.buttons.add $ww2.buttons.delete $ww2.buttons.clear \ $ww2.buttons.sort -side left -expand yes frame $ww3.buttons -relief groove -borderwidth 4 pack $ww3.buttons -side bottom -fill x button $ww3.buttons.apply -width 8 -text Apply \ -command "sm_setup_apply $ww2.f.list" button $ww3.buttons.save -width 8 -text Save \ -command "sm_setup_apply $ww2.f.list ; setup_save" button $ww3.buttons.default -width 8 -text Default \ -command "sm_setup_default $ww1.f.list $ww2.f.list" button $ww3.buttons.reset -width 8 -text Reset \ -command "sm_setup_reset $ww1.f.list $ww2.f.list" button $ww3.buttons.dismiss -width 8 -text Dismiss -command "destroy $w" pack $ww3.buttons.apply $ww3.buttons.save $ww3.buttons.default \ $ww3.buttons.reset $ww3.buttons.dismiss -side left -expand yes } proc sm_setup_apply {sellist} { global smdirName_s smfilelist_s global smdirName smfilelist set smfilelist_s [$sellist get 0 end] getstashmaster $smfilelist_s swapum updatelist set smdirName $smdirName_s set smfilelist $smfilelist_s } proc sm_setup_default {sellist1 sellist2} { global smdirName_s smfilelist_s set smdirName_s ~ set smfilelist_s "" set smdirName_s [loadDir $sellist1 $smdirName_s] $sellist2 delete 0 end } proc sm_setup_reset {{sellist1 "none"} {sellist2 "none"}} { global smdirName_s smfilelist_s global smdirName smfilelist set smdirName_s $smdirName set smfilelist_s $smfilelist if {$sellist1 != "none"} { set smdirName_s [loadDir $sellist1 $smdirName_s] } if {$sellist2 != "none"} { $sellist2 delete 0 end foreach file $smfilelist_s { $sellist2 insert end $file } } } proc sm_setup_add {sellist1 sellist2} { global smdirName_s smfilelist_s set smlist [$sellist1 curselection] set len [llength $smlist] if {$len == 0} {return} foreach i $smlist { set file $smdirName_s/[$sellist1 get $i] $sellist2 insert end $file } set smfilelist_s [$sellist2 get 0 end] } proc sm_setup_delete {sellist} { global smfilelist_s set smlist [$sellist curselection] set len [llength $smlist] if {$len == 0} {return} set n 0 foreach i $smlist { $sellist delete [expr {$i - $n}] incr n } set smfilelist_s [$sellist get 0 end] } proc sm_setup_clear {sellist} { global smfilelist_s $sellist delete 0 end set smfilelist_s "" } proc sm_setup_sort {sellist} { global smfilelist_s set sortlist [lsort $smfilelist_s] set prev "" lappend uniqlist [lindex $sortlist 0] foreach smfile $sortlist { if {$prev != ""} { if {[string compare $smfile $prev] != 0} { lappend uniqlist $smfile } } set prev $smfile } set smfilelist_s $uniqlist $sellist delete 0 end foreach file $smfilelist_s { $sellist insert end $file } } proc smselect {w index} { global smdirName_s set chdir 0 set update 0 set smdirName_s [noslash $smdirName_s] regsub w1 $w w2 sel foreach i $index { set file $smdirName_s/[$w get $i] if {[file isdirectory $file]} { set newdir $file set chdir 1 } else { $sel insert end $file set update 1 } } if {$chdir} { cd $newdir set smdirName_s [loadDir $w [pwd]] } } proc att_setup {} { global varatt dimatt attmacro setup_reset sm_setup_reset att_setup_reset gatt_setup_reset set spacerht 1m set width1 60 set width2 13 set width3 10 set width4 20 set w .att_setupbox catch {destroy $w} toplevel $w wm title $w "Setup NetCDF attributes" setupicon $w "Attributes" xconv_icon xconv_icon_m set ww $w.frame frame $ww -relief flat -borderwidth 6 pack $ww -side left -fill both -expand yes set ww0 $w.frame.w0 frame $ww0 -relief flat -borderwidth 6 pack $ww0 -side top -fill both -expand no set ww1 $w.frame.w1 frame $ww1 -borderwidth 0 pack $ww1 -side top -fill both -expand yes set ww2 $ww1.w2 frame $ww2 -relief flat -borderwidth 6 pack $ww2 -side left -fill both -expand yes set ww3 $ww1.w3 frame $ww3 -relief flat -borderwidth 6 pack $ww3 -side right -fill both -expand yes set ww4 $w.frame.w4 frame $ww4 -relief flat -borderwidth 6 pack $ww4 -side bottom -fill both -expand no label $ww0.msg1 -wraplength 4i -justify left \ -text "Setup NetCDF attributes" pack $ww0.msg1 -side top frame $ww0.spacer1 -height $spacerht -width 20 pack $ww0.spacer1 -side top -anchor w -fill x -expand no set attmacro none label $ww0.msg2 -wraplength 4i -justify left \ -text "Select package attributes: " pack $ww0.msg2 -side left radiobutton $ww0.rb0 -text "none" -variable attmacro -value none \ -anchor w -width 6 radiobutton $ww0.rb1 -text "vcs" -variable attmacro -value vcs \ -anchor w -width 6 -command att_setup_vcs_default radiobutton $ww0.rb2 -text "ferret" -variable attmacro -value ferret \ -anchor w -width 6 -command att_setup_ferret_default pack $ww0.rb0 $ww0.rb1 $ww0.rb2 -side left -anchor w label $ww2.msg -wraplength 4i -justify left \ -text "Variable attributes" pack $ww2.msg -side top frame $ww2.spacer2 -height $spacerht -width 20 pack $ww2.spacer2 -side top -anchor w -fill x -expand no mkrb2att $ww2.frame1 "long_name:" var_long_name_s 1 0 mkrb2att $ww2.frame11 "short_name:" var_short_name_s 1 0 mkrb2att $ww2.frame16 "standard_name:" var_standard_name_s 0 1 mkrb2att $ww2.frame2 "units:" var_units_s 1 0 mkrb2att $ww2.frame3 "source:" var_source_s 1 0 mkrb2att $ww2.frame4 "title:" var_title_s 1 0 mkrb2att $ww2.frame5 "name:" var_name_s 1 0 mkrb2att $ww2.frame6 "date:" var_date_s 1 0 mkrb2att $ww2.frame7 "time:" var_time_s 1 0 mkrb2att $ww2.frame12 "axis:" var_axis_s 1 0 mkrb2att $ww2.frame8 "north_pole:" var_north_pole_s 1 1 mkrb2att $ww2.frame13 "valid_min:" var_valid_min_s 1 0 mkrb2att $ww2.frame14 "valid_max:" var_valid_max_s 1 0 mkrb2att $ww2.frame15 "valid_range:" var_valid_range_s 1 0 mkrb2att $ww2.frame9 "missing_value:" var_missing_value_s 1 0 mkrb2att $ww2.frame10 "_Fillvalue:" var__Fillvalue_s 1 0 label $ww3.msg -wraplength 4i -justify left \ -text "General dimension attributes" pack $ww3.msg -side top frame $ww3.spacer2 -height $spacerht -width 20 pack $ww3.spacer2 -side top -anchor w -fill x -expand no mkrb2att $ww3.frame2 "units:" dim_units_s 1 0 mkrb2att $ww3.frame3 "point_spacing:" dim_point_spacing_s 1 1 mkrb2att $ww3.frame4 "modulo:" dim_modulo_ferret_s 0 1 label $ww3.z -wraplength 4i -justify left -text "z dimension attributes only" pack $ww3.z -side top frame $ww3.spacer3 -height $spacerht -width 20 pack $ww3.spacer3 -side top -anchor w -fill x -expand no mkrb2att $ww3.frame5 "positive:" dim_positive_s 1 0 label $ww3.t -wraplength 4i -justify left -text "t dimension attributes only" pack $ww3.t -side top frame $ww3.spacer4 -height $spacerht -width 20 pack $ww3.spacer4 -side top -anchor w -fill x -expand no mkrb2att $ww3.frame6 "calendar:" dim_calendar_s 1 1 mkrb2att $ww3.frame7 "time_origin:" dim_time_origin_s 1 0 frame $ww4.f pack $ww4.f -side top -anchor w -fill both -expand yes frame $ww4.buttons -relief groove -borderwidth 4 pack $ww4.buttons -side bottom -fill x button $ww4.buttons.apply -width 8 -text Apply \ -command "att_setup_apply" button $ww4.buttons.save -width 8 -text Save \ -command "att_setup_apply ; setup_save" button $ww4.buttons.default -width 8 -text Default \ -command "att_setup_default" button $ww4.buttons.reset -width 8 -text Reset \ -command "att_setup_reset" button $ww4.buttons.dismiss -width 8 -text Dismiss -command "destroy $w" pack $ww4.buttons.apply $ww4.buttons.save $ww4.buttons.default \ $ww4.buttons.reset $ww4.buttons.dismiss -side left -expand yes } proc mkrb2att {win text var on cond} { global $var attmacro if {$text == "valid_min:"} { set command {set attmacro none ; set var_valid_range_s att_nouse} } elseif {$text == "valid_max:"} { set command {set attmacro none ; set var_valid_range_s att_nouse} } elseif {$text == "valid_range:"} { set command {set attmacro none ; set var_valid_min_s att_nouse ; set var_valid_max_s att_nouse} } else { set command {set attmacro none} } set spacerht 1m set width 6 frame $win pack $win -side top -ipady 1 -fill x label $win.label -text $text -anchor w radiobutton $win.rb1 -text "off" -variable $var \ -value att_nouse -anchor w -width $width \ -command $command if {$on} { radiobutton $win.rb2 -text "on" -variable $var \ -value att_use -anchor w -width $width \ -command $command } if {$cond} { radiobutton $win.rb3 -text "cond" -variable $var \ -value att_cond -anchor w -width $width \ -command $command } pack $win.label -side left -anchor w pack $win.rb1 -side right -anchor e if {$on} { pack $win.rb2 -side right -anchor e } if {$cond} { pack $win.rb3 -side right -anchor e } frame $win.spacer -height $spacerht -width 20 pack $win.spacer -side top -anchor w -fill x -expand yes } proc att_setup_apply {} { global varatt dimatt foreach var $varatt { set var1 var_${var} set var_s var_${var}_s global $var1 $var_s eval set var_s_val $$var_s setvaratt $var $var_s_val set $var1 $var_s_val } foreach dim $dimatt { set dim1 dim_${dim} set dim_s dim_${dim}_s global $dim1 $dim_s eval set dim_s_val $$dim_s setdimatt $dim $dim_s_val set $dim1 $dim_s_val } } proc att_setup_reset {} { global varatt dimatt attmacro set varatt "long_name units missing_value _Fillvalue source name title date time north_pole valid_min valid_max valid_range short_name axis standard_name" set dimatt "units point_spacing modulo_ferret month_lengths time_origin positive calendar" set attmacro none foreach var $varatt { set var1 var_$var set var_s var_${var}_s global $var1 $var_s set var_$var [getvaratt $var] eval set var1_val $$var1 set $var_s $var1_val } foreach dim $dimatt { set dim1 dim_$dim set dim_s dim_${dim}_s global $dim1 $dim_s set dim_$dim [getdimatt $dim] eval set dim1_val $$dim1 set $dim_s $dim1_val } } proc att_setup_default {} { global varatt dimatt attmacro set attmacro none foreach var $varatt { global var_${var}_s set var_${var}_s att_nouse } foreach dim $dimatt { global dim_${dim}_s set dim_${dim}_s att_nouse } set var_long_name_s att_use set var_units_s att_use set var_missing_value_s att_use set var__Fillvalue_s att_use set var_source_s att_use set var_name_s att_use set var_title_s att_use set var_date_s att_use set var_time_s att_use set var_north_pole_s att_cond set var_valid_min_s att_use set var_valid_max_s att_use set var_valid_range_s att_nouse set var_axis_s att_use set var_standard_name_s att_cond set dim_units_s att_use set dim_point_spacing_s att_cond set dim_modulo_ferret_s att_cond set dim_time_origin_s att_use set dim_positive_s att_use set dim_calendar_s att_cond } proc att_setup_vcs_default {} { global varatt dimatt foreach var $varatt { global var_${var}_s set var_${var}_s att_nouse } foreach dim $dimatt { global dim_${dim}_s set dim_${dim}_s att_nouse } set var_long_name_s att_use set var_units_s att_use set var_missing_value_s att_use set var__Fillvalue_s att_use set var_source_s att_use set var_name_s att_use set var_title_s att_use set var_date_s att_use set var_time_s att_use set var_north_pole_s att_cond set dim_units_s att_use set dim_positive_s att_use set dim_calendar_s att_cond } proc att_setup_ferret_default {} { global varatt dimatt foreach var $varatt { global var_${var}_s set var_${var}_s att_nouse } foreach dim $dimatt { global dim_${dim}_s set dim_${dim}_s att_nouse } set var_long_name_s att_use set var_units_s att_use set var_missing_value_s att_use set var__Fillvalue_s att_use set var_north_pole_s att_cond set dim_units_s att_use set dim_point_spacing_s att_cond set dim_modulo_ferret_s att_cond set dim_time_origin_s att_use set dim_positive_s att_use set dim_calendar_s att_cond } proc gatt_setup {} { global globatt setup_reset sm_setup_reset att_setup_reset gatt_setup_reset set spacerht 1m set width1 60 set width2 13 set width3 10 set width4 20 set w .gatt_setupbox catch {destroy $w} toplevel $w wm title $w "Setup Global NetCDF attributes" setupicon $w "Attributes" xconv_icon xconv_icon_m set ww $w.frame frame $ww -relief flat -borderwidth 6 pack $ww -side left -fill both -expand yes set ww0 $w.frame.w0 frame $ww0 -relief flat -borderwidth 6 pack $ww0 -side top -fill both -expand no set ww1 $w.frame.w1 frame $ww1 -borderwidth 0 pack $ww1 -side top -fill both -expand yes set ww2 $w.frame.w2 frame $ww2 -relief flat -borderwidth 6 pack $ww2 -side bottom -fill both -expand no label $ww0.msg1 -wraplength 4i -justify left \ -text "Setup Global NetCDF attributes" pack $ww0.msg1 -side top frame $ww0.spacer1 -height $spacerht -width 20 pack $ww0.spacer1 -side top -anchor w -fill x -expand no mkrb2gatt $ww1.frame1 "history:" glob_history_s 1 0 mkrb2gatt $ww1.frame2 "Conventions:" glob_Conventions_s 1 1 mkrb2gatt $ww1.frame3 "title:" glob_title_s 1 1 mkrb2gatt $ww1.frame4 "institution:" glob_institution_s 1 1 mkrb2gatt $ww1.frame5 "source:" glob_source_s 1 1 mkrb2gatt $ww1.frame6 "references:" glob_references_s 1 1 mkrb2gatt $ww1.frame7 "comment:" glob_comment_s 1 1 frame $ww2.f pack $ww2.f -side top -anchor w -fill both -expand yes frame $ww2.buttons -relief groove -borderwidth 4 pack $ww2.buttons -side bottom -fill x button $ww2.buttons.apply -width 8 -text Apply \ -command "gatt_setup_apply" button $ww2.buttons.save -width 8 -text Save \ -command "gatt_setup_apply ; setup_save" button $ww2.buttons.default -width 8 -text Default \ -command "gatt_setup_default" button $ww2.buttons.reset -width 8 -text Reset \ -command "gatt_setup_reset" button $ww2.buttons.dismiss -width 8 -text Dismiss -command "destroy $w" pack $ww2.buttons.apply $ww2.buttons.save $ww2.buttons.default \ $ww2.buttons.reset $ww2.buttons.dismiss -side left -expand yes } proc mkrb2gatt {win text var on off} { global disablecolour foregroundcolour global $var eval set var_val $$var regsub "_s$" $var "_text_s" text_s set spacerht 30 set width 6 frame $win pack $win -side top -ipady 1 -fill x label $win.label -text $text -anchor w entry $win.entry -textvariable $text_s -width 72 if {$var_val == "att_nouse"} { $win.entry configure -foreground $disablecolour -state disabled } else { $win.entry configure -foreground $foregroundcolour -state normal } if {$off} { radiobutton $win.rb1 -text "off" -variable $var \ -value att_nouse -anchor w -width $width \ -command "$win.entry configure -foreground $disablecolour -state disabled" } if {$on} { radiobutton $win.rb2 -text "on" -variable $var \ -value att_use -anchor w -width $width \ -command "$win.entry configure -foreground $foregroundcolour -state normal" } pack $win.label -side left -anchor w pack $win.entry -side right -anchor e if {$off} { pack $win.rb1 -side right -anchor e } if {$on} { pack $win.rb2 -side right -anchor e } frame $win.spacer -height $spacerht -width 20 pack $win.spacer -side top -anchor w -fill both -expand yes } proc gatt_setup_apply {} { global globatt foreach var $globatt { set var1 glob_${var} set var_s glob_${var}_s set text glob_${var}_text set text_s glob_${var}_text_s global $var1 $var_s $text $text_s eval set var_s_val $$var_s setglobatt $var $var_s_val set $var1 $var_s_val eval set text_s_val $$text_s set $text $text_s_val writeglobatt $var $text_s_val } } proc gatt_setup_reset {} { global globatt set globatt "history Conventions title institution source references comment" foreach var $globatt { set var1 glob_$var set var_s glob_${var}_s set text glob_${var}_text set text_s glob_${var}_text_s global $var1 $var_s $text $text_s set glob_$var [getglobatt $var] eval set var1_val $$var1 set $var_s $var1_val eval set text_val $$text set $text_s $text_val } } proc gatt_setup_default {} { global globatt foreach var $globatt { global glob_${var}_s glob_${var}_text_s set glob_${var}_s att_nouse set glob_${var}_text_s "" } set glob_history_s att_use } # proc setup {} { global cursor font plotfont scrollbarwidth global cursor_s font_s plotfont_s scrollbarwidth_s global foregroundcolour activeforegroundcolour backgroundcolour global foregroundcolour_s activeforegroundcolour_s backgroundcolour_s global activebackgroundcolour selectbackgroundcolour disablecolour global activebackgroundcolour_s selectbackgroundcolour_s disablecolour_s global redirout fixvcsbug byteswap64 initialoutputformat utfchars ncprec global redirout_s fixvcsbug_s byteswap64_s initialoutputformat_s utfchars_s ncprec_s global grotype red_gauss_conv umtime umtitle fieldtitle global grotype_s red_gauss_conv_s umtime_s umtitle_s fieldtitle_s setup_reset sm_setup_reset att_setup_reset gatt_setup_reset set spacerht 1m set width1 60 set width2 13 set width3 10 set width4 20 set w .setupbox catch {destroy $w} toplevel $w wm title $w "Setup xconv defaults" setupicon $w "Setup" xconv_icon xconv_icon_m set ww $w.frame frame $ww -relief flat -borderwidth 12 pack $ww -side left -fill both -expand yes set ww2 $ww.frame2 frame $ww2 pack $ww2 -side top -ipady 1 -fill x label $ww2.label -text "Font:" -anchor w entry $ww2.name -width $width1 -textvariable font_s pack $ww2.label -side left -anchor w pack $ww2.name -side right -anchor e frame $ww.spacer2 -height $spacerht -width 20 pack $ww.spacer2 -side top -anchor w -fill x -expand yes set ww3 $ww.frame3 frame $ww3 pack $ww3 -side top -ipady 1 -fill x label $ww3.label -text "Plot font:" -anchor w entry $ww3.name -width $width1 -textvariable plotfont_s pack $ww3.label -side left -anchor w pack $ww3.name -side right -anchor e frame $ww.spacer3 -height $spacerht -width 20 pack $ww.spacer3 -side top -anchor w -fill x -expand yes set ww1 $ww.frame1 frame $ww1 pack $ww1 -side top -ipady 1 -fill x label $ww1.label -text "Cursor:" -anchor w entry $ww1.name -width $width2 -textvariable cursor_s pack $ww1.label -side left -anchor w pack $ww1.name -side right -anchor e frame $ww.spacer1 -height $spacerht -width 20 pack $ww.spacer1 -side top -anchor w -fill x -expand yes set ww4 $ww.frame4 frame $ww4 pack $ww4 -side top -ipady 1 -fill x label $ww4.label -text "Scrollbar width:" -anchor w entry $ww4.name -width $width2 -textvariable scrollbarwidth_s pack $ww4.label -side left -anchor w pack $ww4.name -side right -anchor e frame $ww.spacer4 -height $spacerht -width 20 pack $ww.spacer4 -side top -anchor w -fill x -expand yes set ww5 $ww.frame5 frame $ww5 pack $ww5 -side top -ipady 1 -fill x label $ww5.label -text "Foreground colour:" -anchor w entry $ww5.name -width $width2 -textvariable foregroundcolour_s pack $ww5.label -side left -anchor w pack $ww5.name -side right -anchor e frame $ww.spacer5 -height $spacerht -width 20 pack $ww.spacer5 -side top -anchor w -fill x -expand yes set ww6 $ww.frame6 frame $ww6 pack $ww6 -side top -ipady 1 -fill x label $ww6.label -text "Active foreground colour:" -anchor w entry $ww6.name -width $width2 -textvariable activeforegroundcolour_s pack $ww6.label -side left -anchor w pack $ww6.name -side right -anchor e frame $ww.spacer6 -height $spacerht -width 20 pack $ww.spacer6 -side top -anchor w -fill x -expand yes set ww7 $ww.frame7 frame $ww7 pack $ww7 -side top -ipady 1 -fill x label $ww7.label -text "Background colour:" -anchor w entry $ww7.name -width $width2 -textvariable backgroundcolour_s pack $ww7.label -side left -anchor w pack $ww7.name -side right -anchor e frame $ww.spacer7 -height $spacerht -width 20 pack $ww.spacer7 -side top -anchor w -fill x -expand yes set ww8 $ww.frame8 frame $ww8 pack $ww8 -side top -ipady 1 -fill x label $ww8.label -text "Active background colour:" -anchor w entry $ww8.name -width $width2 -textvariable activebackgroundcolour_s pack $ww8.label -side left -anchor w pack $ww8.name -side right -anchor e frame $ww.spacer8 -height $spacerht -width 20 pack $ww.spacer8 -side top -anchor w -fill x -expand yes set ww9 $ww.frame9 frame $ww9 pack $ww9 -side top -ipady 1 -fill x label $ww9.label -text "Select background colour:" -anchor w entry $ww9.name -width $width2 -textvariable selectbackgroundcolour_s pack $ww9.label -side left -anchor w pack $ww9.name -side right -anchor e frame $ww.spacer9 -height $spacerht -width 20 pack $ww.spacer9 -side top -anchor w -fill x -expand yes set ww10 $ww.frame10 frame $ww10 pack $ww10 -side top -ipady 1 -fill x label $ww10.label -text "Disabled colour:" -anchor w entry $ww10.name -width $width2 -textvariable disablecolour_s pack $ww10.label -side left -anchor w pack $ww10.name -side right -anchor e frame $ww.spacer10 -height $spacerht -width 20 pack $ww.spacer10 -side top -anchor w -fill x -expand yes set ww13 $ww.frame13 frame $ww13 pack $ww13 -side top -ipady 1 -fill x label $ww13.label -text "Number of characters used in utf packing:" -anchor w entry $ww13.name -width $width2 -textvariable utfchars_s pack $ww13.label -side left -anchor w pack $ww13.name -side right -anchor e frame $ww.spacer13 -height $spacerht -width 20 pack $ww.spacer13 -side top -anchor w -fill x -expand yes set ww17 $ww.frame17 frame $ww17 pack $ww17 -side top -ipady 1 -fill x label $ww17.label -text "Netcdf output precision:" -anchor w radiobutton $ww17.rb1 -text "32 bit" -variable ncprec_s \ -value 32 -anchor w -width $width3 radiobutton $ww17.rb2 -text "64 bit" -variable ncprec_s \ -value 64 -anchor w -width $width3 pack $ww17.label -side left -anchor w pack $ww17.rb2 $ww17.rb1 -side right -anchor e frame $ww.spacer17 -height $spacerht -width 20 pack $ww.spacer17 -side top -anchor w -fill x -expand yes set ww19 $ww.frame19 frame $ww19 pack $ww19 -side top -ipady 1 -fill x label $ww19.label -text "Grads binary data type:" -anchor w radiobutton $ww19.rb1 -text "Stream" -variable grotype_s \ -value 0 -anchor w -width $width3 radiobutton $ww19.rb2 -text "Sequential" -variable grotype_s \ -value 1 -anchor w -width $width3 pack $ww19.label -side left -anchor w pack $ww19.rb2 $ww19.rb1 -side right -anchor e frame $ww.spacer19 -height $spacerht -width 20 pack $ww.spacer19 -side top -anchor w -fill x -expand yes set ww11 $ww.frame11 frame $ww11 pack $ww11 -side top -ipady 1 -fill x label $ww11.label -text "Redirect output to:" -anchor w radiobutton $ww11.rb1 -text "Xconv" -variable redirout_s \ -value true -anchor w -width $width3 radiobutton $ww11.rb2 -text "Terminal" -variable redirout_s \ -value false -anchor w -width $width3 pack $ww11.label -side left -anchor w pack $ww11.rb2 $ww11.rb1 -side right -anchor e frame $ww.spacer11 -height $spacerht -width 20 pack $ww.spacer11 -side top -anchor w -fill x -expand yes set ww20 $ww.frame20 frame $ww20 pack $ww20 -side top -ipady 1 -fill x label $ww20.label -text "Multiple sigma and eta coordinates by 1000?\n(workaround for vcs bug)" -anchor w -justify left radiobutton $ww20.rb1 -text "Yes" -variable fixvcsbug_s \ -value yes -anchor w -width $width3 radiobutton $ww20.rb2 -text "No" -variable fixvcsbug_s \ -value no -anchor w -width $width3 pack $ww20.label -side left -anchor w pack $ww20.rb2 $ww20.rb1 -side right -anchor e frame $ww.spacer20 -height $spacerht -width 20 pack $ww.spacer20 -side top -anchor w -fill x -expand yes set ww21 $ww.frame21 frame $ww21 pack $ww21 -side top -ipady 1 -fill x label $ww21.label -text "Has 64 bit ieee UM file been byte swapped?\n(Only needed if file contains 32 bit packed data)" -anchor w -justify left radiobutton $ww21.rb1 -text "Yes" -variable byteswap64_s \ -value yes -anchor w -width $width3 radiobutton $ww21.rb2 -text "No" -variable byteswap64_s \ -value no -anchor w -width $width3 pack $ww21.label -side left -anchor w pack $ww21.rb2 $ww21.rb1 -side right -anchor e frame $ww.spacer21 -height $spacerht -width 20 pack $ww.spacer21 -side top -anchor w -fill x -expand yes set ww12 $ww.frame12 frame $ww12 pack $ww12 -side top -ipady 1 -fill x label $ww12.label -text "Initial output format:" -anchor w radiobutton $ww12.rb1 -text "Netcdf" -variable initialoutputformat_s \ -value netcdf -anchor w -width $width3 radiobutton $ww12.rb2 -text "Drs" -variable initialoutputformat_s \ -value drs -anchor w -width $width3 radiobutton $ww12.rb3 -text "Grads" -variable initialoutputformat_s \ -value grads -anchor w -width $width3 radiobutton $ww12.rb4 -text "Utf" -variable initialoutputformat_s \ -value utf -anchor w -width $width3 pack $ww12.label -side left -anchor w pack $ww12.rb4 $ww12.rb3 $ww12.rb2 $ww12.rb1 -side right -anchor e frame $ww.spacer12 -height $spacerht -width 20 pack $ww.spacer12 -side top -anchor w -fill x -expand yes set ww14 $ww.frame14 frame $ww14 pack $ww14 -side top -ipady 1 -fill x label $ww14.label -text "Interpolation method for converting reduced \nGaussian GRIB data to full Gaussian GRIB data:" -anchor w -justify left radiobutton $ww14.rb1 -text "None" -variable red_gauss_conv_s \ -value 0 -anchor w -width $width3 radiobutton $ww14.rb2 -text "Linear" -variable red_gauss_conv_s \ -value 1 -anchor w -width $width3 radiobutton $ww14.rb3 -text "Cubic" -variable red_gauss_conv_s \ -value 3 -anchor w -width $width3 pack $ww14.label -side left -anchor w pack $ww14.rb3 $ww14.rb2 $ww14.rb1 -side right -anchor e frame $ww.spacer14 -height $spacerht -width 20 pack $ww.spacer14 -side top -anchor w -fill x -expand yes set ww18 $ww.frame18 frame $ww18 pack $ww18 -side top -ipady 1 -fill x label $ww18.label -text "UM ancillary file time dimension uses:" -anchor w radiobutton $ww18.rb1 -text "PP headers" -variable umtime_s \ -value pp -anchor w -width $width4 radiobutton $ww18.rb2 -text "Fixed length header" -variable umtime_s \ -value fixed -anchor w -width $width4 pack $ww18.label -side left -anchor w pack $ww18.rb2 $ww18.rb1 -side right -anchor e frame $ww.spacer18 -height $spacerht -width 20 pack $ww.spacer18 -side top -anchor w -fill x -expand yes set ww15 $ww.frame15 frame $ww15 pack $ww15 -side top -ipady 1 -fill x label $ww15.label -text "Long field title for UM data uses:" -anchor w radiobutton $ww15.rb1 -text "PP code" -variable umtitle_s \ -value pp -anchor w -width $width4 radiobutton $ww15.rb2 -text "STASH code" -variable umtitle_s \ -value stash -anchor w -width $width4 pack $ww15.label -side left -anchor w pack $ww15.rb2 $ww15.rb1 -side right -anchor e frame $ww.spacer15 -height $spacerht -width 20 pack $ww.spacer15 -side top -anchor w -fill x -expand yes set ww16 $ww.frame16 frame $ww16 pack $ww16 -side top -ipady 1 -fill x label $ww16.label -text "Field title uses:" -anchor w radiobutton $ww16.rb1 -text "Long names" -variable fieldtitle_s \ -value long -anchor w -width $width4 radiobutton $ww16.rb2 -text "Short names" -variable fieldtitle_s \ -value short -anchor w -width $width4 radiobutton $ww16.rb3 -text "Short and long names" -variable fieldtitle_s \ -value both -anchor w -width $width4 pack $ww16.label -side left -anchor w pack $ww16.rb3 $ww16.rb2 $ww16.rb1 -side right -anchor e frame $ww.spacer16 -height $spacerht -width 20 pack $ww.spacer16 -side top -anchor w -fill x -expand yes frame $ww.buttons -relief groove -borderwidth 4 pack $ww.buttons -side bottom -fill x button $ww.buttons.apply -width 8 -text Apply -command setup_apply button $ww.buttons.save -width 8 -text Save -command {setup_apply ; setup_save} button $ww.buttons.default -width 8 -text Default -command setup_default button $ww.buttons.reset -width 8 -text Reset -command setup_reset button $ww.buttons.dismiss -width 8 -text Dismiss -command "destroy $w" pack $ww.buttons.apply $ww.buttons.save $ww.buttons.default \ $ww.buttons.reset $ww.buttons.dismiss \ -side left -expand yes } proc setup_apply {} { global cursor font plotfont scrollbarwidth global cursor_s font_s plotfont_s scrollbarwidth_s global foregroundcolour activeforegroundcolour backgroundcolour global foregroundcolour_s activeforegroundcolour_s backgroundcolour_s global activebackgroundcolour selectbackgroundcolour disablecolour global activebackgroundcolour_s selectbackgroundcolour_s disablecolour_s global redirout fixvcsbug byteswap64 initialoutputformat utfchars ncprec global redirout_s fixvcsbug_s byteswap64_s initialoutputformat_s utfchars_s ncprec_s global grotype red_gauss_conv umtime umtitle fieldtitle global grotype_s red_gauss_conv_s umtime_s umtitle_s fieldtitle_s global fixvcs bswap64 umlong umdate fd if {$cursor != $cursor_s} { option add *cursor "$cursor_s" setoption "-cursor" $cursor $cursor_s } if {$font != $font_s} { option add *font "$font_s" setoption "-font" $font $font_s } if {$foregroundcolour != $foregroundcolour_s} { option add *foreground $foregroundcolour_s setoption "-fg" $foregroundcolour $foregroundcolour_s } if {$activeforegroundcolour != $activeforegroundcolour_s} { option add *activeforeground $activeforegroundcolour_s setoption "-activeforeground" $activeforegroundcolour \ $activeforegroundcolour_s } if {$backgroundcolour != $backgroundcolour_s} { option add *background $backgroundcolour_s setoption "-bg" $backgroundcolour $backgroundcolour_s } if {$activebackgroundcolour != $activebackgroundcolour_s} { option add *activebackground $activebackgroundcolour_s setoption "-activebackground" $activebackgroundcolour \ $activebackgroundcolour_s } if {$selectbackgroundcolour != $selectbackgroundcolour_s} { option add *selectbackground $selectbackgroundcolour_s setoption "-selectbackground" $selectbackgroundcolour \ $selectbackgroundcolour_s } if {$disablecolour != $disablecolour_s} { option add *disabledforeground $disablecolour_s setoption "-disabledforeground" $disablecolour $disablecolour_s setoption "-fg" $disablecolour $disablecolour_s } if {$redirout != $redirout_s} { if {$redirout_s} { window_output } else { terminal_output } } if {$fixvcsbug != $fixvcsbug_s} { if {$fixvcsbug_s == "yes"} { set vcsfix 1 } else { set vcsfix 0 } } if {$byteswap64 != $byteswap64_s} { if {$byteswap64_s == "yes"} { set bswap64 1 } else { set bswap64 0 } } if {$umtime != $umtime_s} { if {$umtime_s == "fixed"} { set umdate 1 } else { set umdate 0 } } if {$umtitle != $umtitle_s} { if {$umtitle_s == "stash"} { set umlong 1 } else { set umlong 0 } swapum updatelist } if {$fieldtitle != $fieldtitle_s} { set update true } else { set update false } set cursor $cursor_s set font $font_s set plotfont $plotfont_s set scrollbarwidth $scrollbarwidth_s set foregroundcolour $foregroundcolour_s set activeforegroundcolour $activeforegroundcolour_s set backgroundcolour $backgroundcolour_s set activebackgroundcolour $activebackgroundcolour_s set selectbackgroundcolour $selectbackgroundcolour_s set disablecolour $disablecolour_s set redirout $redirout_s set fixvcsbug $fixvcsbug_s set byteswap64 $byteswap64_s set initialoutputformat $initialoutputformat_s set utfchars $utfchars_s set ncprec $ncprec_s set grotype $grotype_s set red_gauss_conv $red_gauss_conv_s set umtime $umtime_s set umtitle $umtitle_s set fieldtitle $fieldtitle_s if {$update} { updatelist } } proc setup_save {} { global cursor_s font_s plotfont_s scrollbarwidth_s global foregroundcolour_s activeforegroundcolour_s backgroundcolour_s global activebackgroundcolour_s selectbackgroundcolour_s disablecolour_s global redirout_s fixvcsbug_s byteswap64_s initialoutputformat_s utfchars_s ncprec_s global grotype_s red_gauss_conv_s umtime_s umtitle_s fieldtitle_s global smdirName_s smfilelist_s global varatt dimatt globatt set XXXX "#### %%%%%%%%%%%%%%%% ---------------- %%%%%%%%%%%%%%%% ####" set xmark false set XCONV ~/.xconvrc set XCONVTEMP ~/.xconvrc_temp if {[file exists $XCONV]} { set fd1 [open $XCONVTEMP w] set fd2 [open $XCONV r] while {1} { gets $fd2 line if {$line == $XXXX} { set xmark true } elseif {[eof $fd2]} { break } elseif {$xmark} { puts $fd1 $line } } close $fd1 close $fd2 } set fd2 [open $XCONV w] puts $fd2 "#" puts $fd2 "# Xconv will use this file to override defaults" puts $fd2 "# \n" puts $fd2 "set cursor $cursor_s" puts $fd2 "set font $font_s" puts $fd2 "set plotfont $plotfont_s" puts $fd2 "set scrollbarwidth $scrollbarwidth_s" puts $fd2 "set foregroundcolour $foregroundcolour_s" puts $fd2 "set activeforegroundcolour $activeforegroundcolour_s" puts $fd2 "set backgroundcolour $backgroundcolour_s" puts $fd2 "set activebackgroundcolour $activebackgroundcolour_s" puts $fd2 "set selectbackgroundcolour $selectbackgroundcolour_s" puts $fd2 "set disablecolour $disablecolour_s" puts $fd2 "set redirout $redirout_s" puts $fd2 "set fixvcsbug $fixvcsbug_s" puts $fd2 "set byteswap64 $byteswap64_s" puts $fd2 "set initialoutputformat $initialoutputformat_s" puts $fd2 "set utfchars $utfchars_s" puts $fd2 "set ncprec $ncprec_s" puts $fd2 "set grotype $grotype_s" puts $fd2 "set red_gauss_conv $red_gauss_conv_s" puts $fd2 "set umtime $umtime_s" puts $fd2 "set umtitle $umtitle_s" puts $fd2 "set fieldtitle $fieldtitle_s" puts $fd2 "set smdirName $smdirName_s" puts $fd2 "set smfilelist \"" foreach smfile $smfilelist_s { puts $fd2 " $smfile" } puts $fd2 " \"" set var_use "" set var_nouse "" set var_cond "" foreach var $varatt { set var_s var_${var}_s global $var_s eval set var_s_val $$var_s if {$var_s_val == "att_use" } { set var_use "$var_use $var" } elseif {$var_s_val == "att_nouse" } { set var_nouse "$var_nouse $var" } elseif {$var_s_val == "att_cond" } { set var_cond "$var_cond $var" } } if {$var_use != ""} {puts $fd2 "catch \[setvaratt $var_use att_use\]"} if {$var_nouse != ""} {puts $fd2 "catch \[setvaratt $var_nouse att_nouse\]"} if {$var_cond != ""} {puts $fd2 "catch \[setvaratt $var_cond att_cond\]"} set dim_use "" set dim_nouse "" set dim_cond "" foreach dim $dimatt { set dim_s dim_${dim}_s global $dim_s eval set dim_s_val $$dim_s if {$dim_s_val == "att_use" } { set dim_use "$dim_use $dim" } elseif {$dim_s_val == "att_nouse" } { set dim_nouse "$dim_nouse $dim" } elseif {$dim_s_val == "att_cond" } { set dim_cond "$dim_cond $dim" } } if {$dim_use != ""} {puts $fd2 "catch \[setdimatt $dim_use att_use\]"} if {$dim_nouse != ""} {puts $fd2 "catch \[setdimatt $dim_nouse att_nouse\]"} if {$dim_cond != ""} {puts $fd2 "catch \[setdimatt $dim_cond att_cond\]"} set glob_use "" set glob_nouse "" foreach var $globatt { set var_s glob_${var}_s global $var_s eval set var_s_val $$var_s if {$var_s_val == "att_use" } { set glob_use "$glob_use $var" } elseif {$var_s_val == "att_nouse" } { set glob_nouse "$glob_nouse $var" } } if {$glob_use != ""} {puts $fd2 "catch \[setglobatt $glob_use att_use\]"} if {$glob_nouse != ""} {puts $fd2 "catch \[setglobatt $glob_nouse att_nouse\]"} foreach var $globatt { set text glob_${var}_text set text_s glob_${var}_text_s global $text $text_s eval set text_s_val $$text_s puts $fd2 "set $text \"$text_s_val\"" } puts $fd2 "\n# User additions should go below the following line" puts $fd2 $XXXX if {[file exists $XCONVTEMP]} { set fd1 [open $XCONVTEMP r] while {1} { gets $fd1 line if {[eof $fd1]} break puts $fd2 $line } close $fd1 file delete $XCONVTEMP } close $fd2 } proc setup_default {} { global cursor_s font_s plotfont_s scrollbarwidth_s global foregroundcolour_s activeforegroundcolour_s backgroundcolour_s global activebackgroundcolour_s selectbackgroundcolour_s disablecolour_s global redirout_s fixvcsbug_s byteswap64_s initialoutputformat_s utfchars_s grotype_s global ncprec_s red_gauss_conv_s umtime_s umtitle_s fieldtitle_s set cursor_s left_ptr set font_s -b&h-lucidatypewriter-medium-r-*-*-12-120-*-*-*-*-iso8859-1 set plotfont_s -*-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-* set scrollbarwidth_s 11 set foregroundcolour_s black set activeforegroundcolour_s black set backgroundcolour_s wheat set activebackgroundcolour_s #efefef set selectbackgroundcolour_s #bfdfff set disablecolour_s #a3a3a3 set redirout_s true set fixvcsbug_s yes set byteswap64_s no set initialoutputformat_s netcdf set utfchars_s 2 set ncprec_s 32 set grotype_s 0 set red_gauss_conv_s 1 set umtime_s fixed set umtitle_s stash set fieldtitle_s long } proc setup_reset {} { global cursor font plotfont scrollbarwidth global cursor_s font_s plotfont_s scrollbarwidth_s global foregroundcolour activeforegroundcolour backgroundcolour global foregroundcolour_s activeforegroundcolour_s backgroundcolour_s global activebackgroundcolour selectbackgroundcolour disablecolour global activebackgroundcolour_s selectbackgroundcolour_s disablecolour_s global redirout fixvcsbug byteswap64 initialoutputformat utfchars ncprec global redirout_s fixvcsbug_s byteswap64_s initialoutputformat_s utfchars_s ncprec_s global grotype red_gauss_conv umtime umtitle fieldtitle global grotype_s red_gauss_conv_s umtime_s umtitle_s fieldtitle_s set cursor_s $cursor set font_s $font set plotfont_s $plotfont set scrollbarwidth_s $scrollbarwidth set foregroundcolour_s $foregroundcolour set activeforegroundcolour_s $activeforegroundcolour set backgroundcolour_s $backgroundcolour set activebackgroundcolour_s $activebackgroundcolour set selectbackgroundcolour_s $selectbackgroundcolour set disablecolour_s $disablecolour set redirout_s $redirout set fixvcsbug_s $fixvcsbug set byteswap64_s $byteswap64 set initialoutputformat_s $initialoutputformat set utfchars_s $utfchars set ncprec_s $ncprec set grotype_s $grotype set red_gauss_conv_s $red_gauss_conv set umtime_s $umtime set umtitle_s $umtitle set fieldtitle_s $fieldtitle } proc setoption {opt oldval newval} { set list [winfo children .] while {$list != ""} { set next {} foreach w $list { set error [catch {$w cget $opt} val] if {$error == 0 && $val == $oldval} { $w configure $opt $newval } set next [concat $next [winfo children $w]] } set list $next } } proc window_output {} { global pipe_fd update set pipe [outwin] set pipe_fd [open $pipe r+] fileevent $pipe_fd readable { if {[eof $pipe_fd]} { catch {close $pipe_fd} return } gets $pipe_fd line .msg configure -state normal .msg insert end "$line\n" .msg yview end .msg configure -state disabled } } proc terminal_output {} { global pipe_fd update close $pipe_fd outterm } # proc clearlist {} { global dim field clearall .list delete 0 end set dim 0 .select delete 0 end .dimtitle configure -width 1 -text "" transboxoff .info configure -state normal .info delete 1.0 end .info configure -state disabled if {[info exists field]} {unset field} names_clear } # proc updatelist {} { global dim field fieldtitle set dim 0 .select delete 0 end .dimtitle configure -width 1 -text "" transboxoff names_clear .info configure -state normal .info delete 1.0 end .info configure -state disabled if {[info exists field]} {unset field} .list delete 0 end foreach i [listhead $fieldtitle] { .list insert end $i } } # proc updatefield {field} { global fieldtitle set newtext [lindex [listhead $fieldtitle] $field] .list delete $field .list insert $field $newtext .list selection set $field } proc xyscrollbar {w1 w2 w3} { global scrollbarwidth frame $w2 scrollbar $w2.y -command "$w3 yview" -width $scrollbarwidth set corner_width [expr {$scrollbarwidth + 2*[$w2.y cget -borderwidth] + \ 2*[$w2.y cget -highlightthickness]}] frame $w1 scrollbar $w1.x -command "$w3 xview" -orient horizontal \ -width $scrollbarwidth frame $w1.corner -width $corner_width pack $w1.x -side left -fill x -expand yes pack $w1.corner -side right -fill both pack $w1 -side bottom -fill x pack $w2.y $w2 -side right -fill y } proc yscrollbar {w1 w2} { global scrollbarwidth scrollbar $w1 -command "$w2 yview" -width $scrollbarwidth pack $w1 -side right -fill y } proc xscrollbar {w1 w2} { global scrollbarwidth scrollbar $w1 -command "$w2 xview" -orient horizontal \ -width $scrollbarwidth pack $w1 -side left -fill x -expand yes } proc fieldinfo1 {win x y} { global fieldinfo_w append fieldinfo_w "t" set w $fieldinfo_w catch {destroy $w} toplevel $w wm title $w "Field information" setupicon $w "Info" xconv_icon xconv_icon_m frame $w.buttons pack $w.buttons -side bottom -pady 2m -fill x button $w.buttons.dismiss -width 8 -text Dismiss -command "destroy $w" pack $w.buttons.dismiss -side left -expand yes text $w.text -relief raised -bd 2 \ -xscroll "$w.xscroll.x set" -yscroll "$w.yscroll.y set" xyscrollbar $w.xscroll $w.yscroll $w.text pack $w.text -side left -fill both -expand yes foreach i [printhead [$win index @$x,$y]] { $w.text insert end $i } $w.text configure -state disabled } proc field_info {} { global field if {[info exists field]} { .info configure -state normal .info delete 1.0 end .info insert end "[fieldinfo $field]\n" .info configure -state disabled } } # proc errorbox {msg} { set w .errorbox catch {destroy $w} toplevel $w wm title $w "Error message" setupicon $w "Error" xconv_icon xconv_icon_m set ww $w.frame frame $ww -relief flat -borderwidth 8 pack $ww -side left -fill both -expand yes message $ww.errmsg -width 80m -justify left -text $msg frame $ww.spacer -height 2m -width 20 frame $ww.errbut -relief groove -borderwidth 4 pack $ww.errmsg -fill both -expand yes pack $ww.spacer $ww.errbut -fill x -expand yes button $ww.errbut.ok -width 4 -text OK -command "destroy $w" pack $ww.errbut.ok -side left -expand yes tkwait visibility $w grab set $w } # proc startbox {x y} { global time0 sbchar sbtext1 sbtext2 set w .startbox catch {destroy $w} toplevel $w wm title $w "Xconv start" setupicon $w "Xconv start" xconv_icon xconv_icon_m wm geometry $w -$x-$y set sbchar "." set sbtext1 "Xconv Starting up " set sbtext2 " " set ww $w.frame frame $ww -relief flat -borderwidth 8 pack $ww -side left -fill both -expand yes message $ww.startmsg -width 500 -justify left -text $sbtext1$sbtext2 pack $ww.startmsg -fill both -expand yes } proc startboxupdate {} { global time0 sbchar sbtext1 sbtext2 regsub " " $sbtext2 $sbchar sbtext2 .startbox.frame.startmsg configure -text $sbtext1$sbtext2 update } proc startboxend {} { catch {destroy .startbox} } # proc readfile1 {filetype file} { set error [catch {busy {readfile $filetype $file}} errormsg] if {$error} { filetypebox $file tkwait window .filetypebox } } # proc busy {cmds {but ""}} { global errorInfo cursor set busy {.} set stop {} set list [winfo children .] while {$list != ""} { set next {} foreach w $list { set class [winfo class $w] set cursor [lindex [$w config -cursor] 4] if {[winfo toplevel $w] == $w || $cursor != ""} { lappend busy [list $w $cursor] } if {$class == "Button" || $class == "Radiobutton" || \ $class == "Checkbutton" || $class == "Menubutton" || \ $class == "Entry"} { if {$w == $but} { set but_cursor "[$but cget -cursor]" set but_text "[$but cget -text]" set but_command "[$but cget -command]" $but configure -cursor $cursor -text "Interrupt" \ -command "set INTERRUPT 1" lappend stop [list $w] } else { set state [lindex [$w config -state] 4] if {$state != "disabled"} { lappend stop [list $w] $w configure -state disabled } } } set next [concat $next [winfo children $w]] } set list $next } foreach w $busy { if {[lindex $w 0] != $but} { catch {[lindex $w 0] config -cursor watch} } } update idletasks set error [catch {uplevel eval [list $cmds]} result] set ei $errorInfo foreach w $busy { catch {[lindex $w 0] config -cursor [lindex $w 1]} } foreach w $stop { if {$w == $but} { $but configure -cursor $but_cursor -text $but_text \ -command $but_command } else { $w configure -state normal } } if {$error} { error $result $ei } else { return $result } } # proc loadDir {w dirname} { global filter if {! [file isdirectory $dirname]} { set dirname [file dirname $dirname] while {! [file isdirectory $dirname]} { set dirname [file dirname $dirname] } errorbox "incorrect directory selected" } cd $dirname set dirname [pwd] foreach i $filter { append filelist " [glob -nocomplain $dirname/$i]" } set a " " $w delete 0 end if {[info exists filelist]} { foreach i [lsort $filelist] { if {$a != $i} { if {[file isdirectory $i]} { $w insert end [file tail $i]/ } else { $w insert end [file tail $i] } } set a $i } } return $dirname } # proc noslash {dir} { if {[file tail $dir] == ""} { if {$dir == "/" || $dir == "" } { set dir1 "" } else { set dir1 [file dirname $dir] } } else { set dir1 $dir } return $dir1 } # proc readarg {} { global outfilename filetype scriptfile argv set i false set o false set x false foreach arg $argv { switch -glob -- $arg { -i {set i true ; set o false ; set x false} -o {set i false ; set o true ; set x false} -x {set i false ; set o false ; set x true} -* {puts "unknown option $arg" ; set i false ; \ set o false ; set x false} default { if {$i} { set infile [lappend infile $arg] } elseif {$o} { set outfile [lappend outfile $arg] } elseif {$x} { set scriptfile [lappend scriptfile $arg] } elseif {$arg != {}} { puts "unknown option $arg" } } } } if {[info exists infile]} { foreach file $infile { if {[string range $file 0 0] != "/"} {set file [pwd]/$file} readfile1 $filetype $file } updatelist } if {[info exists outfile]} { if {[llength $outfile] > 1} { set outfile [lindex $outfile 0] puts "Only one output file can be specified, using $outfile" } set outfilename $outfile } } # proc setupicon {w name iconbitmap iconmask} { wm iconname $w $name wm iconbitmap $w $iconbitmap wm iconmask $w $iconmask } proc pause {{message unset}} { if {$message != "unset"} {puts $message} update } proc setplottype {w dim11 dim21 dim31 dim41 ylog1 title} { global dim1 dim2 dim3 dim4 ylog set dim1 $dim11 ; set dim2 $dim21 ; set dim3 $dim31 ; set dim4 $dim41 set ylog $ylog1 $w configure -text $title } proc initplottype {field} { set dim1 [getvar $field dim1] set dim2 [getvar $field dim2] puts "dim1 = $dim1" puts "dim2 = $dim2" if {($dim1 == 1 && $dim2 == 2) || ($dim1 == 2 && $dim2 == 1)} { setplottype .qmenu 1 2 3 4 0 "x-y" } elseif {($dim1 == 1 && $dim2 == 3) || ($dim1 == 3 && $dim2 == 1)} { setplottype .qmenu 1 3 2 4 0 "x-z" } elseif {($dim1 == 2 && $dim2 == 3) || ($dim1 == 3 && $dim2 == 2)} { setplottype .qmenu 2 3 1 4 0 "y-z" } elseif {$dim1 == 1 && $dim2 == 4} { setplottype .qmenu 1 4 2 3 0 "x-t" } elseif {$dim1 == 4 && $dim2 == 1} { setplottype .qmenu 4 1 2 3 0 "t-x" } elseif {($dim1 == 4 && $dim2 == 2) || ($dim1 == 2 && $dim2 == 4)} { setplottype .qmenu 4 2 1 3 0 "t-y" } elseif {($dim1 == 4 && $dim2 == 3) || ($dim1 == 3 && $dim2 == 4)} { setplottype .qmenu 4 3 1 2 0 "t-z" } else { setplottype .qmenu 1 2 3 4 0 "x-y" } } set version 1.90 set versiondate 11-May-2004 set fieldinfo_w ".t." set HOMEDIR [pwd] set w .main set w1 .window1 set w2 .window2 set w3 .window3 set w4 .window4 set startdir [pwd] set dirName [pwd] set psdirName [pwd] set qm 11 set qn 5 set filetype 0 set tcl_precision 17 set INTERRUPT 0 set right_box dim set resize 1 set filter ".* *" set screenheight [winfo screenheight .] set screenwidth [winfo screenwidth .] set bw1 6 set bw2 4 set bw3 2 setvaratt all att_nouse setvaratt north_pole standard_name att_cond setvaratt long_name units missing_value _Fillvalue source name title att_use setvaratt date time valid_min valid_max att_use setdimatt all att_nouse setdimatt point_spacing modulo_ferret calendar att_cond setdimatt units time_origin positive att_use setglobatt all att_nouse setglobatt history att_use set glob_history_text "" set glob_Conventions_text "" set glob_title_text "" set glob_institution_text "" set glob_source_text "" set glob_references_text "" set glob_comment_text "" if {[file exists ~/.xconvrc]} {source ~/.xconvrc} writeglobatt history $glob_history_text writeglobatt Conventions $glob_Conventions_text writeglobatt title $glob_title_text writeglobatt institution $glob_institution_text writeglobatt source $glob_source_text writeglobatt references $glob_references_text writeglobatt comment $glob_comment_text if {! [info exists xfac]} {set xfac 0.709} if {! [info exists yfac]} {set yfac 0.739} set x0fac [expr 2.0 / 3.0] set y1fac 0.613 set x [expr round($screenwidth * $xfac) ] set y [expr round($screenheight * $yfac) ] set x0 [expr round($x * $x0fac)] set x1 [expr $x - $x0] set x2 [expr $x0 - 2*$bw1] set x3 [expr $x1 - 2*$bw1] set y0 [expr $y - 2*$bw1] set y1 [expr round($y * $y1fac)] set dim1 1 set dim2 2 set dim3 3 set dim4 4 set ylog 0 if {! [info exists plottype]} {set plottype image} if {! [info exists cursor]} { set cursor left_ptr } if {! [info exists font]} { set font -b&h-lucidatypewriter-medium-r-*-*-12-120-*-*-*-*-iso8859-1 } if {! [info exists plotfont]} { set plotfont -*-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-* } if {! [info exists foregroundcolour]} { set foregroundcolour black } if {! [info exists activeforegroundcolour]} { set activeforegroundcolour black } if {! [info exists backgroundcolour]} { set backgroundcolour wheat } if {! [info exists activebackgroundcolour]} { set activebackgroundcolour #efefef } if {! [info exists selectbackgroundcolour]} { set selectbackgroundcolour #bfdfff } if {! [info exists disablecolour]} { set disablecolour #a3a3a3 } if {! [info exists scrollbarwidth]} { set scrollbarwidth 11 } if {! [info exists initialoutputformat]} { set initialoutputformat netcdf } if {! [info exists utfchars]} { set utfchars 2 } if {! [info exists ncprec]} { set ncprec 32 } if {! [info exists grotype]} { set grotype 0 } if {! [info exists redirout]} { set redirout true } if {! [info exists fixvcsbug]} { set fixvcsbug yes } if {! [info exists byteswap64]} { set byteswap64 no } if {! [info exists red_gauss_conv]} { set red_gauss_conv 1 } if {! [info exists umtime]} { set umtime fixed } if {! [info exists umtitle]} { set umtitle stash } if {! [info exists fieldtitle]} { set fieldtitle long } if {! [info exists smdirName]} { set smdirName ~ } if {! [info exists smfilelist]} { set smfilelist "" } if {$fixvcsbug == "yes"} { set vcsfix 1 } else { set vcsfix 0 } if {$byteswap64 == "yes"} { set bswap64 1 } else { set bswap64 0 } if {$umtime == "fixed"} { set umdate 1 } else { set umdate 0 } if {$umtitle == "stash"} { set umlong 1 } else { set umlong 0 } getstashmaster $smfilelist option add *font "$font" option add *cursor "$cursor" option add *foreground $foregroundcolour option add *activeForeground $activeforegroundcolour option add *background $backgroundcolour option add *activeBackground $activebackgroundcolour option add *selectBackground $selectbackgroundcolour option add *disabledForeground $disablecolour ?<C?$u@uuuy@vvwDzPwwwऱ `ȲTس`ఴ(pਵ(࠷طx0సX0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ട@ȟ@@@@@П@@@@@$H@@PР@@@@@@@8`hx@ജ@@@@@0t@@@08\༞x(p0T   8   @  (   @    @xH@h4DHH?>>?:8;::::8;;;P6p6666787`77777848L9X888899,,-$---P.. ////00201111 2`2ȏ0Аpഒؒab$degghj(4@LX8ؤ8? Affffff9@>>?h)8)8)8)8)8)8)8)8)`)8)8)8)8)p)8)8)8)x)8)8)8)8)8)8)8)8)8)8)8)8)8)h)8)8)8)8)8)8)8)8)`)8)8)8)8)p)8)8)8)x)?U U4UXUtUUUUU08P`xആ?ऻ഻ллл഻ऻ഻@ppp@   @TįTTTTTTTT@TTTTਰTTT  0@ ףp= ף> ף333333?Q?)\(?ꌠ9Y>)F?Bffffff9@> ף??tttttttttttt0PĿĿĿĿĿ฿ĿĿĿĿĿĿĿĿĿĿĿĿPĿĿĿĿXĿĿĿĿĿĿĿĿĿĿĿ????$#4#H#`#t##??$4D?(   p  @  xpؿ$4P4DX84?????44CCBC??B-DT! @cܥL@9RFߑ?`kkkkkhllLk8lde|eeeeee,ff?vvvvw$w0wpwHwD{{{{||0|({X|???@@ AA yhGMbP??? yhGDD``D`   GC?B?CC333333?zG?)\(?bX<@jZ@++,,, ,0,+8,ppp? yhG?@?FVWW W0WHWPWWdW[4\X\\\(]\[\?????@@?-DT! -DT!@-DT!?-DT!-DT! @Zd;O?MbX?K7A`?-?|= yhG088888888  8  888888888888888888 8888888888888888(888 (08@HPX`hpx888888 (08@HPX`hpxG?Hzo@??P ( 0 8 @ H ` @ H H D D D D D D D D D `      t                 Pk Pl Pl Pl Pl Pl Pl Pl Pl Pl j Pl Pl Pl Pl Pl Pl Pl Pl Pl Pl Pl Pl Pl Pl Pl `j l Pl k Pl Pl k Pl Pl Pl Pl Pl Pl Pl Pl Pl j c @[ @\ c c c c c ^ b c c c c c c c c c b c c c c 0c c c c c c c c c @[ @\ b b c b c ^ b c c c c c c c c c b c c c c b X V V Y Y Y Y Y V pW Y Y Y Y Y Y Y Y Y hW Y Y Y Y `X Y Y Y Y Y Y Y Y V V `W W Y xW Y V pW Y Y Y Y Y Y Y Y Y hW Y Y Y Y 0X S L M T T T T T O Q T T T T T T T T T Q T T T T S T T T T T T T T L M Q Q T Q T O Q T T T T T T T T T Q T T T T PS  ਩ p ਩ ਩ ਩ H എ  0 h P Є     ਊ   ఍     p  ฉ  ਆ   0 D ਱ ر  8 P h ల Ȳ  ( @ X p    d  D   0 ! ! ! # $   p             (  X P P P P P P P  P  P P P P P  P P P P P 0 P P  r hq hs \q q r hs Dq Pq q q tq q hs q hs hs hs hs hs hs hs hs hs hs q hs q r (r q hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs ,q hs 8q s hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs hs (s hs \s `^ a ` 0b a 0b _ 4` ഈ  Ј _x ਇ ؇  @ จ d ࠉ ฉ ԉ  0 T p ఊ Њ  H x ࠋ ܋  @ \  > ף$I@ P ` l l l l l l   l l l l X @ H P X ` h 4 @ P \ h t 4 T t  H ȩ ` प ࠭ H @ p Է x X d 8 P  D  h    4 4 4 4 4 4 p ` p H (  @ ` _?_ >?^ N?? Ⱦ  ( @ X p ࠿ ฿ п  @ `  8PhPyhyy\yyx8yDyyyyyyyyzyy,y yzztyXzdz@zyLzy(z4zwwxw ף8 wrtransmiextenwmiallocwmiextendmiallocbnsrchgettbufredatwrdat8 $        x d P 8 $        x d P 8 $    L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L  xPhPPPPPNNNN O(O8K(KTKpKKKxIhIIIIIGGGG H(Hdmmmmm nOOOOOPMMMN,NHNXJHJtJJJJHHHHHIFFFG,GHG0lPltllllLLM0MLMhMLL4LPLlLLEEF0FLFhFEE4EPElEEइงЇ<,L\l| 0@Pp`0 @P`pP@`p8p 0     0 P @ ` p      0 @ P p `     0  @ P ` p `ȸ4h            \`\\\](]AAAB(BPB&&'$'H'p'8`|CDF_FCBA7E7Ev?_ A !B!88   QU2REG2: Number of bytes required = QU2REG2: Memory allocation failed.) = ȯH r1??  A?@   88i  octets.GRIBEXGRIBEX: PSEC4(GRIBEX: KSEC4(GRIBEX: PSEC3(GRIBEX: KSEC3(GRIBEX: PSEC2(GRIBEX: KSEC2(GRIBEX: KSEC1(GRIBEX: HOPER = GRIBEX: KLENG = GRIBEX: KLENP = GRIBEX: ********************************GRIBEX: Output values set -GRIBEX: Section 9.GRIBEX: Input data is not GRIB or pseudo-grib.GRIBEX: Error inserting length of GRIB section 4GRIBEX: Error padding GRIB to multiple of 120GRIBEX: Error padding unused part of GRIB to zeroGRIBEX: to regular. Grid must be global.GRIBEX: to regular. Return code = GRIBEX: Error converting quasi-regular gaussian gridGRIBEX: Error extracting primary or secondary bit map.GRIBEX: Problem getting bitmapGRIBEX: Cannot handle 2ndary bitmaps for J optionGRIBEX: Error extracting primary/secondary bit map.GRIBEX: allow expansion using bitmapsGRIBEX: Output array is not big enough toGRIBEX: End of message 7777 group not found.GRIBEX: Error extracting 7777 groupGRIBEX: Error inserting length of GRIB messageGRIBEX: Error inserting 7777 groupGRIBEX: Section 8. Handle End Section (Section 5)GRIBEX: Error inserting/extracting flag and unused bit fieldGRIBEX: Error inserting section 4 lengthGRIBEX: Error inserting padding zeroes at end of section 4GRIBEX: Error inserting/extracting data valuesGRIBEX: Error extracting data valuesGRIBEX: Invalid no. of values for function X = GRIBEX: North to South and West to EastGRIBEX: Function is X and scanning mode is notGRIBEX: Gaussian or Latitude/longitude fieldGRIBEX: Function is X and field is notGRIBEX: Function is X and a bit-map is includedGRIBEX: Function is X but no section 2 includednot supportedGRIBEX: Constant (0-bit) field: function GRIBEX: Explicitly constant field (0-bit).GRIBEX: Number of values = GRIBEX: Output array too small. Length = GRIBEX: Constant (0-bit) spectral fieldGRIBEX: not supportedGRIBEX: Constant (0-bit) field without section 2GRIBEX: Error inserting/extracting real coefficientGRIBEX: Error inserting secondary bit-mapGRIBEX: second dimension coefficientsGRIBEX: from 1st dimension coordinate value onGRIBEX: Error inserting/extracting six fieldsGRIBEX: second dimension of matrixGRIBEX: Error inserting/extracting first orGRIBEX: Error inserting/extracting extended flag fieldGRIBEX: at which packed data beginsGRIBEX: Error inserting/extracting octet numberGRIBEX: Decoded reference value = GRIBEX: Following field is missing ***********GRIBEX: Error inserting/extracting reference valueGRIBEX: Scaling value = 2 to power GRIBEX: Scaling value = GRIBEX: Error inserting/extracting scale factor. GRIBEX: to GRIBEX: scaling factor changed from GRIBEX: level GRIBEX: level type GRIBEX: for parameter GRIBEX: REF2GRB reference value problemGRIBEX: Minimum value used = GRIBEX: Maximum value used = GRIBEX: Maximum value used instead.GRIBEX: is less than maximum value GRIBEX: User supplied maximum value GRIBEX: Minimum value used instead.GRIBEX: exceeds minimum value GRIBEX: User supplied reference value GRIBEX: Minimum value calculated = GRIBEX: Maximum value calculated = GRIBEX: second-order packed field (grid-point). invalid forGRIBEX: Function GRIBEX: Second-order packing implies additional flagsGRIBEX: diagnosed truncation of full spectrum is GRIBEX: Error extracting sub-set truncation.GRIBEX: Error extracting pointer to packed data.GRIBEX: bits per data valueGRIBEX: Error inserting/extracting number of COMPLEX mismatch. KSEC2(6) = COMPLEX mismatch. KSEC4(4) = .GRIBEX: Number of unused bits is GRIBEX: Error extracting section 4 flag field.GRIBEX: Length of Section 4 of GRIB = GRIBEX: Error extracting section 4 lengthGRIBEX: Error found when checking values for section 4GRIBEX: Section 7. Handle Binary Data Section (Section 4)GRIBEX: Error inserting primary bit map.GRIBEX: Error inserting/extracting bit-map reference tableGRIBEX: unused bits at the end of Section 3.GRIBEX: Error inserting/extracting numberGRIBEX: Length of Section 3 of GRIB = GRIBEX: Error inserting/extracting section 3 lengthGRIBEX: Error found checking values for section 3GRIBEX: Bit-map found. No data decoded.GRIBEX: Section 6. Handle Bit Map Section (Section 3)GRIBEX: list of numbers of points.GRIBEX: vertical coordinate parameters.GRIBEX: stretching factor.GRIBEX: latitude/longitude of pole of stretching.GRIBEX: angle of rotation.GRIBEX: latitude or longitude of southern pole.GRIBEX: Error decoding gaussian grid section 2GRIBEX: Error encoding gaussian grid section 2GRIBEX: Error decoding lat/long grid section 2GRIBEX: Error encoding lat/long grid section 2GRIBEX: Representation type not catered for:GRIBEX: Error decoding ECMWF ocean section 2GRIBEX: Error encoding ECMWF ocean section 2GRIBEX: latitude/longitude of southern pole.GRIBEX: Latin1 or Latin2 of secants points.GRIBEX: Error decoding spectral section 2GRIBEX: Error encoding spectral section 2GRIBEX: scanning mode flags.GRIBEX: Projection centre flag.GRIBEX: X or Y axis grid length.GRIBEX: latitude or longitude of last grid point.GRIBEX: components flag.GRIBEX: latitude or longitude of first grid pt.GRIBEX: number of points along X or Y axis.GRIBEX: data representation type.GRIBEX: parameters or List of numbers of points.GRIBEX: location of List of vertical coordinateGRIBEX: number of Vertical coordinate parameters.GRIBEX: Length of Section 2 of GRIB = GRIBEX: length of Section 2.GRIBEX: Error inserting/extractingGRIBEX: Section 2 against valid GRIB values.GRIBEX: Section 5. Handle Grid Description Section (Section 2)GRIBEX: Washington local data.GRIBEX: Error inserting/extracting ECMWF orGRIBEX: data.GRIBEX: Error inserting/extracting ECMWF localGRIBEX: scale factor.GRIBEX: Error inserting/extracting units decimalGRIBEX: Error inserting dummy zero.GRIBEX: or reserved field.GRIBEX: Error inserting/extracting century of dataGRIBEX: from averages etc.GRIBEX: Error inserting/extracting number missingGRIBEX: Error inserting/extracting number averaged.GRIBEX: Error inserting/extracting time range indicator.GRIBEX: Error inserting/extracting Period of time.GRIBEX: time range.GRIBEX: Year of century to Indicator of unit ofGRIBEX: pressure, etc of levels.GRIBEX: Error inserting/extracting Height,GRIBEX: type of level.GRIBEX: Identification of Centre to Indicator ofGRIBEX: Error inserting/extracting six fields fromGRIBEX: Length of Section 1 of GRIB = GRIBEX: Grib Edition not catered for.GRIBEX: GRIB Edition Number = GRIBEX: Error inserting/extracting Param Table Version No.GRIBEX: Error inserting/extracting length of Section 1.GRIBEX: SST dataGRIBEX: KWBC ensemble dataGRIBEX: ECMWF dataGRIBEX: Local extension in use for...GRIBEX: Section 1 against valid GRIB values.GRIBEX: Error found when checking values forGRIBEX: Section 4. Handle Product Definition (Section 1)GRIBEX: Experimental Edition check.GRIBEX: Error extracting octets 22 and 23 forGRIBEX: Special case, negative length multiplied by -120GRIBEX: Error extracting length of GRIB message.GRIBEX: Error inserting/extracting GRIB Edition Number.GRIBEX: Error inserting/extracting letters GRIBGRIBEX: Section 3. Handle GRIB Indicator Section (Section 0)GRIBEX: Non-zero value in missing data field.GRIBEX: This must be positive - enforced to GRIBEX: This must be positive.GRIBEX: This exceeds word length which = GRIBEX: Number of bits per data value = ZGXSRBAGRIBEX: Return code = GRIBEX: Invalid function requested - JIGRIBEX: Section 2. Check input parameters.MCKGRIBEX: Operation code = GRIBEX: Length of data array (KLENP) = GRIBEX: Length of GRIB array (KLENG) = GRIBEX: Section 1. Input values used -GRIBEX: Version is @@?8?UUUUUU?UUUUUU? Sorry! ROWINA2: for fields containing missing data. ROWINA2: Cubic interpolation not supported8 88   QU2REG3: Number of bytes required = QU2REG3: Memory allocation failed.  88EXTMAP: KSBMAP = EXTMAP: KSIZE = EXTMAP: KNOMIS = EXTMAP: Output values set -EXTMAP: NABITS = EXTMAP: NBITS = EXTMAP: Section 9.EXTMAP: Section 3.EXTMAP: LENGTH = EXTMAP: NVALS = EXTMAP: Error reported by routine INXBIT.DEXTMAP: (KNUM) is greater than allowed (JPWORK).EXTMAP: Number of values at each grid pointEXTMAP: KVALS = EXTMAP: KLENG,KMAP1,KMAP2,KBITS, PMISS = EXTMAP: KSIZE,KNUM = EXTMAP: Input values used -EXTMAP: Section 1.?? 88INSMP2: KSIZE = Output values set -INSMP2: Section 9.INSMP2: Section 3.INSMP2: (KNUM) is greater than allowed (JPWORK).INSMP2: Number of values at each grid pointINSMP2: Invalid function requested - MCINSMP2: Section 2. KNUM = KSIZE = HFUNC = Input values used -INSMP2: Section 1.  8 8GRCHK4: Invalid spatial differencing indicatorGRCHK4: Invalid boustrophedonic ordering indicatorGRCHK4: Invalid general extended 2n-order packing indicatorGRCHK4: Invalid value widthsGRCHK4: Invalid secondary bit map indicatorGRCHK4: Invalid number of fields indicatorGRCHK4: in future releases of GRIBEX.GRCHK4: Reserved field not 0. May cause troubleGRCHK4: Invalid additional flag fieldGRCHK4: Invalid data representationGRCHK4: Invalid type of packingGRCHK4: Invalid type of dataGRCHK4: Invalid number of bits for packed data valuesGRCHK4: Invalid number of data values to be encoded 88INSMP1: KSIZE = Output values set -INSMP1: Section 9.INSMP1: INOBT = INSMP1: IMANY = INSMP1: NEXT = INSMP1: Section 3.INSMP1: Section 2.INSMP1: Invalid function requested - MC KNUM = HFUNC = PMISS = KBITS = KSIZE = KSECM = KMAP1 = KLENG = Input values used -INSMP1: Section 1. 8A3  8DECFP2: Returned value = .KMANT=.ISIGN=DECFP2: IEXP=DECFP2: Values used for final calculation. KMANT = DECFP2: KEXP = 8?A?B;>̼+w+2 8CONFP3: Value arbitrarily set to zero.CONFP3: Exponent overflowCONFP3CONFP3: Invalid conversion type =  88KWLOC1KWLOC1 : On output, KNSPT = KWLOC1 : Section 9.KWLOC1: INXBIT error reported = ECLOC1 : Section 2.KWLOC1 : On input, KNSPT = KWLOC1 : Section 1.  88 ECLOC1ECLOC1: Output values set, KNSPT = Unknown definition for local use = ECLOC1 : Section 4.ECLOC1 : Section 3. ECLOC1: Invalid local definition: ECLOC1 : Section 2. KNSPT = HFUNC = Input values used -ECLOC1 : Section 1. ? 8 GRCHK1: WMO id list count greater than 15 = GRCHK1: WMO id list count invalid = GRCHK1: Invalid count of ICE fields used = GRCHK1: Invalid type for SST field = GRCHK1: Invalid satellite identifier: does not contain parameter GRCHK1: ECMWF local table 2 version GRCHK1: WMO code table 2 version   8 is outside array bounds INXBIT : Word ?8Coefficients defining second dimension coordinates:Coefficients defining first dimension coordinates:   C8 Missing data value for real data.  8  GRPRS2 :Data representation type not catered for - 8 8   ------------------------ WMO centre analyses used:Date of sst/ice field used Not givenDate of SST field used Not givenNumber of items = (None).8 (Multi-analysis ensemble data)(Sst or sea-ice used by analysis)(Seasonal forecast monthly mean atmosphere data)(Ocean ensemble seasonal forecast)(Brightness temperature)(Wave 2D spectra direction and frequency)(Supplementary data used by analysis)(EPS tubes)(Singular vectors and ensemble perturbations)(ECMWF re-analysis data)(Sensitivity data)(Surface temperature data)(Forecast probability data)(Ocean model data)(Satellite image data)(Cluster means and standard deviations)(Mars labelling or ensemble forecast)Year of reference time of data MISSING (=255)GRIBEX_CHECK GRIBEX_DEBUG 88SETPAR: KNEG = SETPAR: KBIT = Output values set - SETPAR : Section 9. SETPAR : Section 1.?88REF2GRB: PREF = REF2GRB: ZTEMP = REF2GRB: Notify Met.Applications Section.REF2GRB: Reference value error.    8  8?Simple nd.2nd-oGen.exterder second-oGeneral ow Row by rm `[ethod direct m acking simple p normalized data8 bit numberC2ORDR: LBOUST/LNLOCP/LAGGPK=Boustrophedonic orderingvariable group widthesno secondary bit-mapconstant widthimplicit primary bit-mapRow by rowRow by row packingK      8 8 Ngroups.. points.Ygroupprimary bit-map in row by row casesecondary bit-map1st-order valueswidthssizesvalid only with lat/long or gaussian field., INDXOR = D2ORDR: IRGEXT = not valid with a (primary) bit-mapFirst-order/Second-order2ndary bit-map/1st-order valuesgeneral extended group size/1st-order valuesWMO general 2nd-ordergeneral extendedrow by rowstart of secondary bit-mapConstant widthconstant width of 2nd-order valuesFirst field value(s) (spatial differencing case)Width of spatial differencing descriptorsgeneral extended group size pointergeneral extended width of (group and/or size)general extended descriptors, widthsvariable group widthsno secondary bit-mapRow by rowprimary bit-mapprimary bit-map, row by row caseBoustrophedonic orderingHOPER='X' functionRow by row packingfrom section 2too bigJ21st octet of section 4standard second-order descriptorsXextended flagspointer to first-order packed dataBit number (of first-order values)bit number of first-order valuesreference valuescale factor8 8bitmask_GBITMAP: Problem closing bitmap fileGBITMAP: Problem reading bitmapGBITMAP: Problem getting no. non-missing pointsGBITMAP: Problem getting memory for bitmapGBITMAP: Problem getting bitmap sizeGBITMAP: Open predetermined bitmap failedr88 GBITMAP: Invalid bitmap number given =  88DSECT4A: Flag wrong = DSECT4A: Problem applying power scalingODSECT4A: Problem extracting subset of coeffs.DSECT4A: Problem unpacking subset of coeffs.DSECT4A: Problem unpacking bitsDSECT4A: ISUBSET, KTRUNC =DSECT4A: Invalid subset truncation givenDSECT4A: Problem unpacking pentagonal resolution params.DSECT4A: Problem unpacking scaling power.DSECT4A: Problem unpacking start of packed data.DSECT4A: Problem unpacking number of bits/value.DSECT4A: Problem unpacking reference value.DSECT4A: Problem unpacking scale factor.DSECT4A: Problem unpacking flag byte.DSECT4A: Problem unpacking length of section.DSECT4A: Number of bytes required = DSECT4A: Memory allocation failed.?  ?r1?  A 88CSECT4: Problem packing flag.CSECT4: Problem packing length of section.CSECT4: Problem packing bitsCSECT4: Problem packing pentagonal resolution params.CSECT4: Problem packing scaling power.CSECT4: Problem packing start of packed data.CSECT4: Problem packing number of bits/value.CSECT4: Problem packing reference value.CSECT4: level CSECT4: level type CSECT4: for parameter CSECT4: REF2GRB reference value problemCSECT4: Problem packing scale factor.CICSECT4: ISUBSET, KTRUNC =CSECT4: Invalid subset truncation givenCSECT4: Number of bytes required = CSECT4: Memory allocation failed. 88DSVSEC2: X or Y coordinates of origin of sector.DSVSEC2: orientation of the grid or camera angle.DSVSEC2: scanning mode flags.DSVSEC2: X or Y coordinate of sub-satellite point.DSVSEC2: components flag.DSVSEC2: latitude/longitude of sub-satellite pt.DSVSEC2: Return code = DSVSEC2: number of points along X or Y axis.DSVSEC2: Error extractingD 88ESVSEC2: Error inserting dummy zero.ESVSEC2: X or Y coordinates of origin of sector.ESVSEC2: orientation of the grid or camera angle.ESVSEC2: scanning mode flags.ESVSEC2: X or Y coordinate of sub-satellite point.ESVSEC2: components flag.ESVSEC2: latitude/longitude of sub-satellite pt.ESVSEC2: Return code = ESVSEC2: number of points along X or Y axis.ESVSEC2: Error insertingC 88DOCSEC2: scanning mode flags.DOCSEC2: Return code = DOCSEC2: number of pts along first or second axis.DOCSEC2: Error inserting/extractingD 88GRIBEX: scanning mode flags.GRIBEX: Error inserting dummy zero.GRIBEX: Return code = GRIBEX: number of pts along first or second axis.GRIBEX: Error inserting/extractingC 88GRIBEX: representation type or mode.GRIBEX: Return code = GRIBEX: J,K,M pentagonal resolution parameters.GRIBEX: Error inserting/extractingD 88ESHSEC2: Error inserting dummy zero.ESHSEC2: representation type or mode.ESHSEC2: Return code = ESHSEC2: J,K,M pentagonal resolution parameters.ESHSEC2: Error inserting/extractingC 88DLLSEC2: scanning mode flags.DLLSEC2: j direction increment.DLLSEC2: i direction increment.DLLSEC2: latitude or longitude of last grid point.DLLSEC2: components flag.DLLSEC2: latitude or longitude of first grid pt.DLLSEC2: Return code = DLLSEC2: number of pts along parallel or meridian.DLLSEC2: Error inserting/extractingD 88 ELLSEC2: Error inserting dummy zero.ELLSEC2: scanning mode flags.ELLSEC2: j direction increment.ELLSEC2: i direction increment.ELLSEC2: latitude or longitude of last grid point.ELLSEC2: components flag.ELLSEC2: latitude or longitude of first grid pt.ELLSEC2: Return code = ELLSEC2: number of pts along parallel or meridian.ELLSEC2: Error inserting/extractingC 88DGGSEC2: scanning mode flags.DGGSEC2: no. of parallels between pole and EquatorDGGSEC2: i direction increment.DGGSEC2: latitude or longitude of last grid point.DGGSEC2: components flag.DGGSEC2: latitude or longitude of first grid pt.DGGSEC2: Return code = DGGSEC2: number of pts along parallel or meridian.DGGSEC2: Error inserting/extractingD 88EGGSEC2: Error inserting dummy zero.EGGSEC2: scanning mode flags.EGGSEC2: no. of parallels between pole and EquatorEGGSEC2: i direction increment.EGGSEC2: latitude or longitude of last grid point.EGGSEC2: components flag.EGGSEC2: latitude or longitude of first grid pt.EGGSEC2: Return code = EGGSEC2: number of pts along parallel or meridian.EGGSEC2: Error inserting/extractingC++ 777?@@̼+ @@?8?UUUUUU?UUUUUU? Sorry! ROWINA3: for fields containing missing data. ROWINA3: Cubic interpolation not supported8 ECDEF18 encoding section 1, unused list. decoding section 1, list of WMO ids. encoding section 1, list of WMO ids. encoding section 1, octets 58 to 60. decoding section 1, octet 57. encoding section 1, octet 57. decoding section 1, octets 53 to 56. encoding section 1, octets 53 to 56. decoding section 1, octets 50 to 52. encoding section 1, octets 50 to 52.ECDEF18: Error reported by routine INXBIT: ECDEF17 88 ECDEF16ECDEF16: Output: KNSPT = ECDEF16: Error reported by routine INXBIT. 88ECDEF15ECDEF15: Output: KNSPT = ECDEF15: Error reported by routine INXBIT. 88 ECDEF14 Output values set, KNSPT = ECDEF14: Section 9. encoding length of section 1. encoding section 1, spare octets at end.ECDEF11: Error reported by routine INXBIT: decoding section 1, octets 61 onwards. encoding section 1, elements 47 onwards encoding section 1, octets 58 - 60. decoding section 1, octets 57. encoding section 1, element 46. decoding section 1, octets 53 - 56. encoding section 1, element 45. decoding section 1, octets 50 - 52. encoding section 1, elements 42 - 44.ECDEF14: Error reported by routine INXBIT: 88 ECDEF13 Output values set, KNSPT = ECDEF13: Section 9. encoding length of section 1. decoding section 1, octets (101+Nd*4)-> encoding section 1, element (50+Nd) etc. decoding section 1, octets 101 onwards. encoding section 1, elements 50 onwards encoding section 1, octets 69 - 100. decoding section 1, octets 67 - 68 encoding section 1, method number decoding section 1, octets 65 - 66 encoding section 1, system number decoding section 1, octet 64 encoding section 1, system/method flag decoding section 1, octets 56 - 63. encoding section 1, elements 48 - 49. decoding section 1, octets 50 - 55. encoding section 1, elements 42 - 47.ECDEF13: Error reported by routine INXBIT: 88 ECDEF11 Output values set, KNSPT = ECDEF11: Section 9. encoding section 1, octets 66 - 72. decoding section 1, octets 58 - 65. encoding section 1, elements 46 - 53. decoding section 1, octets 54 - 57. encoding section 1, element 45. decoding section 1, octets 52 - 53. encoding section 1, element 44. decoding section 1, octets 50 - 51. encoding section 1, elements 42 - 43.ECDEF11: Error reported by routine INXBIT: 88 ECDEF12 Output values set, KNSPT = ECDEF12: Section 9. decoding section 1, octets 71 onwards. encoding section 1, elements 50 onwards. decoding section 1, octets 69 - 70. encoding section 1, element 49. decoding section 1, octet 68. encoding section 1, element 48. decoding section 1, octets 66 - 67. encoding section 1, element 47. decoding section 1, octets 62 - 65. encoding section 1, element 46. decoding section 1, octets 60 - 61. encoding section 1, element 45. decoding section 1, octets 56 - 59. encoding section 1, element 44. decoding section 1, octets 54 - 55. encoding section 1, element 43. decoding section 1, octets 50 - 53. encoding section 1, element 42.ECDEF12: Error reported by routine INXBIT: 88ECDEF10 Output values set, KNSPT = ECDEF10: Section 9. encoding length of section 1. decoding section 1, octet 80 onwards. encoding section 1, element 59 onwards. decoding section 1, octet 79. encoding section 1, element 58. decoding section 1, octets 69 - 78. encoding section 1, elements 53 - 57. decoding section 1, octets 67 - 68. encoding section 1, elements 51 - 52. decoding section 1, octets 55 - 66. encoding section 1, elements 47 - 50. decoding section 1, octets 50 - 54. encoding section 1, elements 42 - 46.ECDEF10: Error reported by routine INXBIT: 88 ECDEF9 Output values set, KNSPT = ECDEF9: Section 9. encoding section 1, element decoding section 1, octets 50 - 51. encoding section 1, element 42. decoding section 1, octets 92. encoding section 1, reserved element. decoding section 1, octets 82 - 83. encoding section 1, element 53. decoding section 1, octets 78 - 81. encoding section 1, element 52.encoding/decoding section 1, element decoding section 1, octets 58 - 61. encoding section 1, element 47. decoding section 1, octets 56 - 57. encoding section 1, elements 45 - 46. decoding section 1, octets 50 - 55. encoding section 1, elements 42 - 44.ECDEF9: Error reported by routine INXBIT: 8 ECDEF8 Output values set -ECDEF8 : Section 9. 8ECDEF7 Output values set -ECDEF7 : Section 9. 88ECDEF6 KNSPT = Output values set -ECDEF6 : Section 9. 8ECDEF5 Output values set -ECDEF5 : Section 9.8 8 ECDEF4ECDEF4: Error reported by routine INXBIT.ECDEF4: Section 9. On output, KNSPT = 8ECDEF3 Output values set -ECDEF3 : Section 9. 8ECDEF2 Output values set -ECDEF2 : Section 9.ECDEF2 : Section 2. 8ECDEF1 Output values set -ECDEF1 : Section 9.  8KWCHK1: Invalid total f/cs in ensemble = KWCHK1: Invalid perturbed f/c number = KWCHK1: Invalid control f/c number = KWCHK1: Invalid version number = KWCHK1: Invalid stream code = KWCHK1: Invalid type code = KWCHK1: Invalid class code = KWCHK1: Invalid Ensemble f/c data flag = 8 8......................8 88 FORMATTEDOLD @߿  8 to 8  Number of points. Parallel. (South to North) Number of points. Parallel. (North to South) Number of points along a parallel varies.         8*NOT* in favourin favourspatial differences, IDIAGO(.) = JORDER=original valuesIDIAGO(0) =       8 general WMO standardgeneral extended   ?     ++ 777?zD 8 8 GSCALE - KSTART, KTRUNC = GSCALE - Invalid start/truncation given GSCALE - Invalid option given = GSCALE - cannot handle truncation = GSCALE - Invalid power given =  88 UNPKCF - KSUBSET, KTRUNC = UNPKCF - Invalid start/truncation givenzD?}&  8sh|#sh|#@j%<=CALCOP: Maximum handled is CALCOP: Cannot use the given truncation  88 PACKCF - GRIB area is not big enough. PACKCF - KSUBSET, KTRUNC = PACKCF - Invalid subset/truncation given 8FTN1CR : SECTION 9.8 88FTFTN1CR : SECTION 2.FTN1CR : SECTION 1./local_table_2_version_cen8 wmostd/table_2_version_/ 8  8 variableSecondary bit-map encodedsecondary bit-mapCoding secondary bit-mapsecond-order values (deviations from 1st-order values)padding after first-order values of groups.first-order values (reference values of groups)padding after General extended group sizesGeneral extended group sizespadding after secondary bit-mappadding after group width(s)inserting group width(s)padding after spatial differencing descriptorsFirst field value(s) (spatial differencing case)Width of spatial differencing descriptorsGeneral extended group size pointerExtended descriptors, 1st-order valuesfixedreserved octet (section 4, 21st)standard second-order descriptorsextended flagspointer to first-order packed databit number of first-order values8***********************************8  EMOS_CYCLE  8 $IBLOCKblock?_Gۺ Ё ` P @ P   2 ; M pf Pi 0k k pn s Py |   p ` P 0   Њ  p @И 0 О p   p @ ` P     @  p    @   P&&& p/ A F S pT U Y [ @\ ] aa b c k pn o o q r y0y P~  0  Ѐ 0 Ђ  `  p  ` p  0  p     @       `   p   0PR W `[ `_ pf pi Ё P    `   @       3 a l p  0          ; a i @     P      @ 0    `     p  ` @ @   P    p P `     `   0 p 0$ ) 0; < > > F 0I L M R V pW [ 0\ P] @^ _ `a c c e i Pp q q r t p @ @ @ @ `  о  0 p @  @  P p ` p P `    P | |  | p | p |  | P! | `( | * | + , t @2 t 7 t L M l Q l T l W l Pd l 0e l h l k l l l n Po d z d В d d  d Т d  d  d p" d & d & d ( d 0 d 4 d P8 d < d B d K d [ d ` d c d g d m d p d s d w d z d | d d d  d ` d d @ d d d 0 d О d d d d d 0 d 0 d ` d d м d p d d d d d ` d @ d d d @ \ \ \  \ p \  0 @ L L ` L L D P D 0 D  D p D p L p" L % L `& L ' L ) T * T + T + T , T . T / T P1 T 1 T 2 T 3 T < = L pB L pI L J L M L N L P L S L T L V L c L d L e L @f L `g L j L q L r L w L y L | L } L @} L p} L ~ T P T @ T Ђ T T T T T T T p D D ` D D D D D К D Н D D ` D D D @ D , , ` , , $ $  $ $ @ $  $ p $ ` $ $ p $  $ ` $ $ p $ $ 0 $ $ ` $ P $ , , , @ 4 0 4 4 p , ,   P   P        0  p  0    `   $ p $ p $  $  $  $  $  $  $ P   @ P  ! ! ( ( 0* + P. p0 2 2  5 6 9 ; @ D E E F G `J J 0M M O pO P 0Q R R S @V @W pZ [ 0\ a 0c c d d d g i pj j k q t v v @z { @ p ` P P  P p P p @  ` P  p ` ` @ @ @  @ 0        P P  P! ! " `+ @/ 0 `1 1 2 3 4 @6 `7 p: G I pJ @K K 0M O Q ST PUU 0V pV Z \ p] ] P_ _ @bPcc d pf Pn p 0q q s w@w @y {    Ї   p  @     ` Б @   @ 0  `   p   `p| t t t 0t | @| | Ц| | | 0|  а    @ 0 ` 0 `  0   @    0  P   p P   p      `    @    @   0      P   `p | | |  | | P| `| | P| | | @Pt t t t %0%@%d p%d 0,@,\ .d .d /d 9d ;d Cd Dd Gd pId Jd Ld Ll `Ml `Zl P\l \l ^l __d ad dd id id pd sd @td td wd yd zd |d p~d d d d pd d d d d d Pd d P\ \ \ \ p\ 0\ Ш\ \ \ 0\ \ P\ \ \ P\ 0\ `\ `\ T T T T T T T T T T T pT T T pT PT T 0L L ` L  0 D D D @D `4 4 @, , P, , , p, , , 0, 0", &, P', ', (, ), p+, +, `,4 @/4 ?4 A4 `A4 pC4 E4 K4 `O4 Q4 S4 T4 V4 W4 W4 Z4 p[4 P\4 ]4 p]4 ]4 ^4 _4 ``4 `a4 @b4 pc4 e4 g4 ipj4 j4 j4 q4 Pv4 w4 @w4 y4 |4 4 4 @4 4 4 4 4 04 4 4 Ф4 4 4 `4 P4 4 04 4 `4 4 4 P4 4 4 P4 4 < < < `< < < `< < < < P< P< `< < 0< < 0< < P< 0< < < 0< < < < < 0< < < < D 0D D `D D D P D D D D 0`4 04 4 `4 p4 4 4 4 4 4 4 !4 p!4 "4 $4 $< &< @)< *< @*< +< -< 00< 2< 4< P4< 5D P8D ?D `@D @D CD ED GD JD pLD LD 0MD MD OL QL ^L ^L aL `aL aL eL ДL 0L КL L @L L L pL L L L L @L L 0L D D @D `D D 0D D D pD D D D @D D D D D D D D `D D D 0D D D D PD `D @D PD D PD PD D pD D 0D D D pD PD D P< 0< `< < < < < `4 4 4 `4 04 `4 `4 4 4 0 4 !!, $, %, @%, 0&4 '4 *4 -4 0.4 24 64 p=4 B4 PH4 J4 PL4 N4 O4 @Q4 Q4 `SS, W, [, \4 ^4 @a4 d4 0f4 pk4 l4 Pq4 v4 `y4 0~4 4 4 4 04 < < 0< < < 4 04 p4 4 @< p< < @< < < < < P< 0< < @< < @p4 4 4 P4 4 4 4 @4 , , @, , , 0, , 0$ `   p  @      0       @     0   0  ` `! ! " @% &) - 00 @1 204 4 @6 9 ? 0C @F GG Q RR S T V WW X Y pY Z P^ __ `p`` @a a pb c c d Pg 0j @p r 0u @v Pw x `y y z } } p          @ ` `    0     `   @   `  p p     P p          @ p( )@* + 0, p- .@/ 3 @D 0F `F J @L N O P S V W X d 0h m Pp q r s t @t v w @x { |0} ~ p   ` Ѕ p p  А@      ` 0@ P P     p `  P   @          @   ` p    0  P     0t pt t t  t t t pt t t `| | @|  t  l `"l "l #l %l %l &l '`''\ /\ `/\ 00\ 3\ 3\ 5\ 9\ ?\ `AAT @BPB`BB< CC4 pD4 F4 G< P_< `< a< @c< d d4 e4 g4 k4 lpl4 0r4 pt4 u0v, v, `w, x, yy$ |$ }$ ~$ 0  @$ , , `, , , , , , 4 4 4 4 `4 `Н `   P @ Pp @    P P      е  `  0    `    P `    0 0 0 P @ 0 0 0   @ p        Pp            P  p ! # 0$ $ $ `& ' `( * < ?p@ PB J PT V PX [ \ ^ ^ a b e f h i k l Pm `n 0p p q `s t u v v z @| }  p 0    p ` @    0  @ Э   @         0  p    P   @  ` @ P    0 ( 0/ 1 1 22 5 P5 @6 7 : ; @ R T `] Pg m p|}     0    P   p    `0   p   0     P       `  P 0  p ! 0& ( 4 P6 8 p9 @: : ; @>? P? B pF @G G 0H H 0IPI JJ K L PM M M N p   @  P         p   `   @ p 0   @ @  `                 P   `   @ 0   ! P# `% & @' ) * p* * P, - / 1 `5 8 `: ; @ B D E I `K M O S pU W Y P[ \ ^ ` `a b d g i i pl n o q q Pu `v y y  0 P p  P  P   @  | p| Б| P| | | @t pt t t Pt 0t  \ pT `T T 0T T T ШT T T T T T @T T PT кT T T T T 0T pT T 04 $ $ $ p$ $ 0$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 0 $ 0$ 0$ $ $ $ $ $ $ P $ "$ p#$ `$$ $$ &$ &$ +$ ., /, 0, 5, `::: ; ; < < = = `> 0? ? `@ A B 0C G H$ J$ J$ L$ L$ M$ 0O$ O$ P$ V$ V$ @X$ [$ ], m, o, `q, r, `r, r, @s`sps pt `u `y z p~ ~ ` @   0     @ @ P p `  0     Ш   P P   P      0 0   @    p      0      P   @       p  P  0  @   @  0 `         p   P   0 @   P    Pp 0 ! @" $ % @' * 1 3 `5 6 p6 8 ? A 0B 0C CD0D DD E `E E F G G H @H `I I J K M 0NPN`NN O PO P Q `R pS pT U U V ^ `_ ` a a Pg Ph k @k l 0m q ps u 0y | P~   p    @ Њ  P P P   P   P   ` p  `  ` Т `   P`   @Pp ` @  @    `    P       p    0  P                `   @ P   0    @ p  |  t t t Pt @t t @l @l pl l l l l l l l l Pl l P l %l &&d `)d *d +d ,d -d 0/d 1d 3d 06d 7l P8l :l <l <l p=l @>l ?l Bl Cl Dl @El `Fl Gl Hl PJl Kl Ll 0Ml Ml Ml Nl Pl Tl PUl Yt `Yt Zt p[t \t \t ``t bt Pct pdt et ft ht pht ht ijl jl Plt `m| m| m| `n| nnnl ql Prl st t0tl ptl vl xl yl {l {t ~t 0t t t t 0t | 0| `| | 0@Pp\ \ `\ \ \ \ `\ \ P\ \ `\ \ \ \ \ P\ \ \ `\ \ \ @\ \ \ \ \ \ 0\ \ P\ \ \ T p\ d l @t 0| p|  l t | `   `  `    0    p p  P    @     `  "$ ", $4 '< *D .L 9T >T BT F\ Hd el Pft ft ft ft gt @gt pgt gt gt jt pmmmm\ st0uu wD xL |T `T T T \ \ 0\ \ @\ Ѝd l t @|        ` 0      0  0  ` Х P Ц  0   0  @  0  0  `   ` а 0t t t  d @d d d d Pd d Pd d d d `d d d 0d d d d 0d d @d Pd Pd d d d d Pd d d d d d pd \ \ \ \ \  T T T T PT T T PL pL L L L `L L `< < `< @< < `< < < @< < @< < < < < < < `< @< < < < < < < 0< < < < < < `< < < @ < < < < < < `< `< < @< @< 0< @< < < @< P4 P, @, p, !, ", #, P$, $, P%, @&, &, (, *, *, +, ,, 0-, -, 1, 1, 2, 4`56 `8 : ; @= > @ B C `E G H @J K M O P `R T U @W X Z \ ] `_ a b @d e g i j `l n o @q pq r r Ps s t 0u u pw y z P| }  0 Ђ p   P   0 Џ p   P   0 М p   P   0 Щ p   P   0 в p    p0 `   P   @             @ `        0 P p       @   `     0   ! p# % ( `* * * + `+ + + , `, , , - `- - - . `. . . 4 : @ pF `L PR @X 0^ Pa f l pq v P|  0   `     0 Ж @ p  P  0    P  P ` Ч Ш  P  ` ` @      @   `  0P д       @  `   P  @ p `  0   `   `P      p P p  0  0    @ `   @t t t t t t t `t t t t @t t t t `t t pt t t t Pt t t t t t t `t t t `t t  T T  < < < `< 0$ $ 0$ $ `   @       0      @   `   0      @    @  0 p     @    0  P  p    `     0 p     @  `  0  P  p ! @! ! " " # # $ `$ %  0%  &  &  '  +  -  1  2  4  4  6  P8  : ; P; ?  P8! 8! 9! 09! 9! ?!$ @?!, ?!4 @!< `E!D S!L T!U!L \!P]!0^!D f!L q!T r!\ u!d 0|!l !t !| !!| `!!| !`!| 0! ! ! ! `+" ," ." `0" 0"2"03" 4" 4" `7" 0f" " p" " " " 0" 0" " " " # # `# $#$ %#$ +#$ P-#$ .#$ 1#$ @3#$ 05#$ 9#$ <#`=#$ D#, L#4 T#< W#D Z#L d#T Pq#\ `x#d #l #t 0#| # # # 0# `# # # # 0# #P# # # # # # # # # $ $ !$ *$p*$*$+$ +$ +$ +$ 5$ 8$ 09$ :$ `<$ =$ `>$ >$ @$ p@$ D$ pE$ F$ G$ H$ I$ J$ @N$ S$S$ S$ 0Y$ \$ ]$ b$ e$ h$ k$$ m$, $4 $< p$D `$D $D `$D $D $P$< $p$$, $, $0$$P$$$ `$ а$ б$ @$ $ ж$ @$ $ $ @$ $ $ $ `$ $ $ $ `$ $ $ $ `$ $ $ $ `$ $ $ $ `$ $ $ $ $ @$ $ $}#'{k}#'{k}#'{k}#'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k}> #'{k}? #'{k}@ #'{k}A #'{k}B #'{k}C #'{k}D #'{k}E #'{k}F #'{k}G #'{k}H #'{k}I #'{k}J #'{k}K #'{k}L #'{k}M #'{k}N #'{k}O #'{k}P #'{k}Q #'{k}R #'{k}S #'{k}T #'{k}U #'{k}V #'{k}W #'{k}X #'{k}Y #'{k}Z #'{k}[ #'{k}\ #'{k}] #'{k}^ #'{k}_ #'{k}` #'{k}a #'{k}b #'{k}c #'{k}d #'{k}e #'{k}f #'{k}g #'{k}h #'{k}i #'{k}j #'{k}k #'{k}l #'{k}m #'{k}n #'{k}o #'{k}p #'{k}q #'{k}r #'{k}s #'{k}t #'{k}u #'{k}v #'{k}w #'{k}x #'{k}y #'{k}z #'{k}{ #'{k}| #'{k}} #'{k}~ #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k}! #'{k}" #'{k}# #'{k}$ #'{k}% #'{k}& #'{k}' #'{k}( #'{k}) #'{k}* #'{k}+ #'{k}, #'{k}- #'{k}. #'{k}/ #'{k}0 #'{k}1 #'{k}2 #'{k}3 #'{k}4 #'{k}5 #'{k}6 #'{k}7 #'{k}8 #'{k}9 #'{k}: #'{k}; #'{k}< #'{k}= #'{k}> #'{k}? #'{k}@ #'{k}A #'{k}B #'{k}C #'{k}D #'{k}E #'{k}F #'{k}G #'{k}H #'{k}I #'{k}J #'{k}K #'{k}L #'{k}M #'{k}N #'{k}O #'{k}P #'{k}Q #'{k}R #'{k}S #'{k}T #'{k}U #'{k}V #'{k}W #'{k}X #'{k}Y #'{k}Z #'{k}[ #'{k}\ #'{k}] #'{k}^ #'{k}_ #'{k}` #'{k}a #'{k}b #'{k}c #'{k}d #'{k}e #'{k}f #'{k}g #'{k}h #'{k}i #'{k}j #'{k}k #'{k}l #'{k}m #'{k}n #'{k}o #'{k}p #'{k}q #'{k}r #'{k}s #'{k}t #'{k}u #'{k}v #'{k}w #'{k}x #'{k}y #'{k}z #'{k}{ #'{k}| #'{k}} #'{k}~ #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k} #'{k# >" 'RBABd&#RF3aB?Pᝧ}Xᝧ<\`ᝧ|`@[k '�}'`}X=P]*{s1R@[k '%#h=! 0}DZ[k#kG/kG/GG/G/ '/%#//#@^H>P^X~`hp޵x^~ G G>G0>"_"@BӬ>@ޡL\4^ '-1@%#11 @Gߝ'/ޱ|6\ GGTNB&(}*"OS[k '4G$#G^Gx>"/G@BGG11@ GG"/GAB^G/1@ b CDGGnGNB/&(}*"S[k '4G##}PAi[k '##=%(}+)!GS[k> '8 "##(}R[k '4Gl##lޥ GEߝ' A6L6|GGGGMBG/G(>"4GAB ' ##/=@GGMB/GG />"4GABӜ> '`XA$X"# X[Ü^N 0 A0A 0A %A!&(}H+"R[k '4Gh"#+&(}h+"R[k '4GH"##>ޡޠ M^>/@ C b E/1 @DGG-A?EEްGGMB&(}+"R[k '!#4G/I Gޡ}>GEC[k^ '!#@@@/G>"G~"tG 0 A*CB> 'X!#GB\$ca @C ^/$@E>aD" ~0 x (^G$   -A0^G 8~G@G &(}GG+"JR[k 'G #è>]% ߝ'+J!46|)x}m "TiG!/@4Gsi[k)鳘)?^/G.1@@GG,MBG&(}+"&R[k '4G #<G~}>G mE`EC[k> '@ @@#/G>"G~"tG0ABB~ ' G#.c+ @C_ >GbAAE"D ^"0 x  A0>~^(GGD@GW?~H`롄E0/Lˡ8E +!/&(}GG,"Q[k 'G#?àK EbD xE DXEE/)͌@Ӱ^ 't#0ɥ00 /D@ G8@G@ˡ/G ( sH@ӠK ' #/`+"( GG>@ӄ볘kޡG=A !GGUBG@^H>P^X~`hpޥx^~0#k// '/p#/ߝ'#@^H>P^X~`hp޵x^~ G G G46\|6|> Gߝ'^6^/G>"G~"tG BBӸ> 'c\#CD# G8oLOc! L ߝ'/!6ܥG@!(>?"0"8~"!!!  PAdH$CDD@D@D@$@&CDLvH'CD@G@2@GT@G/GG.MBG/ /&(}GG8,"Q[k 'G#=%(}Gh,)!G Q[k ' "#(}Q[k '4G#% G,!+ˡx}TKm "!.@G4G2h[k+볘k/GG/GLB&(},"P[k '4G #ߝ'6\//G>"G~"tGABӸ '"C#D G=GOLc!.!,~0>"@!!G !(_"""PADH#CDC@Cc@Cc@#@%CcDLvH&CeD@F@4f@@/GGXGLB/CGO 顄E76Lɡ 8E`!&(}GG,"P[k 'G#<&(},"P[k '4G#4à) EADi xE DXEE/-@Ә 'D#0ͥ0m0o /D@ G@G@/G ɥ(Υ 'G@Ӡi '#/`)"( GGv=@ӄ鳘)?G@^H>P^X~`hpޥx^~#k// '/p#/#^>^~ (0޵% G G G@ݥ! G/GGGG.@B/ G / GGGGGG/G@i ߝ']$G46-B x}m"TG$@X4GBg[k᳘!?/GG GGJBG&(}(-"O[k '4GH#EGGGG?B/ G / GGGGGG(@G0. iI/GbD`@)Gފ@G0ɥ00Ø GD@ GGJ@@ɡGG i(k `F@Ӡ 'X#`)"G( G<@G鳘)?G^>^~ (0ޥ@#k '/#/RG#B^>^~ ( G G GR.G/GG/GGGG4GG@/ //GGGGGTG@/ GG^>^~ (0#k/// '/#/RG#G^G>^~ (0޵ G G GGR8^"GG,CG / /8>G //GGGGGG4@8 '0A`# AG^>^~ (0ޥ@#k '/ #/2]$#/H( @BP>G`^^"X8~"^">0"^~޵%v@H%!4~$HD^      ( 0 8 @ H`.@/CGh /hޡ>}Ax D. cB@p~P@re[k 'x#=%(}H-)!GN[kp> '8 "#(}N[k ' #hޡ}PA[e[k 'p#=%(}-)!GN[kh> 'x#8 "(}N[k ' `#>(^hޡ}u @AD PA?e[k ',#=%(}-)!GN[kh> '#8 "(}N[k ' # Gx=I A@(~G;`(I  G d"8>""$B/"/>"}8o[k '#) 0ALA aA /iG(I "8>"l@"c$B/"/>"} 0@A 0`A!j[k) '# aA?}">"j[ki '#+mA D/}">"o[kI '#hޡx2pޥ G~0~^>ޢ (GH x`DD"!(>0^P>X^ ~8H~P`~"X8"@^`޶h~ 0`Apx޵)@h~ '#! cA!pG="4^h~xxD"3@ '#(~ An}">"n[k '#x=I Ah_Gx xE]RBp 'T#G/GVRBޡ(GuAEGGLRBG GHRB/G^>^~ޥ #k '/#/~@#P^CX>`^h~px޵^~^>ߝ'^~ @c6\1CcD2N%J3CqD~ߝ'"06|X`0C E~<> N>6|@3Dd `@>~" 4G>6<GJ"CEB_@BB@BB@"A2CBDKNvDJ#CRDE"c@Cc@"C@^\@6\#CDaLrL%H0CDPBPBRBdH$CDA@0@A!@BA!@4G!@^"@>8D"@D D8^">HE@G>/^"Gd1~">E@>C '5@5 @ #ED@ñ @@2FӒ Fu @u@tGEEU @U@TGDD GU @U@UAFTGF/u @u@ @@$DA DÒD:GuAtG;G#GG /4GTG tGG^^!"~!/@ hBΠF@ BF8D8CD~"ߝ'^>6ܦOJ:CDZ_CZZCZZC:@@G@X7@ '\` #>G>PE ^"G"8@\GÀߝ'86|D~G5`ߝ'6</ޠ>ޢ>D ?GE#DF DLF@dtF`FF 8GG<D4@G*CY _AY@4G 4D@GG0 @Lt@G/G^G^b>D~G(9@G\. G8 D9 ߝ'#C6D_"dLdH%CDE@E@E@%@D)\(1" T(AX 4G\H"THJX `ՄJX@4G\被B 8`E 4G`(0C0 C("/^>hG3@GG>^"S5@ '#TGm ""@XGDIBG> 4GAa0@@0`@Aa8D`ޤPƤKG"P (",IB> '0#AP!GPA>_;~/" %" &IB> '#P! ^/"Pb #" IB> '#P!PA>_Gzt@GG /Gst@> 'l#AP@}>l[k>^ '@#PBA>"~}m"TC Gl[k '#>"} "l[k^~ ޠ '! #{ }8"@>"` <`@zl[k~^ޠ 'Dl#HL"CLDP챘>"G8Dߝ'6|CLDH$CDD@D@D@$@D{2@ ' #G>^"G2@G/G>"GHBG}` "GFl[k '@쳸#}` ">"4G=l[k '#@̱`GGh]/=! B G=!I9@ 'T#GG/=! G0@/8E/=!  /=!IL//XE`=!//xE=!ɤ̴// E=!餠8E /XE=!), GxE@=!il/E=!>HբC޲D DuLl4GL,PUb%"ߝ'#CBDM!6/wI6GdLoL֤H&CEDF@F@F@&F@'CD6eHL CCD@@@@@@@@ @@0CDNvH1CDX F.`>~"J2CD G^"G@@G/G 8E"x@GE ' ~8#`8F/&(} 8E(."J[k '#:&(}h."J[k '#3>8 F2 %A}P!^G!>Wg[k> '#%}G(! rk[k>^ 'h#/G@@GGΥ^Gµ Gw@> ' #(} "J[k '#^GCCE޵D@D=! /D4G=!)QG"%@@,=!/G=!ɦ>XYy^"B\~x ZC:ZA~zA^[ZCzG@sߝ'*1@A4G^(6\~KXJJXXjX[[fGޤ=!ߝ')$@66|Ơ'CަD^VL 6z>H0CDyD1JQ1BQ1BQ1BQ1B&@2CDSNDJ%CDT@TB CTB ~*@@0^JAC!C(^0ލ ~[>[NYLY..Z, Z[[FyD ZXF@ߝ'(6\RXX[ yDZXG@ߝ'(6|SSXsX[4GBWA6CNwA~7L$@!@>4GG=!i $ /8E=!Gu=!IrG> >GG C0@@c E@C0@@ H@^~8F S 0À}P?CH`[k 'GP#=%(}.)!GI[k> ',#(}8 "I[k '#4G/ަXF(0/>xF8@ /~F@H`>8 $G>GG C0@@c E@C0@@ H@^~8F S Ӵ./}P@_[k '$#G=%(}(/)!GdI[k> '#8 "(}^I[k '4G#ðަXF(0ִð>xF8@ٴ ð~F@H`>8Ĵ $G/=! GG @G/=! @Ӹ^ 'L#Gޠ4G=!D)G=!AaeH />^ F H~HsG}PB=!i_[k ' #}%(}p/k!GI[k> '@ "#(}H[k '4Gl#BG~`=!)G}PA=!I~_[k ' (#}%(}/k!GH[k> '@ "#(}H[k '4G#"^~G(@G`=!IG4G/¤0 @00@@c 0[ '@GGG=!)4G0B0~0`BBR"0>[5ޢ BøG=!)GG4Gy0C0~0`C zAZ#0^[K Cw/ޤ>_^@fGGG`ߝ'=!x6X6Y@)@/ !0@B!PYY0Z[ @/GGGߝ'=!X6\IR^@<Ҧ0 BBs"TtZrZZ[ 7B8Ɗ_~ߝ'/x6X6\=!GZ)G`(``y0CzCZ#[;[:[[[{~ Cð^/G@ߝ'=!GX6_/84&0 @@ @[[ X[ (@G/8>"=!CɦG =!I5@ '#@>G=&/<!=!G,@ @-@ =!IH1"5@ 't#,G=&G =!01"IG =!I5@ '8#Gޥ=&G =!P1"IG =!I5@ '# G=&/=! 01"IG =!I5@ '#G/ `=!>"IG =!I5@ '#@>G=&<!G=!X1"G,@ @-@ =!I5@ '8#,G=&/ =!IG001" =!Iw5@ '#Gޥ=&/ =!IG`1" =!Ig5@ '# G=&/=!IG@01" =!IY5@ '# G=& G=!h1"IG =!IJ5@ 'H#y>G/dA=&/=! G 8AD)`D=!P01" I25@ '#aG>=&/=!iG`01" !  =!I!5@ '#PG=&/=!IGp01" =!I5@ 'l#BG/=&/==!GXAD@ =!01"I5@ ' #//G=&/=!IGp1" =!I4@ '# >G=&/!=!G _ "D =!Ix1"4@ '# G/>=!IG =!I@ '`#G} ]%=!IJ! Gc[k^ ',#H}*"8"n[k '8>" #G/=!)G =!)4@ ' #*"G/G/= A} #GG4@ //*"G/= A} #GG4@/>"G/= A`} (#GG4@/G>G/ ] b $ *"(GGr4@ GG=&/= A} #01"(GGd4@^G( (*"`B"P"x3@/P>"G/G/=! = (!GGN4@,/G `G/= >"A} #(G@4@GG>G/ ] b $0*"(GG04@GG/=&/= } A#01"(G"4@G/G/= ( A} 8*"(#G4@G>GG/d!] b $!D (@*"/G4@ GG/>= A} #(G@G/G/= ( A } H*"(#G3@G( />GP*"P"`A"2@/P>"G//=!( G3@G( >~<),@@-@ (,#$G 4Gߝ'&Cޢ6D2C&LF0"7WH'CD'HG@G@G@G@%@ =޶G^ߝ'[L6|ߝ'jKY6|SNDJ4CFTBTBTB(B[8>@^H!áYA 8"G=&H}[01"kY KY[l[k '8#8"Gߝ'=&H}[P6<01"`X@Y[l[k '#>TG) C E>]&x}CA8"1R"G@\[k)]&x}PD`C01R"8"4G\[k/]&x} C8"H1R"tG\[k]&x} C8"x1R"tG\[k ]&x} CFD@1R"8"TG\[kG8>"53@ޥ> '#GGX@/G}X*"a[k^ '# H}`*"8"l[k '#8>"G3@GG^ *"C!D@MLEH#C"D#`HCc@Cc@Cc@Cc@!#@!  ʠ|ΰüA4D|G|객B4G|.G4C]F/>N8@F@|N6I3CFVBVBVBVB4B/GNA#/>=&/A$@E@11"G2@G=&/AuA11" EGG2@/G>GG@G>GL@G>A @EbE@ã5A5 @dDTGcE`zæUAU @DfETG4Gp/uAu @2F4GqE nfôA @FtEtGβ]÷A @FGwE4G.NSûA @ mGtG mE4GNIïA @EaE AdJXAE;ø8AE`4G 2øޠ8AE` 8HEG4GN&AE TGn /xBEtG4Gβ/XJEG4G./8@E@TG 4Gn/_ X@EU@At D 8@ENNU AP.)! ߝ't6\~D+\.tG>GHAldNhD`pΰ-tN9/5@U@E4GGpN"tN.xD GGpntN&DGGptNDGGp tN8D4Gp.GtN~ G`t / @ TG7@tNç@t~G>~5AUA "EKD Dxà@/G^!F2(B~0BG/8 D"6~@GG#GG XE]!*Gv~@ӐGGG xE }!+Gj~@ӘG G/ E!@GGG/ 8E@=!)T~@GG"G/ XE`!,H~@GGG/xE]!*<~@GG G/ E=! Gl@G\\~>`^> >$(ޠG^H>@> (>08޴~^^>GGHx@ӝ`^AA EL*-)@-HjLJb@Hj@D /ޤ^0BH&0 BH&r0`BrΡ>>"8Eߝ'5C/6ܦ9GN֤J7C5GWBWBWB77CFGG)@G>^"/G*@~G"`+"G @B/GG}>"c[k '#@ G!G G.G)] 8 E ʡ0AʱGP^X>`^h~pxޥ^~#k/// '/#/ # ^(>0^8~@HP޵X`^h~pxCQ0^>^~^ ߝ'6<0CDNJ2CDGP~"E<X3@`dS>, 03s! 5Cߝ'E6<6NN$J0CERBRRBRRB2ABB8F^HBB4CETBTBTB0BBFF4G?" A"~"G B/]@F@F>8@F@4CDߝ'^6<N$J0CDH>PBPBPB0@F@,@ ',#>G>PE ^"GV-@GÀߝ'86D`^(@ߝ'6<`~FDàDD  E F#-F COF @8cFtF`<C*@Y _AY@՘c`~G`ަDV6HvL>8@E 68`E8E>(`>>H/X@E 8`E8E`6>2</x@E 8`E8E`6>&0/@E@8`E`8E6>$/X`E8E6x`E 8E 6`E@8E6 XE6xE6E6>>QG^F`GPX>.@G\G!G!C`ΡD 8E)ߝ'6 LH"CDB_@BB@BB@"@@D@T%AX @ՄŠAX 4G\@8E/4G%0 B%"G^@H>eGG(@/G>P^"O*@`ޥ 'ܽ#TGm.""@XG@>BG.4G0 @.`^}>"Cm"TBGa[k`^~ 'Hܽ# CD0 @ @|4G|`ޤ|0@|P/G 0"">B> '۽#P!PA>_~`ޤ} CG4EPA GO8DLW[k> 'l۽#=%(}1)!G@[k > '@۽#@ "(}@[k '4G(۽#bÀ}GwW[k ' ۽#=%(} 82)!G@[k > '8 "ڽ#(}@[k '4Gڽ#K >>`^ 8E" "& >`XE`(0% >`xE8@( `> EH/`~8E@ 3 `XE05`ަ xE@6>`>^}8GjL7MO q[k 'IAٽ##-A} G$Pm@W[k> 'ٽ#(=%(}2)!G@[k '8 "ٽ#G(}~@[k '4Ghٽ#À}GW[k> 'Lٽ#8 ]%(}2J!Gl@[k '8 " ٽ#G(}f@[k '4Gٽ#À}PA GV[k '@ ؽ#]%(}3J!GT@[k '@ "ؽ#G(}N@[k '4Gؽ#À}GV[k 'H ؽ#%(} `3!G=@[k 'dؽ#@ "(}G7@[k '4GLؽ#YP>_=&H}@A`A KE>@(Ii $"31" GXg[k^ '׽#"/>"Y>B` 'Lo׽#ߝ' ~,6<G ^@XX6[` X[1`//L/KXXG~G-1A( M[ ,A 0Ab)ABI@"@?B^ 'H׽#8JJ*A*Lo A`>}G (Ac@@`@@@"`[k> '8)ֽ#*1AIAI`~ޡ^C 8ECA@E@&|+OD@8 D`ޤ7 GG4G 0@G ~A[ h0@|K @_#/~sA3@A|TB ޢ>8^F| 9ZCXC/|kMmCM|+*1 AI,AIPEPOߝ'6ܥ#CBDnLvdH0CCDBHB"H@X@D@8/0 B B$B7H8 >}|%1@Lp[k 'G0ս#E@Gަ#HBt/ 8Gh!@p/ A 4A, è^@֦~ʡBn@v A |K0BB B_P>ߝ'Pޠ6\1C$1@LF|~^~UBUB8GUB7!G2NC EUB .E@*1@ zNvDJ;CF{CGgC//B @cLCA9BG G&ޡ^~AA.D @BcBBA0`@b/P t Dh @pHHA />^@1PPAQB0PަXE `8H֦0BVVABB7J>/5AuAF HY@9GGYYALZAY9@G GޥPHΥ8NNA^AA!E/D bP`@bP tD hˠ HGGAB(@+^P~8 F" @Ls`^@զHG6U^G>@/&(}+3"~[k 'ѽ#G ^(>0^8~@HPޥX`^h~px0#k// '/Pѽ#//#^ >(^0~8@H޵PX^`~hp G^G>4GFӨ> 'н#/GLFӨGGtGGFӨ 'н#  ,//> >> >"h>"^"8~"(""FӸ '`н#8D4G//p">",@/"/h>"G,@/"/>"G,@/"G/G~+@"/Gh>"/G,@/"8>",@/"G/m+@^ '#_HϽ#=$!$v HdD> G>!- ޤ/p>",@Ә> 'XϽ#G>",@Ә> '8Ͻ#G>",@Ә> 'Ͻ# G>"/G,@ 4GØ>!! 4 D^`B@^_GGp``pe@G/p>"^G"! CⳒ+@Ә> 'hν#>"G+@Ә> 'Hν#>"G+@Ә> '(ν#>"Gz+@Ә> 'ν#>"Gr+@Ә> 'ͽ#Gߝ'p6\`A_D>B `A~DxhDP4G8iDT`DP4GTGtGGtGxᰠ!D 4GHLP!//###G>"h^"~"8""F/G/h>"/8^"0A! 0`A-@Ӹ^ '̽# A_"/'/@Ӡ~ /C4GkE `E4G4GOA4G/ '^4G̽#!%C @DBDߝ'@`E@X6| Gޠh6\1C D DDhAQ5B^6C @FRFU"TB^VB.GGy@/ G  /G >"h^"~"8""GF  'h>"˽#/*@( '˽#/8>" *@Ӏ> '˽#4G/P?@}(S[k '^X˽#@~8@D8`D&`ø^G _GG>^~[*KY!#XaAY[@/MYމ Y0 BB YR"[ 5B8`E4Gp//G ^>"h^"~"8""FӘ> '`ʽ# 8`E 4Gp^=@@`GE@01@@'eG^[! X%`Y_A"Xa*X[]@@58q@@TG C"" ]C @@`B xB"-Y-Y _Y!Չ,Y,Y _Y.Y.Y_Y/Z/Y_Y? bB`U50`B"12Z bB1%Z_$Z pGp}"Np᳀>P?BR[k> 'Ƚ# G  /G>"JBӀo 'GȽ#5%q@G @#"/ ' @c   X %@_X!Cg*KY _DY@,Y _YÉ.Y_Y? @`'0 @0Zc  @_ZØpGG/G|@BG^ X`E% h"8>"9+@Ә> 'ǽ# %/ !G)@( 'ǽ# /-"G)@4G/G}O(R[k4 'Dǽ#.`/GGv@Ә> 'ǽ# }PArR[k 'ƽ#  > ->GGp @D0@@c E@h ͤ@F0@@c G@ 0`A!y`A//8`E-GGrv@Ә> 'Xƽ# }PABR[k '8ƽ#0 > (->GG@ 0@D0@@c E@80ͤ@F0@@c G@ 0`A!y`Al//X`E'GGBv@Ә> 'Ž# }PAR[k 'xŽ#@ >c 8->GG @@D0@@c E@@ͤ@F0@@c G@ 0`A!y`A<Y/%(}G3!GZ{[k> 'Ľ#@ "(}T{[k '4GĽ#3}%(}H4k!GK{[k> 'Ľ#(}0 "E{[k 'Ľ#4G$/&(}G4";{[k '4G\Ľ#%(}4!G2{[k> '8Ľ#8"(},{[k '4G Ľ# ]%(}5J!G#{[k> 'ý#(}8 "{[k 'ý#4G/%(}X5!G{[k> 'ý#(}8 " {[k 'ý#4G/>`ݥ/^!>"h^"~"^!^!G^8"",F/GG/v@Ө  '4ý#/h>"(@( ' ý#8>"G(@G(/`)"8"/G:@G#/8">"`I!G:@ӈ"//G7B( '8>"½#G(@( '½#G/( (@G( /G>"}k[[k 'L½#} 4GPAn>Q[k '(½#G}%(} 5k!Gz[k> '#@ "(}z[k '4G#{ð.^ 8E 8E&`Al G/G_G~ߝ'[X6$X#`XcX[W/J#X~ X0@B jY [P> @?K G^NGG^^!^>"h^"~"8""GPFG9 GLèG %!G&(@( '# /-"G(@/]%5J!(`#Ih)""x~" 0`A*@J!xIQ7@Ӏ ' GĿ# lANG8>"x~"CxIA7@Ө~I '#:`G(*x"G6BG0l#X[~G Pj`/P/x"($GG6B P^0"EX[^GPJPj/GGFb@ G/ GG@b@Ӑ '# GP G}>vZ[k 'x#>}d!@P@GP[k '( >L#*%(}' @6!Gy[k> ' #8 "(}y[k '4G#À}PA.P[k '0 >载#%(} 6!Gy[k> '#(}8 "y[k '#4Gl/}PAP[k '8 ># ]%(}6J!Gyy[k> '8 "T#(}sy[k '4G<#R* G^ G G J~`(^G@8>"xR@/G6@/0* @,@ k!8JL@!" 0 A~ #AGG=BG>/G t@Ә^ 'h# H고jG . '@ 'J<#/(.( G&@( GG>i AH)^"@H)^ >(^0~8@HޥPX^`~hpp#k/// '/#//#"^ ^">C~~""C^">^ ~(08޵@H^P~X-GӰ '$#8D4G]%/ >"L"~"GBG]&/ >"~"7R"BGGTG}]O[k '#qD%pD!,DHe&HDW@B%/ >"~"7!N"BGG >"%/~"!L"BGG "}[D[k '0@#}.O[k '蹽#G >"}KY[k '̹#%G! >"L"~"GBG}TGO[k 'qD#%pDDH! ,e&HDW@G GG&@ "/G &@ '(#/&@ '#G&@> '#- G>'@> 'ܸ#G >"'@>> '#G'@>> '#GG&@G 4G>!! 4 D^B@^_GGp`G_@G TGtG G^G>"! C> %@> '෽# >"G%@> '# >"G%@>> '#G%@>> '#G%@> '4G`#/ >"DA^"H~"LP!B ' G$# >"=$/~"7! A"B> '# Gߝ'l6ߝ'/^"X6GTGGB/GG/- >"]$~" 4GG7B 0B"B 'GT# =$/ >"~"7! @A"GB/GC~G^\"G4GGGB/GG;B 'е#`̥E=!`̵ߝ'46\` ?D=! ` ^4G@@@@dEDPǰ>TGX@D@DP >"}&^ G/s"t(S"~"fBӰ~ '(# GCb`^!Cޠ!0`A&@A, HDD8D 8D@XD `XDDDʲA*?=;4Gj8ð>G!+@^ A"@ ^"!G+G 'D#G;B '0# >"$/~" 0@"BGGTG}M[k 'qD쳽#=$pD! 8!EHf'HDW@G^G >"G.'@G 0`AJ! dA/G!4GG`;B/"G(@Ә>4G4G+C -E)E4G '4GKoAP#˱O!ߝ' G!"C EE`}!@h6\BO@Hᝥ"~'C mD mDcDe@G@2C EEQ?BROB2GGr@Ӱ '> #Z  @@@/";B> ' ^"h#~"G@+G 'H# >"G+G '(# G]$/ >"B ~"@B"BGGTG}+M[k 'qDܱ#%pD!HDHeIDW@"G >"\$@( > ' #/U$@Ӑ>^ 't#4G+P_@}k( M[k ' >H# GK!C >"GGAG GG4G ^0@@@![ @8 E4GpK=B 2TB"T޶G~[*AY$Y _JBYjKY[k]B6 p TG p@{#"]`@ @@ۉ @{#.Y.Y_Y!-Y-Y _Y/Z/Y_Y;00Z0Z_Z @{[ {#2SZ @2DZ_CZ@"pEpȢ}"Op賐PBL[k> '\# GS GGGDBӐ '4#7` G `@G#"` $ !  X @_X"Od*KY _CY@,Y _Yω.Y_Y @@/$ !0Z @ _Z"pGG/G:BG>X Eb "G$@ '# %/ >"~"7!O"GBGP=$}GG! P!"#R[k 'G#=$}! X!"R[k 'G#=$}! `!"R[k 't# =$}G! h!"R[k 'P#4G-GG/G9B!%G !p/"9#@( ' #%/!x/"0#@/4GG변}G( K[k ' #%!1 GGo@ '# }PAK[k '  d#>GGGw /  @c E0@@ޤ @m  @Gc 0@@ @ 0 AJ!y AL//8 E.Go@ '#}PAK[k '0#(G>GGD 0 @c E0@@ޤ @;0 @Gc 0@@ @ 0 AJ!y AGX E*Go@ '# }PAiK[k '@ Ԫ#p8>GGG /@ @c E0@@ޤ @ @ @Gc 0@@ @ 0 AJ!y Ac/=&(}71"P">t[k> '(#%(}7! "t[k '4G#=%(}7)! "t[k> '䩽#}%(}7k! "t[k 'ĩ#4G/%(}>7! "t[k '4G#%(}7!0"t[k> 't#%(}7!h "yt[k 'T#4G/]%(}7J!x "ot[k> ',#=%(}7)! "gt[k '4G #%(}7! "^t[k> '訽#%(}7! "Vt[k '4GȨ#ޥG!n]`^*KAJOAJ8B '#/G ^"~"(G 'l#%/ >"~~()G 'H#G=$/~ >"! ~"A""BGGTG}J[k 'qD#%pDA!BDHcICDW@A``=G 4GGo@ ' >"#$/x~"7 @"GBG6%} GG!tG,"^R[k ' TGH#"/=$}GG! G!"PR[k '#=$}GG! !"ER[k '䦽# =$}GtG! !";R[k '# Gx/GG.8BG^%/^"7!,"GBG6=$} GG! tG!"R[k 'TGH#"/]$}GGB ""R[k '#G]$}GGB ""R[k '䥽# ]$}GtGB ""Q[k '#Gx//GG7BG%/ >"7!~"(M"xBӸ^ 'p#/ G"G4G.B/G/ TGG7B '0# ؃ExG >":!@( > ' #/3!@ '줽#/`/"( GG2@%/Gp>"2@ '#p"/`!GD0B( > '#G!@( 't#GG( G !@G( }Gp>"S[k '8# 4G鱀}PAI[k '# %G(}7!8 "s[k> 'ࣽ#%(}7!x"s[k '4G#GI! C >"GG&AGU` GjO G G4G)!޵0A*@J!^[A^ A_B` GW~$`=G`  %" @( '# %/!,"G @G]%/%7J!7!N( `#CIh,"7!"r[k '4G\#.%ɥ!mn` GÐ`=G G)^G>`~"!/@!xR/@Ӑޥ '졽# G A`=^G>)`~"CxR^/@ 'ͥ#9G@(.`"/G|/B0.a#CX[~G Pn`/@P/`"($GGh/BP.0!$DX[GPΥ/Pn/GGZ@G/ GGZ@Ӑ- '#GP  G}>R[k '#@^}eB@P@H[k '(^l#.}$(}+@7c "4r[k> '@#%(}7!",r[k '4G #Ð>}P?@H[k '0^#}$(}@7c "r[k> 'ԟ#]%(}7J!X "r[k '#4G/>}P?@H[k '8^#}$(}@7c h"q[k> 'd#]%(}7J! "q[k 'D#4Gh/N G~ GG G n `⽤ @(Τ^G>@@xRG/@G`0./@@`a)!8N !O@! 0A~ #A`❤G`GG$6B>GG {m@^ '\# H고`⽥G -@ 'J,#`G( (/z@G( G>G AH)^"@H)5B 'ȝ#/5B '#G5B/GG^>^ ~(08ޥ@H^P~X0#k0 HDD0 HDD0 HDDZ0IDDA0I_DCDAJ// '/#/GC`#GGh~p^"xp^x>^~޵^~ޜ'B 'h#@@&(}:"4q[k '4G@# ~\>hޥ @UlA|~D޵4G/GX>h`A5 @U,B2D 4G1D O~/_!! C>|^ ~`>px6J8I^LtBFVC~CB>G>`$20N,@Ӑ^ '(#\G$28F,@Ӑ^ '#\G(2,>,@Ӑ^ '蚽#\G(246,@G\G|މ>_ __ߝ'_[[6|[[jKYmY[oY[k+Z[[x}uAuA5ADuADADuAD8^"DGG8"G[kG>^ ~(0hG\$@G/ߝ'886\D8^G8^"GP~ x}G[kG>^ ~(0h~"@Ӹ^ '#G2 +@Ӑ^ 'h#\G2+@G\G$>__[$^>(~G"AH8D ߝ'b@^G^L6|[jKY[h`GAߝ'6h0>~.F/@p1 jF+`F(ТF% G"0)G POG@$phG`(-Y _Y,Љ.Y_Y0/Y_Y 40Z_ Z4 DD4D1"4 FhGhGW@Gh/P"h^GTbm""X~ -Bh> 'G#XX4Gh~C@0@0@hޤ8D`PKGP0P" 1",B> '#AP!PA>_<h~/P" %" (,B> '#P! /^GP"Pb #",B> '#P!/PA>_G.X@GG /G'X@h> '<#AP@}>\P[kx> 'tG#AP>"h~}m"TØ GXLP[k 'Е#P>"} "EP[kh^ ~ '#!  @G@4G TG tG`8^"G@"`ޠx}PDGHL$(@,`04LథF[kG>^ ~(0h"@/G/@>"GV,Bh^ 'ؔ#}` "GP[k '@곸# h}@>" 4G` "O[k '@#h8>"ވ}8"<ϘO[k>>^ AU!A LE"A A!A ME#AD#AU!A!A @EU&A'ADU$AE#A"D(ADDU$A#D*AD'A $D 'D*Ah#5BxD~ HR5@B G`ݥGGCGj@G/hj@ 'h>#ߝ'_6d6܈[ceXfX[a^"C^G[`X[Cx>~x`C`Q G)3q@G dB`/@ѢQ AA C6G CwGA1" CZDA A C`DA? A Q0A A1" B2GA^ G$ q@G @/@z@@Z#`ڠ 0`A @@ 0`A: 0`A 0`A D@ /0@@ D@Z# 0`At~^G6`$2<)@Ӑ> '\#`G$ @*@Ӑ> 'x#`]G (B$E+@Ӑ^ 'T#`=G((2@)@Ӑ> '\0#hG( @*@Ӑ> ' #h]G (B(GG(+@h=(%/^ߝ'~&6'CBD1CcD@~"L C@(NVH2CGD2@JRRBRRBRRBRRBRRBVI3C6R@hDB޲F3`JSsBSsB޲SsBSsBSsB#s@u@uDÀ~>_%@~J! J~@@@@cG `}@@@@@@0 @q_[k '䏽#G(~G~'1@[Gߝ'[^}[`6<6\X6ceX@X[!X_*X ^G~[,lYkYP X{[k[ 'H#G~>}_#L11 @G=_[kޠ  @$C 'D#ߝ'٣@ك@ ޴G 6܈[dX[^G>ߝ'[#h@~6|^[A#X[eXaAY[[|~`|> _ߝ'81C!0@[>ލ6lY[]%`][GJ! MYGmY[[Gx@/*"h`=G  GGn@/]%`=G ;J!GGd@/*"h`=G  GGZ@h]`=G ]%( ;J!GQ@ 'd#*"h`=G((GGF@;/t>x^|&(}"@D@P"D@em[k '#4G/|^t`=G 0@A0A^]%` J!G'@ '*"#h`=G  @/*"Gh]`=G (G@/*"h=`]G((GG @h]( >h~C @>"EE@ >h^G# GO @"q@A J@@ 0 @P @p @@% Ϥ @ "@@ A /#B Qc  *@ B50 @c *@`h10`h^GG(`> 0@c D0@@` E@>`TG5 бp6/}P@tC[kh^ '#  %(}@;!Gl[k> '؊#8"(}l[k '4G#aÀ}PB]C[kh '#0]%(};J!Gl[k`> '|#(}8 "l[k 'd#4GJ/`}^4GSC`⽦ޢղ4Gh]`G 4GG:dh@G /GG^h@Ӡ 'h~艽# G}PAo`Hc !C[k '#`=(},]%;J!Gl[k '8 "#(}Gl[k 't#4G/ޡ`=ô^}P_@C[k '<#`ݥ(}% '8"#(}cl[k '4G#ޡ}PAB[k 'Ԉ#`ݥ(}%` '#(}8"Il[k '#4G/`ޡh=À}PAB[k '`#hݥ(}% '8#8"(},l[k '4G #øޥ>_DAP&q@8@D;`x@D9@Nߝ'GGX6 @%$eXCgX`ݦ@ @6X@XCX'BJ'X%X@X[ JXK'X[qv[ KXgB[BU%XB p @$/LgX`=0@eX @9 LX'C [_ô~ GG` G`^G $2 0`A)! @4'@Ӵ '# `A! G>^_GZ DrG8`D@x`D>` $2'@Ӵ> 'h#M ߝ'+q A iAX6%$`eXCgX` A AG %XA'XXN@KGY EYX[  XLGY[b[  X@$Ǥ[@f'EY.@!  A$/MgX`= 0AeX A1  X.B![_ô G GLB`⽦^G $2 0`A!B&@Ӵ '@# `A)!G>`_GDAX@D`x@Dߝ'X6AfXh0@eXXA [(` @x@DG Ha^8`FRBuF/X@D`H5B`G GMMBh^G (20A  C&@ '`H#)!! A/`>W$ ߝ'@~ G6X6|G$@G@ ^[~[JEYjjY[83q@ _GR_@ gB%$` YLY`} B@@ 3BۦNY YB LXNXOY Y[[PYOX YPXC[ؙ[[RCBR"  'B QY`❥0 B Y0@@ 'BQX AR"[,`0`@ m@=/>G_G7 ߝ'%q @X6| @&%/SZRGZ`}@ @ۦZTZRXBVZZTX[VXWZ[V[WXC[[HCښZB! @ `/XGZ`}0@SZ @sXXhB![?GG_`ߝ'X6\/[&[h=0@:[1X.B![q`^ @_x^~`ޢ@&W`@~"ߝ'G G6X60BGC [~[@X``Y[9%qCG _T@ @&%/\YJ^Y`❥`C@ eC,MYY4@ JX MXOYY[[PYOXA YPX@[,[ 4Al tA" ? xC Q^Y`ݥ0`C \Y0@ xCΥQXA"[._`^ 0A" A_=/G _G7ߝ'6q@X6< B&@%/YLY`❥`@ v@,aXCgX LX9@TXXCX[TXUX[ [UX@`,[ 9A XB9#  d@ /VY`=0`@ Y d@1VX9B9#[њ`>" GhݥG Gw8B` '~#XWh} 0 A  @!&\[`^ "A_J~G `&q@3G @$#/0@P@p@~@~`} @[KGB~[r[˦>B[KGC+'B 1 @ 0@ @G^`=[!'@ A?`GG ~0`@G~h}[shBs!` t@%G !GGN@ (/-"GH@G(( G-"/A@h> '( $}#%/=!G7@ |^~> '|# G"@ |^~> ' |#/@ |^~> '|# G(@G ^G-""H}%@wP[k\^ 'l|#5@H}U@@D,""kP[k '<|#H}^0,""cP[k '|#/ >"Q@ ' |#>"GJ@G G>P,""~H} SsJP[k '{#>"G8@G G>>G9 O%@Ӑ> 'x{# G(O%@Ӑ> 'X{#(G J%@Ӑ> '8{# GG%@Ӑ '{# GG"G8E@^"@( 'z#>"G@G( /GG/G4-B#(!/G |^~>@(|^~> ' z#/G`@G(/ -""@^"@( '>"Dz#/G@( Gh,"|}uAAEUA E D[k 'Cy#| |tG^>uMAMA oE`h pi>MAMA G EtG\ piáNAOA"D >4GitGP pis>LALA5OADQADTGD tG@ pic>5NAUNAtGF4GIi4 tGpiV/>NE G4Gɲ( tGpiJ/>LAMA5MAFUMAFOAFTGF4G  tGpi6/>MANATA nE! jEtGLE 8@EtGI pi%èޠG8DTDpè4G8EtEp)ìGF@piX FGp /8FGp XFGp)TG^@pi4Gߝ'P\646܈D\ TG\ɘ`E=!`pɡ ~uAhi^tɱ@5A4Exx G^"Gp`=0 @"b@p ' v#/h=b@^ 'v# B\\G/ݡhp>^EO@tG[@GI&(}><"g[k 'Tv#4GF/h5`x}ͥG8^"G.@~ 0 A.H 0AH/0 @/~[kG>^ ~(0h~,@/`-"/ G/@"G$BG}G@>">H[k 'u#@͡G@"GGG|$B @h>I 8@E@)0A"GB/GGp^x>^~ޥ^~ތ#k/// '/t#//G@#GC~(^"ޜ޵^~^~p^x>B4>|~ '@U,@lt#CD@~4GGx>5@ @U ADD!!,ޢ0<~~!!H~B4J^FBG@ޡ^>C4@C~$20k"@^ '\s#/$28c"@^ '\|s#/(2,["@^ '\\s#/(24GR"@\GÜމ>_ߝ' __6|_[[[[jKYmY[oY[k+Z[[x}GX^"G~[kG(0>8^@~HP h@^ 'r#G2 !"@^ '\2tr#/G"@G\/D>__[D^H~E "AHߝ'b@G ^G ^L6|[jKY[8ߝ'6/ޤD, E)F&&)F# FMF @fjF` F$ƢF(-Y _Y,Ɖ.Y_Y 0/Y_Y40Z_ Z GƤ޴" G^GT::m:"X Y#B^ 'p#XJX@ 4G}>"m "T̘X GCG[k ' 4Gp#`|L̡0A0A̱| 0@| P) G )""G2#BGP)GPI_̥}N`,P_A8 D0 8LG|[k 'p#(}@=%=)!Gf[k '8 "o#(}Gf[k 'o#4G/}G|[k 'o#@ %@(}=!Gf[k '8"|o#(}Ge[k 'do#4G/`^~8E~顀} MPA $@c8`D`w|[k '0 o#('=%(}>)!Ge[k 'n#8 "(}Ge[k '4Gn#À}aAP/@_|[k '( n#=%(}`>)!Ge[k 'n#8 "(}Ge[k '4Gln#À}PAH|[k '8 Pn#=%(}>)!Ge[k '8 "(n#G(}e[k '4Gn#À}PAG0|[k '@ m#=%(}>)!Ge[k '@ "m#G(}e[k '4Gm#lÀ}G|[k 'm#H %(}@?!Ge[k '@"lm#(}Gye[k 'Tm#4GU/`>  8EA0iXaBC@b }G(f@D@@"F[k 'l#~8饄k,1`AKoA 8D |-ΥA.@|M@m$1@@BC@|%1@LH(/F@%1@G@ @)O@GB 1@/ @)GI@B(~ 'l#  @ /("GBG/p^x>^~ޥ^~ތ#k '/k#/p#p`h>^>^~ (0޵8 G GpG"X>"_"GAX ' Dk#(GP>" GBPX~ 'k#X>"G BP 'k#x}M[k_ OO 'Oj# OxX]PP!0g `h.HJIGADd P>Q.1"PQJJJG@[k 'dj#XP>x}N/A,HDHEDP@?"Pd[k 'h#GPAP 'h#}Go[kA ' h#XJX~ c 0b$`hB,CHgHBb@BED'@X>01"X>q"*xFX~q*xkFXޤJ?", PHJ@[k 'g#Xޥ!X޵X#Xx/xKx GX-NI=X^B "!X^ʤX  0f`hƤ-GIHF@ƠDX^,b DH`> G4 F|>- `^GGy@`> 'Gdf#Gq@`> 'GDf#Gi@`> 'G$f#GG`@G 4G`>!! 4 D`^@B@`^_G`G @G2K@`G>!A`>B|^`~CޠG^ h`=C GD/^@h 'Le#G/h=h'^@h ',e#Gp=p ^@ 'e#xD@`>GG TG tG0@` 'd#GG G'@ 'd#/G 4G@ 'd#/G @ 'GDͱd#HM` "LPm\ `-} ?E=)!`-^~t TG4@Dpmp>x-C[k '!d#o eE`O@A4@EP-Pͱh!}LM"P?@y[k '  c#}%(}@k!G c[k 'c#(},8 "c[k '4Gc#],GGi` mb@B #0 @ $@ @B %0 @ɠ &@ } P@sy[k '0 b#%(}H@!Gb[k 'b#8"(},b[k '4Gb#,lGG+(-0mb@#0 @B $@0@%0 @ˠB &@xGG(s^@ 'ˡ E m/Gpx>_@h 'pa# /GG0]@G |}PAy[k '@ 8a#}%(}@k!Gib[k|> '8 "a#(}cb[k '4G`#|ޡ G G8ͱ ,qA A@m0 AP Ap A jA+@- A ,A*@A@mj@@@ ŰJ! .A@  BJ!0 0 A .A?G/]@Ӡ 'L`#Hx}G + @  ' `#G(+( @G( GK`^Gp`!G/GBxݥjG(.( @p> '( _#G}B[k '_#~G(.KlA@~" xJ;@Ӏ 'l_#G(-@"/GBP/@"P(,GBGP/PϥGVJ@GG /GOJ@Ӑj '^#P` `|^ϥ/ GLΡ)x}}AAU@KU@DO@!M1AP'BhL@lMx[k> 'd^#(@]%(}@J!Ga[k> '8^#8 "(}a[k '4G ^#À}G5x[k '^#8@=%(} A)!Ga[k> ']#8 "(}a[k '4G]#h}PA Gx[kh ']#@=%(}hA)!Ga[kh> 'p]#@ "(}za[k '4GX]#À}Gx[kh '<]#]%(}H AJ!Gha[kh> ']#@ "(}ba[k '4G\#`^}*>ad@aH@H GB[kh~GxDt D '\#$L@O Go o`Gˤ`^G((+@!xRAn@Ӏ> ' !88\# @!@ 0@A AA?GG^hx@Dp`#&q@ @ C M/>@ @HQHB2HqhB3HB4H1(B 1! @ /0@ @HB!7G~G`]#`G_GZl~|~^ lAޡMM72SB4q`B MNA>GU?CA*` B,B@ C@ @@%@+B,B@$+B@,BA(@+B,BB 7"+B? @ ~,B0@0 C@{ @uC";+B0B-B B|^ RAZ`u@@Dx@D>`G^>^~ (0ޥ8#k/ '/Y#/8H>/#>>^^~"@^>^~ (0޵8@^H~4Gtձ`O\@ 'Y#/hJ\@ 'Y#GpE\@ 'X#/x@\@ 'X#ߝ'X6\G~">"_"&AӘ 'X# />" G GGnAG/!ݥN~ k@ b ``B,DHHB@B /,. PHJ@[k 'G(X#j,dJH 0 ACjHk!dD /Aj<]%}`*"|[k '>"W#IG=AӘ> '1-W#}1I +E` $E @[k 'W#}>"@[k '"xW#0} O[k 'dW#~]%G-`J!+-? ! H+H#IEa+HkHckH !EE #E=+=/}@[k 'V#]%}`J!*"EM[k 'V#~}+">M[k 'V#w]%}`J!*"Y|[k 'V#n]%}`J! *"P|[k 'pV#/>"AӐ 'TV#h}@[k[> '@V# V]%} G`J!G(*"6|[k 'V#>/>"GA G/!O~ n@ b ``B,DHHB@B /,/ PHJ@[k 'GU#j,dJH 0`ACjH!dD iAj<$}` 0'"|[k '@U#=%}`)!8)"{[k 'U#ޥ tGn ]%}`J!@*"{[k 'T#G AӰ 'T#}G@[k 'T#%>`! q EH p E@HaIDW@@ ?$}` P$"{[k 'XT#/=%}`)!X)"{[k '4T#%}$`!`/"{[k 'T#=%}`)!h)"{[k 'S#%}`!/"{[k 'S#=%}`)!)"{[k 'S#~%ݥC!/G>" G&A/ GG! G/N~ j@ b ``B,DHHB@B ,. PHJ@[k 'S#Gm,dMH 0 AJ!CmH +AdDm<$ 4G}` '"b{[k 'R#s]%}`J! 4G*"T{[k 'R#~e/}G 4GG{[k 'LR#>X}/" 4G;{[k 'R#L} /" 4G/{[k 'Q#}10/"({[k 'Q#9/}@/" 4G{[k 'Q#M+}P/" 4G{[k 'hQ#Ms}h/"{[k> '8Q#(}x"k^[k 'Q#c]%} 4GCJ!*"z[k 'P#}*"z[k 'P#/>"wAӐ 'P#x}BG[k8 'P# /%}`!/"z[k 'hP#/>"_AӐ 'LP#x}*G[k@ޥ '8P#/}*"z[k 'P# />"IAӐ 'O#x}G[kH> 'O# %}`!."z[k> ' "O#,(} ^[k 'O#ØG-!MII% E `❥C!." @ 'TO#."`}G( G @G`=( ;=%/ 8E`h❥C)!)" @ ')"N#h}G( G @Gh]( %]$/ XE`p❥`B p"" @ 'N#%p]G`!( x."G @Gp}( =$/E x❥`! !" @ 'DN#x} >"G 4G GAӐ 'N#x}F[k 'CN#}PA L G0+t[k ' M#>/>"GAG/!}K~i@ b ``B,DHHB@B /,+ PHJ@[k 'GXM#n,dNH 0@ACnH)!dD OAn<$}E` '"y[k ' M#GQ>"GAӐ 'L#h}i~[k '[>"L#GzAӘ 'L#h}]~[k> '[L#?*q A G_ IA'&@// "XA X,A A+@aX BYJ@Y[L`Y bY jX!L lX[M`YbYK@[Bl mXk@[  @k! A//N X̤0A"X A@nXk![ƙG>" G G2A/GG!}/+^ I@ a ``!m,CdHgHAa@! ,+ PHJ@[k '4K#GM,c-H 0@A)!BMH OACDM<G G G>AӘ 'J#/>"GAG!}G+^ J@ a ``!m,CdHgHAa@! ,+ PHJ@[k 'tJ#GM,c-H 0 AJ!BMH .ACDM<GP>"X^"dAӸ^ '0J#d/`"P>" G @( ' J#/`>"u @^ '( I#D_+q@AG_ jA+*`XL A_ +AN@[AaXbX["X^ _@[KkXbX[dX̤ _@[MmXbX[Xމ_ A[!OoXbX[  *A?Xl 0 A_nB! *A[QqXbX[3&}A`"5A6"x[k^ 'H#+ mE`!ޡ G G>G~"> >"_"AӘ~ ' tH#`G>" 0 A^A쥘 ' .AHH#h}A!=}[k[ '$H#_$}` G "z[kޥ 'G# Gx}"E[k 'GG# D "F G #F` G%F G/>")AӐ 'tG#x}D[k > 'G`G#GG/GN@әG|}%(}>Ck!` "[[k 'G# "(}[[k 'GG#mG>" GAӐ 'F#x}D[k 'F#`}e[k0ޡ ' GF#[G~">"_"AӘ 'xF# K/>" GGGA G/O~ n@ b ``B,DHHB@B ,/ PHJ@[k 'GE#l,dLH 0AClH!dD Al<$}` '"x[k 'E#/>"AӐ 'E#x}zD[k0 'xE#͡> 0`A aA0Aͱ?0, A > 0`A aA?P}GGT[k 'E# Gp❥,l= AI KkbX@ 4G MD/%(}C! "S[[k> 'D#(} "M[[k 'D#G/=%(}C)!( "C[[k 'G|D#%(}C!H ":[[k 'GXD#}%(}Ck! "1[[k '4D#G/%(}C!"'[[k 'G D#%(}>C! "[[k 'C#G/ ^4G"Gh❤~GD`@@E@7H?0q@ B- ,h@ @whBeB3C8WHC@ECzZAoWHA EA7(BB ӉB ԙC! ? @`h}0@ @K HCEC :  A-!?p]GGb^D@`@q@C@7 J? 3q B qB-,`p=@BBPBwW@` SBA A A@NJ@ŚYU@٦B B6c yuC" ; QB p⽥0@B QB AAKoc O-5@a" TG4GCTE4E FG^>^~ (0ޥ8@^H~#k 0IDDG  '/@#//#^>^~ (0޵8 G C@C=&tGH81"B@> 'G@#&(}D"@Z[k '4Gp@#H~"qAG N@ @/ @,`c 㳦 "@ .@0 @㳰 .@c //GGGG& B /GX GGGP^"BHdh>l^p~ޤ 'G?#G, L@F@laF`F "FF  G,!G Lz#`DG@0@ ! @?"/LHPޢGGRTBҲ@hKBG`BG HPGE@,@ȤGK&BGRBGP> @ l0`@l?/GB@> 'l>#&(}D"Y[k '4GL>#G^>^~ (0ޥ8#k '/>#/(}#^>^ ^C(~ CqB C11 B& 2B`D"Y[k 'G=#V >}P?@p[k ' G=#=%(}E)!GY[k > '@ "t=#(}{Y[k 'G\=#?GG >" (B(^ '<=#1 !q AG )@#`" B $@$@D@ ޠ&@&@&1@F@&" '@'@'Q@G@GB ( A(A(qA@H A @hb @ / ^B 2JB2@BRKB0@ @/GGB4G/^>^~0#k// '/0<#/PP #^@D`lP@F@DGTp`D@pp`F4DGH}G=&4`FPE1"4GGH@[k '^;##k/// '/;#/#^>^ ~ G G8>x}) I@ ) I@  ) $I @( ,)G 4IG@]&pER"p[ku0 ߝ'6\1C6F2N$J3CFSBSsBSsB0B4CFNvJ:CF G@5@C`I=&H}^("iE1"G [k 'P:#$/Ii=&H}@("` IE1"@$i `( i G[k '9# ()=&H} $(">E1"[k '9#4)G8~ ? !E CG@(>"G@[GGB}G(>"/y[k '\9#U`Au`A`A EGd*H D j, CjHg%HdDj<G ,FHD <^>^ ~P#k '/8#/l0ppTp#^>^ ~ G Gx> CPx}~"4@B_@bB@b@"D@0@@X\) `I@ `t x)G |IG@]&ER"no[k% FDX)%DeD%F \IEF@`i]&eF`ER"@tieG `x x}F|)G%F GLo[kFDX)H}G%F \I=&EF@`iF1"GeF `|tGx/[k 'L7# =& D `D`tɠH}G F1"DxGD | E ` X\G[k '6#x}G GH[k '6#(}%1@ELGI[k '6#@ߝ' 'C51@6D6C`iLF=&H}~G@F1"NvH7CDWBwB3@vI8CF\BX~[k '6#`)=&H}\GX>h"`F1"G~[k|IlIpitx '^5#X" 8`E$H}`F "~[k 'h"5# /P>"H^"@~"G>BX"//8>"0^"(~"G6BGàU`A`Gh"P>"H^"@~"GFBX"//8>"0^"(~"G>BG$/G`F @"/G0B8P>0^H~(@ @x^@@>`@C@@@}@@cc@`@Cc@@@@@@~( @11 B 8`ELR11@BH[k '`@h4#4Cߝ'DPޠG66<GNVJ6CD7JWB@WBP> @8CDOK"CDD_@d@H^D@C3@@~ GGB éU`A `G@~H^P>G/GB^>^ ~#k// '/3#/#^>^ ~(0 G G C x}I@ )   I@) $ (IG @,)]& 4 FR"Gn[k$/0 ߝ'<6<0C6Du#NJ2CD0CR_BRRBFRRB @6\3CDNtNEJ4CFTBTBNTBvdJ:CD G`GJ CFS@SsB0@SsB3BX~:@G`XGG4@GXGX``A5`ACDU`A/DDt@頰񽠨uA\5@D)I\~ QB-qB=&H}H"iF1"G }[kX~`^ 'A@@`@5ACDUAX1#}DEGDH>"w[k '1#/ i}G H>" ` I@$i`( w[k '0#()%H}\^ $F! ,">8"}[k 'H"0#8>"G>B/0AG (I%H}i $F!^@,"8"k}[k '<0#/8"H>"GlB/G/H>"ߝ'/G@6"v[k 't/#M $i,)ߝ'__ _X>H"[X^)[(I[66[LY_(6=&MY_H}JOYNYPG1"[[ LY Y SY Y MYJUYoOY[XGX^ @J@@@@`G`ގ[*VYpPY[XGX~DBd@D@`G`[*WY[X^GX|[k '\.#&/G`G"GBG^>^ ~(0p#k/ '/.#/PpGl0p#^>1#B^ ~ GA?B Ga!@ CpT}"B!$@0 @GF[k '-#$q@E0p@E@ƤQ3JrH2FW`B0@}G"F[kx '\-#x[/`I=&H}X\h"^G1"GG|[k|IlIpitx '^-#X" 8`E$H}G "|[k 'h",# /P>"H^"@~"G B/X"/8>"0^"(~"GBGéU`A `Gh"P>"H^"@~"GB/X"/8>"0^"(~"G BG=%/GG)!@ "/GB(>0~@H>]$q@E+A@HB Ep@EfGHEHDW@;8P(AxGx[&]&q@EPRp@EUJvWJFWB.0H>(~@~ߝ'8Cx+kC~x>,6\[~68>P[a*X  AxGx[klYY+X[^>^ ~#k00H?F2F0^/0@HDD0@JFF '/*#/0ߝ'#^>^ ~(08޵@ G0Ch^D C6\6\NJ2CDR_BRRBRRB @0CDNvDH2CDh^U@Bu@BF".ߝ'Q"J86">/  h~ I@$) (I=& @X1q`D@ p`Di+JBKHIDW`A@ ߝ'X6i(I) ɠ$,C@/U@B-@].@/@5@@BF@i*BêA-1A A.1A A/1AU`A`A//8`E G~BA/&/GG"/G(BA*1@A/@E8`E )GGhBGhޤ$CE`G_DqDpD `p^pHpHIE[W B/h&ACh֦SFGqF_EpFzJ p8Gp>Y;K:G[W`C8@n/h}$AF pcJ_AjJAqD ApDp^ŠghHp^FHD[WAŰvXh~=& @x1=@_Eq`Fp`Fv7J0ApGp~UJF[WBfB/h^=' E9 Eq@G E @p޵p@G[a"KpRBJAFW@@[[W -%H}Ii H!X"G{[k(Ii $ '&# -"H}H"z[k 'H"p&#X>"/GBh 'T&#% qEpEΥLIiI EWA/ ^>^ ~(08ޥ@#k/@0 J_DID@0HEE80J?G:G8Š0`HDDŰ0 JFF[0 K_FAF[0I E E// '/@%#//#dߝ'}C8D@L6< R _D6|` Q`XJKY@Y[#kߝ' R"@ 1T6|Qa+XAY[#k#k/8D`#kGߝ'XD] 6|@1@+X#k#k/P @CD`^G>[#k/DQ X@#k0a H `A @>G>[#k_#k/ '/##/}#^> >^ G GG^[k > '##(}Gs[k 'Gl##=&}1"d@[k( 'P## * =&H} Aj"""">PH1"G!z[k^ '^G>##0#k/ '/"#/}#^> G=&1"o[k '^"#>G #k ,"#i"=&""GpH1"y[k> '^ "# #k/ '/"#/}#^S^[k '!#G@(@@ G @ ' G^[k A 'A,! #$#k !. 1@Q!J!>! ?DA.AJDF_^G>#k// '/0 #//#^>^ GGGBӸ}G][k), '#)H}?@@0@h[k> ' G#&/H"/GB=&}G1"n[k '#),}GG)H r[k 'G\#G/G_ =%q@EA)!p@E)BDHc$ICDW@A`^G>^ #k/A0 I_DCDA// '/#//#^>^~ G GG*_ GG}}][k*, ~ '*H#}`@?@0@@ Ih[k > ' GT#&/H"/GB}GG^r[k 'G#G}[kK- '#q`EKI=$ @b!p`ECeHd%HdDW@bGG/G*_G G/GB^>^G~0#k/b0 HDdDb// '/P#//#^>^ G GG_ , '# H]$ q EBp EfGHEHDW@ }GG r[k '#^^G> #k0@HDD '/#/#4G^ #k^ #k/0,^0H ,HG#kq,GGqH#^~ G("0>(>W_(^ '#*,~!*H  e``,FHHE@ -, "PIJ@[k 'G8#K,cHJ!BKHk!CDK<,HG0>8"-_0^ '8!j-#jI!`}/K b``Bj,CdHgHBb@B /,+ PHJ@[k 'G#l,dLHJ!ClH!dDl<,H]%}"J!Gl[k '<#G/=&}" 4GI1"l[k '#iGv}*"" 4Gl[k '*"#}j"l[k '*"#d}"l[k '#itG]} *""l[k '(*"|#}N8"l[k '0*"`#H}"yl[k 'D#}8*""rl[k '(#;}@*""kl[k ' #tG7/}H*""! TG^l[k 'P*"##}8"Wl[k 'X*"#}8"Pl[k '`*"#}"Il[k '# }h*""Bl[k D4G ' h#G 4GTGI TG4GG)4G^>^~ #k/// '/#//0#^>^0" >(^~]_ > '^!),#})H / e``,FHHE@ / -+ "PIJ@[k 'GH#J,cH)!BJHJ!CDJ<,HG(>8"1_(> '8~!I-#II!@]/J b``Bi,CdHgHBb@B /,* PHJ@[k 'G#k,dKH)!CkHk!dDk<,H=%}"0)! GGl[k ')"H#<}"k[k ')",#}4"k[k ')"#,}"k[k '#&} )""k[k '()"#}"k[k '0)"#}"k[k '8)"#}"k[k '#}@)""k[k 'H)"h#}"{k[k 'P)"L#}"tk[k 'X)"0#}"mk[k '#}`)""fk[k 'h)"#}"_k[k 'p)"#}"Xk[k 'x)"#}"Qk[k '#})""Jk[k ')"#}8"Ck[k ')"l#}8"~G^#k//GGbGGD$G4GE`3CESFТ4G(CFHF Т(CFHF Т(CFHFG0 B0@B B0 B%0@@ 0 @ @B GGtG4G$`$CDdD04G"C!DbD @Т3CFsD` &CDfDG 0 B0`@ B?0A"A_k1C11 B/40AA"_k// '/#/P#>^~^>^>^ ~(08޵@ A?@A!@A!@A@2 @AD G Gޡ^~A5A>^QFGDUA `Ga AãUAuArD `@@@7 JB`B8FS A/AACFH` @xE 3@7`JBAB8FC A/5AuAqDAsD `"1@@AL@@@7@JB B8F0 AóUAAcF`"1@@AL@& Añ@E @@7 JB`B8F A}/AuArD `"1@@AL @1@7 JB@8F Am/"1@@EAL`G Ad8F@УA8F AF]/XF A8F uAFU/xF`aA8F UAFM/F @A8F 5AFE/F`B8FUB 5A AF;F BuB8FUB 5A!AF1/F@UB8FUBUB 5AP&AF&XF@PAuB8FF AxF B8FuB ApAF/F`UB8FuB AЀAF F ߝ'!C6\F2L$H#CF AA ߝ' CE6|LH"CET_@ AtBTB-AA ߝ'2C6<EAN$H5CECBcc@ uA,AcA G/GGB//AG 0@A GAA? 4G 0 A/AA@ߝ'j $C&1@A6cD'CLDLvH(CdDHAhA*HAvH0CD 0A=&H}xEE I1"GGGGs[k>^ ~(08ޥ@ '^h ##k// '/0 #/#@H>P^X~`h^>d^ A?@A!@A!@A@2 @ADGt=&H}h~@I1"lps[k '^#p#k// '/#/h>#@H>P^X~`h>x~|^x F` @G[x&FG>/5.Bu.BSD@21@B@N@ .FG>21@Bx/F@N G>[ߝ']$6<`Bq D@Xp DpQHDHD[W Bp#k$8`D @q Dp DpHDHDW Bp#k/&X`D q D@p DdJBPHDDWB@p#k/}&x`D q Ds@p DdpJBPHDDWB@p#k/&`D @q D@p DdJBPHDDWB@p#k/&ߝ'`D`P6<q Dp D@dJ@XBPHDDWB@p#k&ߝ'`D ȱ6<q Dp D@dJ@XBPHDDWB@p#k&ߝ'`D@бL6<q Dp D@dJ@XBPHDDWB@p#k&ߝ'XaD`رH6<q Dp D@dJ@XBPHDDWB@zp#k&ߝ'xaD ౔D6<q Dp D@dJ@XBPHDDWB@pp#k&ߝ'aD@豵@6<q Dp D@dJ@XBPHDDWB@fp#kߝ'}&D `6^~ (0޵8 GC@=&H~PX1"B '#`&(}@>`I"J[k '4Gp#yG`p>"_"/A~^` '.1@@L#11`@G/GB&(} I"J[k` '#GB/4GGYGߝ'G G6|G`>"Gh~"tG@A,> 'M $@# _DA&CD0BLBB7JvH'CD@G@%@XDjAAjA( 0 A ,Ac"C@u# 4GX~H>^PޤAG`]B@> '#&(}I"IJ[k '#4G/X^>^~ (0ޥ8p#k/ '/P#//#@^C=& (1"0޵^>^~8 G\B 'H# G&(}I"J[k 'G#GH`>"_"A@~( '#P@`G/}G`[k 't# G&(}I"I[k 'T#G/}PAX`[k 'G0#=%(}0J)!GI[k '@ " #(}GI[k '#G/}Xi`[k '#G=%(}J)!GI[k '@ "#G(}I[k 'G#À}PAS`[k ' G|#=%(}J)!GI[k '@ "X#G(}I[k 'G@#mÌ>GH11 @GB/&(} K"I[kH '#/GBG/XGHGGAӔH '#/11@GB/&(} @K"I[kH '#/GBG/<GHGGAӜH 'X#/11@GrB/&(} `K"lI[kH ' #/GrBG/ GHGGA@>PH '#mG -͵ MG\BG &(}GK"II[k '#G/G^>^~ (0ޥ8`#k/ '/P#/P}p#^>^ ~(08޵@ Gp"("i[k '#` "}%}Kk!Ge[k '#}p>"i[k '#}+"e[k +(K '&CH#`)h%HDhI8 ߝ'G<6<EE< xip>"RXGBG< ߝ'}h"86"GXg[kh '#h"x} Hhq[k ' G#t>"}`"TG g[k` '#`"x} vH`q[k ' G#v>"}X"TGf[kX '#X"x} vHXq[k 'Gp#x>"}P"TGf[kP 'P#P"x} vHPq[k 'G0#z>"}H"TGf[kH '#H"x} vHHq[k< '# G[8G^D0@Dp@@@CG@8D7H(ѠA,ADD@@4GQ@G7@H G-AD@@@4AS@D7@H.AD@@6CAU@7@HD/A @" ^A/A #@ GA/1A_ H/# /A.AHO#_A.1A-1A A,1AxiGG8`G`Gl B/AGA #-  A,A#M _ A,1AH}0+"^GGGGjo[k '8#^>^ ~(08ޥ@G#k/ / '/#/x}G/CCX!FGF" G]&GKR"H_[k$r.2."4J:HJtJuFRKzRK4F{F:Fr>2>GGtG]&x}LR"/_[kGk/G/x}G= ]&GLR""_[k/$r.2."4JJ:HtJuFRK4FzRK{F:Fr>2>_"2GJtGAJG]$!..rAJB3FF4GHJtJ5FF!>>k}'8F@ {#q@F[p@Fu@HTJFW@{?"GA,1#J,3cK!Jq!JaJRDsaJDTDDA<<tGk]$XF$R/.0B "#;`K5 JrK{rK@GJuJFCGFR?tG>_"2@JGAJB!.rAJa,4@HJ3FtJrD5FtD!>a<kGxF.@}GG`]&x}(LR"^[k]$.,@B?"1/J4OH2Jq2JFJtJDFD>< #gHaH]'A,caHHZ,PD1GK!JDq!JRDDA<<tGGk&F`2.r,P"_#:GKq D JRKzRK;FHzD`H3F`D2>r<p DtGGbqJCrHqDW@Bbz k/x}]$F`G]&G8LR"W^[k`B.,3GH?"1'JG!Jq!JFaJsaJDFD><tGk]'F2.r,hZ#z"3gJq D gKrJsrJ4FHsD`H5F`D2>r<p DtGZbqRKCrHqDW@BbE GkGx}F"`GG]&HLR"^[k]$.,xB?"1'J4GH2Jq2JFJtJDFD><GGtG]&x}XLR"][kGk/}$x}XF @hLc GG4GTG][kx}GC"G][kGk}$x}xF @Lc GGTG][kx}GC"G4G][kGkx}}$F@G]&4G4GLR"][kc.A,?"1 JG3`H!Jq!JFaJQDsaJFSD>A<kx}]$FG]&q DGLR"][kBp DGqRHPJFW@B 4Gk&F`q@F["p@FBQHcJCDW B[`A, G#cHa.2JGaHcaHAJQDrAJcFUDrFA<a>k}'F@{#q@F[qp@FtUHSuJtFWBq{ GA,#oHA/2oKaHcaHAJQDrAJCGSDRGA<A?Gk&Fq@Fq"Up@FS{Jz[HzFW`Cq@A, G#gH.2JGaHcaHQDAJrAJFSDFA<>k/}'F@q@Fq{#[p@FSuJtUHtFWBqx{A, G#cHA/2cKaHcaHQDAJCGrAJSDRGA<A?Gk&F2.в"r,"3oJ;JrJsrJ:FrKsD{rK F{Dq D2>p Dr<G@cJBQHCDW B@L`tGkx}]$G]&q DGLR"\[kBp DGqRHPJFW@B@ 4Gk0@HFFb0JtGGDqDbkb0@KtGGDqDbk0@HGFF4Gk[0J_DCD[0q0@HFtFqKq0@HFzFqfq0@HFtFq@0JG_DCD@tGk0@HGFF4GkCB5BUBDuBDBDBDBDBDBDDtGkXF TGkuBBADB D4GkBB/ADB DBDG4Fk '/p#/(}#^>^~ C G5@Au@A&DX>G\^L"*E[k '#z) Gq 5(BC4BCDU(BDD EDC4BFD4BGDHD@ ð5 B59BFU BFU9BFU$BFW G/GA\> '#`/GGA/&GM"/GB/8@EGH>"GAX> ',#/H"@^"8~"0"("GAG/ x@E @GH>"TGGAH"//@>" ^"/GjA@^}G`E KA01@Av[k ' G#@ 0@@ACA7`H c@G`>G/GA&/@M"GB/G&(}L"D[k ',#G^>^~p#k// '/#/ߝ'Cu @ @46#^D> CR@F@>G>[ #k>G>ߝ'^[6\>A*X[ #kX D?2^4F >G^ߝ'>[6G^ߝ'^>[6<ߝ'6AAY X[ #k>G^^>[ #k8}B 1CTGI[k '#V/8}BY _ 1P@TGI[k 't#K8 DP R^ @>G^ߝ'>[06|jKY[ #k8@F `>Gߝ'^>[6lY[ #kX@F >Gލߝ'^>[,6nY[ #k^u@B@BD>G>[ #k8}PB G1rBTGI[k 'l# 8}PB _ 1R@TGI[k 'D#>[G>[@ X[^> #k '/#/C#^G>xF)@1 u B @=&/GhM1"_> '^##k/ F =&G1"_> '^##k/=&/G1"_> '^\##k/F' 1 u B @=&/GxM1"}_> '^##kG F =&G1"p_> '^##k=&/G1"e_> '^##kGXFB 1=&G M1"V_ 'x#=&/8 E GM1"GL_/X E=&/ GM1"/GB_=&/x E GM1";_> '^ ##k/=&/4E GM1"-_> '^##k=&/ 84E GM1" _> '^##k=&/8FG1"G_G^>#k/ '/P#/C#G^xF@G1/ F =&1"_ '^##k/=&/GM1"G_^G#kF 1GG F =&1"_ '^##k=&/GM1"_G^/#k/XF 1GG84F =& 1"_ '^8##k/=&/G(1"G_^G#k8F 1GG1 B/B =&01"_ '^##k=&/G81"G_G^#k '/#/}P#^G>^~ (0޵8@^H~ G^ C~%@!G^[k ' G,#},"G^[k ' G #/G>"G@ӀE '#M]-E x! d``,EHHD@ ,* !PHJ@[k 'G#O,cH)!BOH0ACD!O<-Eߝ'CX`E$6<(6}@\ AX!\[^G>>G~[~x0.Q0Jx0>@,"x"4G`[k 'B\#: Xߝ'&(}6<_N"XPB[k '#G/^>^~ (0ޥ8@^H~#k}>"b[k> '`#X"}Gi`[kX^ 'X"*]ID#x}X^%k[k ' @$#,"H}p"]i[k '#4G/} ,"x"TG`[k 'B\߽#V Xߝ'&(}6<_@N"X B[k '߽#/}>"b[k> '߽#X"}G1`[kX 'X"-Id߽#x}Xj[k^ 'GD߽#*"}P"TG `[kP~ ' ߽#P"x}+vIP~j[k ' @߽#aBߝ'!!1`B6+CE"C!D lMLLvdI#CEC@cc@3cBvDH$C"DA=&H}"xN1"Gh[k '4G޽#t/"p>"h^"`~"G X`EB/(,"G}x"4G`[k 'p0޽# ߝ' 6@@XX[G^ Ap^_/} X`E0,"x"TG`[k 'ݽ# ߝ'p^6@@XX[Gޡ NAp^H}8,"x"4G_[k 'ݽ# ߝ'`^6@@XX[G OA`^4}@,"x"4G_[k '4ݽ# ߝ'`^6@@XX[Gޡ NA`^ }H,"x"TG_[k` 'ܽ# A`>}P,"x"4G_[k 'ܽ#sߝ'`>6|6_CX[``X@Y[ _`~6@G`>h'@ ߝ',C!D6 MI"C,DC_@@cc@h^Cc@!#@`>h~cBߝ'2CsFp6HNI4ChFVBvBB3vBph~`^h@GC 1@`^hGh>p* #A/1Ah>p%`>h>'@@ߝ'#C6!DdLdH'C#DP@pB'BPBh!0@`>h~p~cBߝ'6CsF6NJ9CuFJ?CyCjJAp>*jBh^G`~Gh^p>GB4G/&(}x>"N"@[k '/ڽ#// '/ڽ#/}#^>^ ~(08޵@ GH>wL[k '0@lڽ#}JW[k 'PXڽ#]%(}NJ!G@J!@[k 'G0ڽ#}cL[k '0@ڽ#(}G@[k 'ڽ#}PGRa[kP 'ٽ#(=}G\[k '"ٽ#}XHL[kX 'ٽ# G})"t[k 'ٽ# G}G;L[k '0@|ٽ#} @X~@)"Gqt[k 'Tٽ#G}G+L[kX> '<ٽ#} @0@)"X @]`G_t[k 'G ٽ#}GL[kX> 'Gؽ# @} 0@L[k 'ؽ#]@} )"GIt[k 'ؽ#G} lA1 ()"G@t[k ' Gؽ#G}K[k '`Axؽ#0@} @0)"G0t[kH 'Pؽ#=&H}GGN1"GGdg[k ' ؽ#8/=&H}H8)!>O1"GGGGUg[k '׽#)=&H}HH)!">8O1"GGGGg[k '׽#=&H}H`)!"">XO1"GG9g[k 't׽# =&H}H)!i""">xO1"G+g[k '<׽#Hޥ G-I `-`NIIMI $E E=!E.,.H?GP@B/4GG ]&x}HGOR"W[kGPG2B/G^>^ ~(08ޥ@`#k// '/pֽ#//p#^C>B^C~B C(0޵8@^ GuB`>Dɡ=BuBDC DPDB"UDC"DAUAAAd~P5ADT>D. FCFXF GF å5A5ADUAUADUAD GD5A5AeFUAdFUAdD/ǔDUAGFF". 2NCC5AFUAFh~l> DpG/NA/ G/G}U[k 'xԽ# =(}GP[k '8 "Խ#G(}J[k 'Խ#G`>xG/G@A&(}(P";[k '\Խ#Gx>- GV HCG8A/G/GG*A/&(}HP"$[k 'Խ#i/X^d^PTU@ߝ'UAn 6\ADCA#DUAA$DA-A%DDCC G ACPX޴>G`h>G4GGHGh/GDH>"4GG&HG Hb$M $wHHdh~#C}DdL6eH1CD 1AF?B 0 AF@ B AF@D F@ G A.@P?BbU[kl> 'ҽ#/G`GG/GHӈGGGGGеHG/ÀGGGGGHG%p"q@AGG G@ J@&A@ @@# @c Cc% "@Ee *@ 0 @c  *@ޢ5A9q@AXVAGFM!G@ *C`$@  ׃@@ډCZ# C C@:0CZ# C_Ð~@!q@AG5BG *@ C"ףB8F@Cc RBZ`BSbZTZc "UZ aBTt jB^Ê0`Bc "VZ jBԚ?Uè^P^UABAEN@# q@AK@GG @6OC"B@ BR"2RZ# B:Z *B2`r0 BR"Z#z *B*à(@(q@AG.BG A` C! A8E@Ë \[][@c ^[@X @"ԛ @#0@c "A"X @4/GCBlޡd ' NMν# *A G A/%(}hP!G}[k '8"ν#(}G}[k 'ν#GxG&B4G/&(}GO"}[k 'Xν#G^>^~ (0ޥ8@^#k '/ ν#/ߝ'^/#^>^~޵^~ C"PHP^E6\ߝ'XX7|`b@htG]&p^0R"vA 'Cͽ#l&(}d@R"}}[kl 'dͽ#\/hGGE =&81"A 'C0ͽ#. &(}lM (R"f}[k '4Gͽ#EhGG؀E =&@1"fA 'x̽#;&(}PR"R}[k '4G̽#1hGG`>"E- X^"NA/4G/`"G%8}H!8DTDG G^[k 'P̽#&(}xR"0}[k '4G0̽#//"X"GG^AӈG&(}R"}[k '4G˽#À}`p>8}GGde[kP '˽# GG;Gߝ'P7`>Ga@ GD&D0`@8F D8F/XF78 G xF@d۠8DFLGH8F@d38 G ӢXFؠ8Dآ xF` 8 G F`LĢG8F 8F@GGנ $;CY0@C{# @C @{#G0@Cds SCDXFH$X F GG(T@0$&C0B B 0@0Bd s BDDx@G@Hdx`G`GG80 @$2C0BR" B @@R"0BĤƠ BDd`F`HFD@GG 8:1C1"0B B8@1"0Bڠ BPZ_pD0BGGx@FTFCCNW8H;C1FeOvdK:C;F}ZCRRC12BC76 D4GA@FZxE4`F G@L$tm[k 'ǽ#/8}L$AOkm[k 'ǽ#G48El"XEl#1M @ `E @`ؔE1BGrFErGrF1B0 @" AzG @_XG 8^D@G@G4ED1C^`PG×DDP8>~ A9D 7AE yA A>@F~`p> q@" 0@@}PA\R[k 'ƽ#G&/R"/GAӀ}PAMR[k 'dƽ#&G/S"GAG~}PA=R[k> '$ƽ# &/XS"GvAGPM`>ޡACAB @cE4`ޡ$dx0A`!ޱ>*` ˡޤG GI@( ~/G 8KJBR(stRBRBBG@G G8KJ@B0+AA@!)0AJ!)! APk@`ޤƠp  @>p0 B>~G 4G4G}>0}c[k^~ 'Ľ#=@A !, @+AX 0 A0A! A?h^G>tGP>`^@D`~pGG@,/hpGP>X^`~l E`G@GGP>`^x~p EGGp@GP>`^~pEX!޵G@G/ZAӠ 'Hý#/UAӐ 'X4ý#PA%}X!wQ[k> ' ý#&/ @["GAG}CdQ[k^> 'p½#@&/["GA/%(}S"z[k> '|½#\ ߝ' 7|ߝ'7P`^^bDAc `DE\x-`ͤD 0A>-m8D>~.HI޵08 F p~~XD@8Fs~/ަxD8Fv~DLm~H ^8G z8`G`ڡޱ>XGa8`D`ޱޤxG8Eơޱ/GL͡ޱH8 GM-h~ C C;1 C!~61BG > ޲c@^ h~ "M ' l#/Y@^ h~ "M ' D#/O@^ h~ "M ' #/E@^ h~ "M ' #/G:@` "/}$} Sc @#"V[k^ '8"#=$H}B"b"S! "P!"8a[k> 'p#("$H}A" a"S ` "-a[k 'D# Ð}Gwz[k ' ,# "}1[[k '# G=$}("4GS! GpA"Jp[k '8"辽#4G$}GS @"@p[k '#~ޡ> nM>@@I?AC ^(0>8^DDHD ϠްÀ}L- k[k 'L#ޢ0@ BH/@ GH8Hޤ(>G@>E (apJAP B@@GHG0/AAA!H> ~`DH~jY@}o>GV[kX> '#$G AӠ> '`#=$/S! "GFA/$/GX G "AGGG]$/SB "/G2A 4GX~cJACj@> ~(ޥ8> aA@P~`GL@@H@LTG>8^tGQ~ ^4GpަRMG@^GH^GPGX(~0GEB^`hp޶x@h>ޤ '#F ̦  D4@-m((((Ƥ-mGL(^#^H^ ^0 8"(޶8H޴P^ޤ^X4G@`L phx^޴^tG>~GAGh~ D$ cޢ>>G,Ll l~~޶L"4G(>H># ޶0>8>@~HPX`GAGphޤ"D2 - d (Ƥ (O( mPަ^>>GMV@_D^޴ޤH"8L! (^0@H^PX>`޶h޴px>x~GGA7/h>GD0'D @&  X_XD0`@ i@ è'D G 0%X P0A A"_ è'D G TEY@T0`B iB"GG>GGA 0`A! `A}]h>cB D D%D(}CD @͠S!8"xDD*x[k '#>%(}H>^~ 8 E S!"x[k 'ܷ# ]%(}>^~SJ! "x[k '#//>"D/4GG2=%/S)!)"/GpF@-@I8D'@~H>> 0`A)!@~ aAH>B?P(`^~pB d@B @`0@+\ޠ0@!\ް @/4G4G=&(}S1""w[k '4G#=%%G/S!X)!(."I"/GsF h~G/P>`^lp~ `E`GGz@%(}S!8"w[k '#GAӨ '#/AӸp '쵽#G/GAP^!@j곬곸ʱʱʱʱʱ `볘K본˱˱˱˱˱_XG AӠ> '`#%/S!x "GFAGh>/ G E`tGA/ GGH]%(}SJ! "aw[k '#@Gl EGw[k 'h#} !E \[k 'H#%(}S!".w[k '(#GG4A/ G%(}S!8" w[k '#G^>^~ޥ^~p#k/// '/#//@#^>^~޵^~ޜ> GCH C=%/P>4Gp)!/XG}oF 'G #G ^"aE^ '첽#=D=P~HDDD'HG(FPF%(}V!Gv[k>^ '#8 "(}v[k 'Gh#Pޥߝ'H~X~P7ܥ#!CPCE0`B\~.L`>h8uNv$H"CEB@BG@,A pCx@F@l~p\\ޢh8NDDl~ GFpFDl>Mlޠh\8EpDlްD`^B@R\^hbP8`F3X`F1@XaF/ `F*`F(`F HDAl'P~H{[A{{Cl~ \ޢh`FNX`F@x`F`l\ޠUBlް\h^Nl \lBl^\0COl Gl}P@L[kl> 'pT# &/\"GAG PGC)"x P\AP> '# G&/`V"GAGP>/G D7 D5@IBA"G AG&/xV"/GAH MAxD D@!VIC)8D #CD)EXD "AnLDDvdH$C#E@D@$$AI rFDAA?^\>hޡ"H^>VTB"UWBޢB [B;>GZBICECT4@P7@ڱ4> ^Gޠ$޲(,> ^$"^ ^ >~޴(^GGA&/V"GrAG>l}5@AC8EPA .E #L[kl> '#&/( `\"G\AG}CCPA E L[k '0l#G&/\"GHAGl^G(>U@Au@A DQ3GGAGl^p(^k@!q@AG *@`%@  ף@@"B __AB _ _[[ [ A[dę AJ 0AB  _ A[$@G0>GG;AH^l~(^\ K0h[ '^<#GGGGGG2AӶGgGl^p>GGAGG0>GGAHޥKl~\p^0h '^#GGG/GAGE/G (GGVAG0GGPAx^GG @AP> ' #&/V"GAG` 0AP`^X>^88j `>8D^`XDxD0H^QARPAшgGp'~|^/8DXDxDU^ @Ԧ^[AAWAۈ,k0K+~|^x>U@8D^}0AGDD M`PAK[k> '#% G\"/GRA`~\>Gp^!1 @#1A@>"8~"8F@>8~GnBG{\>Gpx~>XF H21 @ޘ @^|GG @fH>xF`A, 0+`~h\ޡ4c\A+GH㠋gI}C #XD$~(c~Y APAJ[k 'T#}$G/\c H"/GAӰ>K qA GBA @1`0`! B EeAGgA'"PpAPA$1QqAqbDRRrAdsSsATtA ԉDdA `A 䉵 `A nA`! B XxAWwA 0`A7 nA"`~cc~G`|~^~>Gpx~>> ^(08@ޘHP^X~`^h>px>~^~ @Ӥ '`#/ XEGGA/HF F@ ؀F mͥPGp +K\ k >K~>^ ~(0GL@G`^FHޥ*Gl>p~ J\.^5 Au A^ lE2`E>>G@GHF`\mGh>p~^~GG@rH~ 8F`+`G\>\)'Ih^'Ip~>GZ@G_Ôx}ޡp^XFQA.1AJ[k>G8>"0>0^"8ޱGG#BJ`H xF` \LGp^>~^GN@G7Ô~x}p^ F@QA\J[k`H>G\^̥\ `)h-n)'I'I>GG@]%(}G\J! "s[k '#Hޥ`~~GmMp>s\G2@G~Gp\~hNA`>^ '8ɥ#lp^`޵ Glߝ'p>&8 7^~ޥ^~ތ>#k// '/#/#C^C~`޵@^H~PX0^8>XF~>>hp4G=@B4G1"/1p @5DXGp0B0B1" Bp> 5@UDp>PNp^H~">"`^ GRQB@> PBR"^"8^" P~ X x >>"^ " 0"("8^^"0>@~P~"H("X~`hAӀp> ^(~ P@ ')Lp#}P?A CL>!A*@*@^ #@H[k '(# G&/]"/GAӀ}PAH[k '쟽#G&/`]"GAG ޠ(>H@^ L`~I!A>BI@>DBA^JDAGL8D^AA OB p( 0B 0BN 0B GA,C8C0Cx^=%/8@G)!'@ GA '#GBA/P_AG}iH[k 'Ԟ# &@G/^"GAG}PAZH[k ' #G&/X^"/GA`^ 8@E@ ɥAABACAD@)MAOALAަ^^G>^"    x ( (0 08 8@ @H HP PX X` `x   hh  pp p ~""~"޶x^^>޵^~>  4G(A '#/A '#GA8>@^H~PX`ޥh '0^##k '/#/#RB~C0@BP@G@BN>> B^>^~~^ B B@B B?>^B} 3NB^pB7 HB>uB2׀JHBPB>^)@)@3@4@1@0@2@ 5@P_AG[k ' G#&G@^"GGAG^~ޠ@ @A A/I!A BI@>Cb@   D@0~E@8( F@0 @>H>^"P^~"X~" ` x޴ h"p(޴A/GG/3AӐ>^~ '^##k/// '/#//#8>=& 01"^>^~(^ C^ C@~PX^AP> ' G$#&(}W"p[k '#U/G@>G/GA&(} (W"p[k 'ę#GG/GAA/}P?AG[k '# G&G HW"GGRAG/GGGA/GG/AP> '<#&(}W"kp[k '# 0^8> GG@E`@EB A 0`A iA! ?GG/GA^>^~ (^P#kC~tN> (^0C'Q`B#^8`D>C^C~" D('q@0޵G8G@>HP~ @ ` /C9# C C0C C9#81AO0BX~=`C] 0A4GGG`^OY"CG GO/H G D` 4G G 0@ Az++@ 0`A,1A M AKbAk-mA 4G 0A=A/`y lA+1`A aANeAΡ.AOeA/OB0A4G0A=A`[eAK`Av"8EqF8E3F 61Bk4B@>BTBoB3xB0A3gB A@31`BQqB 0A AP>X~0@Z#)!9#@@ @XޡH@P~8`D1`=A/,QA4GWBSB A =A B B- A7B - A7B - A7B - A7B_ B `/ 0B B- A7B^>^~ (0ޥ8p#k/ '/ #/#G^>^ ~( C8 GGG@~00AX^"@~BH5q B8` B @ @B @!! UBA KB 0@B ! ! KB_8}PBE[k8> '<#&/ G W"GAG8GG 0 @8B $@8ޠ0 @ &@H^G4G=`A4GR"/2@TBX0@G0 B0AR" +B/@G@0"G޶G8^"@~"P"`"GΉG/GGTA0~ '0#]%(} `WJ!Gn[k0> ' #(}@ "n[k '#^>^ ~(P#kCCtNCCCG"uBGG$q@ @ `@  d@ `@0`@ `@ G, $q@@G/$@GH@W0@ @%A ף@/@7`@ @W (" d@!H b@70`@0 @(" b@!0@@ @3N%BG %B.7Q@ q@@ B&BGX0@[@ @ &xC B  @@X@[ @8 X# @{#;[ @ /0@0 @#{# @?0`@B e@L @*G9q@@#@GGCW0@ "C @  @@7W`C' @ 7G" yC ' bCW0`C0 @G" bC 0@C @3N %B*G#q B# G@BD0@ q@@`7@"B@$@D   @  @ @ @@$0@0 @  @0@B @? RrB"qBGR"SB T@`@RA ARSBSB22SBRRSB A 0A ASBkCCSNCCGGG $q @ @ /`@  d@ a@0`@ a@ &`B&@%q@BL @) G#@GVq@XP@ @!B! #@ @8@X 6@@#"V @? @80@0@@#6" @0@r@ @@7@BN B.G7B8q@B B%BGSP@Y@ C%3C B` ף@@S`@Y@@3 Ss" x@9#9Y r@0`@0@@s" r@9#0 @B &@G*;q@BG#@GAq@VP@ rC36@`s"cB`@6VA!@@ 6A" A! ! A V0A0@@A" A! 0@r@ @ B/@GN3q@/%GVBCP@ `B`!B! #@ /@#B@@C 6c B"V B #0B/0@@c 6" B0 CB &C?k/ '/`#/CC#^C9 ߝ'=@@t s@ 7GG_@GD`P*UY _@Y @D`PUY@D`PUY@p0 B+X0 @" "@ >0B Bs"^[a*X[3^#k/0B Bs"^#k8 F6 ߝ'=@B9G7@ 7|G _@GGD4!5X_+X DXD45X 0 @ @Y0 BTT@ 2B >G>[aAY[30`@"s" b@^#k/&(}HX"|l[k '`#^#k/// '/@#/#Qߝ'p^Xx>^~޵^ C@qATN CG ^^  X6<ߝ' X@7\ X_ X4G}GP?BB[k '#G&/^"/GAӸ>~~ 1AAiA"1`AC^~> GG G~> G`OA//GB\^ 0@An@/C/ A KA!?^0A A A_~~>^`EA!> ^~}@(0^-G`G/ GB\^0AB@/!G A?4G~^ GbD_DE``/GB\^ 0A*@/!G A?0A(^tE(^4G~~4G4G^`>~GGP@DEF DACDE _EDDtDFOiB! GIuB@H^P>X,ޱ8`ްh~8ަGB\^G @,^~h '^0`^#GGPA EG ADELX ^H^ ^^^`^dhPT^\HT`ðApGP\hP^Xޢ`HL~PT~X\~EHޱLPޱTXޱ\A >0Hޢ>@^ ^^-1BG A$>"KA/^B\$k^N[@/BE@G@4G/+0A 0A Ak!( A(q@A AcaH"GPA A ApGp[A ТN00_ _PpO[ 0[_p@BTB_"UOt[ @[CXCLJjY[CZWCj@Y@@@ Y[INYnY NY[IZQQZq Z QY[ITZtZ TY[I_ @`РޥMЊ0@"_ @[@D@)W[wZ7[[,> 0A)!8^ޢ0 BR",> A8^^>~0B5@C[C0B^ B> 4GG G~^`^~G@LcAIhA/ GB\^0A@ ~ ')!؁#D A! 0A jA A0@@UG&(}DxX"}j[k 'd#GAx>^~ޥ^ 'p^P##k///1 X@kXG4Gk/1 B k 0Bk '/#/#^>^~ (0޵8 G@>H^P~X`dhl /H^lޡh~*RA1" RrF@lޡ/ G0AG5lޱ@ @ӐI '# /G G G"5 @@^ '#IE 鳼pt`HDA dE}/ 0A G @Ӹ) 'x# @GGG4GGp @G? !,@) /GG k @Ӽ) ' # @ ?E/GGTGT @/? Gʡ!.@) ÐGG O @) '~# @ ?EɡpGGGtGG8 @G*_ !A@) /GG 3 @I ',~#@@ ?Eip~GtGGG @/_ G*!A@) àGG  @I '}#@@ ?Eit~ 0`AJIEw} ɤ &F[k 't}#i` 0A } ,F[k '<}#i`I 0@AIp} ) !E[k '}#i 0`Ait^} @ -E[k '|#i 0`AiI} -E[k '|#i`0Apޡ} ) !E[k 'X|#i 0`Ait} ɥ  -E[k ' |#I 0@AIp~} `ɥ  -E[k '{#I 0@AIt} ɥ  -E[k '{#I 0@AIt} ɥ  -E[k 'x{#I 0@AIIGG/@! ɥ . @ӈI` ' 0{#GGj(JGXAGIG/G@ɡ! - @Ӑ` 'z#GGl(LGG>AIG/G! GJ@ - @8P 'lz#7.qB A( '/@Ii!BABcBC@ @ɤEAƤE@%-@餘 GAG@GM@ )PA 1 A APBpm_ A `@ɦ!UA֦ 0A AUB)G/P~(Y`GAGIG/G`I!8@ɥ! . @Ӑ '(y# ./ Xޥ G(oGG`8ɤDdA(fx g@D@d@ @GG8OBbAB0/AA@!. 0`A mA!GG,X~`(EAP 'lx#H~dlޡk Ak!`)h0@h?^>G^~ (0ޥ8#k/// '/w#/}#p^x>^~޵^~ޜ> G>8G ~(0h[k 'xw#"}DI[k 'G`w#"%}GXN"_^[k '" (w# @%ߝ'%H}87|X!."%L"X!("O[k 'Gv#>"G_J 'v#G@b,%/bHG @䈴!,"_* 'v#GG_/GG(J0*GJj 8^>RA> 'Hv#@<H>  ߝ'77܈7 77|ߝ'@7 @H>X^ 'lu#G" @H> 'Hu#Eߝ'66<᳼TX!` DdA EHޤG 0`A G% @H^ '"t# @"@GHG4GG@GOH^? !*@" P~GG  @H^ '\t#" @H~CGHGTGG@GH^? !,@" X~GG  @H^ 's#" @H~GHGtGG@GH^? !-@" `~GG  @H^ '|s#" @H~GHGGp@GH~G/_ !A@# h/G  @H> 's#A@@H~c~0AHEtH @}Ť &aC[kH> 'r#i 0`AiHޥ } /SC[k '|r#N 0@AN H>}i +FC[k 'Hr#0A鱀^Hޥ @n} +8C[k 'r#. 0 A.H Oo} +*C[k 'q#/ 0 A/Hޥ N} *C[k 'q#n 0`An>H O} * C[k 'dq#o 0`Ao Hޥ}. ,B[k ',q#N 0@AN~H `}/ )B[k 'p# 0A^Hޥ @n} -B[k 'p#. 0 A.H%}` "X!8/" GB[k 'J"|p#%H}^X!j"H-"""nM[k 'J"Hp# j"%H}"X!X."dM[k ' p#%=$!賂!  EE E>!^_D?DdD>G/GL,! 4@P 'o#GG/ /L! /! &@X> 'xo#GG/ )L! /! @`> '@o#GG/ !L! /! @h> 'o#GG/ !L! /! @Ӽ,x^ 'Gn#/! ' =@@`GDFD@&X  X X X_ X4G/(O }x G~]G!-8~^ ~4G(^GGAGG}}p(ILx,~G8!(~-TG ~G>^~GAG`GG}(@Lx,}t~G8!-G(~tG ~G>^~GAG졌,DG, 0>D^G G!KA@(hޤHG>8(fx@g@E@@G@G /8I0)M@BAA@!+0A!k! AP)D@D?GGDޠ%}=@:! ("C[k 'Dl# }%}GGk!(+"C[k 'l#*0DޡGM NA.X  X X[+X _hY`,X _Y-X _Y.X_Y/X_Y 0X_Zߝ'7< X_X4Gh>H~= (IxKk!GDޠG!( ,8 >G^G~G޴GTAGHޥ/~ ./!/!/]!G] M,jBt~.nP~!= ~~ ~D^>p>x~ݥG 8(08>@H>X^`^h޵G6AG >@~) mA)! `H<^̥ 0@A<^H޵GGGGG/8񽢙A '<i#@ @~<ϡ@oA!EL@~G/G 0`A]!@~@̥ .@N8n '`i# G/G4GGGnALG/G]!@ /@O8o 'i# G/G4GGGVALG/G]!G@ /p@8l( ' h#G2`#q`B s@$#`/@̤ FF@ƠF@FD@,OQQ@1Q2Bqd@TT@TB@̦VV@@@ ֢ C@GB S@ @,O YY@90@@ S@Y:CوĘG4G/*(^8G AGLG/G`,!G@,]! !>!@Ӑ̥ 'Ddg#/]! ,/ n0D G G `O@/(/G 8(px  ArAHHB@J@GG8N0.M@BAA@ 0@A!! KAPΥD@DG4G/G0^8D~ &GGA ^@J AJ!@<~ 0`A<~p^Gx>^~ޥ^~ތ>#k '/e#/}#H^P>X^`~hpx޵ G G~GGd[k 'e#"}D[k 'pe#"4GG%} Y!GY[k~ 'L"De#"}4GY[k (,0 '>$e#&I"%ߝ'H}%H!87\DGJ[k 'd#"}>"P[k ',"d#}"P[k 'd#"}>"P[k ',"d#}" GP[k '"pd#>"}P[k 'GXd#GC8EE*@ D0 @xDD ΥG0@E 4GGGGÈN}ὦSG=Φ׶~8. >7 ;q A iC('`/@Τc ƤEECE@@NBGGCB@"#@PPC@B@C@.NJAAC@C ! [CA*@ac IC @@nc SSC0@Cs ICStBN`!*@ ~ G GK C(GG8ʤ@Ơ(gxb@BF@@&@G G8JM@B0*AA@!+ 0 A!k! /APJ@_~ (.8~g0>΢^~G'H^  ~@޶޴A/GG4GH^P>X^`~hpxޥ#k/// '/Pa#/P#GpGPx>GF^G"P (0޵^>^~8 /^P @CJBc#F`8@ @`>G0@BP ~@ KB`!0 B?G^@=@b#X4G G Q=@B@CQ" X G5 X 4G}Z[kp '_#%p}GXY."M[k '_#Gq_Ӑ>p '_#@%p}AXY!."L[k '_#p%ߝ'p}6\XY! ."L[kp '\_#%p}д/"L[kp '@_#%p}XY!0."L[kp ' _#%p}Cд!/"L[k '^#p%p}Cд!/"L[k '^#/%p}pXY!8D@."L[k '^#%p}pд!/"L[kp '|^#%p}д! /"L[k '\^#@G* @J '<^#G=@B `%p}pdXY!4XP."L[k ']#0%p}p=@@#XY!Gh."L[k* ']#G Gj%p}pд!0Al@(/"C~L[k ']#! A%p}pд!0/"rL[k 'X]#]%p}pXYJ!x*"iL[k '4]#p%p}д!8/"aL[kޥ 'N]#/* y@J 'p\#G=@B@$ `jp}XY #CCB%"c4XEL[k '\#b }$p}p`XYc G4X#"7L[k 'l\#T]$p}p= @GXYB ""G G*L[k* '8\#G4 >!`j#l@#1`@G%H}"Ce@д!C@/"UH[kp 'A[#A%p} д!H/" L[k '"[#}l[kp> '.1@[#Gx}jJ[k '[#x}p>"cJ[k 'l[# 0A A%p}pд!P/"K[k '<[#=%p}pXY)!)"K[k '[#%p}pд!X/"K[k~ 'Z#G, @8K 'Z#p G,=@B*@@+̠L$p}A@D@!E@XY %A"@a'"4XK[k 'hZ#p@K }$J*p}pB@@@ @bXYc G4X#"K[k 'Z#]$p}p= AP@XY  "GK[k8+ 'Y#? G G G!^8b@B#k@Bb@BÐ@@D%H}"BE@Bд!`/"G[kp 'xY# @A%p}_A д!h/"oK[k '"LY#}*l[kp> '8Y#*1@x}GI[k 'Y#x}p>"I[k 'Y# 0`A)!8 `A%p}pд!p/"NK[k 'X#=%p}pXY)!()"EK[k 'X#p%p} Gд!x/" '"/M[k>p 'HI|V#%p}@`^"XY!X~"@,"J[k 'HV# %p}pXY!`~"X."X"J[k 'V#%p}pд! G/"J[kp^ ' GU#}%p}XYk!p+"J[kx 'U#HޥKA!k KE7`8, 0A}8 D Li  #|[k '8DxU# 쥘i}((+|[k '8DPU#G8l}$p}p 5,XYc #"5H $D LZJ[k 'T# %p}LpXY!/"OJ[k 'T#Ρ~! A` 0@A=%p}pXY)!)">J[k>^~ (0ޥ8 '^T#4G#k/ '/PT#/ߝ'#^>^~ (0޵8@^H~P GX6 C C GG66|6\GIPAR"@ET0AXTOXXXOG/GO/)@XoTOX 'GS#G⽦GA 'TXS#Xo A    0A^>^~ (0ޥ8@^H~PG`#k '/R#/H}C C# 1@H>@F=&@("P~h1"^>^~ @F[k@H> 'R#/G_G//(>"G_GG@H>GG_P>} GG D Gdj[k ' G R# G+,/K P"HJAcI 'Q#K,BKHCDK<G} 0@Ak!Lj[k ' @AQ#^^~ G>`#k '/Q#/#^>^~ (0޵8 C8 EPq$/X E@Pqx EPq8@P˥81@@D>HP޵`X^ EPqGXG'A 'P#KA ADG} +z[k 'P#G}( (+z[k 'hP#G/JkG KE@á5 AU AG"D E ET F`/((DD /8 -8Mh G /0 -8MH G0ͥP޵1E1 G# G G/(oh} `vBxBTBUCBuAz[k '\O# .JH~PA#@BD@"X 0A!J! APPGEAU/GRGPGNGLGJ@DGDDBX^`~1q@G 'B-, ҢH>P^B VBVXCR"s" BxKY6@rs[yCCz@Y.3D@A:@ĉቮY&RBY@E@%Z? B@/ҡsHP0BR"MAKoAMk Bs"SZ @4G^>^~ (0ޥ8p#kG '/pM#/Q}#^>^~ G G G@1y[k '@,M#J}G @j #y[k 'M#*?@ aAj}G ` $y[k 'L#*?@ aAj}G` $y[k '@L# `AJ}G@* !y[k '@pL# `A^>^G~ #k/ '/@L#/Q}#^>^~ G G G@1y[k '@K#J}G@j #y[k '@K# `AJ}G@j #y[k '@K# `AJ}G@j #y[k '@|K# `AJ}G@* !y[k '@PK# `A^>^G~ #k/ '/ K#/C#4G= B A0Bߝ'!!1 B>! X^6|[_A+Xp `Ya*X[] B6 "q BTG" Q@" ]@@ @pP`@ b@"+KY+`Y _aY#`*Y*@Y _AY@p,lY,Y _YP*KY*@Y _AY@ q@ p0`@"+Y q@+`Y _aY`#k/G#k/ '/I#/}#^>^~ (^ C G G G`=XE}G4Gz[k '8"xI#$}GGz[k8~ 'XI#8"x}+}I8~jE[k ' G8I#8"}GGz[k8~ 'I#8"x}+}I8~ZE[k  @ '@H#G@[=$}GTGx!"z[k '8"H#H}GGz[k8~ 'H#8"x}+}I8~^~ (^P#k '/@F#/_Fߝ'GF Z 7<_XGFZ 4Gk/GF@ZG4Gk/Gk '/E#/]&p}#^>R" ^r"(~"0 G G" 4G}%0_k!( GsF[k '\E#@*jʤp}a8+"޴GG`F[kJ 'E# 0A_^> ^(~0@#k '/D#/#^>^~  G G G%_!p}GGG 0`A>F[k 'GD#GG@ӘJ 'pD#_^>^~ 0#k/ '/@D#/#G^>^~ (0޵8@^HP>ѥX\`d}%p}H@_+" F[kP^H 'RC#}%p}_k!+"E[kP^H 'RC#}%p}_k!8+"E[kP^H ' RdC#}%p}_k!P+"E[kP^H 'R#J=%p}H@_)!()"D[k '>#=%p} LH_)!H)"D[k '>#=%p} MH_)!h)"D[k '`>#=%p} NH_)!)"D[k '8>#=%p} OH_)!)"D[k '>#J}%p}H@_k!+"D[k '=#=%p}(LH_)!)"D[k '=#}%p}(MH_k!+"D[k '=#%p}(NH_!,"xD[k 'p=#=%p}(OH_)!)"nD[k 'H=#%p}HPJ_! -"eD[k\JH '$=#}%p}_k!8+"\D[kdJH '=#%p}_!X."SD[kHhJ '<#%p}_!x,"JD[kH '<#%p}!/"BD[k '<# GH`^LjG(@P 'p<#p}H /"0D[k>^~ (0ޥ8@^ '^P<#p#k X-\> n`~ //d>// '/;#/p}#^>^~ (0޵8 G G C@~%G4`E CHd!HGGC[kJ 'p;#-"p}GC[kJ '0-"T;#Gp}C[kJ '8;#H-"p}GC[k J ';#p}p-"GC[kH ';#-";(Jp}G @JdB@31@@B@BB"C[k ':#0*p}-"G JAAA@31@@C[k ':#%p}G!GGC[k * 'h:# G /8jp}."G0Al@CC[k  '0:#! Ap}."GC[k ':#ꡀ}@>!MI[k 'G9#Gp}G !C[kH '@>9#$*}@ʥ+LM I[kN '9#p}31@@@GGyC[kH@>M 't9#}I[kO '31@T9#@@p}GGgC[k ',9#^>^~ (0ޥ8P#k/// '/8#/}#^>^ G"n[k ' G8#&/e"/GA ØIJIG/=@> '^G^t8# #k/ '/P8#/}#^>^ G"n[k ' G 8#&/e"/GA  )G) A G_IØGG @> '^G^7# #k '/7#/ߝ'? #0`7t7<04G0 0 0$0(,000004^> G8]&x} H8@eR"DHL<0PTX\`F` m "o[k4GTGtGGߝ'/d7<l7\鷴)p7<鳬|鳘鷰雸))))) Ii)  (08@HL P)GT)XI\ `F="`d h)l)p)t)x)|)鷈G @Ӑ G^>#k// '/5#/}#^>^ GX"n[k ' G5#&/f"/GNA PPIPJPI G$Df ʰ04'8  *tI _EJ3]JtF ^> $(08@H^ #k/// '/4#//#^>^ G_I ' G@4#} ɠ   8") I8)" @$i$`( (,), 0I0@4i4`w[k< '3#` "< `)"@I}@JDiDjHHLLPɠPʰT)T*XIXJ\\갾w[k 'm "3#m)"}w[k|) '3#|*iGjɤʴ餘괠 GG@G à Gɠʰ )*頸갼 )*IJijɢʲ)*IJ) G_G )G G_ G)G G_G )G G_ G)G  Gx_G )G  Gn_ G}ɠʰ  / PBm[k '1#  ic(}`]%HfJ!G}V[k) '@ ")d1#(}vV[k>^ '^H1#G #kIGG @  ʤ0`@@@ 頧 g@  (I(J0}0PBl[k '0 0#i(}c`]%fJ!GHV[k) '0#@ "(})AV[k>^ '^t0#G #k/(IGG @00ʤ0`@@@ (頧 g@08)}8*@i/`PBl[k '@ /#i(}c`]%fJ!GV[k) '/#@ "(}) V[k>^ '^/#G #k8IGG @@@ʤ0`@@@ 8頧 g@@jH)ߝ'H*Ll7G/^ #k/G00@ 0@k/// '/0.#/#^>^~ (0޵ G G G/GG_/ G}`EGGIv[k) '  "-# )"*i}j?v[k) '-#}* i j$$(ɠg@P@ l[k( 'i`-#` G`G((ɤ} 0A@@ v[k ' -# ! A(0i}$`P@k[k0 ',#GG/0i00 @b@@B  %@ 0ɤ00 @@&@B ' (@0j8I}$@iPBk[k '8 H,#ɡ IGG@88ʤ0`@@@ 頧 g@ 8 8 0`@AB  ) q@?8J@}$$ɢPBk[k@ '$+#GG/@i@0 @b@c@B d$ %@ @ɤ@0 @@Ơ@B ǰ$ (@@HI}&@$iPBvk[kH '$ɡ+#hGG/HiH0 @b@c@B d$ %@HɤH0 @@Ơ@B ǰ$ (@P)$?HJP) ?G^>^~ (0ޥ@#k%(}Pg!GT[k) '@"4*#(}T[k 'G*#%(}g!GT[k) ')#@ "(}T[k 'G)#%(}g!GT[k) ')#(}@ "T[k ')#G/]%(}@hJ!GT[k$) '|)#(}@ "}T[k 'd)#G/}%(}hk!/GrT[k$) '8)#@ "(}lT[k 'G )# '/)#/P#^>^ G@//GY@Ә '(#I@GGPJG@G_I@/G8JGG@_G @  'p(#/A0 '\(#GA@ 'H(#/A '4(#GA ' (#/A ' (#GA ''#/A ''#G|A ''#/GvAG/G _>^ '^'# #k/// '/'#/PG#^G4@G^/#k/// '/0'#/PPG#Pb^PpGx@G^/#k/// '/&#/#^> G/G)G @G?^>#k '/&#/#^>^J GP@/GPJGGJ@_I@GG8JGR@G_G 1@  '&#GA0 '&#/A@ '%#GA '%#/A '%#GA '%#/A '%#GA '%#/A 't%#GA/GG/GAG^>^ #k '/0%#//#^> G(A8 '%#/A@ '$#GAH '$#/GA/GG/GA^>#k// '/$#/P#^B>5@@5H@5Y@D!DCDU@@DUH@DUY@"^DC >TD~ G`DT@XDDDT@DF@h| i(G,I |A"Cb$kEMc #w`H 'CL##G/ (>,^G鷠=8 D 6EH3CbEDBD@D@D@4dAG@G=&/DAdA"D Gh1"G_G=&/KAucA+D Gh1"G_G/GG/G@ ^>^~0#k/ '/"#/}#^>^ GGXi[k ' G"#&/i"/GA 88I8J8I Gߝ'`7^> $(, 0 4 ^ #k '/"#/#^>^ G G GG_I '!#G@E@ɠ $)$ (I(@, ,0)0 4I4@8)?^>G^ #k '/@!#/8PG#8^8G @G^/#k/// '/ #//#^GAG^#k// '/ #/p}#^>^~ G G}%J0ik!G7}[k '+"l #p}G1}[k* 'GT #/G @ +"/p}G%}[k* 'G$ #/ @J ' #p}0+"G}[kJ '#@+"p}G}[k J 'P+"#Gp} }[k$J '#`+"p}G}[k(J '#p}p+"G|[k,J '#+"p}G|[k0J '+"d#Gp}|[k4J 'H#+"p}G|[k>^~ '^,# #k/// '/#/tP(}p#^>8@D^~ (0޵ Gp> C @=%i)!GQ[k '#0 "(}Q[k '#/I(} 0@ABKD @=%0j)!GQ[k '0 "X#(}Q[k 'D#%(}xj!GQ[k) '0 "!$#(}G11 @Q[k '#8- 8/8M@8b GGG/G_//GG_G 4G/ GD  A/PAG} h[k '  \# @ "(}tQ[k 'x "@#G(}nQ[k '4G(#?i"`"Q@AGG K@@ 0 @P @p @@% ɤ @ "@@  A )#B Qc  +@ Bc 50 @ +@GF0 GAPA/}g[k '0 X# "(}3Q[k ' "<#(}G-Q[k '$#4G/(i"`*Q@AGG KA`@00 @P @p @@$0 @ *@@Ű0@0 B 0B _ +@`0B40 @B +@/8"G @4G8~G<`H/}PAg[k 'D#H(} "P[k ' "(#G(}P[k '4G#2`!q`A GG +@#`" /x^0@AP@Ap@A޴ @AxHx AA[@>x^~[[H~A[(H^BBRHB uB KA x^ 0@A KAxH>["CB _i ;GX_X ')` #/(!x_G`Ip/8>"GT @G /8"NGGx @4G8~G<`H/}PAg[k '#H(}  "P[k 'P "x#G(}|P[k '4G`#M2`,q`A GG A#@"/x^0@AP@Ap@A @AxHx LA[@>x^^[[H~@['H>!BQHB t! KA x^ 0@A KAxH[C! ?IG :X_X 'I`p#/(* _G`Ip/8>"G @G GNG^>^~ (0ޥ#k// '/#/`#(}t>^8D>^~ (0޵8^@~HP Gs^^ C =%k)!GP[k '0 "p#(}O[k '\#ð>%(}C(l! GO[k ~ '8 "0#(}G11@O[k '#(}X "O[k ~ ' "#(}G11@O[k '#8- 8G8M@8b GGG/G_GG_G /TG GpXDೈGEE  GGA@ /}P_A5f[k '#  (} "O[k ' "#G(}O[k '4G#FI"@"q@AGG J@@ 0 @P @p @@% ɤ @ "@@  A )#B Qc  *@ B50 @c *@馐GG0 AӐ '#0À}P@e[k '0 # "(}XO[k> '#0 "(}RO[k '4G#Ð>GG()^@0@e0`@ޠ f@/X"G @4GX^G\>@h/}P_Ae[k '4#h(} @ "*O[k 'x "#G(}$O[k '4G#:@ߝ'_"q@Ah7<GG J@'&@// X@Xh @ "@@ AYJCY@XLcY aY JX[ LXMcY[aYhޤ[ MX@Fh[@hAc  *@ //NXh^0 @X *@CBc NX[ҙG,"x_Ӏ 'x#,"G_GI/X>"G @G /X"NG @Ӑ^4G '\>#X^@hÀ}P_AOe[k 'hl# "(}N[k> 'P# "(}N[k '4G8#`//^`_G@ߝ'Gh7|@EXh~0 @CXb@B X[ $@Gh>"G,AG/x,"a_Ӏ 'x#,"GZ_G/X>"G6 @Ӱ> ' h#TGeEp)ItJ5@A5HA5YAD DCDU@ADUHADUYAJ"DCTE@DTAXDE `DTAu@AD@A F@ɢ6Bɲ4G G^>^~ (0ޥ8^@~HP#k/ '/p#/(}@#^>^~ (0޵8@^H~PX Gs^^ C>tP&8@G@n" N[k '#/}%^pɠ8nk!+ X@DaD8@D "D &0 !XD8D "P"hFFG%ޢ +# !XDl"8FFC^GF~Èiۡ (} "G`~M[k^~ ',# "(}GM[k ' #8/ 88O@8bGGG/G_//GG_G ߝ'tG G pޠ `7$>(\I/NE,Mi>0m4-  GGA@ À}P_A8d[k '  # "(}M[k ' # "(}GM[k '4G #VI"@!q@AGG *@` 0APApA@ıA  A@Ű @  BB 0_ A` BԱ0A AB ޢGF0 AӘޡ ' #0À}PAc[k '0 #  "(}\M[k> ' #H "(}VM[k '4G #ØޡGG(ɱ> 0@D0@@c E@/`"G$ @4G`^Gd@p/}P_Ac[k 'D #p(} X ".M[k ' "( #G(}(M[k '4G #:@ߝ'_!q@Ah7<GG *@'`& // X@XpA A@ AYJCY@XLcY aY JX[ LXMcY[aYp[ MX@Epޤ[@p@B  A //NXp>0AX A"BB NX[љ_+" ߝ'>d7G0ZGG_G,"G_G/+"_Ӡ ' #Gɥ`>"@G /`"͵G@Әޡ4G 'd>t #`ޱpÀ}PAEc[k 'D #p(}  "L[k> '( # "(}L[k '4G #cèޥ>_GG ߝ'h7|///@EXp0@@CX@c X[ E@Gp>"G AG^G @ߝ'+"d7|X`N_ 'X #G ,"GF_G/+"@_Ӡ ' #iG`>"@Ӑ 'm #uAA,D pI@X@D@i#`@i /p8DxDɠ@ɰIpG^>^~ (0ޥ8@^H~PX#k/// '/0#/tP(}#^>@D^~ (^0~ Gs^^ Cp>&x@`p"L[k 'G#Èi`8K@8kG8k`8 G/GG4_G/GG._ӈ GG G pxGɤƠ GE  GNAG@ À}P_Asb[k '  #}%(}pk!GK[k '@ "#G(}K[k '#/I 4G"@"q@AGG J@@ ɤ0 @P @p @@& @ 餳 "@@  B0 @c E *@ B50 @ *@c 8"G@_ 8^@^ '<~#GX %q_Xi` '(##/Gh_G`@HÀ}P_Ab[k 'H#=%(}p)!GK[k '@ "|#(}G}K[k 'd#Z//:@ߝ'_"q@Ah7<GG J@'&@// X@XH @ "@@ AYJCY@XLcY aY JX[ LXMcY[aYHޤ[ MX@FH[@HAc  *@ //NXH^0 @X *@CBc NX[ҙ8>"Gp@p ' D#txE piG XEpG&(}8q""K[k '#4G^>^~ (^0~#k// '/#/t(}p#^>F^F~ (0^8~@H Gs^^ C C>&Xq"J[k '@#È8L@88l`8 GGG/G_//GG _G > GG @ è>tGͰ  - G, )0-TE  G AG@ À}P_AEa[k 'D#  %(} q!GJ[k '8 " #G(}J[k '4G#uI 4G#@"q@AGG J@@/ ɤ0 @P @p @@&  @ "@@  B0 @ Ec  *@ B50 @c *@ GxE0 GAG`0À}PA`[k '$#0 =%(}q)!GdJ[k '8 "#G(}^J[k '4G#-(i"`#q`AGG k@`0ɤ0@@P@@p@@@F0@@ C@@0 B00IDB r K@0ɦB V0@@ K@P"/G@P^GT@`À}P_A`[k '#`=%(}(r)!G J[k '8 "#G(}J[k '4G#//:@ߝ'_"q@Ah7<GG J@'&@// X@X` @ "@@ AYJCY@XLcY aY JX[ LXMcY[aY`ޤ[ MX@F`[@`Ac  *@ //NX`^0 @X *@CBc NX[ҙ ߝ'>=&d7Gppr1"0ZG_GGp=_ '#]%/xrJ!pG_ӈx 'id#P>"/ml@G /P"G@GP~GT``À}PA4`[k '`#  "(}I[k '#H "(}GI[k '4G#f9`ߝ'_!q`A Gh7|G +@&`% /CXBEX` A A@X@XXJ%X#XX[ XK%X[D#X`[ X@`ޤ[@F`@B g A //LEX`> 0ACX A"BB X[_X*" ߝ'd7܉GpYGG _=&GpP1"/G_Gxph*"_ӈ 'xIl#P>"/M@Ӱ^~ ' H#IitG^>^~ (0^8~@H#k/ '/#/tP(}#^>8@D^~ ( G Ch>@&r" I[k '#&(}C@(s"I[k 'x#&(}8@EHs"H[k 'T#8, 8G8L@8b G/GG_G/GG_ӈ G4G G @`/8@EG0"@4G '0#l}G4~Y_[k '#@&(}s"H[k 't#4Go/L@~G ,P_GP(,XG/_h 'X$#(`0>"/]@ӈ  '#IGM  A/GG}'_[k '  #%(}s!GH[k '0 "#(}H[k '#4G7 4G2/Gh 8@E-@0>"2@Ӑ 'X#)G-0 GA/G}^[k '0 #]%(}tJ!GcH[k '0 "#(}^H[k '4G# 4G(&(}Ghs"QH[k '#G^>^~ (p#k// '/#/tP(}#^>8@D^~ G @=%Pt)!G2H[k '0 "8#(}-H[k '$##&(}t"&H[kI '#@8* 8JG8J@8b GGG/GD_GG@_G /TG i`G^>^~ #k '/p#/tP(}#^>8@D^ >~ G@&t"G[k '(#%&(}u"G[kI ' #@8* 8J8J@8b GGG/G_//GG_G ~G `G^>^~0#k/// '/`#/P(}#^>^~ G@G[k ' #/8" G 8J8j`8 Gʠ&(}8D`u"G[k '#$(}`u 8"G[k* '# a&(}XDu"G[k 'x#$(}u @"{G[k* '\#t a&(}xD u"lG[k* ' #e apu&(}D(v"]G[k '#$(}(v ("VG[k* '#O aZ_/&(}D8xD6 8D @v"BG[k* 'x#; aFK/&(}XD w"2G[k* '8#+ a6;/&(}D v""G[k* '# a&+/&(}v"G[k '#5/&(}xv" G[k* '# aJXAD@ic  GXDɤ G GhE  GJAG` À}PAo][k '  #=%(} w)!GF[k '8 "#G(}F[k '4G#i"`#q`AGG k@` ɤ0@@P@@p@@@F @@ C@@  B0 IDB r K@ ɦBV0@@ K@ GE0 GAG0À}PA)][k '#0 }%(}hwk!GF[k '8 "#G(}F[k '4G#(""qAGG L@@00 @P @p @@%0ɤ @ "@@0 A0)#B Qc  ,@0Bc 50 @ ,@  * )JX@G`x@G@G@jppixDDxD, 0*) J80 81 88P8R@8BG_G/G_GG_ӈGX@E4GITGԅEB&`t5@@5H@D5Y@""DCU@@DUH@DUY@D"DCTDDT@XDD DT@Du@@@@G.@):C)*Gi'x@Eu@@@@5AbD @5`ADɠ@ɰ/5A5`A lE` (A @EGpit) AE@Gti/ xAE@GtG^>^~ 0#k '/#/#^>^~  G G G%x!(}GG 0`AE[k 'Gl#/G@0J 'T#_^>^~ 0#k// '/ #/p}#^>^~ G G =&0x1"p[k '#D/}%p} JGPxk!Gp[k(J '+"#Gp}p[kJ '#0+"p}G{p[kJ '|#p}X+"Gtp[k* '`#x+" Jp}31 @ @jG8`D`BB"@cp[k '#*p}+"  31 @G@@ @Up[k '#Gp}=Op[k '#^>^~ #k/// '/#//#^>^~ G GGJ@ G//) G!  /GG@ G/*G+jk * G_G  (*G ( _( 'j#k*+(jk*+ /G mA '#G/GfA^>^G~ #k/// '/P#/#^>^~ G G * 4GF 0 G G) 0D 0 G G) 0D 0 G G} *Ya[k '#0 Gu Gu}( (*La[k '`#0 Gh GhiG-`+)'q@ @ $@c  䣠X @CdKY@YÉ䉮Y_ @ `$0@Zc  @/ GG- +)) ;q C yC` Wx@C"#SZ [C@Z׊Z8[ YC Wx0@C[["# YC@/ G`0I@ Gb_`GG^>^~ #k '/#/}#^>^ GGZ[k ' GP#GA '4# 00I0J0IGG @> '^G^# #k//? 4G00 (k// '/#//#^>^ G_I ' G@#}ɤ-P@Z[k ' iH#`]%(}0yJ!GC[k) '#(}8 "C[k>^ '^#G #k/`GG/ʤ0 @@@B  $@ʴ },)P?BUZ[k ' #i`]%(}xyJ!GC[k) 'X#8 "(}C[k>^ '^@#G #k`GG/ʤ0 @@@B  $@ )G j_G G ()G ( `_G( G(G^>^ #k/ '/p#/P(}#^>^~ G C BA&@y"nC[kI '(#G$(}y 0"eC[k '#G//G_@i '# G`P_A}FY[k ' #@=%(}z)!GFC[k '8 "#G(}@C[k 'Gp#r1@"q@AGG J@ @/ɤ  @ "@@A +B#B01IkCBcBRS@@ ec g *@ ɦ0 @ *@BBc i(` }P@Y[k ' I#@}%(}Pzk!GB[k) '@ "T#(}B[k 'G<#%@GGˤ0 @@@c  $@k )G _G G ()G ( _G( G(G^>^~ #k '/#/0P#^> G@/G@0 'L#G A/GG/_> '^##k/ '/#/0PG#0^0G @G^/#k/// '/#/#^> G/G0)G @G?^>#k '/`#//#^> GA '0#/GAG/G/GA^>#kC8 F kX F@kx F`k F /k '/#/Ȟ}$ О#G^H^ >pc ^~ G C G @b* bb B b C"bc" "P(#"0"@4#Xt#X^4"`0C#hp"p>4#x~t#H0T">4"~0t"޶H"`#~ t"޶H"X#0~t"8޶"@0#x~Hc"޶"#~@t"޶`"`#~t"޶"0#P~t"X޶("`P#~(t"޶@"h#~t"޶("H#(~ t"0޶ "8x#p~ t"x޶ " #~ t"޶ " #~ t"޶" #H~X t"~h t"~t"(>4" ~t"x>4"h~(t">h4"~Ht">4"H"!^T#%4 P޶p "X #~Ht"> !^4#T#h>4"޶ " #~`t"`>X"h^##@^C#H(T"@">"^4#^(T#T"~t"">"^4#0~t" ^T#(8T"8X"P>"X^84#p^XT#xT"~t"">4">"^4#~t"^T#0T"X">"^H,#>,"^ T#T" ~t"("X>4"@>"H^04#p~t"`^HT#hT"x"> "^p4#>4"^T#T"~0t"">4">P"^4# ~` t" ^T#  T" @ "0 >p "8 ^ 4#H > 4"P ^ T#X !T"` ~@!t"h 0!" >"4" >P!" ^!4# ~x"t" ^!T# ("T" H"" >"" ^"4# >@#4" ^"T# `#T" ~#t" #"8 >p$4" >#"( ^ $4#P ~$t"@ ^8$T#H $T"X $"p >$"x ^$4# >H%4" ^%T# h%T" ~%t" %" >&4" >%" ^P&4# ~&t" ^p&T# &T" " >'" ^p'4#( >'4"0 ^'T#8 (T"@ ~X(t"޶"#(޶"0#~t#p޶X"x#޶`"x# ~t#P޶"X#p~t#޶"#~@t#޶ "H#~t#@޶"H#`~t#޶0"X#~t#޶"#~`t#0޶"8#P~ht#޶8"P#~t#޶p"#~t# >0)4"P >*4" >+4" >-4"X >.4" >04"p>24">844">`54"0(" ^ ޶ "(  #@ ~ t#p ޶`!"x !# ~!t# ޶"" "# ~#t# ޶#" $#0 ~P$t# ~)t"h ~+t" ~ ,t" ~h-t"` ޶$"h $# ~ %t# ޶&" 0&# ~&t# ޶ '" H'# ~'t#p~0/t" x(" ޶(" (# >(4# ^(T# ~)t#X)T"  x)" ޶)" )" >*#( ^8*4#H ~X*T#X ^*t#8~0t"X>64">*T"~83t"84"` p *"x ޶(+" 8+" >`+# ^x+4# ~+T# ^+t#+T" ," ޶P," p," >,# ^,4# ~,T# ^,t# 0-T"( H-"0 ޶-"8 -"@ >-#H ^.4#P ~@.T#~x4t">94" ~5t"H>H;4"`^p.t#.T"hp~(7t"><4"/"޶h/"/">/#^04#~80T#(^h0t#0T