From 87643aca4ff10ad8d1c3e4d7f24894d5ff4656f6 Mon Sep 17 00:00:00 2001 From: Kerry Wang Date: Fri, 1 Oct 2021 09:41:34 -0400 Subject: [PATCH 1/2] Optimized OptimizeTimeLoop() --- GUIDesign.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/GUIDesign.c b/GUIDesign.c index 6d36384..3c04488 100644 --- a/GUIDesign.c +++ b/GUIDesign.c @@ -865,13 +865,10 @@ void OptimizeTimeLoop(int *UpdateNum, int count, int *newcount) // This routine compresses the updatenum list by replacing long strings of 0 with a single line. // i.e. if we see 2000 zero's in a row, just write -2000 instead. - int i = 0, k = 0; // i is the counter through the original UpdateNum list - int j = 0; // t is the counter through the NewUpdateNum list - int t = 0; + int i = 1; // i is the counter through the original UpdateNum list + int t = 1; // t is the counter through the NewUpdateNum list int LowZeroThreshold, HighZeroThreshold; int numberofzeros; - i = 1; - t = 1; LowZeroThreshold = 0; // minimum number of consecutive zero's to encounter before optimizing HighZeroThreshold = 100000; // maximum number of consecutive zero's to optimize // We do not want to exceed the counter on the ADwin @@ -886,7 +883,7 @@ void OptimizeTimeLoop(int *UpdateNum, int count, int *newcount) } else // found a 0 { // now we need to scan to find the # of zeros - j = 1; + int j = 1; while (((i + j) < (count + 1)) && (UpdateNum[i + j] == 0)) { j++; @@ -896,7 +893,7 @@ void OptimizeTimeLoop(int *UpdateNum, int count, int *newcount) numberofzeros = j; if (numberofzeros <= LowZeroThreshold) { - for (k = 1; k <= numberofzeros; k++) + for (int k = 1; k <= numberofzeros; k++) { UpdateNum[t] = 0; t++; From a220da0d4e0f22dd9fc7a014d78764bb9a9acf87 Mon Sep 17 00:00:00 2001 From: Kerry Wang Date: Fri, 1 Oct 2021 10:15:04 -0400 Subject: [PATCH 2/2] Converted for loops to C99 style --- GUIDesign.c | 96 ++++++------------- GUIDesign.h | 256 +++++++++++++++++++++++++------------------------- GUIDesign.uir | Bin 121688 -> 121416 bytes 3 files changed, 158 insertions(+), 194 deletions(-) diff --git a/GUIDesign.c b/GUIDesign.c index 3c04488..39a9d47 100644 --- a/GUIDesign.c +++ b/GUIDesign.c @@ -726,28 +726,6 @@ void BuildUpdateList(double TMatrix[], struct AnalogTableValues AMat[NUMBERANALO ResetToZeroAtEnd[i - 1] = AChName[i].resettozero; // printf("Analog Chn = %d, Reset-to-zero = %d \n", i, ResetToZeroAtEnd[i-1]); } - digchannelsum = 0; - for (int i = 1; i <= 16; i++) - { - if (DChName[i].resettolow == TRUE) - { - digchannelsum += 2 ^ (i - 1); - } - } - // ResetToZeroAtEnd[101]=digchannelsum;// lower 16 digital channels - digchannelsum = 0; - for (int i = 17; i <= NUMBERDIGITALCHANNELS; i++) - { - if (DChName[i].resettolow == TRUE) - { - digchannelsum += 2 ^ (i - 17); - } - } - // ResetToZeroAtEnd[102]=digchannelsum;// digital channels 17-24 - //ResetToZeroAtEnd[25]=0;// lower 16 digital channels - //ResetToZeroAtEnd[26]=0;// digital channels 17-24 - // ResetToZeroAtEnd[27]=0;// master override....if ==1 then reset none - // if(checkresettozero==0) { ResetToZeroAtEnd[27]=1;} SetData_Long(4, ResetToZeroAtEnd, 1, NUMBERANALOGCHANNELS); // done evaluating channels that are reset to zero (low) @@ -1190,7 +1168,7 @@ void DrawNewTable(int isdimmed) // turns dark yellow. might pick a better color. { - int j, m, picmode, page, cmode; + int picmode, page, cmode; int analogtable_visible = 0; int digtable_visible = 0; double vnow = 0; @@ -1234,7 +1212,7 @@ void DrawNewTable(int isdimmed) { SetTableCellAttribute(panelHandle, PANEL_TIMETABLE, MakePoint(i, 1), ATTR_CELL_DIMMED, 0); - for (j = 1; j <= NUMBERANALOGCHANNELS; j++) // scan over analog channels + for (int j = 1; j <= NUMBERANALOGCHANNELS; j++) // scan over analog channels { cmode = AnalogTable[i][j][page].fcn; vnow = AnalogTable[i][j][page].fval; @@ -1296,7 +1274,7 @@ void DrawNewTable(int isdimmed) SetTableCellAttribute(panelHandle, PANEL_ANALOGTABLE, MakePoint(i, j), ATTR_TEXT_BGCOLOR, VAL_YELLOW); } } - for (j = 1; j <= NUMBERDIGITALCHANNELS; j++) // scan over analog channels + for (int j = 1; j <= NUMBERDIGITALCHANNELS; j++) // scan over analog channels { // if a digital value is high, colour the cell red if (DigTableValues[i][j][page] == 1) @@ -1426,7 +1404,7 @@ void DrawNewTable(int isdimmed) picmode = 2; } - for (j = 1; j <= NUMBERANALOGCHANNELS; j++) + for (int j = 1; j <= NUMBERANALOGCHANNELS; j++) { SetTableCellAttribute(panelHandle, PANEL_ANALOGTABLE, MakePoint(i, j), ATTR_CELL_DIMMED, dimset); SetTableCellAttribute(panelHandle, PANEL_DIGTABLE, MakePoint(i, j), ATTR_CELL_DIMMED, dimset); @@ -1438,7 +1416,7 @@ void DrawNewTable(int isdimmed) SetCtrlAttribute(panelHandle, PANEL_DIGTABLE, ATTR_VISIBLE, digtable_visible); SetCtrlAttribute(panelHandle, PANEL_TIMETABLE, ATTR_VISIBLE, 1); - for (m = 1; m <= NUMBEROFCOLUMNS; m++) + for (int m = 1; m <= NUMBEROFCOLUMNS; m++) { SetTableCellAttribute(panelHandle, PANEL_TIMETABLE, MakePoint(m, 1), ATTR_TEXT_BGCOLOR, VAL_WHITE); } @@ -2037,7 +2015,7 @@ int CVICALLBACK TIMETABLE_CALLBACK(int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { double dval, tscaleold; - int page, i, j; + int page; ChangedVals = TRUE; switch (event) { @@ -2048,7 +2026,7 @@ int CVICALLBACK TIMETABLE_CALLBACK(int panel, int control, int event, // at a change event seems to work. page = GetPage(); - for (i = 1; i <= NUMBEROFCOLUMNS; i++) + for (int i = 1; i <= NUMBEROFCOLUMNS; i++) { double oldtime = TimeArray[i][page]; GetTableCellVal(PANEL, PANEL_TIMETABLE, MakePoint(i, 1), &dval); @@ -2061,7 +2039,7 @@ int CVICALLBACK TIMETABLE_CALLBACK(int panel, int control, int event, ratio = 1; } - for (j = 1; j <= NUMBERANALOGCHANNELS; j++) + for (int j = 1; j <= NUMBERANALOGCHANNELS; j++) { tscaleold = AnalogTable[i][j][page].tscale; // use this and next line to auto-scale the time AnalogTable[i][j][page].tscale = tscaleold * ratio; @@ -2273,15 +2251,7 @@ void CVICALLBACK BOOTADWIN_CALLBACK(int menuBar, int menuItem, void *callbackDat Boot("C:\\ADWIN\\ADWIN11.BTL", 0); processnum = Load_Process("TransferData_May25_2012.TB1"); //Updated May 25, 2012 - Seth Aubin } -//********************************************************************************************************* -void CVICALLBACK BOOTLOAD_CALLBACK(int menuBar, int menuItem, void *callbackData, - int panel) -{ - int ischecked = 0; - GetMenuBarAttribute(menuHandle, MENU_FILE_BOOTLOAD, ATTR_CHECKED, &ischecked); - SetMenuBarAttribute(menuHandle, MENU_FILE_BOOTLOAD, ATTR_CHECKED, abs(ischecked - 1)); -} //********************************************************************************************** void CVICALLBACK CLEARPANEL_CALLBACK(int menuBar, int menuItem, void *callbackData, int panel) @@ -2370,7 +2340,7 @@ void ShiftColumn3(int col, int page, int dir) //Replaced Malfunctioning ShiftColumn and ShiftColumn2(see previous AdwinGUI releases) { - int i, j, status, start, zerocol; + int i, status, start, zerocol; printf("col %d", col); if (dir == -1) //shifts cols right (insertion) @@ -2382,14 +2352,14 @@ void ShiftColumn3(int col, int page, int dir) for (i = 0; i < NUMBEROFCOLUMNS - col; i++) { TimeArray[start + dir * i][page] = TimeArray[start + dir * (i + 1)][page]; - for (j = 1; j <= NUMBERANALOGCHANNELS; j++) + for (int j = 1; j <= NUMBERANALOGCHANNELS; j++) { AnalogTable[start + dir * i][j][page].fcn = AnalogTable[start + dir * (i + 1)][j][page].fcn; AnalogTable[start + dir * i][j][page].fval = AnalogTable[start + dir * (i + 1)][j][page].fval; AnalogTable[start + dir * i][j][page].tscale = AnalogTable[start + dir * (i + 1)][j][page].tscale; } - for (j = 1; j <= NUMBERDIGITALCHANNELS; j++) + for (int j = 1; j <= NUMBERDIGITALCHANNELS; j++) DigTableValues[start + dir * i][j][page] = DigTableValues[start + dir * (i + 1)][j][page]; ddstable[start + dir * i][page].start_frequency = ddstable[start + dir * (i + 1)][page].start_frequency; @@ -2428,14 +2398,14 @@ void ShiftColumn3(int col, int page, int dir) if (dir == 1) TimeArray[zerocol][page] = 0; - for (j = 1; j <= NUMBERANALOGCHANNELS; j++) + for (int j = 1; j <= NUMBERANALOGCHANNELS; j++) { AnalogTable[zerocol][j][page].fcn = 1; AnalogTable[zerocol][j][page].fval = 0; AnalogTable[zerocol][j][page].tscale = 1; } - for (j = 1; j <= NUMBERDIGITALCHANNELS; j++) + for (int j = 1; j <= NUMBERDIGITALCHANNELS; j++) DigTableValues[start + dir * i][j][page] = DigTableValues[start + dir * (i + 1)][j][page]; ddstable[zerocol][page].start_frequency = 0; @@ -2846,8 +2816,6 @@ Parameters: new top, left and height values for the list box *************************************************************************/ void ReshapeDigitalTable(int top, int left, int height) { - int j; - SetCtrlAttribute(panelHandle, PANEL_DIGTABLE, ATTR_HEIGHT, height); SetCtrlAttribute(panelHandle, PANEL_DIGTABLE, ATTR_LEFT, left); SetCtrlAttribute(panelHandle, PANEL_DIGTABLE, ATTR_TOP, top); @@ -2855,7 +2823,7 @@ void ReshapeDigitalTable(int top, int left, int height) SetCtrlAttribute(panelHandle, PANEL_TBL_DIGNAMES, ATTR_LEFT, left - 165); SetCtrlAttribute(panelHandle, PANEL_TBL_DIGNAMES, ATTR_HEIGHT, height); - for (j = 1; j <= NUMBERDIGITALCHANNELS; j++) + for (int j = 1; j <= NUMBERDIGITALCHANNELS; j++) { SetTableRowAttribute(panelHandle, PANEL_DIGTABLE, j, ATTR_SIZE_MODE, VAL_USE_EXPLICIT_SIZE); SetTableRowAttribute(panelHandle, PANEL_DIGTABLE, j, ATTR_ROW_HEIGHT, (height) / (NUMBERDIGITALCHANNELS)); @@ -2882,9 +2850,6 @@ VAL_CELL_PICTURE : numeric *************************************************************************/ void SetDisplayType(int display_setting) { - - int i, j; - //set button status if (display_setting == VAL_CELL_NUMERIC) { @@ -2896,9 +2861,9 @@ void SetDisplayType(int display_setting) } // printf("called Display Type with value: %d \n",display_setting); - for (i = 1; i <= NUMBEROFCOLUMNS; i++) + for (int i = 1; i <= NUMBEROFCOLUMNS; i++) { - for (j = 1; j <= NUMBERANALOGCHANNELS; j++) + for (int j = 1; j <= NUMBERANALOGCHANNELS; j++) { SetTableCellAttribute(panelHandle, PANEL_ANALOGTABLE, MakePoint(i, j), ATTR_CELL_TYPE, display_setting); @@ -3027,7 +2992,6 @@ void ExportPanel(char fexportname[200], int fnamesize) { FILE *fexport; - int i = 0, j = 0, k = 0; char buff[500], bigbuff[2000]; char fcnmode[6] = " LEJ"; // step, linear, exponential, const-jerk: Step is assumed if blank double MetaTimeArray[500]; @@ -3050,13 +3014,13 @@ void ExportPanel(char fexportname[200], int fnamesize) //check each page...find used columns and dim out unused....(with 0 or negative values) SetCtrlAttribute(panelHandle, PANEL_ANALOGTABLE, ATTR_TABLE_MODE, VAL_COLUMN); mindex = 0; - for (k = 1; k <= NUMBEROFPAGES; k++) //go through for each page + for (int k = 1; k <= NUMBEROFPAGES; k++) //go through for each page { if (ischecked[k] == 1) //if the page is selected { int nozerofound = 1; //go through for each time column - for (i = 1; i < NUMBEROFCOLUMNS; i++) + for (int i = 1; i < NUMBEROFCOLUMNS; i++) { if ((nozerofound == 1) && (TimeArray[i][k] > 0)) //ignore all columns after the first time=0 @@ -3065,7 +3029,7 @@ void ExportPanel(char fexportname[200], int fnamesize) MetaTimeArray[mindex] = TimeArray[i][k]; //go through for each analog channel - for (j = 1; j <= NUMBERANALOGCHANNELS; j++) + for (int j = 1; j <= NUMBERANALOGCHANNELS; j++) { MetaAnalogArray[j][mindex].fcn = AnalogTable[i][j][k].fcn; MetaAnalogArray[j][mindex].fval = AnalogTable[i][j][k].fval; @@ -3088,7 +3052,7 @@ void ExportPanel(char fexportname[200], int fnamesize) // now write to file // write header sprintf(bigbuff, "Time(ms)"); - for (i = 1; i <= tsize; i++) + for (int i = 1; i <= tsize; i++) { strcat(bigbuff, ","); sprintf(buff, "%f", MetaTimeArray[i]); @@ -3097,10 +3061,10 @@ void ExportPanel(char fexportname[200], int fnamesize) strcat(bigbuff, "\n"); fprintf(fexport, bigbuff); //done header, now write analog lines - for (j = 1; j <= NUMBERANALOGCHANNELS; j++) + for (int j = 1; j <= NUMBERANALOGCHANNELS; j++) { sprintf(bigbuff, AChName[j].chname); - for (i = 1; i <= tsize; i++) + for (int i = 1; i <= tsize; i++) { strcat(bigbuff, ","); strncat(bigbuff, fcnmode + MetaAnalogArray[j][i].fcn - 1, 1); @@ -3112,7 +3076,7 @@ void ExportPanel(char fexportname[200], int fnamesize) } //done analog lines, now write DDS sprintf(bigbuff, "DDS"); - for (i = 1; i <= tsize; i++) + for (int i = 1; i <= tsize; i++) { strcat(bigbuff, ","); if (DDSstop[i] == TRUE) @@ -3134,10 +3098,10 @@ void ExportPanel(char fexportname[200], int fnamesize) } fprintf(fexport, bigbuff); //done DDS, now do digital - for (j = 1; j <= NUMBERDIGITALCHANNELS; j++) + for (int j = 1; j <= NUMBERDIGITALCHANNELS; j++) { sprintf(bigbuff, DChName[j].chname); - for (i = 1; i <= tsize; i++) + for (int i = 1; i <= tsize; i++) { strcat(bigbuff, ","); sprintf(buff, "%d", MetaDigitalArray[j][i]); @@ -3157,7 +3121,6 @@ void CVICALLBACK CONFIG_EXPORT_CALLBACK(int menuBar, int menuItem, void *callbac { FILE *fconfig; - int i = 0; char buff[500], fconfigname[200], buff3[31]; FileSelectPopup("", "*.config", "", "Save Configuration", VAL_SAVE_BUTTON, 0, 0, 1, 1, fconfigname); @@ -3172,7 +3135,7 @@ void CVICALLBACK CONFIG_EXPORT_CALLBACK(int menuBar, int menuItem, void *callbac fprintf(fconfig, buff); sprintf(buff, "Row,Channel,Name,tbias,tfcn,MaxVolts,MinVolts,Units\n"); fprintf(fconfig, buff); - for (i = 1; i <= NUMBERANALOGCHANNELS; i++) + for (int i = 1; i <= NUMBERANALOGCHANNELS; i++) { strncpy(buff3, AChName[i].chname, 30); sprintf(buff, "%d,%d,%s,%f,%f,%f,%f,%s\n", i, AChName[i].chnum, buff3, AChName[i].tbias, AChName[i].tfcn, AChName[i].maxvolts, AChName[i].minvolts, AChName[i].units); @@ -3184,7 +3147,7 @@ void CVICALLBACK CONFIG_EXPORT_CALLBACK(int menuBar, int menuItem, void *callbac sprintf(buff, "Row,Channel,Name\n"); fprintf(fconfig, buff); - for (i = 1; i <= NUMBERDIGITALCHANNELS; i++) + for (int i = 1; i <= NUMBERDIGITALCHANNELS; i++) { sprintf(buff, "%d,%d,%s\n", i, DChName[i].chnum, DChName[i].chname); fprintf(fconfig, buff); @@ -3267,10 +3230,9 @@ void CVICALLBACK SHOWARRAY_CALLBACK(int menuBar, int menuItem, void *callbackDat void CVICALLBACK DDS_OFF_CALLBACK(int menuBar, int menuItem, void *callbackData, int panel) { - int i = 0, j = 0; - for (j = 0; j < NUMBEROFPAGES; j++) + for (int j = 0; j < NUMBEROFPAGES; j++) { - for (i = 0; i < NUMBEROFCOLUMNS; i++) + for (int i = 0; i < NUMBEROFCOLUMNS; i++) { ddstable[i][j].is_stop = TRUE; } diff --git a/GUIDesign.h b/GUIDesign.h index 13d29e9..03dfbb0 100644 --- a/GUIDesign.h +++ b/GUIDesign.h @@ -1,6 +1,5 @@ /**************************************************************************/ /* LabWindows/CVI User Interface Resource (UIR) Include File */ -/* Copyright (c) National Instruments 2006. All Rights Reserved. */ /* */ /* WARNING: Do not add to, delete from, or otherwise modify the contents */ /* of this include file. */ @@ -14,139 +13,142 @@ /* Panels and Controls: */ -#define PANEL 1 -#define PANEL_CHECKBOX_10 2 -#define PANEL_CHECKBOX_9 3 -#define PANEL_CHECKBOX_8 4 -#define PANEL_CHECKBOX_7 5 -#define PANEL_CHECKBOX_6 6 -#define PANEL_CHECKBOX_5 7 -#define PANEL_CHECKBOX_4 8 -#define PANEL_CHECKBOX_3 9 -#define PANEL_CHECKBOX_2 10 -#define PANEL_CHECKBOX 11 -#define PANEL_LABEL_6 12 -#define PANEL_LABEL_7 13 -#define PANEL_LABEL_8 14 -#define PANEL_LABEL_9 15 -#define PANEL_LABEL_5 16 -#define PANEL_LABEL_4 17 -#define PANEL_LABEL_3 18 -#define PANEL_LABEL_2 19 -#define PANEL_LABEL_1 20 -#define PANEL_LABEL_10 21 -#define PANEL_TIMETABLE 22 /* callback function: TIMETABLE_CALLBACK */ -#define PANEL_ANALOGTABLE 23 /* callback function: ANALOGTABLE_CALLBACK */ -#define PANEL_TB_SHOWPHASE10 24 /* callback function: TOGGLE10_CALLBACK */ -#define PANEL_TB_SHOWPHASE9 25 /* callback function: TOGGLE9_CALLBACK */ -#define PANEL_DIGTABLE 26 /* callback function: DIGTABLE_CALLBACK */ -#define PANEL_TB_SHOWPHASE8 27 /* callback function: TOGGLE8_CALLBACK */ -#define PANEL_TB_SHOWPHASE7 28 /* callback function: TOGGLE7_CALLBACK */ -#define PANEL_TB_SHOWPHASE6 29 /* callback function: TOGGLE6_CALLBACK */ -#define PANEL_TB_SHOWPHASE5 30 /* callback function: TOGGLE5_CALLBACK */ -#define PANEL_TB_SHOWPHASE4 31 /* callback function: TOGGLE4_CALLBACK */ -#define PANEL_TB_SHOWPHASE3 32 /* callback function: TOGGLE3_CALLBACK */ -#define PANEL_TB_SHOWPHASE2 33 /* callback function: TOGGLE2_CALLBACK */ -#define PANEL_TB_SHOWPHASE1 34 /* callback function: TOGGLE1_CALLBACK */ -#define PANEL_CMD_SCAN 35 /* callback function: CMD_SCAN_CALLBACK */ -#define PANEL_CMD_RUN 36 /* callback function: CMD_RUN_CALLBACK */ -#define PANEL_DEBUG 37 -#define PANEL_TOGGLEREPEAT 38 -#define PANEL_CMDSTOP 39 /* callback function: CMDSTOP_CALLBACK */ -#define PANEL_TGL_NUMERICTABLE 40 /* callback function: TGLNUMERIC_CALLBACK */ -#define PANEL_DISPLAYDIAL 41 /* callback function: DISPLAYDIAL_CALLBACK */ -#define PANEL_TBL_ANALOGUNITS 42 -#define PANEL_TBL_DIGNAMES 43 -#define PANEL_TBL_ANAMES 44 -#define PANEL_TIMER 45 /* callback function: TIMER_CALLBACK */ -#define PANEL_NUM_INSERTIONCOL 46 /* callback function: NUM_INSERTIONCOL_CALLBACK */ -#define PANEL_NUM_INSERTIONPAGE 47 /* callback function: NUM_INSERTIONPAGE_CALLBACK */ -#define PANEL_NUM_DDS3_OFFSET 48 -#define PANEL_NUM_DDS2_OFFSET 49 -#define PANEL_NUM_DDS_OFFSET 50 -#define PANEL_SCAN_TABLE 51 -#define PANEL_CANVAS_END 52 -#define PANEL_CANVAS_START 53 -#define PANEL_DECORATION 54 -#define PANEL_NUM_LOOP_REPS 55 -#define PANEL_NUM_LOOPCOL2 56 -#define PANEL_NUM_LOOPPAGE2 57 -#define PANEL_NUM_LOOPCOL1 58 -#define PANEL_NUM_LOOPPAGE1 59 -#define PANEL_SWITCH_LOOP 60 /* callback function: SWITCH_LOOP_CALLBACK */ -#define PANEL_DECORATION_2 61 -#define PANEL_CANVAS_LOOPLINE 62 -#define PANEL_Looping 63 - -#define SUBPANEL1 2 -#define SUBPANEL1_TEXTBOX 2 - -#define SUBPANEL2 3 -#define SUBPANEL2_NUM_SCANITER 2 -#define SUBPANEL2_NUM_SCANSTEP 3 -#define SUBPANEL2_NUM_SCANVAL 4 +#define PANEL 1 +#define PANEL_CHECKBOX_10 2 /* control type: radioButton, callback function: (none) */ +#define PANEL_CHECKBOX_9 3 /* control type: radioButton, callback function: (none) */ +#define PANEL_CHECKBOX_8 4 /* control type: radioButton, callback function: (none) */ +#define PANEL_CHECKBOX_7 5 /* control type: radioButton, callback function: (none) */ +#define PANEL_CHECKBOX_6 6 /* control type: radioButton, callback function: (none) */ +#define PANEL_CHECKBOX_5 7 /* control type: radioButton, callback function: (none) */ +#define PANEL_CHECKBOX_4 8 /* control type: radioButton, callback function: (none) */ +#define PANEL_CHECKBOX_3 9 /* control type: radioButton, callback function: (none) */ +#define PANEL_CHECKBOX_2 10 /* control type: radioButton, callback function: (none) */ +#define PANEL_CHECKBOX 11 /* control type: radioButton, callback function: (none) */ +#define PANEL_LABEL_6 12 /* control type: table, callback function: (none) */ +#define PANEL_LABEL_7 13 /* control type: table, callback function: (none) */ +#define PANEL_LABEL_8 14 /* control type: table, callback function: (none) */ +#define PANEL_LABEL_9 15 /* control type: table, callback function: (none) */ +#define PANEL_LABEL_5 16 /* control type: table, callback function: (none) */ +#define PANEL_LABEL_4 17 /* control type: table, callback function: (none) */ +#define PANEL_LABEL_3 18 /* control type: table, callback function: (none) */ +#define PANEL_LABEL_2 19 /* control type: table, callback function: (none) */ +#define PANEL_LABEL_1 20 /* control type: table, callback function: (none) */ +#define PANEL_LABEL_10 21 /* control type: table, callback function: (none) */ +#define PANEL_TIMETABLE 22 /* control type: table, callback function: TIMETABLE_CALLBACK */ +#define PANEL_ANALOGTABLE 23 /* control type: table, callback function: ANALOGTABLE_CALLBACK */ +#define PANEL_TB_SHOWPHASE10 24 /* control type: textButton, callback function: TOGGLE10_CALLBACK */ +#define PANEL_TB_SHOWPHASE9 25 /* control type: textButton, callback function: TOGGLE9_CALLBACK */ +#define PANEL_DIGTABLE 26 /* control type: table, callback function: DIGTABLE_CALLBACK */ +#define PANEL_TB_SHOWPHASE8 27 /* control type: textButton, callback function: TOGGLE8_CALLBACK */ +#define PANEL_TB_SHOWPHASE7 28 /* control type: textButton, callback function: TOGGLE7_CALLBACK */ +#define PANEL_TB_SHOWPHASE6 29 /* control type: textButton, callback function: TOGGLE6_CALLBACK */ +#define PANEL_TB_SHOWPHASE5 30 /* control type: textButton, callback function: TOGGLE5_CALLBACK */ +#define PANEL_TB_SHOWPHASE4 31 /* control type: textButton, callback function: TOGGLE4_CALLBACK */ +#define PANEL_TB_SHOWPHASE3 32 /* control type: textButton, callback function: TOGGLE3_CALLBACK */ +#define PANEL_TB_SHOWPHASE2 33 /* control type: textButton, callback function: TOGGLE2_CALLBACK */ +#define PANEL_TB_SHOWPHASE1 34 /* control type: textButton, callback function: TOGGLE1_CALLBACK */ +#define PANEL_CMD_SCAN 35 /* control type: command, callback function: CMD_SCAN_CALLBACK */ +#define PANEL_CMD_RUN 36 /* control type: command, callback function: CMD_RUN_CALLBACK */ +#define PANEL_DEBUG 37 /* control type: listBox, callback function: (none) */ +#define PANEL_TOGGLEREPEAT 38 /* control type: textButton, callback function: (none) */ +#define PANEL_CMDSTOP 39 /* control type: command, callback function: CMDSTOP_CALLBACK */ +#define PANEL_TGL_NUMERICTABLE 40 /* control type: textButton, callback function: TGLNUMERIC_CALLBACK */ +#define PANEL_DISPLAYDIAL 41 /* control type: slide, callback function: DISPLAYDIAL_CALLBACK */ +#define PANEL_TBL_ANALOGUNITS 42 /* control type: table, callback function: (none) */ +#define PANEL_TBL_DIGNAMES 43 /* control type: table, callback function: (none) */ +#define PANEL_TBL_ANAMES 44 /* control type: table, callback function: (none) */ +#define PANEL_TIMER 45 /* control type: timer, callback function: TIMER_CALLBACK */ +#define PANEL_NUM_INSERTIONCOL 46 /* control type: numeric, callback function: NUM_INSERTIONCOL_CALLBACK */ +#define PANEL_NUM_INSERTIONPAGE 47 /* control type: numeric, callback function: NUM_INSERTIONPAGE_CALLBACK */ +#define PANEL_NUM_DDS3_OFFSET 48 /* control type: numeric, callback function: (none) */ +#define PANEL_NUM_DDS2_OFFSET 49 /* control type: numeric, callback function: (none) */ +#define PANEL_NUM_DDS_OFFSET 50 /* control type: numeric, callback function: (none) */ +#define PANEL_SCAN_TABLE 51 /* control type: table, callback function: (none) */ +#define PANEL_CANVAS_END 52 /* control type: canvas, callback function: (none) */ +#define PANEL_CANVAS_START 53 /* control type: canvas, callback function: (none) */ +#define PANEL_DECORATION 54 /* control type: deco, callback function: (none) */ +#define PANEL_NUM_LOOP_REPS 55 /* control type: numeric, callback function: (none) */ +#define PANEL_NUM_LOOPCOL2 56 /* control type: numeric, callback function: (none) */ +#define PANEL_NUM_LOOPPAGE2 57 /* control type: numeric, callback function: (none) */ +#define PANEL_NUM_LOOPCOL1 58 /* control type: numeric, callback function: (none) */ +#define PANEL_NUM_LOOPPAGE1 59 /* control type: numeric, callback function: (none) */ +#define PANEL_SWITCH_LOOP 60 /* control type: binary, callback function: SWITCH_LOOP_CALLBACK */ +#define PANEL_DECORATION_2 61 /* control type: deco, callback function: (none) */ +#define PANEL_CANVAS_LOOPLINE 62 /* control type: canvas, callback function: (none) */ +#define PANEL_Looping 63 /* control type: textMsg, callback function: (none) */ + +#define SUBPANEL1 2 +#define SUBPANEL1_TEXTBOX 2 /* control type: textBox, callback function: (none) */ + +#define SUBPANEL2 3 +#define SUBPANEL2_NUM_SCANITER 2 /* control type: numeric, callback function: (none) */ +#define SUBPANEL2_NUM_SCANSTEP 3 /* control type: numeric, callback function: (none) */ +#define SUBPANEL2_NUM_SCANVAL 4 /* control type: numeric, callback function: (none) */ + + + /* Control Arrays: */ + + /* (no control arrays in the resource file) */ /* Menu Bars, Menus, and Menu Items: */ -#define MENU 1 -#define MENU_FILE 2 -#define MENU_FILE_LOADSET 3 /* callback function: MENU_CALLBACK */ -#define MENU_FILE_SAVESET 4 /* callback function: MENU_CALLBACK */ -#define MENU_FILE_BOOTLOAD 5 /* callback function: BOOTLOAD_CALLBACK */ -#define MENU_FILE_MENU_EXPORT_CHANNEL 6 /* callback function: CONFIG_EXPORT_CALLBACK */ -#define MENU_FILE_MENU_EXPORT_PANEL 7 /* callback function: EXPORT_PANEL_CALLBACK */ -#define MENU_FILE_QuitCallback 8 /* callback function: EXIT */ -#define MENU_SETTINGS 9 -#define MENU_SETTINGS_ANALOG 10 /* callback function: ANALOGSET_CALLBACK */ -#define MENU_SETTINGS_DIGITAL 11 /* callback function: DIGITALSET_CALLBACK */ -#define MENU_SETTINGS_DDSSETUP 12 /* callback function: DDSSETUP_CALLBACK */ -#define MENU_SETTINGS_CONTROLTEXT 13 -#define MENU_SETTINGS_CONTROLTEXT_SUBMEN 14 -#define MENU_SETTINGS_CONTROLTEXT_TITLE1 15 /* callback function: TITLE1_CALLBACK */ -#define MENU_SETTINGS_CONTROLTEXT_TITLE2 16 /* callback function: TITLE2_CALLBACK */ -#define MENU_SETTINGS_CONTROLTEXT_TITLE3 17 /* callback function: TITLE3_CALLBACK */ -#define MENU_SETTINGS_CONTROLTEXT_TITLE4 18 /* callback function: TITLE4_CALLBACK */ -#define MENU_SETTINGS_CONTROLTEXT_TITLE5 19 /* callback function: TITLE5_CALLBACK */ -#define MENU_SETTINGS_CONTROLTEXT_TITLE6 20 /* callback function: TITLE6_CALLBACK */ -#define MENU_SETTINGS_CONTROLTEXT_TITLE7 21 /* callback function: TITLE7_CALLBACK */ -#define MENU_SETTINGS_CONTROLTEXT_TITLE8 22 /* callback function: TITLE8_CALLBACK */ -#define MENU_SETTINGS_CONTROLTEXT_TITLE9 23 /* callback function: TITLE9_CALLBACK */ -#define MENU_SETTINGS_CONTROLTEXT_TITLEX 24 /* callback function: TITLEX_CALLBACK */ -#define MENU_SETTINGS_DEBUG 25 /* callback function: MENU_DEBUG_CALLBACK */ -#define MENU_SETTINGS_BOOTADWIN 26 /* callback function: BOOTADWIN_CALLBACK */ -#define MENU_SETTINGS_CLEARPANEL 27 /* callback function: CLEARPANEL_CALLBACK */ -#define MENU_SETTINGS_RESETZERO 28 /* callback function: RESETZERO_CALLBACK */ -#define MENU_SETTINGS_RESETZERO_SUBMENU 29 -#define MENU_SETTINGS_RESETZERO_SETLOW 30 /* callback function: MENU_ALLLOW_CALLBACK */ -#define MENU_SETTINGS_RESETZERO_HOLD 31 /* callback function: MENU_HOLD_CALLBACK */ -#define MENU_SETTINGS_RESETZERO_BYCHNL 32 /* callback function: MENU_BYCHANNEL_CALLBACK */ -#define MENU_SETTINGS_SCANSETTING 33 /* callback function: SCANSETTING_CALLBACK */ -#define MENU_SETTINGS_NOTECHECK 34 /* callback function: NOTECHECK_CALLBACK */ -#define MENU_EDITMATRIX 35 -#define MENU_EDITMATRIX_INSERTCOLUMN 36 /* callback function: INSERTCOLUMN_CALLBACK */ -#define MENU_EDITMATRIX_DELETECOLUMN 37 /* callback function: DELETECOLUMN_CALLBACK */ -#define MENU_EDITMATRIX_COPYCOLUMN 38 /* callback function: COPYCOLUMN_CALLBACK */ -#define MENU_EDITMATRIX_PASTECOLUMN 39 /* callback function: PASTECOLUMN_CALLBACK */ -#define MENU_UPDATEPERIOD 40 -#define MENU_UPDATEPERIOD_SETGD5 41 /* callback function: SETGD5_CALLBACK */ -#define MENU_UPDATEPERIOD_SETGD10 42 /* callback function: SETGD10_CALLBACK */ -#define MENU_UPDATEPERIOD_SETGD100 43 /* callback function: SETGD100_CALLBACK */ -#define MENU_UPDATEPERIOD_SETGD1000 44 /* callback function: SETGD1000_CALLBACK */ -#define MENU_PREFS 45 -#define MENU_PREFS_COMPRESSION 46 /* callback function: COMPRESSION_CALLBACK */ -#define MENU_PREFS_SIMPLETIMING 47 /* callback function: SIMPLETIMING_CALLBACK */ -#define MENU_PREFS_SHOWARRAY 48 /* callback function: SHOWARRAY_CALLBACK */ -#define MENU_PREFS_DDS_OFF 49 /* callback function: DDS_OFF_CALLBACK */ -#define MENU_PREFS_STREAM_SETTINGS 50 /* callback function: STREAM_CALLBACK */ - - - /* Callback Prototypes: */ +#define MENU 1 +#define MENU_FILE 2 +#define MENU_FILE_LOADSET 3 /* callback function: MENU_CALLBACK */ +#define MENU_FILE_SAVESET 4 /* callback function: MENU_CALLBACK */ +#define MENU_FILE_MENU_EXPORT_CHANNEL 5 /* callback function: CONFIG_EXPORT_CALLBACK */ +#define MENU_FILE_MENU_EXPORT_PANEL 6 /* callback function: EXPORT_PANEL_CALLBACK */ +#define MENU_FILE_QuitCallback 7 /* callback function: EXIT */ +#define MENU_SETTINGS 8 +#define MENU_SETTINGS_ANALOG 9 /* callback function: ANALOGSET_CALLBACK */ +#define MENU_SETTINGS_DIGITAL 10 /* callback function: DIGITALSET_CALLBACK */ +#define MENU_SETTINGS_DDSSETUP 11 /* callback function: DDSSETUP_CALLBACK */ +#define MENU_SETTINGS_CONTROLTEXT 12 +#define MENU_SETTINGS_CONTROLTEXT_SUBMENU 13 +#define MENU_SETTINGS_CONTROLTEXT_TITLE1 14 /* callback function: TITLE1_CALLBACK */ +#define MENU_SETTINGS_CONTROLTEXT_TITLE2 15 /* callback function: TITLE2_CALLBACK */ +#define MENU_SETTINGS_CONTROLTEXT_TITLE3 16 /* callback function: TITLE3_CALLBACK */ +#define MENU_SETTINGS_CONTROLTEXT_TITLE4 17 /* callback function: TITLE4_CALLBACK */ +#define MENU_SETTINGS_CONTROLTEXT_TITLE5 18 /* callback function: TITLE5_CALLBACK */ +#define MENU_SETTINGS_CONTROLTEXT_TITLE6 19 /* callback function: TITLE6_CALLBACK */ +#define MENU_SETTINGS_CONTROLTEXT_TITLE7 20 /* callback function: TITLE7_CALLBACK */ +#define MENU_SETTINGS_CONTROLTEXT_TITLE8 21 /* callback function: TITLE8_CALLBACK */ +#define MENU_SETTINGS_CONTROLTEXT_TITLE9 22 /* callback function: TITLE9_CALLBACK */ +#define MENU_SETTINGS_CONTROLTEXT_TITLEX 23 /* callback function: TITLEX_CALLBACK */ +#define MENU_SETTINGS_DEBUG 24 /* callback function: MENU_DEBUG_CALLBACK */ +#define MENU_SETTINGS_BOOTADWIN 25 /* callback function: BOOTADWIN_CALLBACK */ +#define MENU_SETTINGS_CLEARPANEL 26 /* callback function: CLEARPANEL_CALLBACK */ +#define MENU_SETTINGS_RESETZERO 27 /* callback function: RESETZERO_CALLBACK */ +#define MENU_SETTINGS_RESETZERO_SUBMENU 28 +#define MENU_SETTINGS_RESETZERO_SETLOW 29 /* callback function: MENU_ALLLOW_CALLBACK */ +#define MENU_SETTINGS_RESETZERO_HOLD 30 /* callback function: MENU_HOLD_CALLBACK */ +#define MENU_SETTINGS_RESETZERO_BYCHNL 31 /* callback function: MENU_BYCHANNEL_CALLBACK */ +#define MENU_SETTINGS_SCANSETTING 32 /* callback function: SCANSETTING_CALLBACK */ +#define MENU_SETTINGS_NOTECHECK 33 /* callback function: NOTECHECK_CALLBACK */ +#define MENU_EDITMATRIX 34 +#define MENU_EDITMATRIX_INSERTCOLUMN 35 /* callback function: INSERTCOLUMN_CALLBACK */ +#define MENU_EDITMATRIX_DELETECOLUMN 36 /* callback function: DELETECOLUMN_CALLBACK */ +#define MENU_EDITMATRIX_COPYCOLUMN 37 /* callback function: COPYCOLUMN_CALLBACK */ +#define MENU_EDITMATRIX_PASTECOLUMN 38 /* callback function: PASTECOLUMN_CALLBACK */ +#define MENU_UPDATEPERIOD 39 +#define MENU_UPDATEPERIOD_SETGD5 40 /* callback function: SETGD5_CALLBACK */ +#define MENU_UPDATEPERIOD_SETGD10 41 /* callback function: SETGD10_CALLBACK */ +#define MENU_UPDATEPERIOD_SETGD100 42 /* callback function: SETGD100_CALLBACK */ +#define MENU_UPDATEPERIOD_SETGD1000 43 /* callback function: SETGD1000_CALLBACK */ +#define MENU_PREFS 44 +#define MENU_PREFS_COMPRESSION 45 /* callback function: COMPRESSION_CALLBACK */ +#define MENU_PREFS_SIMPLETIMING 46 /* callback function: SIMPLETIMING_CALLBACK */ +#define MENU_PREFS_SHOWARRAY 47 /* callback function: SHOWARRAY_CALLBACK */ +#define MENU_PREFS_DDS_OFF 48 /* callback function: DDS_OFF_CALLBACK */ +#define MENU_PREFS_STREAM_SETTINGS 49 /* callback function: STREAM_CALLBACK */ + + + /* Callback Prototypes: */ void CVICALLBACK ANALOGSET_CALLBACK(int menubar, int menuItem, void *callbackData, int panel); int CVICALLBACK ANALOGTABLE_CALLBACK(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); void CVICALLBACK BOOTADWIN_CALLBACK(int menubar, int menuItem, void *callbackData, int panel); -void CVICALLBACK BOOTLOAD_CALLBACK(int menubar, int menuItem, void *callbackData, int panel); void CVICALLBACK CLEARPANEL_CALLBACK(int menubar, int menuItem, void *callbackData, int panel); int CVICALLBACK CMD_RUN_CALLBACK(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); int CVICALLBACK CMD_SCAN_CALLBACK(int panel, int control, int event, void *callbackData, int eventData1, int eventData2); @@ -209,4 +211,4 @@ int CVICALLBACK TOGGLE9_CALLBACK(int panel, int control, int event, void *callb #ifdef __cplusplus } -#endif +#endif \ No newline at end of file diff --git a/GUIDesign.uir b/GUIDesign.uir index 2a0e78e857c9c8464b8057f92b36411912b14255..a028759f7c93cef918482bf6cf8215b08405097c 100644 GIT binary patch delta 7350 zcmd6reNa@_6~N!wx4Y#@P5sG_2hNK=!Vge1hEp(#n3xGHwYgw~$-&aUs`{@0n# z^vSvJ-QS*j?tSN;bKV_?-w7D(4$v2u6lc#04veZ=U}k#kUmSw zyWFwY{JM@W?FIO`uscz&uS3m!C^#S2fbuAcbfJCD$obt8UQ5)+)L>^1%3c%)igbAt zzLpj22zH|ELfMTXU4%jk28cdtG|1*c|MvMOlZk9wiq=x=6`C zWO=Pnlei!y8&Mw04wPyX$!~b6FJS{5r#--Nez!G2r=G+9?7=&(18<5?u7fHF6i3%V zCA=wStp^*=ho2E&Sr75xC%&8kQ32KF$|^?$h!g8!6==n{Tu6abu`CxhVegGxDDo=W zJ&N=5;6ePUBoC5N@fUeeh`mqqP@gP{rhM=R5ZC8J8vfFhFY6u82Q&75%7;}ti1ErNYhbShPF$ZE3!Sx1~9T-rkPSiSKN~_StvZktFqGsnU3%zNZ|t!cb3@@YLG9quYzKRb;EAs2cT0G9LU_3^<$v1h#^(yQGf`bbr(RdfD>8dlbZB64 zwl+njb@B;M@~IQw4XavO(+jfqJ*G|JwNLU1za)6*1tYRrwKgS2>vq2J3}1XlzJg>7 z+O8i5uKP)bg@1jJl()fSL8TS>B`@*I?lJokzvMN7Gt7#wzRGW$X;yGv+zhE*A6(q5 zhE$*yZH244ZssFD|+}8&$_hEbU@_W)wf6|ZbzE96d{4=TjNp4RMACvg!mBL4# zhXDxRe!hI3>{>ob6|SDouf4|&$zPm6{cB(R20h*Ir5PYVI61Ne(ceZ&g*9Kj8Yyj| zCi5o$`=9vEp`oF>nM1L+ld&yi9j6nO+Vo6i?PS0ThX^o((S{)2ZQ)j1fa6m5(o)`{=2wH z?FtOItw$Yv$vx9ne5djk8r*uc{PgvuX!+RnB_20K^F@pJGB)Uhe_T&Rm4)si&yeTc z@z{UQy%^i8?r?0U+>(azMv>T-0nq_g&&#}YV5pWKpEXHAxRm5kUuHhI_lEG#NMT2dk;h-qqw)5~5f@2ul3GrhJ&>n?r0 zf#1>tLGYuWcN{vqh#XyZwDw*{_xuguMDqf#-7P2f@TK?I{ndhd?S5?V>Tf;n@L7j$@l5?9TtaiA zX9=5+*6~|sEy6JQjIWhRirP}2LeNp{|C z6Bs<br}!(W`SkY{rwgFS!BfhY*M-#v;S{yTT%_wv_@ z->!wGdE6)+fB^51s~muyp3(>}Jdmu?ydj)>AXXTEU$f!in$? zHnv(UHTC>B9-_E0lwmF^Y`8viBc2|4Jr}By&S5;qg*J(X0=RhpICe+4sDmS{#{ zrP5fuf;vRg2e99TkCM~xUN$aGhaHJY>y@tHsXM7&7D!jP z6060bF7M!R2gnmwD+Xc6L~Mt`R40}blM|dK=3A%8pnPT_rf$4UEKeEhXYD1HtuU9r z=>Wk;6&PS>q)8eSrs0~2)iZ2lKe2rZ)Am*qt5aBDtDTrbVL|m4iJ|}ZDlphwNQ!$D zHY>iASdGGFtF6R#Gi)@6*e->I^yL!Usj$$)Mq+k}N&AnN&KXazN>Q9s7)h*BVfPu; z#B2%+)5H*~VAzM1+xdI~^HN?sk7HJ74wpC$K%R9)R{DGnu zi4Gniwnfp49v>$re;`S3-oTj5T-;_wF{W*T6y=XKDb8yhN}-QH*VGCuUaIqUICCHYm(s?If13u*K=!#Bvq3 zBpgW-O~x zg;U*CguJwaG%Qa;N^BLwh6ac|S5@ADC{347p5qRMd}e^$qdUKB(|JkEhmUA zW7zNkVo3@s*4v0Zz_9)4;F9;<$iVSXQcP4>Nm?K6X9B|->xnI8Sbq+&c!gOsF~s5+ zW}Buj>Jt3^c~S=~eIo=HD~g+gdx;qsW@#n1h+(ZxVzCSxt0#89!X8NLrI%P3!#X;N-6x$tsB%Hs#1VpX6vc95Gcg^* z9QDLP8P?fIEQDbbHe$0CW;Nyzn{}7D!0JdN7}N-I=oCWtXrw8HErrj%u< zXqhCIf%aS;_g7qQQJ{y}!a9jDWz?24K(WA-QCnLdF{X;zrn`wTRkX5nl3tFfgs#f& zL4pq{Z&wxCPmHOARgQLIOeL%uY$C=~!W{++F{YU9Xdb2)VT##~kxLRo|1;Iho<2Z| zOf|E&9wEk5GrQYKjHzZj&1Pau;o8|T=~K9NsoR*sCG9_!;9WKcK_(S<^@WlPnH1X{ zIZSWIq}Xof5HTjjc3;N$)#cE6rVoZwF9I+B( zQmkgmPE1KL*kdshV=`>diRChLaZHNs4c3!lhO+9t)g9zkCerr~Tq4gfQN4G1ipDb0 zU#oBP8CzR8%#M})54GLZR7RP>C&T)E2A@p3%np{f?qtq{&%`H7`+Ub%yM4#Dy4ndc z6Q53-_8ELSXUJ#p=~B*jtfSp`Z1bqk*fYUSdSMqc@tMQjG?+=9vxdvWn5aH$ANGmr zv+b=+R8vr&9n19z>H$L-EyfenlK)}AK0+>JqI#gcn-~+-17jzMF;RWa&`OMn>T~w} z#F(Hy*M5)~6V&I%oGyY)RG&AL5@VwJygio~6V>P23yCpNeSR#R7!%YN3^Bx*GsFdZ zH=PZPW+l=uv>M3O%pvnahnog7XSfTak;J@bIP~CPcW&ej>AV;yohUU)2_&I;!2RYV&$zD2)z(VTDroMW`jeOECf9SCq}Td44+Y(J zBhO2A{}8n$EiqY&)~1FC%hS@V^vN}~>uRYkE;UwH8B40GYouthMEZP^d-I23rwOT( zUI;fDt3l8PV<(JVFm}VBM;weu!R?XsLAWt+2RxL+fVUB-U-WPae5nX*0k9RuHW+0v z=#dU1S@1X`U5hX-N`(gtjI}V%+Gmle!Kk>waXcc)0w|q4oNb^sI)a=_|xKo!Ebw22kPV2CROh?#E9Cb z#qi%EJou+bV3le^OrUnC=FR8D%n{}AQZO+zYaMsooVF$1)hG`;8j%vO`bAMwuZVO0 zCeEk!$C#2|e_dQR)|B+z)ofyF{`6|LnwX@Fo+p3S^RTA>X@fKAJqzb|doRHG znNK?@zfRAdpV4#oXMd->uUMs5OE+#Bq#yetrYrFf4XUZ?8RCj@@3HJg6DSPb_ydH; ze$zt8`%>5Ea{%4@JeTOD)LXCn)5vQQ?}~r@w|Km(t7|m&lJ<+GAeiz+RDdByqaC^` zb`FYPLiFH22~%ROH%JG**a>#X?EvB{1>O!Nb}9LG(lo`TKWkrW80${+;oDZCi2He1 zor~|?zY*-iiZ+Plq)B{doW`^LTBn9|_$zmqdI~N2`-ksx&Q-GK;TinR!sC4h{0uTwkmoZNDrF&t(+wX-qRTqgF%f_jW z+@q=s?q@(y(jEp#hwm$|cz-d_8~4K@Fm!EHapG)Mq8K@5R?`D2wBf;va2|S4s2ErY z_b)yShx5gU{&2qjkjhMcM3*}4VW@QQ(JXjA@rX+FJ)#m19#M&T!#S>+bS=v(!-ep} z$S^dBX2XxY-YkA^$C7Y)kq3bQ$^{-|s+LAD_l=!mPU}Gv`O#T{&PZqY8y3OZZah{g zW{q8{)_-{ui16sLC}tDutt$k^e*?U^6?trUG}jm zal?4;AQBl6Te8p@+ni%IjBNyIO;>1@I#bbPe$+MCOB&VE}1m29%?o3kF{`(}V ztt9AL@zwR?wC5%(+MAMH+EUtl$Zh#rGKuifxn#5!cSkxISppwx|9QpmvHsP(BI(AwFqPhoHXrm$niKUD z)L?N`3<;9zqtf8MKMI-*iapr$RPZl zX#no}1jEig6q`cD=yq+XARIQrmB`7dA=)7IxFlVTbs|3MwKZH9ur`w1Yrx^IVW=W%i&%l+b)s?@~_5eDpreH-OQ2PsUP3zI2(TfnfNb*rs} zJuckSM@_P2)dIKyZ`=bh7Rr6@W@{$hwu5)>^>X?Zve#a-BG;+qOSj+fO6*8^-$Y-P zGJ2(lE;l&H#rzQo)_A8JZ2?YJnmds-SSK>OBOPHCr#zt1DU)nxjC9@dR#+)xswM}r z0>;GpMju5kjWP9}eJ7O{S;LrH{t<=Qg(L>u69Unh-Hdqz>(H59jA?{kFJ+RQ9P1lE zW@AiysvlW3W1jV~o{Daz!t6@CyljtAu!0HdEcl&FEXZ~+=A#})-7=2dN=LbE zj7@6WkI~x7nEsHxAK?}TeQN~ta5H0*)4Ncvgs~}+jmU}_^V8%{R^G0NWBs|v3K@Ii zf`H7fd^a#@rZ%*p!F(n-ZBIU~T^?ip)?8#888evck!@fsKv#rJ`O4xP0Rv^oly9~m zDDj`(QGrnT^rK+lks4&#%;1b#8!{_nGjnT^DH{#cofW$WnewLsGNZl@Sq9TJ4(_!h zOlQ#K*pE#4;{cU|8V?{_%j9O)9YSVdEI7XbSt?^8agE4UGd9QXD6$kg2Zx#vu3{{- zs|DFg#=?%aAyan!=-}MF8mydTCKq0G|B6y}TxmzdmttP;Lpw`tBopim|lVTgaYtF}pz0YWJhTI2Q!g(T{?Q8B5o7 zBU{8VYc1+75nkeN9)T!9AXGnSdq zf^tzD+vkVfaURD8OHns+gvKAkpOwCMiqg3vm|#}J0c7DEyEQyXk(EL z;v}IQb0nkOoKa>c*};bphKxdzU6YQ=!5nK#K{lIXkCTxFF}B{4fXu|PBXP)#92<@Y zM(b}DgE{GD6r9Piqp`?lFqSKXAq(VKZX~kl9BVQn3t()6CK#CknB5uv4Mlo{{+wWo zAF^qTZPaOyP32f=BS!EEjbg@#*B`o6LE|t^;>HOMoI+(aV}+63sLXZ3LR%lou`WsqTZWObc1sF} zn^1Q-vsYw~H{!&J9IQKpf(aaR1ftwB#)|c|xW-(^EUq|$jO%*Ejsuu8qg_uRCBcJ= zoL%6$UP)aqDsx@0q^}N@xvsZ4t`Ft7##Ya zPTThFLpiRTw)G#yH{r^uETIcajH{-y1}iQnS50NZI%IaPoVHs_F=@DR+TPTFf?PT6 z&}q;?uAFw19YHy+ns#)wAmgg3+?ayQnS?a{q`WpAzvWyKmiG=~!f{Dh5j%j4%k+u^ z9r)SiGQHx08l%NkNoBwP1l_8@J$4Ksr(6}Uo1lEI;V62|O?+Nxn=tWteFNI#CO#kh zctUxek8N@4+F3H3Pwqj;DPQbYPnft}-#uaC_Tb?O6Sv3dC%kdH#W7YF;!oOpg$Zx` zUa21{b0zlP&?%gR%l;0tUax$Px$N(-?Z^D!vcIFL3>laG9YcYaaR0|;f2X-`LiTss z_D;zD&Zb6mhRgoWp51!BShQK$%axnx{{q}o>;V7(