diff --git a/applications/lazstats/source_orig/LazStats.ico b/applications/lazstats/source_orig/LazStats.ico new file mode 100644 index 000000000..0341321b5 Binary files /dev/null and b/applications/lazstats/source_orig/LazStats.ico differ diff --git a/applications/lazstats/source_orig/LazStats.ini b/applications/lazstats/source_orig/LazStats.ini new file mode 100644 index 000000000..aee3e8e66 --- /dev/null +++ b/applications/lazstats/source_orig/LazStats.ini @@ -0,0 +1,64 @@ +[LANGUAGE] +DEFAULT=ENGLISH +[ENGLISH] +101=Directions: For entry of data on this form, enter the number of rows, columns and slices in the boxes provided. Press enter after each entry. Then enter the frequencies observed for each cell in the grid. If entering data from a file in the main grid, select the row, column, slice and frequency variables by selecting from the list of variables and clicking the right-arrow for the corresponding variable. Click the compute button to obtain the results. +102=The AxBxR ANOVA involves two between treatment factors and repeated measures factors. Two grid column variables contain the A and B treatment values (codes 1, 2, etc.) and 2 to K grid column variables for the repeated measure observations. All ABC groups are assumed to be of the same size. There is a maximum of 20 repeated measures. +103=This procedure analyzes fixed effects with up to three levels of interaction and one or more covariates. Multiple regression methods are used (See "Multiple Regression in Behavioral Research" by Elazar J. Pedhazur, Harcourt, Brace, College Publishers, 1997, Chapter 16, pages 675-713.) A test is performed for the assumption of homogeneous regression slopes in addition to the ANCOVA. Both adjusted and unadjusted means are reported. Comparisons are made among the adjusted means. +104=Directions: Select a variable to analyze. You may analyxe series from either a column (default) or a "Case" row. You may elect to analyze all values in a column (or row) as desiredClick the buttons for any desired smoothing options. The program will automatically "split" the list of row values (or column values) for that variable into two sub-sets of X and Y scores with each Y score being the value which "lags" behind the X score in the list by k lag values. All possible lags which yield a sample as large as 3 or more are computed and plotted in a "correlogram". You may optionally print the lag, +correlation, means, standard deviations and confidence interval for each correlation. The differences between original and smoothed values (residuals) may be plotted. The smoothed points replace the original values in the analysis if smoothing is elected. +105=The main grid should contain a symetric matrix of similarity or dissimilarity values representing distances among the objects to be clustered. Check the type box io indicate if the measures are similarities (e.g. correlations) or dissimilarities. +106=Directions: It is assumed you have one grid column variable representing the group codes for the (A) between treatment groups effect and 2 to k column variables representing the repeated measures. Group codes should be sequential values of 1, 2, etc. You may elect to plot the means. +107=Directions: You may elect to complete a 1, 2 or 3 way ANOVA by selecting a dependent variable and 1, 2 or 3 factor variables. If you elect post-hoc tests, comparisons are made between factor levels. NOTE: some post-hoc comparisons are made only with equal N's. +108=Directions: First click on the variable name that represents the group codes. Next, click on the variable that reresents the measurement to be plotted. Click the Compute button to obtain the results. You can obtain a single boxplot for all cases if you use a "dummy" group variable containing only the group code 1 for all cases. +109=Directions: First, select the categorical variables of your study. Select them in the order of the desired breakdown. Next, slect the continuous variable for which you want statistics for each cell obtained by by breaking down the categorical variables into their respective categories. +110=Directions: 1. Select the variable containing the bubble identification mumber - an integer in the range of 1 to N objects. 2. Select the variable representing the X axis integer value for the object. This is the repeated measures variable. 3. Select the variable representing the Y axis. This should be a floating point value. 4. Select the variable representing the size of the bubble for each object to be plotted at the X and Y location. NOTE: Each data line reresents one replication (X value) of the object plotted. See the example data in the file labeled BubblePlot.LAZ +111=NOTE: No. of left hand variables must be less than or equal to the number of right hand variables. +112=Directions: Click on the variable that represents the measurement. Click on the Sigma button to change the default value. Click the Compute button to obtain the results. +113=Directions: Two to k variables representing dichotomous (0,1) values are analyzed for N cases. The values of the variables reflect repeated observations on the same subjects or on matched subjects. Click the variables on the left to analyze and enter them by clicking the right arrow button. +114=Directions: Forst select the test scores from the available variables. You will see a default reliability and weight ssigned to each score selected in list boxes to the right. If you click on either a reliability or a weight, an input box will appear in which you can enter a new reliability or weight. Note - you can use the KR#21 reliability program to estimate reliability if you know the maximum score. +115=Directions: A Judge's ratings or observations are recorded as variables (columns) 1 through k. Each line conrresponds to a different judge (person making the rating.) Select the variables from the left list to analyze and click on the right arrow button to enter them. To remove a variable from the list of selected ones, click on the variable name in the selected list and click the left arrow button. Click the Compute button to obtain the results. +116=Directions: Select each categorical variable from the available variables in the leftmost box in the order that you wish to have the breakdown proceed. Click the OK button to start the analysis. +117=Directions: First, click on the variable name that represents the sample lot number. Next, click on the variable that represents the measurement. Click on the Delta size and enter the desired value. Click on the alpha and/or beta probability boxes and enter values to change from the default values. You may also enter target specifications if you first click the check box to use a target specification. +118=Description: Double Declining Value determines accelerated depreciation values for an asset given the initial cost, life expectancy, and value, and depreciation period. EXAMPLE: What is the depreciation value for a computer with a life expectancy of three years if it initially cost $2,000.00 with no expected value at the end of the three years? Initial Cost = 2000.00 Life Expectancy = 3 End Value = 0.0 Depreciation Period = 3 ANSWER: $148.15 +119=This procedure provides means, variances, standard deviations, skewness, kurtosis and range values for each variable selected. Select the variables in the left list and enter them for analysiis by clicking the right arrow. If you select the z score option, a new variable will be added to your grid for each variable you select. The new variable will contain the transformation of the original variable into a z score. +120=Each row of the grid below corresponds to one column of the data grid. Complete the information requested in each cell of the row. To add another variable (row in the dictionary), press the down-arrow on your keyboard. +121=Directions: Specify the lag value for the differences desired, e.g. 1 to obtain the difference between point 1 and 2, 2, and 3, etc. Also, indicate the order, i.e. the number of times to repeat the differencing operation. Click OK when ready. +122=This procedure is an adaptation of the program written by Niels G. Waller, Dept. of Psychology, University of California-Davis, Jan. 1998. It's purpose is to identify test items that differ in the response pattern for two groups: a reference group and a focal group. The file of data to be analyzed should consist of a variable containing a code designating the two groups and variables containing subject's item responses coded 0 for incorrect and 1 for correct. No missing data may be included. The results provide the Mantel-Haenszel statistics for identifying those items which are different for the two groups. +123=Directions: The number of intervals may not exceed the number of cses. To change the interval size, click on the current size and replace it with a new size. Press the enter button after entering a new value. +124=Directions: The two way ANOVA on ranks is similar to a mixed design ANOVA with repeated measures (1 to k conditions) on ssubjects in 1 to M groups. The program expects one variable to represent the group code, and 1 to k score variables for each case. The scores for the cases in each group are used to obtain rankings among the k scores within each group. The test is whether or not the rank totals for the conditions are equal within the expected sampling variability. +125=This procedure calculates the Kappa coefficient for objects or subjects classified into two or more categories by a group of judges or procedures. Each object is coded with a sequential integer ranging from 1 to the number of objects. Each judge is also coded with an integer from 1 to the number of judges. Categories are numbered with integers from 1 to the number of categories. These are column variables. It is expected that the total number of cases will be the number of judges times the number of objects. +126=Directions: he GLM procedure permits the user to specify multiple dependent variables and multiple independent variables. Variables for both dependent and independent may be either continuous or categorical variables. The independent variables are classified as fixed effects, random effects, repeated measures or covariates. Interactions among the independent variables may be specified for the model used. To define an interaction in your model, click the start definition button and then click on each independent variable to be included in the interaction. Click the end definition button to end the definition. A maximum of 5 terms is allowed in an interaction. +127=You may obtasin results for a single group or for experimental and control groups. If there is only one group, leave the group variable blank. Data entered on each line of the data grid represent one case within a group. You will typically have two or three columns of data with variable labels like "TIME", "GROUP" and "EVENT". Each variable should be defined as an integer in your variable definitions. Note that the code for experimental and control groups are 1 and 2. The coding for the event or censored is 1 for the event (death) and 2 for the censored (lost, can't observe.) An example file with the name "KaplanMeierTest.LAZ is available for use. +128=This procedure provides both the weighted and unweighted Kappa Coefficients for assessing the consistency of judgements for two raters. It also provides other measures of the independence of the ratings. If nominal categories are used in the ratings, the unweighted statistic is appropriate. If the categories represent ordinal data, the weighted Kappa statistics may be appropriate. The number of rows must equal the number of columns to calculate the Kappa statistics. +129=The main grid should contain data values representing variables meansured on the objects to be clustered (rows.) Enter the desired number of clusters, select the variables to use in clustering and select the options desired. +130=See B. J. Winer's "Statistical Principles in Experimental Design", McGraw-Hill Book Company, New York, 1962, pages 514-577 for the analyses plans provided in this procedure. Note: Factor codes should be formatted as integers, data values as floating point values. All cell sizes should be equal and no missing values are allowed. +131=Complete the specifications for your log-linear analysis of cross-classivation data as indicated below. Complete step 1, step 2 and step 3. Select any options desired. Click the Compute button to obtain the results. Should you need to start over, click the Reset button. When your analysis or analyses are commpleted, click the Return button. +132=Directions: Enter the order of the moving averae. The order is the number of values on each side of a point to be included in the average. When you enter a value, a list of corresponding thetas will appear in the list. Click on each theta of the list for entry of the desired weight (default 1.0). Enter a weight in the theta value box and press the enter key. Repeat for each theta in the list. Click the Apply button when ready. The theta values will be re-proportioned to sum to 1.0 accross all values. Click the OK button to continue. +133=Directions: You may generate sample multivariate data from a population with known intercorrelation among the variables and with known population means and standard deviations. Enter the number of variables and size of the sample to generate. Then enter the correlations among the variables row-wise the program will fill in the lower triangular values.) Next, enter the population means and standard deviations. When ready to generate the data, click the ComputeBtn. The data will be placed in the data grid. You can save this data to a file. +134=Directions: 1. Select the X Variable 2. Select the Y variable 3. Select the group variable (integer) 4. Enter a label for the plot 5. Select an option if desired. 6. Click the Compute button +135=If you use a language that uses the comma (,) separator to separate the whole part from the fractional part of a number (e.g. 123,45) then select the EUROPEAN option. The default is the English convention (a period, e.g. 123.45). You can enter a default directory to locate your data files. Click a button for values that represent a missing value and click a button that indicates how you want to display values in a grid cell (justification.) +136=For partial and semi-partial correlations, select the dependent variable then select the predictor variable(s), and finally the variable(s) to be partialled. Note that simple, higher order and multiple simple and higher order partialling may be completed as a function of the number of predictors and partialled variables included in the analysis. +137=Directions: The p Chart for nonconforming parts assumes you have a variable (column of data) which represents the number of nonconforming parts in a sample lot of size N. You are expected to enter the sample size N in which each of the observations was made. You will also need to enter P, the expected or target proportion of defects in a sample of N parts. To select the measurement variable, click on the name of the variable in the list of variables available. Enter the N and P values in the boxes provided. If you desire a sigma value other than the default, click the desired button. Click the Compute button to obtain the results. +138=Directions: To use the program you should have the following values coded for each subject: (1) a variable (1/2) for the reference or focus group. (2) one or more items which contain an item score (integers representing response categories, e.g. a value from 1 to 5. Follow these steps to complete the analysis: (1) Enter the items in the available variables list into the selected items list. (2) Enter the group variable from the available variables list to the group box. (3) Enter the Lowest Item Score in the corresponding box. (4) Enter the highest Item Score in the corresponding box. (5) Enter the Reference Group Code in its box. (6) Enter the Focal Group Code in its box. (7) Enter the number of levels of total scores to analyze in the corresponding box. (8) For each level, enter the minimum and maximum scores. Click the scroll bar to go to the next level. You may need to click the down end of the scroll bar to correct errors or change minimum and maximum values for a level. +139=Directions: In polynomial regression smoothing, the value of a point y at a given time t is estimated by the sum of regression weights times t raised to a power of 1, 2, etc. up to the order specified. Enter the order and click the OK button. +140=Directions: Cases should consist of k dichotomous item scores (0 and 1 scores.) You can use the Classical Test program to score your test and save the item scores to the grid if necessary. +141=Directions: First, click on the variable name that represents the sample lot number. Next, click on the variable that represents the measurement. Click on the sigma button to change the default and click on any of the optional check boxes and enter specifications desired. Click the Compute button to obtain the results. Up to 200 groups may be analyzed. Note! Equal group sizes of 2 to 25 required for ranges analysis. Control limits are plus and minus 3 sigma. +142=R = 1 - (s2 / S2) x (1 - r) where R is the estimated reliability of a test obtained on a new group with variance S2 when a reliability of r was obtained for the same test on a group with variance s2. It is assumed the difference in variance is due soley to the difference in true score variance of the two groups. See Theory of Mental Tests by H. Guliksen, 1950. +143=Directions: Your data grid should consist of a table of N rows and M+1 column variables. Each row should have a string type label variable and M columns of integer frequency data. 1. Enter the variable for the row labels (strings) 2. Enter the variables representing the columns of frequency integers 3. Select the Options desired 4. If only one variable is to be considered the reference variable, click the button labeled "Use Only the reference variable selected and click on one of the column variables just selected to represent the reference distribution. 5. If each column variable is to be considered as a reference variable, click on the other button labeled "Let each variable be a reference variable" 6. Change the alpha level for significance if desired. 7. Check the Bonferroni contrasts if desired. 8. Click the Compute button to obtain the results. +144=This procedure calculates the Pearson Product-Moment correlation coefficients for two or more variables. If one or more of the variables selected have been filtered out or contain a missing value, the case containing that variable will not be included in the analysis (list-wise deletion.) You may elect to obtain not only the correlations but also the raw cross-products, the variance-covariance matrix and the means, variances and standard deviations of the variables. Click on the variable in the list to the left and enter it for analysis by clicking the right arrow box. Repeat this for each variable to be included or click the ALL button to include all variables. +145=Directions: First click on the variable name that represents the sample lot number. Next, click on the variable that represents the measurement. Click the Compute Button to obtain the results. NOTE! Equal group (lot) sizes of 2 to 25 required for Sigma analysis. Control limits are plus and minus 3 sigma. Up to 200 lots may be analyzed. +146=Description: Straight Line Depreciation calculates the depreciation allowance for an asset over one period in it's life. The function divides the cost minus the salvage value by the number of years of useful life of the asset. Cost is the inital amount paid for the asset. Salvage is the value left at the end of the asset's life. EXAMPLE: What is the depreciation value on might expect for a computer purchased for $2,000.00 and expected to have a useful life of three years with no residual value? ANSWER: Approximately $666.67 +147=R = Kr / (1 + (K - 1) r where R is the estimated reliability of a test when increased by a factor of K. K is the number of items in the lengthened test divided by the number of items in the original test. r is the reliability of the original test. +148=Directions: Click on the variables from the left list of available variables. Click the right-pointing arrow to enter your selection(s). You can remove a selected variable by clicking on it and click the left-pointing arrow button. Click the Compute button to do the analysis. NOTE: Some leaves may represent fragments smaller than the leaf depth. +149=Description: Sum of Years Digits Depreciation calculates depreciation amounts for an asset using an accelerated depreciation method. This allows for higher depreciation in the early years of an asset's life. Cost is the initial cost of the asset. Salvage is the value of the asset at the end of it's life expectancy. Life is the length of the asset's life expectancy. Period is the period that you wish to calculate the depreciation. EXAMPLE: What is the depreciation for period 1, 2 or 3 that one can claim for a computer purchased at a price of $2,000.00 and expected to have a useful life of 3 years with no salvage value? ANSWER: $1,000.00 the first year, $666.67 the second period and $333.33 the last year. +150=New variables may be created that are transformations of an existing variable or a combination of two variables or a variable and a constant. For example, you may want to create a new variable that is the natural log of an existing variable. As another example, you may want to create a variable that is the product of two other variables. To create the new variable, enter a name for the new variable in the edit box provided for the new variable name. Next, select the transformation in the list of functions available. The selected transformation will be shown in a box below the list of functions. Next, click on the name of the variable for the first arguement of the function to be performed and use the corresponding right arrow button to enter it. If a second variable is required (V2) click on the name of the variable and enter it with the corresponding arrow for V2. If a constant is required, click on the constant edit box and enter the value. Click on the Compute button. +151=Directions: For Dependent samples, click on the three variables representing X, Y and Z (in that order.) The test will compare the r(x,y) with the r(x,z). For Independent samples, click on the X and Y variables to be correlated and then the variable representing the group coding variable. The correlations obtained in each of two groups will be compared. +152=Directions: For independent groups you should have a variable indicating group membership using 1 and 2 for the group codes and a variable with 0 or 1 values which represent observed or not observed in the group. For dependent proportions you should have two variables code with 0 or 1 in each case. +153=Select the Dependent Variable and enter it in its box. Select the predictors (including the ones dependent on the instrumental variables) and enter them in the explanatory list. Copy the predictors dependent on the instrumental variables to the Instrumental Variables list. Add the instrumental variables to the same list. Select options desired and click the Compute button. NOTE: The number of variables in the Instrumental list should be equal to or greater than the Explanatory list. +154=Directions: Data may be entered on this form or from a file loaded in the grid. First, enter the number of rows and columns pressing the return key after each entry. If entering Grid data, click on the variables corresponding to row, column and frequency data. If entering on this form, enter the frequencies in the cells corresponding to the row and column of your data. +155=Directions: Click on the variable that represents the count of defects. Enter the number inspected in each subgroup (lot.) Note - all groups are of equal size. Click on a Sigma button to change to a different value. You may enter a specific value if you choose the X sigma option. Click the Compute button to see the results. +156=Directions: First click on one of the variables representing matched pairs of observations from the list of available variables. Click the right-pointing button to enter your choice for variable 1. Repeat for the second variable. Click the Compute button to obtain the results. +157=Directions: The repeated measures ANOVA requires you to select two or more variables (columns) which represent repeated observations on the same subjects (rows.) Homogeneity of variance and covariance are assumed and may be tested as an option. In addition, the ANOVA provides the basis for estimates of reliability as developed by Hoyt (Intraclass reliability) with the adjusted estimate equivalent to the Cronbach Alpha estimate. Finally, you may elect to plot the means obtained for the repeated measures. +158=Weighted Least Squares Regression lets you save the residuals and squared residuals for an OLS weighted analysis. You may also complete a regression of these residuals on the independent variables and save the residuals and squared residuals from those analyses. The square root of the reciprocal of the absolute squared residuals from this last analysis may be used as weights to reduce the heteroscedasticity in your data. If this option is chosen, an OLS regression of the weighted variables is conducted. This may be done through the origin. +159=Directions: Firs, click in the variable name that represents the sample lot numbers. Next, click on the variable that represents the measurement. Click on the sigma button to change the default and click on any of the optional check boxes and enter specifications desired. Click the Compute button to obtain the results. +160=Correspondence analysis is a method for examining the relationship between two sets of categorical variables much as in a Chi-Squared analysis of a two-way contingency table. In fact, a typical chi-squared analysis is completed as part of this procedure. In addition, visualization of the relationships among the columns or rows of the analysis is performed in a manner similar to factor analysis. The data analyzed in the visualization is the table of relative proportions, that is, the original frequency values divided by the sum of all frequencies. The relative proportions of the row sums and the column sums are termed the “masses” of the rows or columns. The method used to analyze the relative proportions involves what is now called the “Generalized Singular Value Decomposition” or more simply the generalized SVD. This method obtains roots and vectors of a rectangular matrix by decomposing that matrix into three portions: a matrix of left singular column vectors (A) that has n rows and q columns (n ³ q), a square diagonal matrix with q rows and columns of singular values (D), and a transposed matrix (B’) that is m x q in size of right generalized singular vectors (m = q-1). Completing this analysis involves several steps. The first is to obtain the (regular) SVD analysis of a matrix Q defined as Dr-1/2PDc -1/2 where Dr and Dc are diagonal matrices of row and column relative proportions and P is the matrix of relative proportions. The SVD of Q gives Q = U D V’ where D is the desired diagonal matrix of eigenvalues and U’U = V’V = I. It should be noted that the first of the q roots is trivial and to be ignored. At this point we obtain A = Dr1/2U and B = Dc 1/2 V. The results of this SVD analysis is available on the output. Now P = ADB’. The row coordinates F and column coordinates G are then computed according to the table: Analysis Choice Button Selected Row Coordinates Column Coordinates Row Profile Row F = Dr-1AD G = Dc-1B Column Profile Column F = Dr-1A G = Dc-1BD Both Profiles Both F = Dr-1AD G = Dc-1BD If Row profiles are computed, the row coordinates are weighted centroids of the column coordinates and the inertias D2 refer only to the row points. If the column profiles are computed, the column coordinates are weighted eentroids of the row coordinates and the inertias D2 refer only to the column points. If both profiles are selected, neither row or column coordinates are weighted centroids of the other but the inertias D2 refer to both sets of points. The q-1 inertias are plotted in a manner similar to a scree plot of roots in a factor analysis. The total inertia is, in fact, the chi-squared statistic divided by the total of all cell frequencies. You may elect to plot the coordinates for any two pairs of coordinates. This will provide a graphical representation of the separation of the row or column categories similar to a plot of variables in a discriminant function analysis or factors in a factor analysis. A way of looking at correspondence analysis is to consider it as a method for decomposing the overall inertia by identifying a small number of dimensions in which the deviations from the expected values can be represented. This is similar to factor analysis where the total variance is decomposed so as to arrive at a lower dimensional representation of variables. diff --git a/applications/lazstats/source_orig/LazStats.lpi b/applications/lazstats/source_orig/LazStats.lpi new file mode 100644 index 000000000..02c8e5694 --- /dev/null +++ b/applications/lazstats/source_orig/LazStats.lpi @@ -0,0 +1,2298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/applications/lazstats/source_orig/LazStats.lpr b/applications/lazstats/source_orig/LazStats.lpr new file mode 100644 index 000000000..9aa718d65 --- /dev/null +++ b/applications/lazstats/source_orig/LazStats.lpr @@ -0,0 +1,216 @@ +program LazStats; + +{$mode objfpc}{$H+} + +uses + {$IFDEF UNIX}{$IFDEF UseCThreads} + cthreads, + {$ENDIF}{$ENDIF} + Interfaces, // this includes the LCL widgetset + Forms + { you can add units after this }, MainUnit, Globals, DictionaryUnit, + OptionsUnit, OutPutUnit, LicenseUnit, DataProcs, TransFrmUnit, FunctionsLib, + DescriptiveUnit, GraphLib, FreqSpecsUnit, FreqUnit, CrossTabUnit, MatrixLib, + BreakDownUnit, BoxPlotUnit, BlankFrmUnit, NormalityUnit, Rot3DUnit, + Printer4Lazarus, PlotXYUnit, BubblePlotUnit, StemLeafUnit, MultXvsYUnit, + OneSampUnit, TwoCorrsUnit, TwoPropUnit, TtestUnit, BLKANOVAUNIT, + AnovaTestsUnit, WithinANOVAUnit, AxSAnovaUnit, ABRANOVAUNIT, ANCOVAUNIT, + LatinSpecsUnit, LatinSqrsUnit, RMatUnit, PartialsUnit, PointsUnit, + DifferenceUnit, ExpSmoothUnit, FFTUnit, PolynomialUnit, AutoCorUnit, + MoveAvgUnit, AutoPlotUnit, CanonUnit, GLMUnit, StepFwdMRUnit, BlkMRegUnit, + BackRegUnit, BestRegUnit, SimultRegUnit, CoxRegUnit, LogRegUnit, LinProUnit, + DiscrimUnit, RotateUnit, FactorUnit, HierarchUnit, PathUnit, LogLinScreenUnit, + TwoWayLogLinUnit, ABCLogLinUnit, TestGenUnit, TestScoreUnit, RaschUnit, + SuccIntUnit, GuttmanUnit, CompRelUnit, KR21Unit, SpBrUnit, RelChangeUnit, + DIFUnit, PolyDIFUnit, ChiSqrUnit, SpearmanUnit, MannWhitUUnit, ExactUnit, + ConcordanceUnit, KWANOVAUnit, WilcoxonUnit, CochranQUnit, SignTestUnit, + FriedmanUnit, BinomialUnit, KendallTauUnit, KaplanMeierUnit, XBarUnit, + RChartUnit, SigmaChartUnit, CUMSUMUNIT, CCHARTUNIT, PCHARTUnit, UChartUnit, + CorSimUnit, ERRORCURVESUNIT, PCurvesUnit, DISTRIBUNIT, GenSeqUnit, + GenRndValsUnit, MultGenUnit, LoanItUnit, SumYrsDepUnit, SLDUnit, + DblDeclineUnit, RIDITUnit, TwoSLSUnit, WLSUnit, HelpUnit, SortCasesUnit, + SelectCasesUnit, SelectIfUnit, RandomSampUnit, RangeSelectUnit, GridHelpUnit, + RecodeUnit, KappaUnit, AvgLinkUnit, kmeansunit, SingleLinkUnit, GenKappaUnit, + contexthelpunit, CompareDistUnit, matmanunit, scripteditorunit, rowinsertunit, + rootmethodunit, scriptoptsunit, colinsertunit, gradebookunit, gradingunit, + ProbzUnit, ProbSmallerzUnit, TwozProbUnit, InversezUnit, ProbChiSqrUnit, + TprobUnit, FProbUnit, HyperGeoUnit, BNestAUnit, ABCNestedUnit, + BartlettTestUnit, DataSmoothUnit, GroupFreqUnit, RunsTestUnit, XvsMultYUnit, + SensUnit, CorrespondenceUnit, EquationUnit, CalculatorUnit, JPEGUnit, + ResistanceLineUnit, MedianPolishUnit, OneCaseAnovaUnit, SmoothDataUnit, + SRHTestUnit, AboutUnit, ItemBankingUnit, ItemCodesUnit, TFItemUnit, + EssayItemUnit, MCItemUnit, MatchItemUnit, TestSpecsUnit, SimpleChiSqrUnit, + LifeTableUnit, LSMRunit; + +//{$IFDEF WINDOWS}{$R LazStats.rc}{$ENDIF} + +{$R LazStats.res} + +begin + Application.Initialize; + Application.CreateForm(TOS3MainFrm, OS3MainFrm); + Application.CreateForm(TDictionaryFrm, DictionaryFrm); + Application.CreateForm(TOptionsFrm, OptionsFrm); + Application.CreateForm(TOutputFrm, OutputFrm); + Application.CreateForm(TLicenseFrm, LicenseFrm); + Application.CreateForm(TTransFrm, TransFrm); + Application.CreateForm(TDescriptiveFrm, DescriptiveFrm); + Application.CreateForm(TGraphFrm, GraphFrm); + Application.CreateForm(TFreqSpecsFrm, FreqSpecsFrm); + Application.CreateForm(TFreqFrm, FreqFrm); + Application.CreateForm(TCrossTabFrm, CrossTabFrm); + Application.CreateForm(TBreakDownFrm, BreakDownFrm); + Application.CreateForm(TBoxPlotFrm, BoxPlotFrm); + Application.CreateForm(TBlankFrm, BlankFrm); + Application.CreateForm(TNormalityFrm, NormalityFrm); + Application.CreateForm(TRot3DFrm, Rot3DFrm); + Application.CreateForm(TPlotXYFrm, PlotXYFrm); + Application.CreateForm(TBubbleForm, BubbleForm); + Application.CreateForm(TStemLeafFrm, StemLeafFrm); + Application.CreateForm(TMultXvsYFrm, MultXvsYFrm); + Application.CreateForm(TOneSampFrm, OneSampFrm); + Application.CreateForm(TTwoCorrsFrm, TwoCorrsFrm); + Application.CreateForm(TTwoPropFrm, TwoPropFrm); + Application.CreateForm(TTtestFrm, TtestFrm); + Application.CreateForm(TBlksAnovaFrm, BlksAnovaFrm); + Application.CreateForm(TWithinANOVAFrm, WithinANOVAFrm); + Application.CreateForm(TAxSAnovaFrm, AxSAnovaFrm); + Application.CreateForm(TABRAnovaFrm, ABRAnovaFrm); + Application.CreateForm(TANCOVAfrm, ANCOVAfrm); + Application.CreateForm(TLatinSpecsFrm, LatinSpecsFrm); + Application.CreateForm(TLatinSqrsFrm, LatinSqrsFrm); + Application.CreateForm(TRMatFrm, RMatFrm); + Application.CreateForm(TPartialsFrm, PartialsFrm); + Application.CreateForm(TPointsFrm, PointsFrm); + Application.CreateForm(TDifferenceFrm, DifferenceFrm); + Application.CreateForm(TExpSmoothFrm, ExpSmoothFrm); + Application.CreateForm(TFFTFrm, FFTFrm); + Application.CreateForm(TPolynomialFrm, PolynomialFrm); + Application.CreateForm(TAutocorrFrm, AutocorrFrm); + Application.CreateForm(TMoveAvgFrm, MoveAvgFrm); + Application.CreateForm(TAutoPlotFrm, AutoPlotFrm); + Application.CreateForm(TCannonFrm, CannonFrm); + Application.CreateForm(TGLMFrm, GLMFrm); + Application.CreateForm(TStepFwdFrm, StepFwdFrm); + Application.CreateForm(TBlkMregFrm, BlkMregFrm); + Application.CreateForm(TBackRegFrm, BackRegFrm); + Application.CreateForm(TBestRegFrm, BestRegFrm); + Application.CreateForm(TSimultFrm, SimultFrm); + Application.CreateForm(TCoxRegFrm, CoxRegFrm); + Application.CreateForm(TLogRegFrm, LogRegFrm); + Application.CreateForm(TLinProFrm, LinProFrm); + Application.CreateForm(TDiscrimFrm, DiscrimFrm); + Application.CreateForm(TRotateFrm, RotateFrm); + Application.CreateForm(TFactorFrm, FactorFrm); + Application.CreateForm(THierarchFrm, HierarchFrm); + Application.CreateForm(TPathFrm, PathFrm); + Application.CreateForm(TLogLinScreenFrm, LogLinScreenFrm); + Application.CreateForm(TTwoWayLogLinFrm, TwoWayLogLinFrm); + Application.CreateForm(TABCLogLinearFrm, ABCLogLinearFrm); + Application.CreateForm(TTestGenFrm, TestGenFrm); + Application.CreateForm(TTestScoreFrm, TestScoreFrm); + Application.CreateForm(TRaschFrm, RaschFrm); + Application.CreateForm(TSuccIntFrm, SuccIntFrm); + Application.CreateForm(TGuttmanFrm, GuttmanFrm); + Application.CreateForm(TCompRelFrm, CompRelFrm); + Application.CreateForm(TKR21Frm, KR21Frm); + Application.CreateForm(TSpBrFrm, SpBrFrm); + Application.CreateForm(TRelChangeFrm, RelChangeFrm); + Application.CreateForm(TDIFFrm, DIFFrm); + Application.CreateForm(TPolyDIFFrm, PolyDIFFrm); + Application.CreateForm(TChiSqrFrm, ChiSqrFrm); + Application.CreateForm(TSpearmanFrm, SpearmanFrm); + Application.CreateForm(TMannWhitUFrm, MannWhitUFrm); + Application.CreateForm(TFisherFrm, FisherFrm); + Application.CreateForm(TConcordFrm, ConcordFrm); + Application.CreateForm(TKWAnovaFrm, KWAnovaFrm); + Application.CreateForm(TWilcoxonFrm, WilcoxonFrm); + Application.CreateForm(TCochranQFrm, CochranQFrm); + Application.CreateForm(TSignTestFrm, SignTestFrm); + Application.CreateForm(TFriedmanFrm, FriedmanFrm); + Application.CreateForm(TBinomialFrm, BinomialFrm); + Application.CreateForm(TKendallTauFrm, KendallTauFrm); + Application.CreateForm(TKaplanMeierFrm, KaplanMeierFrm); + Application.CreateForm(TXBarFrm, XBarFrm); + Application.CreateForm(TRChartFrm, RChartFrm); + Application.CreateForm(TSigmaChartFrm, SigmaChartFrm); + Application.CreateForm(TCUMSUMFrm, CUMSUMFrm); + Application.CreateForm(TcChartFrm, cChartFrm); + Application.CreateForm(TpChartFrm, pChartFrm); + Application.CreateForm(TUChartFrm, UChartFrm); + Application.CreateForm(TCorSimFrm, CorSimFrm); + Application.CreateForm(TErrorCurvesFrm, ErrorCurvesFrm); + Application.CreateForm(TPCurvesFrm, PCurvesFrm); + Application.CreateForm(TDistribFrm, DistribFrm); + Application.CreateForm(TGenSeqFrm, GenSeqFrm); + Application.CreateForm(TGenRndValsFrm, GenRndValsFrm); + Application.CreateForm(TMultGenFrm, MultGenFrm); + Application.CreateForm(TLoanItFrm, LoanItFrm); + Application.CreateForm(TSumYrsDepFrm, SumYrsDepFrm); + Application.CreateForm(TSLDepFrm, SLDepFrm); + Application.CreateForm(TDblDeclineFrm, DblDeclineFrm); + Application.CreateForm(TRIDITFrm, RIDITFrm); + Application.CreateForm(TTwoSLSFrm, TwoSLSFrm); + Application.CreateForm(TWLSFrm, WLSFrm); + Application.CreateForm(THelpFrm, HelpFrm); + Application.CreateForm(TSortCasesFrm, SortCasesFrm); + Application.CreateForm(TSelectFrm, SelectFrm); + Application.CreateForm(TSelectIfFrm, SelectIfFrm); + Application.CreateForm(TRandomSampFrm, RandomSampFrm); + Application.CreateForm(TRangeSelectFrm, RangeSelectFrm); + Application.CreateForm(TGridHelpFrm, GridHelpFrm); + Application.CreateForm(TRecodeFrm, RecodeFrm); + Application.CreateForm(TWeightedKappaFrm, WeightedKappaFrm); + Application.CreateForm(TAvgLinkFrm, AvgLinkFrm); + Application.CreateForm(Tkmeansfrm, kmeansfrm); + Application.CreateForm(TSingleLinkFrm, SingleLinkFrm); + Application.CreateForm(TGenKappaFrm, GenKappaFrm); + Application.CreateForm(TContextHelpForm, ContextHelpForm); + Application.CreateForm(TCompareDistFrm, CompareDistFrm); + Application.CreateForm(Tmatmanfrm, matmanfrm); + Application.CreateForm(Tscripteditorfrm, scripteditorfrm); + Application.CreateForm(Trowinsertfrm, rowinsertfrm); + Application.CreateForm(Trootmethodfrm, rootmethodfrm); + Application.CreateForm(Tscriptoptsfrm, scriptoptsfrm); + Application.CreateForm(Tcolinsertfrm, colinsertfrm); + Application.CreateForm(TGradebookFrm, GradebookFrm); + Application.CreateForm(Tgradingfrm, gradingfrm); + Application.CreateForm(TProbzForm, ProbzForm); + Application.CreateForm(TProbSmallerzForm, ProbSmallerzForm); + Application.CreateForm(TTwozProbForm, TwozProbForm); + Application.CreateForm(TInversezForm, InversezForm); + Application.CreateForm(TChiSqrProbForm, ChiSqrProbForm); + Application.CreateForm(TTprobForm, TprobForm); + Application.CreateForm(TFForm, FForm); + Application.CreateForm(THyperGeoForm, HyperGeoForm); + Application.CreateForm(TBNestedAForm, BNestedAForm); + Application.CreateForm(TABCNestedForm, ABCNestedForm); + Application.CreateForm(TBartlettTestForm, BartlettTestForm); + Application.CreateForm(TSmoothDataForm, SmoothDataForm); + Application.CreateForm(TGroupFreqForm, GroupFreqForm); + Application.CreateForm(Trunstestform, runstestform); + Application.CreateForm(TXvsMultYForm, XvsMultYForm); + Application.CreateForm(TSensForm, SensForm); + Application.CreateForm(TCorrespondenceForm, CorrespondenceForm); + Application.CreateForm(TEquationForm, EquationForm); + Application.CreateForm(TCalculatorForm, CalculatorForm); + Application.CreateForm(TJPEGform, JPEGform); + Application.CreateForm(TResistanceLineForm, ResistanceLineForm); + Application.CreateForm(TMedianPolishForm, MedianPolishForm); + Application.CreateForm(TOneCaseAnovaForm, OneCaseAnovaForm); + Application.CreateForm(TDataSmoothingForm, DataSmoothingForm); + Application.CreateForm(TSRHTest, SRHTest); + Application.CreateForm(TAboutBox, AboutBox); + Application.CreateForm(TItemBankFrm, ItemBankFrm); + Application.CreateForm(TCodesForm, CodesForm); + Application.CreateForm(TTFItemForm, TFItemForm); + Application.CreateForm(TEssayItemForm, EssayItemForm); + Application.CreateForm(TMCItemForm, MCItemForm); + Application.CreateForm(TMatchItemForm, MatchItemForm); + Application.CreateForm(TTestSpecsForm, TestSpecsForm); + Application.CreateForm(TSimpleChiSqrForm, SimpleChiSqrForm); + Application.CreateForm(TLifeTableForm, LifeTableForm); + Application.CreateForm(TLSMregForm, LSMregForm); + Application.Run; +end. + diff --git a/applications/lazstats/source_orig/LazStats.lrs b/applications/lazstats/source_orig/LazStats.lrs new file mode 100644 index 000000000..2747aa9b9 --- /dev/null +++ b/applications/lazstats/source_orig/LazStats.lrs @@ -0,0 +1,5237 @@ +LazarusResources.Add('MAINICON','ICO',[ + #0#0#1#0#6#0#0#0#0#0#1#0' '#0#226#145#0#0'f'#0#0#0#128#128#0#0#1#0' '#0'('#8#1 + +#0'H'#146#0#0'@@'#0#0#1#0' '#0'(B'#0#0'p'#154#1#0'00'#0#0#1#0' '#0#168'%'#0#0 + +#152#220#1#0' '#0#0#1#0' '#0#168#16#0#0'@'#2#2#0#16#16#0#0#1#0' '#0'h'#4#0#0 + +#232#18#2#0#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#1#0#0#0#1#0#8#6#0#0#0'\r' + +#168'f'#0#0#145#169'IDATx'#218#236']'#5#128#28#245#213#127#235'n'#231'w9I.N' + +#136#144#4#139#17#220'['#220#221#138';!'#184'|'#180#148#2#197'Kq'#13'R('#20 + +'(V'#180#197#3#9'!'#144#144#16#187#156#219#202#173#251'~'#239#253'gfo'#246'r' + +'~'#187';{'#242#131#201#236#173#204#204#202#251#253#159'?'#25#140'a'#12'c'#24 + +#181#144'I}'#1'c'#24#195#24#164#195#24#1#140'a'#12#163#24'c'#4'0'#134'1'#140 + +'b'#140#17#192#24#198'0'#138'1F'#0'c'#24#195'('#198#24#1#140'"'#140#155'}2}' + +#223#6#220'L'#184#25'q'#11#227#230#161#173#225#167#21#17#169#175'o'#12#217 + +#199#24#1#12'c'#160'@'#155'q7'#21#183'i'#184'M'#198#173#8'8'#225'N'#217'd2' + +#153'p'#155#132#191#167#239'<'#132#155''''#145'H0B'#224'7'#175#232'v'#7'n' + +#219'p'#219#128#219'F'#220'j'#145'4'#18'R'#127#6'c'#24#26#198#8' '#199#129'B' + +'.'#199#221'x'#224#132'|'#170#176#161'P'#211#223'%='#189'N'#214#195'7+'#235 + +#230'+O@'#207'r'#156#232#249#161#0#146#197'&'#232'$'#132#228#134#196#224#145 + +#250's'#27'C'#255'0F'#0'9'#6#20'x'#18#234#189'q'#219#7#183'=P'#208'ie'#215 + +#136#159'#'#22'nA'#160'e'#194#157#226#199'DO'#20'nwG'#12'b!O'#240#127'$R'#238 + +#236#230'q'#209#157']I'#2#159#211#136#187#181#184'}'#198'o'#171#145#20'bR' + +#127#182'c'#216#17'c'#4' 1P'#224#11'p'#183#20'8'#161#223#27#5'u'#186#240'X' + +#167'L'#239'('#228't'#155#219#0#228#244#12#185#140'{'#158#140'{'#157#140#191 + +'!'#235#250'|'#232'<'#166' '#196#130#252#146'ps'#27'pRM'#255#203#184#191#197 + +#143#209#235#196#247'AbGb'#232'B'#10#29#248#248#255#160#147#16'~'#26'3'#31'r' + +#3'c'#4#144'e'#160#192'[p'#183#23#240#171'<'#10#229'L'#224#191#7#177#192#203 + +'8)'#6#185'\'#158#20'h'#185#156#187'_.'#227#4#158#30#163#219#10'z'#142#188 + +#203#227#252#30'D'#247#201#21#10#220'+AF{P@\'#22#135'D,'#134#194#26#131'8' + +#238#227#241#24'/'#216'qn'#31'O'#0#222#194#251#241#223'8@'#28#255#137#199#185 + +#191#227#137#4#187#157#224#239'#'#2#136''''#186''''#134'nH'#193#129#247#127 + +#14''#193#238#139#11'['#146'(R'#9#161#139#217'A&' + +#195#10#220#158'G2'#248'E'#234#239'k4a'#140#0'2'#4#20'z%'#238#246#7'N'#232 + +#127#143'{'#29#221'/'#172#230#226#21'^,'#240'$'#172'$'#224'J'#165#2#148#180 + +'W)A'#163#214'3'#1#215#144#176'ku'#160#209#242'B'#175'V'#129#10#159#175'T' + +#202#217's'#233'u'#10#185'p'#172'.'#26#129#130'3'#21#184#251#216#149'p'#23 + +#202'Vn'#224'Vo'#129#4#226#156#128#198'x'#1#142#197'8'#161#142'E'#19#16'E!' + +#143'D'#227#16'Eb'#8'!'#9#132#131'~n'#11's'#251#16'#'#135'0>/'#134#207#225'6' + +#129#16#24'A'#136#8#129#206#215'U;'#192#251#215#224#238#5#220'^B2h'#150#250 + +'{'#28#233#24'#'#128'4'#3#5#127'.'#238'N'#197#237'D'#20#190'b'#186'O,'#244 + +#130#170#174#144#209'*.c'#2#175#228#133'^'#173'T'#162'P'#171'Ao'#178#130'^o' + +#3#157#209#10'Z'#29#10#187'J'#129#171'=nL'#208#233#182#156#221'V)'#21#201'=#' + +#11'%G'#0'D$r9g'#247#211#185#146'&'#3#179#8'd)'#206'AnE'#134#20'5'#30'e'#149 + +#187#29#231'6"'#128'h'#156#132'9'#158'$'#128'H'#132#246'1'#238#182'h'#31#198 + +'}8'#24#130#128#175#3#252'^'''#248'}N'#8#5'}'#236'1'#129#16#162#177#174#132 + +#16'g'#218#1#153#24#220'5'#177']'#12#175#225'c'#224#200#224'M$'#3#191#212#223 + +#237'H'#196#24#1#164#1'('#244#21#184';'#25#183'SQ'#184'v'#162#251#186#21'z~' + +#133#231'Vv'#18'^'#20'x'#149#10#244'('#232'z'#163#13#12#6#220#27#204#184#226 + +#227#170#175'Q'#130'V'#173'`'#194'O'#127#171'U'#188#192#171':'#133'^'#197#142 + +#195#173#254't'#31'g&p'#171#127#210#148#160#235#224#29#132#130#250#159#18#9 + +#224#205#0#178#245#133#21#153#217#251#252#223'$'#155'$'#160#209'8'#183#250'w' + +#146#0#10'2'#145#0#222#14'G8'#2#160'=m'#161'H'#20#205#132#24#4#195#220#237'@' + +' '#0'~'#143#139#145#1#145'B'#136#204#8#188#159'#'#131#24'gJ'#224'qbq'#193 + +#223#176#131#153#224'E2'#248'''pd@>'#131#184#212#223#249'H'#193#24#1#12#1'(' + +#248#243'pw='#10#219#17#192'-'#174#12'rN'#210'8'#149'\&O'#170#244'*'#21#9#178 + +#146#9#188#193'd'#195'}'#30'nf'#208'jT'#160#19#132#30'7'#29#19'~%G'#4'<'#9 + +#168#149#220#202'O'#171'<'#169#253#10#165#12#148'ra'#213#167's'#164#10'>]'#2 + +'wA'#188#192#11#209#129'D*'#1'$U'#239#164'g'#159#255#139#183#215#227#188'3P' + +#16#206'(o'#14#16#9#196#4'2Hj'#5#164#1#160#208#147#224#135#163'l'#31#8'E!(' + +#222'P'#240#253'>'#31#4#188'.'#240'!'#25#248'<'#14'4'#27#130#248#218'(#'#5'F' + +#4#140#12'x"'#232#226'3'#192#191')'#25#233'/'#184'='#131'D'#16#146#250'70' + +#220'1F'#0#131#0#10#254'"'#220#221#128#194'v'#16#253#157'\'#237'y'#207''#198#147'BLl'#30#136#136#0#133'>'#16'N%'#1#250 + +';'#16#196'-'#20#129'` '#2#30#183#3'<'#174'f'#240'x'#218'Q;'#8'32 '#13'C'#236 + +'d'#20'L'#4#17#17#144#227#240'^'#220#30'C"'#240'I'#253#155#24#174#24'#'#128#1 + +#0#5#159#156'z7'#162'0-'#161#191#185#24'<-'#181#220'j'#159'j'#203#163'0'#235 + +'t`'#182#20#131#201'V'#2'F'#147#25#244'Z'#21#24'p'#163#189'^G'#130#174'b'#194 + +#175#21'V|'#141#130#9'='#17#6#19#252#164#131#143#183#229#153#195#16'D6=''' + +#224#178#174#241#254'.'#215'-'#147#13#236'k'#22''''#1#137's'#4#128#251#159'#' + +#2#193'THtF'#16#146#132'@'#26'B$'#158'4'#11'B'#145'N'#141' '#200#147'A '#24#1 + +'?'#146#128#31'I'#192#239#167#219#184#5#130#224'v'#181#129#219#217#194'i'#6 + +','#242#16'c'#14#199#164#137#16#139#167'h'#5'x'#187#29'/'#233'~'#220#30'F"' + +#232#144#250'72'#220'0F'#0'}'#128'/'#160#249#29'p+'#254#174't'#31#23'^'#239 + +#12#209'1!Ur'#234#189'V'#171#1#147#165#136#173#244'&K'#30'/'#236'j0'#232'T' + +#201'M'#199#147#128'V'#195#169#248#156#208'+83A'#201#31'O.'#178#231'{'#17'v' + +#254'&'#183#239'A'#208#7'"'#255'='#165#254'v%'#133'D'#167#154#176#3')p^'#255 + +#4#243#27#196'D'#142'C'#210#10#194#188'_'#128#153#7'A'#142#8'|'#129'0n'#17 + +#182#249'i'#143'Z'#128#23#205#4#15#18#1#145#129#223#239#193#215'E'#153'f'#192 + +#162#11#188#19#177#139#175#128#146#141#30#193#253'}H'#4#237'R'#255'n'#134#11 + +#198#8#160#7#240'9'#248#199#1'g'#227'S'#178#206#14#130#175#18#236'z\'#189#13 + +'&+X'#243#199#161#224#23#162#144#235'P'#232'U`'#228#5#158#8#192#168#231#132 + +'^'''#8'>'#9#189'Z'#145't'#230'q'#26#132'8'#254'/J'#254#17'.'#170#15'u>['#232 + +#202#17']'#201#128#249#14#4#13'A'#228'?`'#209#4'2'#17'b'#228','#140'32 '#159 + +#0#167#13#136#8#0'5'#2'/'#146#130#159#255#219#227'qA'#135#179#25':'#28#141'h' + +'R'#132'92Hj'#5';'#16#129#31#207#255#24#238#239'A"h'#148#224#227#25'V'#24'#' + +#128'n'#128#194#191#27#238#30'EA'#163#144'^'#138#224'+yU_'#141'6'#188#6'7' + +#163'9'#15'l'#133#149'`'#177#230#163#176#227'J'#143#130'n'#212#171#217'mN' + +#232#213'('#244'h'#235'k95_'#205'<'#250#188#7'_'#217#25#183#239'N'#173'g'#231 + +#22'.j8|S]'#202#7'RR'#135'E'#230'B,'#193#231#20#240#161'Cf"'#136'|'#3'$'#244 + +'^A+'#240#163'6 '#236'}~p'#180#213'!'#17'4'#224#243#130#140#8':#'#9#169'D' + +#128#231#14#224'%'#220#137#219'_'#198#156#133'=c8'#252#172#178#6#20#252'<' + +#220#221#137#194'w.'#240'2'#152'"'#248#188#154#175'A'#219#221'd)`'#130'oE5' + +#223'hP3'#161'7'#25'4L'#232#13#188#202#159#180#241#153#224#139#156'y'#188'z/' + +#8#190'8'#127'?'#165#208'g'#128#182'{'#174#161''''#167'b2'#225#136'O2'#226 + +#180#2'!'#140'H>'#130'X'#167#143#0#137#192'C'#194#207#8' '#12'n'#220'{'#188 + +'~p'#182#215#131#203'^'#15'A'#127#144#249#10'z!'#2#170'X'#188#24'I'#224'?R' + +#127#30#185#136#225#253#11'K'#19'x;'#255','#220#238'B'#161#203#23#156'{2'#133 + +#160#234's+'#183#22'W|'#147#181#8#242#138'+'#193'l'#182#129#137#9'='''#248'&' + +'#'#238'Q'#240'uL'#229'W'#177#24#190#134'9'#243'RU|qr'#14#8#222'z'#254':d#' + +#248#235#216#161'z0'#25'f'#228'3'#17#197'&'#2'i'#5'Q^+ '#18#8'F'#152#22#224 + +#245#133#192'C$'#224'#R'#8#129#215#27#0#167#189#1#156#168#21'P'#174'A('#140 + +'D@9'#9'T'#215#192';'#11#227#157#213#141#175#225#238#10'$'#130#6#169'?'#139 + +'\'#194#200#253#197#245#19'('#252#187#224#238'o('#152'{'#136#195'y,'#227#142 + +'6'#18'|T'#227'-'#214#18#176#21'U'#160#224'['#153#208#155'I'#232'y'#225'g'#26 + +#128#150#19'|q'#248'N'#156#158'+'#8'>'#147#249#212'z'#222#209#9'Q'#232'1'#233 + +'7'#224#137#128#204#132#8#159'tDQ'#0#166#17#132#200'9'#136#155#143#211#8#220 + +'H'#6'D'#4#28')'#4#145#8#26#145#8'j'#193#239#247'!qt'#18#1#167'm'#196#5'm' + +#128#26#156#220#138#219#3'H'#4'Q'#169'?'#130'\'#192'h'#253#249#9'Uyw'#160'0^' + +#128'{'#133#160#238#179'"'#27#222#185'G'#9':'#228#205'/('#169'F'#193'71a'#239 + +'I'#240#5#199#30'K'#203'U'#202'S'#236'zN'#232#187#177#235#199#176'C'#30'BB' + +#172#25#176#236'CN+'#8'G'#163#157'D'#192#251#4'8m'#128'#'#2#143'@'#4'm'#13 + +#224'h'#169'A'#205'!'#192#136' '#194#155#6']'#204#2'*8'#186#16'I'#224#11#169 + +#223#191#212#24#149#191'E'#20#254'Spw'#15#229#234'''Km'#21'|J-+'#190'A;'#222 + +'hB'#193#159#4#182#252'"&'#244'f#'''#252'f^'#240#13#188'W_'#219'e'#197'O&' + +#231#240'R'#223#25#162#147#250']'#231'>D'#193#4'n/'#242#21'$S'#144'{'#210#8 + +#188'!'#232' '#18#160'}'#135#23#218#155#183#130#203#217#4#193'`'#152#249#21 + +#136#8#226#172#246' %'#153#232'y'#220']'#141'D'#208'&'#245'{'#151#10#163#234 + +'g'#137#130'O'#141'0'#31'G'#193'?'#145#254#22'Vh'#5#191#234#171'U*'#180#225 + +'5'#204#185'WP2'#30','#6#29'XL'#26#176#24'9'#2#160'U'#159#9#190'F'#136#225'+' + +'9'#167#30#139#219#11'y'#255'\'#213']'#231'''<'#170'>'#226#244'A'#228'@L@gM' + +#2#249#9'"'#2#17#136#162#6#130'Y'#208#225#9'22'#160#205#225'h'#135#246#166'M' + +'H'#10#29#156'6'#192#242#8#226#156#127#160'S'#27#160'P'#225#137'H'#2#255#147 + +#250'-K'#129'Q'#243#235'D'#225#159#141#187#127#160#144'N'#17'V}'#5#159'i'#199 + ,#169#251'h'#215'['#11#160#176't2'#218#251'f&'#244'V'#163#22#204'D'#0#6'-S' + +#251'){'#143#4#159#203#244#227#146'u'#196'e'#183'];'#248#140'a'#232#16#151#11 + +#11#230'A,'#193#167#30'G'#184#228'"'#230','#196#205#195#155#5#29#222' '#18'A' + +#136#237#221'H'#8#237#173#181#224'l'#217#14#254'`'#16'B'#225'0'#159'f'#28'Oj' + +#24#192'U'#30#222#130#251';G['#161#209#168#248#165#162#240#159#135#187#7'PH' + +#181'2'#190#6'_H'#217#165#144#158#222'`'#196#21#127'"'#228#229#151#178#149 + +#158'V}+['#249'9'#193'7'#232#213'l'#213#167#172'='#242#234's'#9';\'#201#173 + +'Pp'#195'>'#204'Q'#241'iJ'#131#206'DDn'#229'N'#166#31#147'F'#16#229#170#16')' + +#143#128#210#138#189#188'I'#224#18#17'A'#135#219#11'mM'#155#161#195#209#130 + +'&'#4#146#0'%'#19#9#209#130'Nm'#224'#<'#193')H'#2#173'R'#191#223'laD'#255'd' + +#249'N<'#143#137'U~'#193#214#167'D'#30#29#174#250'yE'#168#238#23'O'#0#179'Y' + +#199#4'>'#185#242#27'9[_H'#217'e'#169#186#138#212#226#155#222#26'm'#142'!3' + +#224#139#21#147#14#195'd>A'#148'K7'#230'2'#11'9"'#224#28#132'H'#4'n$'#0#242 + +#13#144'Y`o'#133#246#230'M'#224#243'x:'#181#129'h\'#28')h'#194'3'#156#140'$' + +#240#153#212#239'5'#27#24#177'?]^'#229#127#141#186#234#138'='#252#172#180'VE' + +'N>#'#148#148#239#4'V[>'#191#226'k'#25#1#144#202'O'#241'}'#178#245'uj~'#213 + +#23'j'#237'E^}'#246#225#141#216'O/'#247#145'$'#2#232#236'AH)'#199'Q'#190#0 + +#137#10#142#168#208#200#231#227#136#128#132#223#229#9'2'#31'A'#135''''#0#173 + +#13#191#177#208'a'#144'O-'#142'&C'#134#236#200#184'K'#220#142#251#255#27#233 + +'&'#193#136#252#9#163#240#255#1'w'#247#139'U~'#174#147#14#197#244'U`'#177#21 + +'Cq'#249'4'#176#153#13'('#252'Z&'#252#164#242's'#153'|\'#234'.'#173#250'\5' + +#30#223'aG&'#235'6'#23#127#12#210'"'#145'd'#1#224#27#152#242'D'#16#137#179 + +#162'#"'#2#31#239'$'#228#132'?'#4'N'#158#8#236'm'#13#208#214#248#27'j'#11'A' + +#150'D$D'#10'D&'#193#167#192'i'#3'#'#182'5'#217#136#250'%'#243'*?y'#249'O' + +#160#191#197'*'#191'FM'#130#173#129#252#210'j(,'#169'bj'#190#213#162#5#155'I' + +#155#12#241#137#227#249'B'#18'Ogn>$k'#236#199#144'['#160#214#229#157#185#4 + +#188'Y'#192#218#152'qY'#133#212#153'('#192#215#23'0'#223#0#145#128';'#128#166 + +#1#238#157'Nh'#169'_'#15'^O'#7#231#27#216#209'$h'#1#206'/'#240#177#212#239'3' + +#19#24'1'#191'f'#20'~'#26#139#245#30#10#255#188#174'I=\\'#159'T'#254#25'`' + +#203#207'c+'#190#205#164#3#171'Y'#203#135#247#212#172'XGH'#221'e'#13'7'#146 + +#234#190'h'#229#151#250'M'#142#161'G'#136'|'#132#220','#131'8'#223#201'('#193 + +'7)'#9'sNB'#210#6#220#188'9@'#190#1#167#155#246#254#164'I'#16#224#27#146'DY' + +#155#244'$'#9'P'#214#224#217'H'#2#207'K'#253'>'#211#141#17#241#155'F'#225#159 + +#128#187#255#160#240'O'#18#132#159'b'#243#228#229'gi'#188#182'"T'#249#167#163 + +#192#163#202#143'B'#159#135#155#133'_'#249#141'|}'#190#154'o'#192'A'#141':' + +#229'2Q'#231#220#17#241#9#141'B'#240#13'L'#200#128#23'Z'#153#9#185#3'T['#224 + +#241#134#185'('#1'j'#1#14#212#6#220#168#21#180#183#212'C['#243'&'#214#152#132 + +#202#142#133#156#1#222'/'#128'<'#144'X'#134'$p'#143#212'o-'#157#24#246'?o' + +#222#217#247#1#10#127#137#216#222#167#226#29#157'V'#203#210'x'#11'H'#229''';' + +#223#204#169#252't'#155'e'#243#233':='#252#201#10'='#161':O'#234'76'#134#161 + +'#'#193#165#26#11'-'#200#163#188#147#144#186#19#177#188#1'_8'#169#13'8'#153 + +'F'#16'@'#147#160#3'Z'#234#214'1'#147#128#146#135'('#5'YD'#2't'#172#187'qw' + +#237'H'#153'l4'#172#127#231'('#252'4a'#231'-'#20'~'#139' '#252','#163#143'T~' + +#131#1#138'+f@^^A'#167#224#155#185'0'#31#9'?+'#213#229#227#250'B'#231#29#232 + +'R'#142';'#134#145#1'q'#163#211'd'#164' '#202#165#19#11#225'Br'#14':'#220#28 + +#9#208#214'Z'#191#1'\'#246'&'#212#24#194','#170#16''''#191#0'$M'#130#231#240 + +#128#231#140#132#130#162'a'#251'sG'#225'?'#10'w/'#161#240'k'#132#240#28#169 + +#252'j'#170#213'7'#153#160#164'r6'#216'lff'#235#219#204#218#164#189'/'#180 + +#228'R'#243#173#183#200#209''''#212#225#143#9#255#200#133#144'H'#148'lJ'#130 + +'&A'#24#237#252#16'_n'#204#162#4'nN'#27' '#147#128#162#4'-'#13#155#192#209'Z' + +#203#234#9'('#162' '#174'%@'#18#248'7'#30#238'8$'#129#128#212#239'm('#24#150 + +'?y>'#204'G%'#188'r'#193#211'/8'#251#168#15'_i'#213'L'#176'YM'#144'G'#206'>' + +#139'.'#25#226#211#179'&'#29#202'd'#223'='#161'D'#151#251' '#134#229'G1'#134 + +#1'B<'#216'Th^J+'#188'@'#2'd'#18#144'c'#208#217#17'`'#251#182#230#237#208#214 + +#180#9#130#129'03'#7#186'D'#8#190#194'C'#30#142'$'#224#148#250'}'#13#22#195 + +#238'W'#143#194#127'3'#10#238'mt['#16'~5_'#193'g'#177#22'@i'#229'L'#176'Z' + +#245'L'#240#137#0#200#233#199#132#159'o'#201'%'#30#160#193'>'#128#177'e'#127 + +#212'A<'#2']'#156'' + +#129#253#135#147'c0'#231#197#1#133#159#198'o'#189#141#178#175#18#219#252':' + +#173#26#10#203#166'@Aq%'#243#240''''#133#159'<'#253'$'#252#201#10'>'#174'tW6' + +#22#219#135#223#29'0'#11#2#254#29#167'hi'#181':'#184#231#161#151'`'#234#244 + +'YR_'#162'd'#224'9 '#233#23#136'D'#184#209'f'#228#28'd'#21#133#148''''#208#17 + +'d'#161'B'#167#203#141'$'#240#19'x<'#29#221#145#192';x'#168'#'#145#4'bR'#191 + +#167#254' '#167'e'#130#239#207#255')'#10#191'A,'#252#180#242#23#148'N'#130 + +#162#210#241'I'#225#23'r'#250#5#225#231'Fi'#203'E='#249'r'#250#173'f'#5'''' + +#31#181#16#218#219#186#175'kQ('#148'p'#239'#'#175#192#244#25#187'H}'#153#146 + +'AhP'#10#2#9'D'#185#225'%b'#18'pv'#8#155#27#154'j'#214#128#215#227'fm'#201 + +#187'8'#6#159'F'#2'8['#234#247#211#31#228#172'T'#160#240'O'#193#221'W('#184#5 + +'B'#146#143' '#252#249'EU'#156#205#207#132#159#203#235'gi'#189'z.'#179#143#28 + +#131#138#148#148'^'#24#157'F'#127#23','#191#252#20#248'i'#245#183'=>N$p'#215 + +#131'/'#194#140#153#243#165#190'T'#233#144#28'f'#2#201#129#167'D'#2#212#127 + +#144#230#18#8'$@'#230#128#195#233'B'#18#248#17'|>'#127'2:'#192'&'#21'q'#14 + +#198'?#'#9'\'''#245#219#233#11'9)'#21'('#252#165#184#251#26#133#127#188'8' + +#195#143'9'#252#10#199'AI'#197'N,'#185''''#143#247#246#179#236'>'#157#154#13 + +#215'd'#194'/j'#211#149#179'oR'#2#216#219'Z'#224#180#227#150#224#15#180#231 + +#18'w'#185'B'#1'w'#222#251'<'#204#156#179#155#212#151'+'#9#196#195'P'#133#206 + +'CD'#2'!VC'#16'e'#221#135#133'""'#202#21' '#199' i'#2#1#170#31#160#241#230 + +#204#28'H'#8'$@s'#8#238#151#250'='#245#134#156#147#13#190']'#247#255'Pxg%' + +#133#31#127#148#26#190#168#167#140#226#252#164#242'S'#156#223',R'#251#213'JP' + +#170#184'>}c!'#190#158'q'#255']'#215#194''''#31#190#217#235's'#228'r'#5#252 + +#249#129#21'h'#14#204#149#250'r%'#133#16'*'#20'r'#5'h'#132#25#149#21#139#205 + +#1#210#4#236#237#173#208#178#253'g'#8#132#130#140'('#132#218#129#4'7R'#249 + +#148#134#159'^zI'#234#247#210#19'rJJP'#248#201#21#253#17#141#223#22#170#250 + +#148'|'#134#159#217#146#7'%'#19'fC'#158#201#0'6'#171#150#197#250#217#202#143 + +#194#175#213'(S'#187#246#228#212#187#202'-'#196#227'Q8'#254#176'y'#16#194#31 + +'ko'#208'hu'#240#220'k_'#130'^o'#148#250#146'%'#133#216'1('#152#3#204''''#224 + +#237'L'#27'&'#231' '#151','#180#129#235'0'#20'I!'#129#8#30#225'0$'#129#156#28 + +'M'#150'S'#162#130#4#240#16#10#255#197#226#146'^'#141#138'r'#251'-P:a'#23'\' + +#249#141'l'#213'g'#194'o'#226'V~-'#133#250'D'#243#246'r'#234#13#229'('#222 + +#254#231#179#240#244#223#255#220#231#243#202'+'#171#225#225#167#222#147#250 + +'r%Grr'#17#175#9#4#187#144#128#144''''#208#218'T'#3#246#166#205#157'$'#208 + +#217'O'#192#145'H'#196'vi\'#251'J'#173#212#239#165'+rF^'#248#226#158#127#138 + +#19'}'#168'A'#7'5'#242'('#173#154#11'y63W'#213#199#215#242#147#195#143'*'#250 + +#132#129#28#178#177#149#127'@8'#251#132'%'#224't'#244'='#15'c'#191#131#143 + +#133#11#175#184']'#234#203#149#28'B1'#17'9'#249'"|'#187'1.O '#204'J'#137#137 + +#4':P'#19'hi'#220#4#246#214#237#16#162#198'"'#169'ME'#190#142#4#28'K['#127'{' + +'?"'#245'{'#17'#''D'#134'o'#232#241'#'#149#245#10#225'>'#18'~'#157'^'#15#165 + +#227'w'#1#155#205#154't'#248'Y'#153#218#175#225#235#248';'#213'~!'#183#127#12 + +#253#195'/?}'#7#183',;'#163'_'#207#189#234#134#251'`'#193#146#131#164#190'd' + +#201#145#28'Y'#22#227#204#1#210#4'|B'#155#177'dw'#161' 4'#213#173#131#14#190 + +#148'85<'#24#191#27'M'#129'k!e'#144#186#180#144'\jx'#187#255'K'#20#254']'#187 + +#134#251#138'+w'#134#130#130#210'd'#172#191#179'}'#151#138#235#207#207#183 + +#232#22#6'}'#140'a`8'#239#228#165#168#5#244#221#2#159#194#131#15'='#253#1#20 + +#22#149'I}'#201#146#131'K'#27#230'5'#1#190#185#8'M.'#166#218#1#18'~'#135'''' + +#192'Z'#140'5m'#253#17'' + +#202#242'3'#25#185#149#159#230#241'q'#133'=\'#168'Oj'#6#251#237#215#31#225 + +#230'kNM'#185#143'H'#224#222#199#222#134#210#210'*'#137#175#174'wl\'#183#26 + +'n'#185#246#180'~?'#127#238#174'{'#193#178'['#30#145#250#178's'#2#180'|s-' + +#200#169#187#16#154#3'An"'#17#235','#212#17#20#149#17#175'Ov'#27#22#249#3#190 + ,#12'y['#246'n'#223#242#177#228#29#133'$'#147#31#20'~'#146#14#178#251'm'#226 + +'4_='#218#253'e'#19#230#161#221'oa'#130#207'9'#253'h'#229'W'#179#22'^\I'#175 + +'<9r[j'#220'y'#243'y'#240#243#143#223#236'p'#127'qi'#5#220#247'xnz'#208#219 + +'['#155#224#213#23#30#128'5?|'#1'>'#175'{@'#175'='#243#130#27'`'#255'CN'#144 + +#250'-H'#14'![0'#193#135#7'I'#192'i"'#145#208'^'#140'5'#20'Am'#160#185#238'W' + +'p'#182#215'C8'#196'u'#26'&'#194#224#15'pg'#253'O+n'#0#137'M'#1'ID'#8#133'_' + +#5'\'#178#207#30#226'L?'#157'F'#3'E'#21';'#163#250'_'#146'l'#229'%T'#246'Q3' + +#15#214#194'K)'#227#166#239#230#130#244'#'#206'8z.D#;:v'#149'J'#21'<'#251#198 + +'j'#169'//'#137'p8'#12#239#188#254#4#252#247#227'7'#193#209#222'2'#232#227 + +#200#240#187':'#253#188#235'`'#191'1'#18'H'#166#13#11#227#203'Y'#162#144'P7' + +#144#236'%'#224'GS`5x'#221#174#29#252#1'h1'#30'R'#183'f'#197#135' !'#9'HE'#0 + +'w'#161#240'/'#163#219#10#161#139#175'F'#9#249#133#227#161#168'|2o'#247'wv' + +#239'e'#225#190'd'''#159#220'q'#248#213'l^'#15'7]'#221#179' <'#241#202#183 + +#160#213#234'%'#189#198'`'#208#15#127#185#245#15#176'y'#227#207#189#166#0#15 + +#20#147#167#205#134#229#183'?'#1'j'#181'V'#210#247'''5'#18#162'a'#165'\'#142 + +#0'?{'#128'H'#128#138#134'<\'#205'@'#179#216#31#208'i'#10#180'i'#212#138#217 + +'['#191#127#190#25'$"'#129#172'K'#18#10#255#28#220#253#128#4#160#16#199#251 + +#141'f'#206#238#183#176#6#158#188#221'o'#224'j'#250#233'q*'#238#145#201'd9' + +#21#239#127#255'_'#207#193'+'#207#253#181#199#199#175#189#237'q'#216'i'#214 + +#238#146']'#223#166#13'?'#193#221'('#252#161'Pf'#202#211#213#26'-\t'#245#221 + +'0g'#254#18#201#222#163#212'H$'''#18#9#21#132#220'\'#194'dk1'#26'C'#198'g'#10 + +#182'5n`'#13'F'#187#148#15#191#220#240#211#10#234'w'#193#15'8'#203'.'#178'*J' + +'('#252't'#190#175#197#170#191'`'#247#151#140'G'#187#223'jN'#246#239#167'Q]' + +#212#193'W'#173#22'M'#229#205#21#201#231#241#183'{'#151#193#247'_'#247#156 + +#225'y'#197#13#15#195#172#185#139'$'#185#182#230#198#237'p'#253#165'G'#166'u' + +#213#239#9#187'.'#216#31'.'#188#234'nI'#222'g'#174'@('#30'bN'#193#8#231#15 + +#160'Qd'#212'i'#216#201#166#19#147'?`='#184#218#27'v('#26#146#203#18#251#213 + +#173'y'#137#166#17'g'#157#4#178'M'#0#231#2'7'#187#143#169#254#148#234#171'U' + +#171'Q'#237#223#9#237#254'q,'#212'G'#4'@'#19'z'#141#186'N'#187'_'#220#202'+' + +#151'p'#203'U'#199'A}'#237#166#30#31'?'#245#188#27'a'#233#254'GKrm'#203'/:' + +#12'W'#157#236#181#168'3'#154#173'p'#205#205#143'Cy'#213'dI'#222'o.@p'#10'F' + +#226#220'(2'#214'iX(!&'#18#240#248#161'q'#235#15#224#247'y'#216'0R'#145')' + +#176#161#208#28#223'e'#205#23'/'#135'`'#164#18#0#10#127#1#238'6'#162#240#231 + +#145',+'#168#194#15#5#220'l-'#130#210#170#217#220#136'nQ'#129#15#169#254#201 + +#210#222#28#136#245'w'#135#171#207';'#0':\'#237'=>>{'#222#18#184#248#218#236 + +'W'#131#174#250#246#19#248#251'_'#175#201#250'y'#169#148#248#162'k'#254#138 + +'Z'#207#226#172#159';W@>'#129'x'#12#152#199#159':'#10#249#168#183#160#159's' + +#10#18#17#216#219'['#160#165'v-'#155':'#20#21'B'#131'@?'#239#196#245'{L'#14 + +#255#229#181#215'^'#139'C'#22'I '#155#4#240'4'#10#255#153'B'#194#15'e'#242'i' + +#181#26'('#171#222#21'l'#22'+X-'#26#150#227'o'#210#11#241'~E'#206'W'#247']y' + +#206#190#224#245#184'z|'#220'`'#180#192'}O}'#154#245#235'z'#230'o'#183#192'7' + +#255#253#183'$'#159#9'iw'''#156#185#12#246'>0'#247#19#161'2'#1'nE'#231'z'#11 + +'R'#166' '#181#26'gIB'#194'@R'#26'8R'#251#11#184#28'M]K'#135'}'#10'Yd'#230'Y' + +'G'#236#180#253#214'[o'#205#154')'#144#21#209'B'#225'_'#136#187'/'#196'M=)' + +#225''''#191'x'#2#20#150'M'#228#236'~'#190#159#31#27#209#205''''#251#200#20 + +'|'#154'o'#142#142#228#190#242#156#165'L'#157#235#13#203'n'#127#22#170'''' + +#207#204#234'u'#253#241#186#147#160#174'f'#163#148#31#13#236'{'#200#201'p' + +#236#169'WJz'#13'R!'#217'e'#152'2'#5'Q'#19#160#162'!'#174#155#16'_='#232'rC' + +#211#214#239'!'#16#12'tI'#16#138#191'5'#217#214'x'#204#231#159#127'.h'#1#25 + +''''#129#140'K'#22#10#191#18'w'#171'Q'#246'g'#138#29#127#6#163#9'W'#255#221 + +'P'#232'u'#220#234'o'#20'B~'#156#221#175#148'Q?'#191#172'\'#226#160'q'#229'Y' + +'KX'#152#173'7L'#156':'#27#174#186#229')v'#155#190#232#141#235#190#135'_~' + +#252#2'j6'#255#2#173'-u'#16#14#5#161#176#184#28'f'#238#178#24#150#236#127',' + +#216#242#139#135'|]w\{<4'#214'm'#145#250#227#129'='#150#28#6#167#157#127#171 + +#212#151'!'#13'(*'#144#224#187#9#133'R'#203#135'iko'#222#14#237'M'#155' '#28 + +#230'M'#1#222'!'#168#144#197#143#216'}r'#244#223#217'2'#5#178'A'#0#201'~'#254 + +#130#227#143'V'#255#226#138'Y'#144'_X'#194#170#251#204#204#235#175'f3'#251'4' + +#194#164'^'#5#191#242#231#174#252#195#21'g.'#198'/0'#216#231#243'*''L'#135 + +#246#214#6'^['#232#253';'#173#154'8'#3'.^'#246' '#232#141#230'A_'#215#223#239 + +#189#18'~^'#253#133#212#31#15#195#137'g]'#7#139#246'=J'#234#203#200':'#196 + +#249#1#194#172#1#242#7'P4'#192#229#14#129#27'I'#160'q'#219#15#204#132#236#146 + +#27#176#173#196#26#155'S]'#20#243'e'#131#4'2*^('#252#229#184#251#21#133#223 + +'(8'#254'h'#245'7'#219#138#161#164'r&'#179#249#201#243'o'#22#169#254#148#240 + +#195#138'j'#134#193#140#238'+'#206'\'#4#209'H8'#237#199#165#234#187#227#207 + ,#188#22#246'\'#250#251'A'#189#254#173#151#31#130#143#223'}A'#234#143#135#129 + +'4'#190#229#127'Z'#1#165#229#19#165#190#148#172'#9'#131#144'R'#133#249#209'c' + +'n'#26'I'#206#180#128#16'8'#236'm'#208'R'#187#134#213#10#136#27#138#202'e' + +#137'?'#21')6'#222#186'j'#213'*j-'#158'QS '#211#4#240','#238'N'#231#194'x\' + +#165#159'N'#167#129#210#9#187#162#218'o'#6'3o'#247#155'x'#213'_'#165'Rt'#198 + +#251's\'#248#9'W'#158#177'p'#135'A'#27#233#2'}'#6'W'#160#233'@'#26#193'@'#225 + +#180#183#192#173#151#255'N'#234#143''''#9#157#222#8'w<'#244'>(G'#227#240#145 + +#132#184#167' '#167#5#176#198#162#158#16#155'@'#220'Z'#255'+t8'#26#152'C0'#22 + +#139#9#164#17#210'(";W'#154'[k>'#255#252's'#129#4'2'#130#140#137#25'_'#236 + +#179#25#127#200#202'd'#147#15'\'#225#243'J&Aa'#201#4'&'#248#22'>'#219#143#188 + +#254'B'#194#143#208#214'K6'#28'4'#128'3'#22#160#234#150#185#249#15#148'F'#252 + +#199'G>'#4#165'j'#224#130#243#199'k'#143#131#214#166#237'R~<)'#168#24'?'#13 + +#174#190#253'9'#169'/#'#171'H'#206#31#20'G'#5#130'\'#150' E'#5#152'&'#224#246 + +'A'#211#182#149#16#240#7#146#25#130'd6'#160#22#240#216#30#147'#'#151#226#203 + +'c'#153'4'#5'2I'#0#127#195#221#5#194#234'O'#171#187#222'`'#198#213#127'>'#174 + +#252#186#164#234'O1'#127#13#175#250#11#173#188's5'#236#215#21'W"'#1'd:'#211 + +'n'#206'n'#251#194#233#23#253'q'#192#175'['#245#205#135#240#226#223'o'#145 + +#234#163#233#22'{'#29'x'#2#28'q'#210#229'R_FV'#145'L'#21'&_'#0#223'T4'#16#226 + +#18#132'H'#3' "ho'#169#5'{'#211#198#174'a'#193#160'Y'#23#157#174#143'ln'#200 + +#164')'#144#17'Q'#227#251#250'oCa'#214#8#171#191#150#194'~'#227'v'#130#130 + +#194'q,'#233#135'R}'#169#198#159#10'}'#146#173#189#134'Y['#175#171#207'^'#136 + +'_lf'#9'@'#173#209#193#157#127#31'\.'#193'u'#231#239#3#225#12#213#1#12#22#231 + +'^y'#31'L'#155#185#135#212#151#145'u'#136'G'#145'S'#130#16#171#21#224'K'#135 + +'I'#19' -'#192#231#245'$'#147#131#226#156'/'#224#129#137#214#198#229#133#133 + +#133#145'Li'#1#153'"'#128'{pw'#149#216#246'7'#24'q'#245#175#222#21'W}m'#146#0 + +'('#215'_'#163'Q'#138'r'#253'3'#253'5'#164#23#203#206'Y'#196#190#172'L'#131 + +#132'f'#234#206#3'/*'#250#199'3'#127#130#149'_H'#147#16#212#19#242#10'J'#225 + +#250#191#252'S'#234#203#200':'#132#4'!'#161'V'#128#229#6#8#166'@W-'#128#250#8 + +#178'(B'#194'k'#209#248#166#203'|'#155'Z'#143'='#246#216'h&'#18#132#210'.r(' + +#252#249#184#219'.'#158#231'G*~~'#233'4(('#174'`'#182#191'9'#153#238#171'J' + +#233#231'?'#220#176#252#188#197#25#245#1#8#152#188#211#174'H'#2#15#12#248'u~' + +#159#27'n'#187#252#224#164'-'#154'+'#184#244#198#167#161'|'#252'4'#169'/#' + +#235'`i'#194#162#178'a'#214'U'#152#143#10'Px'#176'i'#203'w'#224#247#251#152 + +#22' D'#4#20#178#248'_'#198#233'jn'#213'h4'#145'L8'#4'3A'#0#255#135#187#27 + +#133#184'?'#173#254'z'#189#1#202'&'#238#193#4#159'<'#255#20#243#167#176#31 + +#149#249#178'b'#31#190#189#207'p'#226#128#166#186#205'p'#255'm'#167'g'#229'\' + +'&K>'#220'xo'#255'z'#247'u'#197#227#247'\'#10'[6'#172#202#230'G'#211'''*'#171 + +'w'#134#139#174#127'L'#234#203'H'#162'v'#235'z'#248#224#141#191#179'U'#248 + +#202#219'^'#4'm'#6#134#161#236'P6LZ'#0's'#8#134'Xkq'#242#7#216'['#182#131#189 + +'y'#19#203#11#16'E'#4':'#10#13#222#25#165#150'p'#187#209'h'#140#166#219#20'H' + +#171#200#161#240'S'#246#10#173#254#214'd'#193#15#10'y^'#233#20#200'/'#170'd' + +#4'`'#225'+'#253#132#213'_.'#204#241'K'#251'G'#158'Y<'#245#192#149#176'i'#221 + +#202#172#156#139#138'l'#254#244#232#127#7#245'Z'#183#171#13#238#188#246#168 + +#156#210#2'hq'#184#225#158'w'#192'h'#178'Jz'#29'?'#175#250#12#222'z'#233#175 + +#224#245'8'#147#247'Yl'#133'p'#237#157#175#225'oR'#153#246#243#9'#'#200#147 + +#29#132#216#188#193#8'x'#242#5'P'#181#224'w'#16#164#136'@'#172'S'#11 + +'P'#202#227#255'7'#181#208'~'#151#221'n'#15#167#219'!'#152'n'#2#184#30'w'#127 + +#20#175#254#172#183#127#245#238#184#234#235'p'#245'Ws'#157'}'#249'b'#159'd' + +#216'o8-'#253#192#133'tn'#190'x'#31#136'g('#7#160';\'#247#151#183#152'&0'#24 + +';d'#213'_'#204#156#191#15#156'x'#174#180#3'G'#222'|'#225'.'#248 + +#254#203'wv'#184#191'x\5\v'#243#243#25'9'#167'0'#130'<'#22#19#194#130#145'd' + +#243#16#210#4#218#155#183#130#179'uk'#215'r'#225#246#170'<'#255',u'#194#233 + +'L'#183'C0m'#146#135#194'O'#189#175'jP'#152#11#133#156#127'J'#249#205'+'#158 + +#4#249#197#227'q'#245'Ws'#131'6'#127#209#225'p'#196')'#203'2r^'#241#152'1'#234'#'#232#167 + +#228' >*@Z@'#211#150'o!'#24#10'B4'#210'Y#'#160'R'#196'o'#24#167#171'}'#200 + +#229'r'#133#210#233#16'L'''#1'\'#134#187#251#133#22#223'JV'#238#171#195#213 + +#127#15'0'#25#185')'#190#228#249#215#137'W'#255'af'#247#11#248#203'uG'#130 + +#167#195#158#213's'#206#156#191'/'#28'w'#214#224#227#250#143#254#249'\h'#172 + +#149#182'B'#176'+'#14':'#234'"X'#184#223#241#146#157#127#235#198#213#168#29 + +'u'#159#151' '#147#201#225#218#187#254#5#6'cf'#204#148#148#185#2'4v<'#16#6 + +#143#151'#'#129#246#166#205#224'j'#171'I'#169#17#192#127#154'&'#216#218#230 + ,'DC'#30'O:'#29#130#233'$'#128#159#196'#'#189')'#231#223'VT'#13#249'%'#213',' + +#219#143'y'#254'u'#157#147'|'#5#219#127#184#161#177#246'7x'#236#174's'#179'~' + +#222#130#226'J'#184#228#230#193#231#247'?'#250#167#179#160#185'A'#250#10'A1' + +#170#167#205#131#211'/'#249#235#208#15'4H'#4#253'^'#184#243#154'C{|'#188'j' + +#210'l8'#235#138#7'3rn'#161'N'#128#204#0'J'#14#242#5#195#172'd'#152#204#0#183 + +#199#11#205#219'V'#162#22#16'Ji'#29#166'SFO'#221'i\'#224'-$'#128#208#140#25 + +'3'#210#162#5#164'E'#2#199#205':q'#14#200#228'?'#166#14#248'PC'#217#196'=' + +#193'h'#212'%'#195'~]m'#127'v'#1#195'L'#5'x'#246#129#203#160'f'#211#154#172 + +#159'W'#161'T'#193'M'#247#127'<'#232#215'?p'#203#9#224#180'7e'#253#186'{'#131 + +#209#156#15'W'#255#233#13'I'#175#225#214'K'#150'v'#186#232#187#193'y'#203#158 + +#128#178#202')i='#167'`'#138'u'#230#5#196'Y#Qj'#28'Bu'#2#20#26'lk'#218#8#238 + +#246':'#22'-'#16#210#131#21#242#196#191''''#231#181#156#145#151#151#231'okkK' + +#139#22#144#30#2#152'}'#242#189#184#187'R'#156#248'c'#206'+'#133#162#242#25 + +'l'#245#167#141'l'#255#174#5'?'#195'L'#246#25#238#184'|'#191#140#21#0#245#133 + +#195'O'#186#6#230#238'y'#232#160'^{'#207#245'G0_@.'#129'4'#197#155#30#200'~' + +#199'$1'#250#250'>+&'#236#12'g]'#249#240#0#142#216'?'#8#26'@gD'#160#179#135 + +' +'#22'r9'#160#173'v'#245#14'EB'#165'F'#215#156'Bs'#188#209'h4'#6#211#161#5 + +#12'Y'#4#11'&'#238#167#212#24#139#235'P'#160'K'#196#206#191#194#242'Y`'#205 + +'+J'#18#0'7'#211'O'#148#243#159#246#143'4'#243#168#223#182#14#158#185#255'b' + +#201#206'o+('#131#139'oZ1'#168#215#222'u'#237#161#16#238#163'y'#137#20#184 + +#225#222#143'@'#174#148#206#17'x'#247#242#195'!'#24#240#246#248'8'#249#2#150 + +#223#243'>.j'#233#175'd'#20#198#139#209#198':'#9#135'"\'#15'A$'#0'2'#7#154'k' + +#190'g'#201'\bg'#160'F'#17#185'~'#130#205#254'x'#186#180#128'!'#203#225#184 + +#217''''#29#130#135'yW'#172#254#235'tz('#157#184#7#152#244#26#214#229#135'e' + +#253#241#171'?'#169#255#220#7#155#246#207'3'#227'xg'#197#159'a'#237#247#255 + +#25#250#129#134#128'E'#7#158#10'{'#29'|'#230#128'_'#247#231#171#15'D{2'#167 + +'F'#211'3\q'#199#27#160#207#144#163#173'?x'#232#182#19#192#237#236'}B'#242 + +#194#253'N'#130#165#135#157#147#145#243''''#135#138#196'83'#128#178#3'='#188 + +')`o'#169#1'g'#203#230'd'#219'0'#190'Jp'#213#228#188#230#223#163#6#224'N'#135 + +'/`'#168'b(C'#245#255'%'#220#159' '#174#250#179#20'TAA'#233'd'#182#242#147 + +#240#179#156#127'a'#180#215'0'#140#251#11'x'#152'~,'#174#190#199'ig'#18#244 + +#217#157'q'#249'#PZ9'#176'T'#218';'#175#220'/+3'#2#6#138#11#174#127#1'l'#133 + +#227'$;'#255'S'#247#156#7'-'#13#155'{}'#142#193'd'#131#203'n'#207'L'#253#2 + +#203#11#192#175'%'#154#156'''@y'#1'\'#207#0#143#199#3#205#219#190#235'j'#6'$' + +#242#180#158#189#139#140#190'_'#210#161#5#12'I'#18'Kw>'#214'"W'#168#155#240 + +'G'#169#19'w'#252')'#170#154#7#22#139#141#9#191#208#231'O'#205#175#254#178'a' + +#24#247#23'p'#215'5'#251'g'#188#250#175'?'#208'h'#13'p'#217'mo'#12'Hu'#206 + +#149'k'#239#138#11'oz'#5#204#214'B'#201#206#255#226#195#151#161'i'#247'K'#159 + +#207';'#227#138'G'#161#164'<'#189#206'@'#1#226'J'#193#0#211#2#194'L'#11' 3' + +#160#165'n'#13#248#220#246#20'3@'#173#136'>2)'#223#241''''#157'N'#231#25#170 + +#22'0'#20'I'#148#141#155'u'#210'Y('#205'O'#138'c'#255':'#189#25'J&'#236#202 + +'B~F'#3#183#250'k'#133#138'?'#129#0'2'#242'1f'#30'w]'#189#159#212#151#144'DE' + +#245',8'#233#194#254#135#208#238'^v@V*'#23#7#2#250#221','#187#251#163#172#159 + +#215#209'V'#7#171#190#252#23'4'#213'n'#128#182#230'm'#253'j'#235'V5i'#23'8' + +#225#252#244'O?'#18'$'#150#141#26#143'u:'#3'}'#228#12'D"p'#182'7'#128#189#241 + +#215#20'3@&K'#212'M'#201'k'#222#27'??'#215'P'#181#128#161#17#192#236#147'?' + +#199#253#18'.'#166#207'M'#248#181#22'q'#153#127'$'#248#194'`O'#173#134'k'#244 + +#169#16#226#254#195'P'#3#8#6#189#240#208'MGH}'#25')'#216#231'w'#23#194#188 + +#197#253'k'#184'y'#239#181#7'f'#165'rq '#160'^'#7#151#221#241#206#208#15#212 + +#7#162#209'0'#252#188#242#3#216#176#230'S'#166#238'G'#250#209#200#181'+'#228 + +'r'#5'\q'#231#251#236'w'#158'v'#240#209#0#193#25#200'B'#130#188'/'#192#231#11 + +'@'#243#214'o'#184#190#129#157'f'#0'X'#181#129'S'#202#173#190'OQ'#3#240'644' + +#4#15'?'#252#240#216'`'#180#128'AKb'#217#204#227#170'er'#21#181#252#146#137 + +#213#255#226#234#221#209#246'7'#166#172#254#164#254#211#7''''#31#198#234#127 + +'['#211'Vx'#238#190'?H}'#25') '#15#245'YW?'#133'6ty'#159#207#253#235#242#131 + +'r'#142#0#242#138'*'#217#245'g'#18#159#189#243'wX'#245#5#229#26#12'='#13'z' + +#241'Ag'#194#238#251#156#148#145#235'$'#225#23#18#131#184'"!./'#128#234#4#218 + +#234#215#131#167#163#169'Kjp'#236#141')'#5#142#171'U*'#149#203#135',1'#216#26 + +#129#193'J'#163#172'|'#246#201'7'#226#153'n'#23'{'#255#141#230#2'('#172#152 + +#205#173#254'z'#21#232#209#12#160'6'#223'*'#149#144#246';<'#133#159#176'm' + +#195'w'#240#230#179'7I}'#25';'#128'<'#232#231#223#248#143'>'#159'w'#255#13 + +#135'd'#181'x'#169'?'#216#251#240#11'`'#151#133'Gf'#236#248#219'6'#174#132'7' + +#159#185'1m'#199#179#228#149#194#217#203'2'#211#215'P'#152'+'#200':'#8'G'#185 + +#225#162'>'#161'i'#136#179#21#218#235#215#166'$'#5#201' '#209'19'#191'u'#145 + ,'\'#150'h'#195#197#215'+'#170#20#28#144#157'7h'#2'@'#245#159#234'S'#23#139'+' + +#255#242'J'#167#131'-'#191#12#244'zU2'#244#199#138'~'#134'q'#222#191#128#159 + +#191#127#31'>~#'#251's'#254#250#131'I;/'#130#195'O'#238#157#156#30#188#241'P' + +#201#18#152#186#3#149'8_v'#251#191'I'#183#206#200#241#253'^'#23''#232#163'7|'#247#217#10#248#230#163#204 + +#148#136#166#3#135#156'p=L'#153#181'W'#143#143'?q'#231#137#224#243'8'#164#190 + +#204'$'#170'&'#207#131'#'#207#252'S'#198#142#255#244#221#167#129#219#217#146 + +#246#227#238#182#247#137#176'`'#255'3'#210'~\'#241' '#145#168#168'y('#133#4 + +'I'#19'ho\'#7#30'gsJm'#128'^'#21'y'#180#210'b'#191#31'I'#193#129'&'#128'o0' + +#206#192'A'#17'@'#197#156#147#247#195#235#252#143'X'#253#215#234#200#251'?' + +#159#9#190#1'5'#0#193#249#199#133#254#134'o'#234#175#128#207#223'y'#4#214'~' + +#155'y'#135#213'`'#161'Ti'#224#194'['#223#234#241#241#247'^'#186#3'6'#175#251 + +'R'#234#203#228#175'U'#13#231','#127'%c+'#233#251#175#222#9#155#214#14#174 + +#129'J'#223#215#174#129#243'o~3#'#206'@ae'#167'h@'#152#31'$B'#137'AD'#0'N{=8' + +#155'6'#166#180#11'S'#202'c'#223'O'#202'k;'#7#175#165'='#18#137#184'='#30'Oh' + +#160#13'C'#6'E'#0'h'#255#255#9#143#190'\'#28#254'3'#219'*'#209#4#152#204#236 + +#127#218'h'#188#183'Z'#24#243'5'#12#171#254#186#226#235#15#159#130#213'_'#190 + +'.'#245'e'#244#138#5#7#156#9's'#23'w?'#149'w'#203#250#175#224#253#151#239#144 + +#250#18#25#14';'#229'6'#24'?u'#183#140#28';'#232'w'#195#147#127'>'#161#215#2 + +#159#161'b'#202#172#189#225#128'c3'#215'+'#128#181#12#19#204#0#158#0'|^/'#180 + +#212'|'#151','#17#230#252#0#16#156'\'#208#182#31#138'Y'#227'`'#157#129#3#149 + +'L'#217#173#183#222'*{'#226#205'M_'#225#237'='#196#197'?y'#227'v'#6#171#173 + +#152#23'~n'#245#231#188#255#178'a'#217#240#179'+'#182#172#255#18'>x%s*k:'#160 + +#213#153#224#236#235'^'#237#254'A'#252#209#252#237#182#195'%o'#10'2e'#246#222 + +#176#255#209#215'd'#236#248#159#188'q/lX'#243'IF'#223#3'-|''_'#246'$s'#10#166 + +#27'I3 '#206#153#1','''#0#9#128#136#128#8' '#24#240#165#248#1#10#244#254'K' + +#11#13#158#143'Q'#11#176'SH'#16#181#128#240'@'#204#128#1#19#192#148#221'N2' + +#251'B'#178'v'#154#248#211'i'#255#171#160#164'zO'#208#235'u'#172#232#135#156 + +#127'Z>'#245'W>'#12#219'}w'#7'ZY'#158#185#235'D'#169'/'#163'O'#236'{'#212#213 + +'L'#200#186#195#11#247#158#14'^w'#187'd'#215'V4n2'#28'}^f'#29#169'O'#220'q' + +#20'D#'#161#140#191#23'K'#254'88'#233#210#199#211'~'#220#174#237#195')'#26'@' + +'$'#16' ?@'#211#6#240'8'#27#187#250#1'^'#172'0'#183#223#135'ZA'#171'N'#167's' + +#15#180'Jp'#160#162')/'#159'}'#226'!'#9#144#191'#'#216#244#20#255#215#27#172 + +'PX9'#151#9'?'#249#0#152#250#175'$'#239#191#208#244'cd'#144#192'cl'#5#205#173 + +'l'#186#174'(.'#159#6'G'#158'so'#183#143#173#252#228'9X'#253'E'#223'!'#195'L' + +' '#191'x'#2#28'{A'#250#203'j'#197#248'u'#213#7#240#223'w'#30#202#218'{Zt' + +#240#249#176#243#238#135#167#245#152'|'#247#31#212#0#184'nA'#194'hq6^'#220 + +#209#4#142#166'_'#187#250#1#214'M'#206'o?'#31#9#160#9#205#0'g('#20#242#15#196 + +#12#24#136'X2I.'#159's'#242#221'x'#222'+'#197#14'@s~%'#235#253'G'#194#175'G' + +#225#167'a'#31'D'#0'r'#133'l'#216#135#255#196'x'#225#222'S'#193#239'u'#14#253 + +'@'#25#132'Zk'#128'3'#175'}'#181#199#199#223'x'#252'rhk'#218'<'#128'#'#14#29 + +#214#130'r8'#254'"'#154#20#151#153#144#159#128#151#30'8'#27'<'#174#244'{'#254 + +'{'#2#245'5fV'#248 + +#219#26'7'#193#191#158#186'2+'#239'I'#140#25#187#30#6#11#14'Jo'#134'hgRPg' + +#159#0#193#20'h'#175#253#129#245#8#16'u'#12#134'|'#157#247#230'b'#147#255'}' + +#148#201#22'$'#128#14'2'#3'P'#3#136'B?'#162#1#3#17'O'#249#132'9G'#230#133#19 + +#250'f'#188#173'H'#150#255#170')'#254#191#16#237'~'#174#233#7#197#254'5|'#242 + +#15#215#245'w'#228'0'#128#179'm;'#188#241#152't'#13'A'#250#139#197#135']'#10 + +'S'#230#236#223#235#251'x'#243#241'K3n'#206#204'^x'#28#204#223#251#212#172 + +#188#231#183#159#190#10'I'#224#183#172#156'K'#12#149'Z'#11#167'-{-'#189#7'Mp' + +'9'#1#228#8#140'D'#184'h'#128#16#18't'#182'lBS'#160'N'#1'D'#2'd'#226 + +#216#27#215#165'8'#2'U'#242#216'&4'#3'.'#198#219#13']'#204#128'>'#163#1#253 + +'&'#0'R'#255#191#217#164#186')'#145#144#221'"'#216#255'4'#247#207#156'?'#30 + +#172'E'#19#152#240#147#243#143'&'#1#177#220#127#249#200#178#255#5'|'#251#225 + +'c'#240#235#170#247#164#190#140'^ '#195#21#233#31'h'#154#245#175#133#213#170 + +#207'_'#128'u+'#223#198#31'T'#223'%'#177'}'#158#25'5'#194#9#211#23#194'B'#212 + +'@2'#209'B'#171'''|'#242#250#157'P'#251#219#183'Y;_W'#152'l%p'#204#5#233#27 + +'u&D'#2#132#226' V'#27#16#138'23 '#16#8'B'#203#182#175#240#251#138''''#29#129 + +'2Y'#194'7'#173#160#245'd4'#11#234'('#26'`6'#155';'#182'l'#217#18'Z'#183'n' + +#29#153#1#189#170'y'#253'&'#128#165'K'#151'*6'#187#198#189#128#231';A'#236#0 + +#180#149'L'#7#147#181#132#9'?'#167#254'wv'#254'aC?F'#152#6#16#143'Ga'#5'j'#1 + +#180#207'E'#232#12'68'#238#146'g'#7#250#174#224#251'O'#158#133#223#214'|0@' + +#141'@'#198#178#250'4:3'#20#148'N'#130#5#7'_'#12'jm'#250#231#234#245'z'#229 + +#236#251'8N'#210'JG'#146#135#211#174#253'WZ'#143#201'R'#131'y?'#0#155#29#128 + +#4'@'#27#17'A'#235#182#239' '#28#246#167#248#1#198'['#237#231'j'#20#225#245 + +'J'#165#178#9'W'#127#167'N'#167#11#244#167'6'#160#191#210')'#159'7o'#158#162 + +'9:'#141'hv'#174#152#0#10'*'#230#130#201'le'#194#175#213't'#134#255#134's' + +#235#175#190#240#213'{'#15#194#230#28'u'#6#142#199#21'x'#175#223#15'>'#209 + +#134#242#29#234'6}'#7'M'#219#215#178'N4'#241'X'#132'U'#17#146#160#145#160'[' + +#242#203#153#176#23'W'#236#4#230'<'#233'Zy'#9#248#254#147#167'a'#253#247#131 + +#27#156#154'N,='#234'Z'#168#154#178'g'#218#142#215'u'#132#24'5'#10#9#242'Z@{' + +#253'Oh'#246#216'S'#8#160#216#232#249#147'M'#235#251#24#239'k'#196#191#237 + +#161'P'#200#215#159#1'"'#253#145'Pf'#255#31'|'#240#193#170#181#141'ymx'#219 + +'$'#142#0#20'MX'#8#6#157#134'['#253#133#226#31#249#200'I'#0#234#14'$'#12#175 + +'=tF'#214'<'#233#253#6'~'#224'G'#254#225'Q0Z'#138#165#190#146#172#225#229#191 + +#158#136'Z'#203#192#27'|'#164#27#21#147'wC'#18#184'.m'#199'K'#13#7'v'#18#0 + +#141#21'w4'#253#6'^WC'#151#6'!'#254#23#139#244#174#151#209#254#175#139'F'#163 + +'mj'#181#218#211#159#18#225'~'#17#0#217#255#171'6'#199'+Cq'#237#214#164#3#16 + +#237'='#181'F'#143#4#176#27#203#250'c'#171#191'Z'#193#186#2')'#21'#'''#249 + +#167''''#216'['#182#192#7'/,'#203'h'#206#249'@Q9e'#15'X'#252#251#204#228#168 + +#231'"6'#253#248#1#172#252'8'#253#217'x'#131#129'Vo'#129#163'/z&'#173#199#20 + +#210#130#201#214''''#2#16#162#1#29#246':'#232'h'#221#156#18#9'0'#168'C'#159 + +'UZ\'#15#163'|'#214#14'$'#28#216#31#17#149#163#253'/'#175'q'#151#238#23#137 + +#201#223'O'#137#0#24#242'!'#191'b'#22#155#3'@'#177#127'F'#0#138#206#8#192'H' + +#199#154#255#189#0#235'W'#190')'#245'e0'#144#231#253#152'K^'#204#170#243'Mj' + +#188#249#232#217#16#240#229'Fb'#150#12#127#240'''^'#153#222'b1a'#148'x'#140 + +#207#7' '#2#8#134'#'#224#235#176#131#189#241#231#148'H'#128'F'#25#253#181#218 + +'f'#191#3#229's;'#254#221#20#12#6#157'J'#165#178#207#226#160'~'#17#192#140#25 + +'3'#148'n'#213#172#11#226#9#249#253'b'#2'0'#217#202#193'V<'#25'U'#255'N'#2'H' + +#142#252#30#225#26#128#128#207'^'#191#29#154'j'#178'?*L'#12#242#190#239'}' + +#204'MPR5['#234#143'#kh'#220#182#26'>'#255'gnT7'#10'8'#225#242'W@'#158'&'#2 + +'f'#170'='#223'#@'#240#3#176'~'#129#148#16#228#247'B'#235#246#149')'#4#160 + +#148#199#237#147#242'Z'#175'E'#185#164#9#221#13#129'@'#192#238#247#251'}&' + +#147#169#215#226#160#190'D'#148#169#255'^'#175'W'#249'K'#147#237#190'xBv'#129 + +#152#0#172#197'S'#192#130'$'#160#161#8#128'J!'#234#254#3#204#30#29#13#4'@' + +#248#238#195'G`'#235'/'#210'8'#5#233#251'Xr'#228#245'P6a'#174#212#31'CV'#241 + +#239#167'/'#6#143'3'#183'f'#29#238'{'#252#237'l'#28'^'#186#144#236#15' '#26 + +'%N&@'#24'5'#129#230'-_B4'#18'I'#18#0'">5'#191#229'r'#20#203#173#248'w]8'#28 + +#166'Va'#30'Q'#143#128'n'#253#0#253'"'#128#182#182'6'#213'fW'#217';'#137#132 + +'l?q'#17'P'#222#184#153'`4'#23#178#213#159#171#254#235','#0#26'%'#178#159#196 + +'/'#223#252#3#183'W'#135'~'#160#1#128':'#213'.8'#236'*('#159#180#187#212'o?' + +#171'p'#182'l'#133#15'Wd'#174#164'x'#176#152#179#228't'#152'6'#255'wi;'#30'_' + +#23#196'|'#0#177'(?D'#20'M'#0'r'#6#182'm'#255#1#194'A/'#171#9#16#136#162#210 + +#226#252#139'A'#29#254#142#252#0#161'P'#168#197'`0t'#212#214#214#6'{'#203#7 + +#232#147#0'('#254#143'j'#132#250#199'Z'#243'z'#27#205#196#146'wv'#1'RB'#209#132'E'#160#165#236'?u'#151#177#223#195#184 + +#253#247'PA'#171#211#234'O'#30#3'G3'#253'@'#211'O'#4'*'#181#30'v^t'#18'L'#154 + +'s'#176#212'oU'#18#248#221'm'#240#238#147#231'K}'#25#221'b'#210#156#131'`' + +#151'}'#206'M'#235'1'#217'b'#194#143#14#139#242'&'#0#249#1'\'#246'm'#224'm' + ,#175'I!'#0#139'6'#240'q'#153#201'M'#163#250#182#225#223#141#184'''?'#128#191 + +#188#188'<g'#255 + +#167'$'#0#201'G'#141#237#223#27#130'~'#23#172#254#244'Ih'#216#250'=2'#248#208 + +#179#212#244'hj'#237#188#231#9'0~'#250'^C>'#214'p'#198#127#223#248'?h'#169 + +#253'I'#234#203#232#22'S'#230#30#206#204#128'tB'#136#4'P80'#18#163'\'#0#218 + +'"'#172'1'#136#171'ecJ2'#16#170#255'?V'#152#29#143#201#229#242'mx'#127'='#154 + +#233#237'}u'#9#234'MTY'#251#175#239#190#251'N'#245'['#171'q~0'#170#254'R'#198 + +#229#246'2'#2#208#26#242#160#160'|6'#18#0'7'#248'S'#171#230#186#255#202'y' + +#239#255#232#243#2't'#15#250#130'~'#254#250'%'#168#221#240'?'#22#178#234'o'#5 + +#30'y'#246#13#150'"('#169#154#3#147#231#28#2'f'#155#244'YwR#'#26#14#194#27 + +#143#158'"y['#179#158'0}'#215#163'`'#214#194#147#211'v'#248'1'#228#14#254#249#192#9'h'#3#167's'#208'gzA+'#255'A' + +#167#167#127#230'A'#178',8'#193'E'#148#136#0'hX('#245#5'h'#221#250#5#27#248 + +'*Z'#145#187#141'N'#20'*'#13#28'}'#233#203#25 + +';'#190#160#248'PYp'#8'5'#0#31#18#128'?D3'#2'VA$'#232'N!'#128#234'<'#251#11 + +#26'Et='#222#220#138#191#231#237'h'#2#244#26#10#236#145#0'('#4'XXX'#168'B3' + +#192#248'K'#147#237#159#241#132'l1{@ '#128'q'#179#193'h'#202#7#147#137''''#0 + +#26#3#206#183#1#207#4#9#188#243#216#185#224#239'E'#160#199#207#216#27'v?'#248 + +#18#230')^'#245#241#19#3'N'#191'U'#170#180#176#199'!'#151#193#184#201#163#171 + +#178'n8'#128'l'#223#215#239';6g3'#0#231#238's6'#211'&3'#5'!'#29#152'"'#1#212 + ,#25#200#235#11#177'\'#0'J'#4#10#251#157')'#4'0'#222#234#248#135'N'#21'YK&'#0 + +#229#2#224#234'O'#205'A\'#212'$t'#247#221'w'#143#12#136#0'('#7' '#20#10#25 + +#127'm-x'#27#9#128'IF'''#1#204#5#163#217#10'f'#163#22#180'H'#0#212#9'H'#166 + +#200'\'#15#128#143'W,'#7'{'#227#198#30#31'''/l'#193#184'i'#208'Z'#251#243#144 + +#206'SX1'#3#150#28'u#j'#19#218#204#188#145'1'#12#10#239'>q'#1'x]'#205'R_'#198 + +#14#160#26#141#195#255#144#217#182'd'#9'^d'#217#192#208'p'#20'<^'#158#0#234 + +#215'B8`O!'#128'J'#139#227#13#189'*L'#197#18#201'\'#0#212#226#157'H'#6#221 + +#230#2#244'J'#0'j'#181'Z'#19#139#197#140#155#28'E'#175#196#226#242#165#236#1 + +#222#203'o+'#157#131'&@>'#243#1'P$@'#145't'#2'f'#134#1'V~'#240' l'#203'R'#211 + +#13#5#146#201#220#253#206#131#234#153#251#15#253'`cH'#11#214'|'#254'LN'#166#1 + +#31'p'#234'=`+'#158#148#209's'#8#233#192'q'#158#0#220'D'#0#254'0'#18#192#26 + +'4'#1'\)'#4'0'#193#230'x]'#171#140#172#3'>'#27#144#186#4#247'6-'#168'O'#2#8 + +#135#195#166'm'#29#165'OF'#227'r'#166#227#8#4'`)'#153#9'f['#17#24'y'#2#160'f' + +' '#178#12'N'#2'j'#174'Y'#3#255'}'#237#214#140'~'#208']a+'#158#8'K'#143#187 + +'-'#235#189#238#199#176'#'#130#254#14'x'#251'og'#230#212't'#230#146#9#187#192 + +'^'#199#220#146#241#243#8'EAqf'#2'D'#192#235#14#129#151#8#160'n'#21'DB'#30 + +#238'9<'#1'L'#180#181#189#162'R'#196'6Q='#128#208#30#12'I'#192#209'S2PO'#210 + +#154#204#2'D'#152'6'#180#218#238#143#198#21#201'('#0#17#128#185#136#250#194 + +#151#128#201#164#3#131'^'#197#17'@'#134#235#0'^'#187#247'('#180#131#178#251#3 + +#144#203#149'0{'#233#25'0y'#222'aY='#239#24'v'#196#166#213#239#194#143#159'<' + +'!'#245'e0'#208#140#132'C'#207#251'{'#210#241#156#13#196#248'T`'#143''''#8'>' + +'$'#0'J'#5#142#133#131')'#190#145')'#249'-+'#208#26#175#1'>'#25#8#247#13'(' + +#252#164#1#248#186#235#11#208''''#1#168'T*'#243'f{'#254#31#195'1'#197#25#236 + +#5'<'#1#152#10#166#176'D '#179'Y'#139#4#160'a'#4#192'f'#1'f'#144#4#200#14#244 + +'8'#26#135'~'#160'A'#192'RP'#9'{'#31#127#27'h'#141'y'#146#156#127#12#28'>}' + +#233#6'h'#173#251'E'#210'k'#208#155#242#225#16#18#254',u`f&@'#28'X'#243#15'J' + +#0'r'#187#3#204#7#208'F'#169#192#209#136#152#0#18#211#11'[^'#196#191#235'I'#3 + +'P('#20#219'"'#145'H'#3#222#223'>h'#2'@5'#194'R'#227'*'#188'>'#20'S^'#200'^' + +#192#11#184')'#127'"'#152#11#171#192'l'#210#128#209#160#3#165#138'k'#6#154 + +#201'>'#0#171'>~'#156#173#2'R'#129'Z?'#239#188#240'$'#152#177'gzK>'#135#27 + +#220#246'zh'#216#252#29#11#183#6'|.'#8#5#220#172'V_'#165#214#129'Zg'#2#173 + +#222#12'Fk)TN['#12'zsAZ'#207'MCY'#222#127'J'#186#134#160#244#190#14'9'#231'a' + +#166#25'f'#11#156#15#144'/'#7#14'F'#160#163'#'#192#178#1#219#182#254#143'/' + +#20#226#228'Y.KDP'#3'x'#149'R'#128#129#171#5'`'#233#192#184#136#183#187'\.ow' + +#147#130'z%'#0#170#3#192#23'['#234#189#197#151#6'"'#202'd'#23'F"'#1#131#181 + +#10#172'%'#19#193'd'#208#130#201#172'I'#154#0#178#12#134#210'i '#194#7'OH?' + +#158#219'd+'#133#165''''#252#31#232'-'#133'R_J'#198'A'#130']'#187#225'Kh'#218 + +#242#3'ks'#22#244#216#7'4'#135#143#134#148#26#172#197'P1u'#1#236#180#240#184 + +#180#9#206#215'o'#221#13'u'#191'~'#153#213#207#194'Z4'#30#14'<'#235'>'#188 + +#149#253'|'#17#166#1#160#249#27'@'#193'w'#185#209#4#240#5#161'}'#235#23#220 + +'c<'#1'('#229#241#224#164#188#214#127#226'M'#154#18'L'#234#255#214#190':'#3 + +#245'J'#0#227#198#141#211#6#131'Ak'#141#211'r'#182'/'#172'Nz;H'#208#245#214 + +'r'#176'P='#0#154#0'&'#147'6'#217#15' '#211'x'#253#158'c'#210'2'#201'v'#168 + +#160#228#163'Is'#15#129#185#251#159''''#245#165#164#21'm'#245#235#161'n'#195 + +'W'#208'^'#183#142#173#178#209'4'#142'B'#167#207#172#160'b'''#152#179#247#153 + +#144'W:y'#200#199#219#188#250'='#248#241#227'''3>'#168#149#186'/O'#158#127'8' + +#204#217#231#172#140#158#167'W$'#184#17'a'#1#180#253']'#164#1'x}`'#223#254#13 + +#255#16''''#207'*E'#204';)'#175#157#6'%'#146#218#207'4'#0#154#24'L#'#195#245 + +'z'#189#167#191#4#192#10#129#208'VPVVVjc'#177#152'e'#187#211'|'#162'7'#172 + +#185'+'#249#4'j'#9'f*'#5'['#201'4\'#253#181','#23'@'#165'Qr'#149#128#221#229 + +'j'#164#145#23#254#243#236#149',3,W@'#17#130'='#127'w5'#148'T'#15#207#190#252 + +'q$'#211#205'?~'#0'5'#235'>'#135#142#182#154'n'#11#174'2'#129#252#178#169#176 + +#232#152#27#217'H'#173'!]?'#10#255#143#31'?'#1'['#127#250#152#13'2M+'#240'w^' + +'>y'#15#216#253#176'+'#178#155#23#210#141#12'%d'#192'f'#3#4#252'!'#232'p'#5 + +#192#235'q'#131#163'ne'#138#3'P'#163#140'vT'#219#236'4'#187#190#129#132#159 + +'6'#165'RY'#135'2'#220'6h'#2#136'D"'#214#6#183#249'w'#238#144#238'!'#241#147 + +#180#166'b'#176#149#206'`y'#0'&'#139#142'M'#7'b'#29#129'2'#252#217#172#251 + +#250#31#240#243#127'_'#200#222#151#209'O'#20#148'O'#135'%'#199#222'<,B'#134 + +'^\'#217'7'#174#252#23#218#241#223#131#223#211'.Y'#145#13#249'T'#166#237'~$' + +#139#178#12#29'qX'#243#201'3Hd'#255'e'#205'C'#134#2#133#146#146#202#166#163 + +#224'_'#206#18'}r'#1'T'#13#24#141#198'P'#245#15#129#219#229#7#175#219#1#206 + +#134#31'S'#8'@'#167#140#216#171#172#246#143#128#215#0#168'"'#16#247#140#0#240 + +#182#183#187#138#192'~'#17'@'#179#199#184#175'3hxZ'#252'$'#141#161#0#242#198 + +#237#12'F'#163#14#205#0#29'k'#14#154#169'^'#0'b'#208'D'#222'7'#239#203#205 + ,#194#16#25#170#138';-8'#22'v^'#156#190#198#144#233'BG{'#29#252#244#233#211 + +#208#142'*~$'#228#151#250'rR`-'#154#0#251#159'y'#127#218'j1(g`'#195'7'#175'C' + +#253#198#175#193#215'A'#3#173#251'&8r`'#22'V'#238#12'Sw;'#2#138#170'fI'#253 + +#145#236#0'z'#7#17'j'#7#230#9#162#9#224#199#247#213#14#206#198#212#238#200'z' + +'U'#184#165#210#226#248#12':}'#0#228#4#172#29#18#1#144#9#208#234#209#237#209 + +#230'7'#254'#'#229#3#211'Z!'#191'b'#14#24'P'#253#183#152#245#172''''#0'u'#4 + +#202'F3'#208#127#221'w'#18#251#146's'#21'Z'#163#13#22#163'z'#155'?n'#154#212 + +#151#2#174#214#26#248#238#223#247#129#179')w'#204#166#238'@'#159#217'!'#231 + +#254#13#212#250#244#14':!'#19#193#217#188#21':Z'#183#129#27'I'#208#227'jfu"F' + +'['#25'X'#11'+Y'#178#151#165#184':'#183#11#193'X'#166#31#215#11#192#235#13 + +#176'('#128#199#209#12#238#150'u)O3'#170'C'#141#21#22#215#127#249'N@d'#2'l' + +#29#148#9'@'#155#216#9#232#244#171'f6z'#172')'#241'7'#133'J'#7#5'U'#187#131 + +#193#160#1'3'#154#0':'#150#11' '#239#182#31'X'#186')'#225#203#127#222#153'u' + +#15#240'`0e'#215#195'a'#222#129#210#12#177#8#251#221#240#217#203'7'#131#163 + +'i'#147#212#31'C'#191'A'#5'Y'#135#156#255'(k'#135'>'#154#209#157#190'B'#9'pa' + +'>'#9#168#3'M'#0'w'#251'v'#240#218'S'#167'#Y'#180#193#154'2S'#7'y'#6#27#248 + +'$ F'#0#209'ht@N@BJ'#24'P'#169'R'#149'nh-'#250#2'_'#165'I>'#3#5#189'p'#194'"' + +'$'#0#29'X'#172'z'#208#27'5'#172'5x'#159'y'#0'i`'#131#230'mk'#224#211#23#174 + +#207#202#151'1T'#152#11'*'#224#128#179#238#205#170'o`'#235#154#255#192#202'w' + +#31#206#154'C/'#157#160'<'#130#163#174'x!mSv'#135#5#250#180'P'#184#28#128'`0' + +#2#30'w'#0#220#168#1#184'Z6@'#160'#5)'#174#208#224']W'#160#247#253'D'#137'@d' + +#2#240#142#192#186'A'#135#1#137#0#240#133#164#147#21'ov'#20#191#30'K'#200'''' + +'$'#159#129#4#144'W1'#15'L'#22#27'j'#0#6'V'#19#160#226'C'#129']'#223'O&'#140 + +#130'W'#238'8l@'#241'h)A'#177#240#189'N'#184'%+'#145#130'O'#158'_'#14'-5'#185 + +'99'#167#191#176#20#141#135'C'#207#127'T'#234#203#144#4'='#5#209'('#2#16#12 + +#132'Q'#248#253#168#5#4#192'Q'#207#149#2#139'Qnv'#174'D3`'#19'%'#255#8#26#128 + +#144#8#132#154#128'o'#192#4' '#164#2#227#193#138#183'8'#10#30#12#199#20#139 + +#196#151'E]'#129','#249'e`'#178#234#192'd'#212#129'ZC~'#128#236#204#5'x'#239 + +#209#11#192#217#178'-+'#231'J'#23#166#237'q$'#204';(}'#195'#S'#128'6'#226'{' + +#127#191'h'#216'}&=a'#194#236'}a'#193#145#185'7'#1'X'#10'P'#18#16'E'#0'('#4 + +#200#17'@'#16#218#183'}'#3#177'h0'#229'y'#19#243#218'>U+'#226#164#254#215#163 + +#224'3'' j'#2#245#129'@'#192#142'f'#128'w'#208#181#0#248'wQ'#141#211'v'#173 + +'?'#162'Jq'#191#27#242#171#217#20#27#179'Y'#159#12#5#210'x'#176#158'k'#12#211 + +#247#161#172#253#244'yX'#251#249#138#236#127#27'C'#196'n'#135']'#12'Sv;<'#189 + +#7'E'#251#240#237#135#207'cN'#174#145#3#25#28'~'#201'c`)'#172#146#250'B'#178 + +#131'^'#204#0'j'#6#18#165'n'#192'>'#206#254#247'z'#252#208#182#245#139#148#16 + +#160'\'#150#136'N'#201'o'#249#8#5#159#194#30'uB'#30#0'nD'#8#246#129#214#2'$' + +#203#129#241#128'fd'#143#194'F'#143#229#20'wH'#151'B'#201'ZS'#9#228#143#155#1 + +'&'#179#14#204'V=h'#132#178#224',('#1'>W'#11#188'q'#239#169#153'?Q'#154'AYeG' + +']'#189#2't'#166#244#21#21#189#247#247'K'#192#222#176'q'#232#7#202'1'#152#242 + +#199#193#17#151'?#'#245'eH'#10'a&'#0#245#1#240'y'#3','#7#192#237'p'#160#9#240 + +'Cj'#18#144'"'#234#169#206#179#127#129#247#181#161#204#210'J'#192'f'#3#12#182 + +#28'8'#165#31#0#218#15#133#142#128'ai'#139#215#248#160#248'Ij'#141#5#10#198 + +#207#3'#O'#0','#18#160'R'#176#142'A'#137','#12#7'}'#233#214'Cr"-x'#160'`?' + +#236'+'#158'K'#203#177'H'#19#250#9#183#145#138'='#143#184#10'&'#205#31#157 + +#163#208'9$ '#30#163#8#0#239#0't'#250#193#213#214#0#238#214#245')'#4#128#182 + +#127'K'#133#197#245#3#222'l%'#199#31#240#229#192#168#193#147#167'pp'#13'A' + +#168'%'#152#223#239'7!'#131#20'D'#19#170#201'['#157#133'o'#136'_'#163'P*'#161 + +#176'z1K'#6#162'H'#128#206#168'ERP'#246'/'#23' '#13#252#240#206#131#231#177 + +#24#239'p'#196#188#131#207#131#25#139#143#27#210'1'#236#13#191#193'{'#127#187 + +'(g{'#229#165#3'r'#133#18#142#185#246#21#208#26#173'R_J'#250#209#143#175#141 + +'u'#2'B'#251#159#28#128#140#0'P'#3'p6o'#1#175'c[J'#6'g'#158#206#191#173#200 + +#224#166#196#128'VJ'#254#17'z'#2#146#6'0'#232#150'`BO@T'#31#10#240'GV'#190 + +#201'Q'#242'J}'#246'F)'#191#167'A'#129'j'#227#207#184 + +#251#179'A'#189'6'#28#244#195#138#27'G'#167'c'#172#176'r''8'#248#194#7'Xr' + +#213#136'@'#143#250'?O'#0#188#253'O+'#191#199#229'C'#18'p'#130#189'v%'#211#12 + +#4'('#229#177#224#228#252#246#175#240#249#2#1#212#0#231#4#164#209'`-h'#198 + +#187#131#136#1'M'#6#18#15#7#141'F'#163'6'#180'%J'#28'~'#221#190'->'#243#29 + +#226''''#170#212'z('#172#222#19#140'&'#29#152'mD'#0'\B'#144#208'&<'#27'j'#192 + +#11#215#31#8#145'P'#250#26'Wd'#3#244#3'>'#253#174#143#7#245#218'_'#254#251'*' + +#172'|{'#244#14'DUi'#13#176#223#153#127'd~'#148#145#138#4'_'#0'D'#241#255#160 + +'?'#4#30#180#255#189#184'9[j'#192#221#250'['#138#227#215#160#14#219'+'#204 + +#142#213'('#252#14#138#251#211'<'#0'>'#19#144'*'#1'['#7'3'#28#148' G'#155#129 + +'U'#4#250'|>'#139'F'#163')'#142#199'a'#194'F{'#225#243#137#132','#217#29#129 + +#170#168#24#1'X,'#204#15'`'#160#210'`'#230#7'P$'#29#129';'#156'-'#205'N'#235 + +'_'#191'z'#19#190#249#231'_%'#249#162#6#11's'#193'88'#230#250#193#141#147#254 + +#247#131#23'@k'#141#180#141'1s'#1'TA8m'#193#239'a'#206#1#167'g'#181'G_Z'#209 + +#131#134'L+<'#133#255#200#254#15#160#253'/'#16'@{'#221'Z'#8#186'[S'#8#160#208 + +#224#221'R'#160#247'Q'#185'g;'#17'@'#127#235#0#196#167#239#14';d'#3#226'V' + +#185#197#158#255#167'PL1#'#249'$'#20'rK'#241'N`-'#174#0#147'U'#143#4'`'#0#173 + +'A'#13'*%'#154#1#138#204#205#10#236#138'Wn;'#10'|'#206#214#236#156','#13#152 + +'0go'#216#231#140#255#27#212'k'#159'_~'#0'D'#130#185'U'#211'/%'#168#15'C'#233 + +#164']'#160'z'#151'}'#161'j'#230#226'a'#31'2dFz'#156'S'#255'#A'#222#254#167 + +#30#0#184'o'#222#252#5#196'#'#225#20#2#24'o'#181#175#210#169#162'-x'#179#29#6 + +#144#5#200'>'#187#222'>W'#241't d'#146'B4'#5'*'#154#188#182#179#221'!'#237 + +#209#201'''Q'#131'PK)'#228'W'#206'dQ'#0#163#197#0':'#147#150#21#6#201#149#217 + +#233#15'@h'#217#250#19#252#251#129#225#227'%^t'#194'r'#152#186#231#224'R'#130 + +#159#185'b'#201#176')'#132#146#2#148';'#160'3'#231#225#162'4'#30'J'#170'g' + +#195#196'y'#251#131#9'5'#174'a'#131#4'7'#9#184#211#254#199#213#159'e'#0#182 + +#131#189#230#7'6"L'#144'c'#133'<'#30#153#146#223#246'5'#10#186#7'e'#141'V@' + +#178#251#5#2'h'#196#197#219#217'S'#18#16#161'W'#2#16'&'#4#163#253'o'#212#233 + +'t'#249#241'x'#188#188'#'#168']'#220#232#177#220#156'|'#18#10#184'R'#163#131 + +#226#137#11#153#31#192'h3'#128#158#18#130#180#252#184#176#12'N'#12#238#138 + +#183#239#251#3#180'n'#27#218'l'#192'l'#225#212'?'#127#0#154'A6'#191'x'#242 + +#210#133#144'v;j'#132#131'HAo)'#128#252#242')P>mw'#152#186#224#240#156'4'#27 + +#216#234#159#224#212#255'('#170#255'd'#255#147#240'3'#251#191'y+'#218#255#155 + +'Xn'#128#0#163':'#212'^aq'#145'='#216#129#178#216#140#143#17#1#176#8#0'.'#220 + +#212';'#189#199#193#160#132'>'#9'@'#28#10#196#251#202#240#160#213#155#28'%' + +#143#196#19'2'#29'{'#18'k'#5'.'#135#194#9'{'#128#201'f'#227#205#0#174'.@AZ'#0 + +#171#14#236'>)'#168#219#147#14#225#195#11#184#29#240#210#141#135#231'|^@~' + +#197'T8r'#217#179#131'z-E'#0#158#191'f_'#169#223#194#176#135'J'#171#135#165 + +#167#222#2'U'#179#150'd'#252'\'#253#253#221#211#243'h'#177#140#199'x'#245'?' + +#20#129#128'7'#136#194#239#227#226#255#219#127#132#128#167'-%'#2'Pd'#240'l' + +#201#211#249#182#163#28#186#144'8'#154#132'$ '#218#227#202#223'b0'#24'X'#8'p' + +#221#186'u'#20'7'#140'ww'#222#30#175#137'"'#1#223'}'#247#157'*'#16#8#232#208 + +#20#176#161#9'P'#138'D0~'#155'3'#255#250'`T9C8'#4#249#1#172#165#211'Q'#229 + +#170#2#163'@'#0'z'#13#168#132'h@'#182'T'#0#196#202#127'='#12'k?z1k'#231#27'(' + +#232#179'8'#254#246'7'#192#152'W:'#168#215#7#189'Nx'#241#218#209#25#2#204#4 + +#138#170'g'#194#129#23#220';hm,'#221'`'#222#127'Z'#253#163'Q'#8#163#250'O' + +#246#191#151'%'#0#249#161#5#237#255'h'#23#251#191#218#214#190'J'#173#136'R' + +#248#207#129#127'6R'#8#144#239#7'H'#154'@k$'#18'q{<'#158'Pw!@B'#175#4'@'#155 + +#16#9#160#230#160#212#23#0#239#171'j'#246'ZNv'#5'uG'#8'O$'#2#208'['#202' ' + +#175'b&'#18#0#154#1'f'#3'W'#23'@'#141'B'#217#200'0'#25'd'#205#14'@'#188#255 + +#224'%'#208#176'ae'#214#206'7'#16'L'#156#191'?'#236'}'#214#29'C:'#198#147#23 + +#238'.'#245#219#24'Q '#243'`'#223's'#239#204#138'6'#208#27'HB'#168#244'7'#30 + +'E'#2#8#161#250#31#8#129#223#205#169#255'n{+'#180'o_'#197'Z'#131'u'#14#2#137 + +#133'&'#229#181'}'#143#194#239#195'?'#237'|'#8#144#217#255#168#181#215#247 + +#214#12'T|'#206'^?'#27#161'3'#144'^'#175'7'#1#31#9#240#132#212'{'#214'uX'#151 + +''''#15'"''?'#128#22#138'''.b'#171'?e'#4#234'L|8'#144#175#13'`'#166'B'#22'?' + ,#204'Wo>'#10#220'm'#245'Y'#3'p;'#202#27#253#221#209'S'#17#144#128'~'#17#0#213#4'x<'#30 + +#180#2#244'Vr'#4'"'#17'T5{'#244'G8'#2#198'dA;'#9#184'Zg'#132#162#137'{2'#2' ' + +#13'@'#199#178#2'5'#172'6@'#208#2#178#146#27',B'#243#230'5'#240#254'}'#23'B4' + +#18#202#234'y'#197#216#237#168'K`'#246'Ag'#164#237'x/\'#181#31#174#6'C'#155 + +'~3'#134#238'A'#157#154'N'#185#247#163#172#159#151#171#252#227#212#255'p0'#12 + +'Ao'#144#9'?'#173#254'T'#244#229'j'#222#200#156#131#130#253#175'VD'#253#19 + +#243#236'?'#226#223#148#17#230'@'#18'`'#14'@'#222#254#167#134' }:'#0#9#253 + +#145'F9'#146#128#18'I'#128#210#127#205'h'#10#20'#'#9'T'#198#19#138')'#155#157 + +#133#183''''#18'2V'#149'A'#194'M'#13'B'#10'*'#231#161#25'P'#8#6#19#18#0#211#2 + +#136#0'T'#160#16'*'#4'3gK'#198#223#195'h'#197#180'%G'#193#226#211'o'#202#206 + +#201#184#170#31#142#0#248#216#127#208#23'd'#130#207#212#127#167#19#9#224';' + +#212#12'"b'#251'?1)'#191'}'#21#170#255#228#8'"'#251#159#26#129#214'R'#248#15 + +#23'h'#234#1#208#136#194#239#232#203#254''''#244'G'#10#153'#'#16#15#166'"?'#0 + +#10'p>'#158#168#140#252#0#206#128'vi'#179#215#194#21'h'#147'#PFf'#128#14#205 + +#128#5#140#0'H'#3#224#162#1#252#244'`j'#24'*'#151'u'#27#17#200#240'P'#225'$' + +#26#127']'#9#31'>|%D'#130#190'L|'#157'L'#203#153#186#232#8'Xr'#234#13'd'#23 + +'e'#228#28'O'#253'a7'#246#131#24'Cf`*('#131#19#239'zw'#200#199#233#235'7-<' + +#206#21#254#196#208'LE'#2' '#231#31#18'@'#160#131'['#253#157'M'#155#192'M' + +#222#255'h4'#169#254#235'U'#225#142'J'#139'c'#29#202'Q'#0#239's'#1#215#4#164 + +'V'#176#255'qk'#17#154#128#160#240'G'#249'S'#13#158#0#186#250#1#144'eJ'#240 + +'~'#234#215'\'#189#201'Q'#180'<'#22#151'S'#136#144#17#0'e'#255#217#202'g'#130 + +#185#176#140'#'#1'3o'#6'h'#133#204#192#206'nA;'#148'Bw'#185#154'L'#182#186 + +#219#248#191'7'#224#199'w'#159#2'O['#250'Zj'#149'M'#155#15#251'^xOF'#139'Q' + +#234#214'~'#9#31#220'?z:'#1'I'#1'J_?'#231#137#31#134'D'#224#221')'#184']'#127 + +#207','#251'/'#193'y'#254#185#213'?'#138#230'j'#136'y'#255'I'#253#15'P'#243 + +#143'-'#223'@'#200#239'I'#137#255#151#24#221'[l'#186#0#165#249#250#241'>'#150 + +#0'$'#148#0#227#177#234'PKo'#235#143#253'/\C'#127#192#252#0#168#5'h'#220'n' + +#183#5#217#165#8'OXIf@'#131#219'r'#130';'#164#221#141#29#140#198#131'+'#20 + +#172'8('#175'j&o'#6#232#144#0't'#160#210#169#147'Z'#128#16#17#200#5'8'#27#182 + +#194#183'/'#255#5#26'~]'#201#134'F'#14#4'T'#133'f-'#29#15#19#230#239#15';' + +#239#127'2h'#12#153#207'&{'#239#238'?@'#195#250'o'#165#250#184'F'#13#246#189 + +#240'n'#168#222#245#128#140#158'#!'#168#255#148#249#23#137'B4'#200#169#255'd' + +#255#7#220'T'#252#211#10#142#237#171'!'#134#143#197#249#231#202'e'#137#216 + +#228#252#182#213'2'#136#7#248#248'?9'#131'X'#252#31#229#170#6'o7'#160#156#182 + +'['#173'V__'#246'?'#161#223#4#128'f'#128'\'#156#15#128#251'rd'#155#9#193#152 + +'v'#238'v'#151#237'\v02'#3'P'#184#149#26'5'#20#146#25'`6'#161#9#192#145#128 + +'Z'#199#229#4#144'/@&'#242#5#236#176#234#15#225'"'#135#2'R'#177#234'~'#254#10 + +#26#214'}'#11'm'#219#214'1'#205#128'&'#203#138#175#130'VvKq'#5's'#16#149'M' + +#159#15'e;e?#'#239#233'sw'#131'hX'#186#136#198'hA'#213'.K'#225#192#203#31#24 + +#212'k'#251'j'#132#155'L'#250#137'sC?c'#164#254#211#234#31#8'A'#136#188#255 + ,'l'#245'G'#245#191'a=x'#237#245')'#225'?'#179'&'#216'^fr'#209#196'W'#26#11 + +#228#22'*'#0#137#0#132#30#128#129'@'#192#137#230'z'#159#246#127'w'#215#214 + +#227#243#132'|'#0#178#1#168'0('#26#141#150'Q8'#16#31#155#176#197#145#127'a8' + +#166','#226#252#0'\4'#192'R6'#13#204'EU,$H~'#0#202#9' -@'#201#198#135')'#144 + +#4#184#196#160#28'Q'#4#134#5'>z'#248'*'#216#246'}'#246'CT'#163#17#182#242'Ip' + +#236#31#223#200#216#241')'#233''''#17#3'V'#214'M+'#249'C'#250#15#156#224#226#254'@'#158#255'8'#231#249#143#6#195','#243 + +#143#169#255#168#250#19#9#216'kV'#163#25'`gY'#172#130#250'o'#211#249#27'K' + +#140#30'R'#247#131'|'#250'/'#27#3'F'#241#127'R'#255#169#1#8#154#19#142#190 + +#242#255#197#24#136#228'%'#195#129'V'#171#213#24#12#6#169'Sp'#25#17#0#238#171 + +'j'#156'yg'#4#162#170'*'#193#12#160#162#10#163#173#4'l'#21#179#144#0#180'<'#9 + +'hy_'#128#154'9'#3#169'T'#24'dBX'#176#135#14#194#144'$'#205'~^e'#250#191'3)A' + +'~'#136#215#151#31#1#174#198#209#212#2'\zP'#133#224'9'#207#241'c'#214#135#26 + +#141#226#139#253#19#252#129#216#234#207'l'#127#170#250#139#176#208#31'9'#255 + +'H'#240#131'H'#0'>G'#27'8jWC$'#28'I'#241#254'O'#176#182#175#213#170'b'#30'R' + +#255#241'O'#23'5'#0#1#222#254''''#239'?'#223#16#164#163#183#6' '#221']Z'#191 + +#223#134#16#14#164#254#0#248#183#21'U'#13#150#21'H='#2':'#130#186#5#141#30'3' + +'+'#17'f'#177'~'#185#2'Tj5'#20'T'#239#10'z'#139#141'E'#2#136#0'4d'#10#176'f!' + +'*'#166#5'0_'#128#140#159'(<'#194#132'w'#168#160#130#159#215#151#253#14#127 + +#16'cI?'#217#134'B'#165#129#179#158']'#157#222#131#242#131'>'#133#142'?'#204 + +#246'G'#2#8'3'#225#231#9#0#247#142#186#159#192#239'la'#142'iA'#253#215#169'"' + +#238#241'V'#199#175#188#250'O'#9'@'#164#254#179#240#31'%'#255#144#250'O'#225 + +'?\'#160'='#253#9#255#9#24#16#1#208'&'#152#1#8#19#153#1#148#21'H'#4#128#143 + +'Umu'#22#156#25#142')'#11#133'.A'#20#247'7'#228#149#129'm'#220#206'I-@C$@CDY' + +#179#16'!/'#128'F'#137'e?E8'#151'AQ'#136'7'#174';r'#172#234'O"'#168'tF8'#227 + +#201#244#246#148#16#135#253'('#238'O'#158#255'H'#16'U'#127'"'#0#15'n>'#170 + +#254#179#163#250#191#10#205#189'0'#243#15#8#234#127#185#217#185#193#168#14 + +#145#211#143#169#255#192#13#1#173#23#17'@'#147#160#254#163'lF'#250#10#255#9 + +#24#168#196'13'#160#176#176'PE#'#195#168':'#144#6#134#224#133'T'#145')'#224 + +#10#234#23'4{'#205#7#2#175#210'S'#21' '#211#2#198#239#14':'#139#5'4F'#29's' + +#10#170#13'|'#207'@'#181#138'=G!'#231'g'#9#202#248'K'#234'O'#154#224'`'#223 + +#193'0@'#235#166#159#224#223#183#159'6,'''#31#143#20'h'#205'yp'#234'c_u'#255 + +'`_b'#213#205#239#151#21#251#240#163#190'H'#176#227#201#213#191#211#249'G' + +#171#191#179#254'g\'#253#155'8'#231#31#175#254'k'#149#17#239'x'#171'}='#10'{' + +#132#138#127#200#251'O'#237#191#240#200#181'|'#2#16#169#255#164'&v'#168'T' + +#170'`w3'#0#251'{'#169'}>_0'#3'('#26#128#127'['#168'K'#16#158#188#130#8#0#168 + +'m'#184#179#240#244'HLa'#21'j'#3#148#168#234#27#243#202#193':n:'#168'Q'#11 + +#160#193'!D'#4'j'#22#18'$'#18'P'#240'aA9?V|'#16'W5'#130#176#229#235#247#224 + +#243'G'#174'a'#182#223#24#164#3#133#1#143#190#251#157#244#28#140#15#252'S.' + +#127'"'#202#175#254'h'#223'G'#130'a^'#253#15#176#172#191'@'#135#19'W'#255#239 + +#185#213'?'#130'$'#193'1'#7#140'3w'#252'f'#214#4')'#244#23'F'#185#242#240#201 + +'?'#228#253#167#240'_'#13#202'"'#205#4'l'#31#136#247'_'#192'`D-'#165'8'#8#184 + +#193#161#204#25'H'#154#128'#`X'#208#234'3-'#21'F'#131#145'3P'#169#209'@'#225 + +#132#221'@k'#178'0'#19#128#242#2'Th'#6#8'Z'#0#171#20'Lv'#16#150'%'#157'&'#253 + +'m$:R'#176#254'?+'#224#235'g'#239#200'l'#14#244#24#250#133#233#251#159#8#11 + +#207#186'eP'#175'M'#249#221#242'!?'#230#253#143'q'#5'?'#156#237#31#134#8#31 + +#250#163#212'_'#218';'#27#214#129#223#209#8#209'H$'#25#251#215'('#162#254#9 + +#182'v'#234#250'K1}'#10#3'Q'#247#223#22'~'#213#175#193#191'k)'#249#167#175 + +#246#223#189']'#235#128#223#159#208'-'#24'm'#13'='#178#143#141#204#0#188#191 + +#146'i'#1'2Y'#229#22'{'#193'I'#145#184#194#196'r'#2#228#10'P'#170#149'`'#200 + +#175#2'k'#233'T\'#253#181'H'#2#168#5#232#185#196' V)H'#179#4'),'#168#232#140 + +#10#176#19#245#148'" zk'#178#228'?'#195#27#171'^{'#8'V'#191#254#176#212#151 + +'1'#6#30#135#223#186#2'J'#166#207#239#246#177#148#223'_/'#191#189#4#223#232 + ,'#E'#245#167#213'?'#24'a5'#255#17'?'#231#252#11#177#216#127#7#180'o['#9'Q$'#6 + +'z'#14#181#6#163#215#149#153':'#182'X'#180'A'#154#248#19#225'{'#255#145'&@+>' + +#9'>'#133#255#234'q'#223#170#211#233#220'='#13#0#237#13#131'"'#0'J'#10'B'#150 + +'a'#205'B'#3#129#128#153'J'#132'c'#177'X'#5'e'#6'rZ'#128#17#181#0#227#158#130 + +'3'#144'T|'#138#255#231'O'#216#3'W'#127#19'G'#2#212'4T'#207#151#10#147'CP' + +#221#233#16#148#241#166#128'l'#7#233#30#204#202#152#251#236#240#213#147#183 + +#192#175#31#189','#245'e'#140#129#7#253#6#207'~'#249#215#129#190'Jt;'#145#12 + +']'''#189#254'd'#207'Gx'#199#31#173#254#254'P'#210#251'O{W'#227#175#224'u' + +#212#177'~'#0#148#31'@i'#194'jE4Pmk'#251#5#229'!'#138#199#160#252'o'#15'nT' + +#250'['#207''''#255'lG'#217'#2p'#244#167#246#191#175#171#30#208#187'%g'#160 + +#201'dR'#163#218'a'#196#191'Yj0'#229#3#224#237'*|'#175#228#11'8>'#154'P'#232 + +#153'3'#16'Ww'#188'P0'#20#146#22'0'#133'9'#1'Y8'#144'6=_)H)'#194'h'#6'P'#18 + +#145'L('#22#202#206'lQIa'#175#217#0'o.'#251#157#212#151'1'#6#17'J'#166#205 + +#135#195'n'#127'iH'#199#232'n'#245#143#161#240#179#184#127'0'#196'9'#255'|A' + +#206#1#232'qC{'#205'w'#168#25#132'x'#207'?'#183#250#151#24#221#219#172'Z'#127 + +#155#200#249#151','#253'%'#225'GY'#169'C'#185'k'#182'Z'#173'.'#148#195#192'@' + +#156#127#2#6'M'#0#130'3'#16#153'G'#231'r'#185#200#233'W'#140#23'T'#1'\'#153 + +'pe'#155#207#184#208#30'0'#206'Kj'#1'H'#2'*'#141#22#242'(='#216'bE'#2#208'$' + +#137#128#180#3#133'P($T'#11#138#251#6#140'`'#22'x'#251#250'c'#161'u'#211#26 + +#169'/c'#12'"'#28'q'#215#155'PP'#189#243#160'_'#207#249#252'D'#141'>H'#168'#' + +#188#227'/'#192#173#254'L'#248'}AF'#4#174'z'#180#253#157'h'#251'S'#211#15'z.' + +#190'T%'#139#134'&'#230#183#255','#227'l'#255#16#18#0#139#253#163'l4'#144#240 + +#227'mr'#0#178#206'?]b'#255#253'V'#255#9#131'&'#0#232#146#19#128#23'H'#163 + +#195'h'#0'[%nU1'#210#2#28#133#199#198'P'#180#217#160'p'#210#2'P'#192'u'#150 + +'"'#176'U'#204'fu'#1'I'#2'`'#14'A$'#1'V.'#204#153#2#192'L'#7#254#242'Fh'#170 + +#176#223#217#10'/'#159#183'p'#204#233#151'C0'#20#148#194#9#127#255'b'#208#175 + +#151#241#169#190#204#8#136'w'#198#252#185#130#31'A'#245#199#205#31'`'#197'?' + +#1#23'e'#253#173#225'<'#255#209#206#213#191#216#232#169#177'i}'#173#252#234 + +'O'#153#127#212#5#150'B}'#245'T'#246'KN@Z'#253#145#0#156'~D'#127'S'#127'w' + +#184#222'!|V'#201#10'A'#179#217#172'#g '#222#199'B'#130#184#175#162'=j'#1#11 + +#218#253#134#185#204#169'Ge'#194'D'#2'j'#13'X'#199#205#0'}~)S'#255#213#6#29 + +#211#6'Tz'#13#31#22#228'{'#6'$'#253#1#248#142'd'#217'm)'#158'-|'#244#231's' + +#161#246#135'O'#165#190#140'1'#136'p'#240#205#207'C'#217#172#133#131'|5'#159 + +#236#203#219#253'B'#177'O'#156#217#254#188#234'O'#4#224#193#149'?'#192#217 + +#254#142#237'?@'#200#211#193'&'#1'1'#2#192#255'T'#242'hp'#162#205#142#182#127 + +'"'#202#135#254#216#234'/'#196#254#129#235#250'['#143'2'#215'N'#206'?'#170 + +#252#235#173#243'oo'#24#18#1#144'3p'#221#186'u'#172'QH '#16'0'#161#6'P'#128 + +#23'Im'#195#153#22#128'W2n'#155#179#224#247#225#184#202'"h'#1#148#2#172#209 + +#27#208#20#216#13#212#148#19' '#242#5'(u'#184'Qr'#16#159#27' h'#2'2'#161#157 + +'xOq'#193#158#222'E'#142'/'#172#207#158#176#19#174#12'c'#181#253#185#130#202 + +#249#251#192#254#215'='#193#253'1'#136#223#148'X'#248'i'#229#135'8'#151#238 + +'K'#142'='#177#227'/B'#234'?'#222#246#180#214#128#167'e'#243#14#171#127#185 + +#197#181#209#168#10'R'#184#143#250#190#177#208#31'n'#173'(_'#245'|'#209#15'%' + +#0'5S'#230#31'j'#224#254#193'8'#255#4#12'uYMf'#6':'#28#14#189'R'#169#180#225 + +'E'#22#227'F'#137'AL'#11#240#133'5'#211#235#220#182'}'#4'-@'#193#180#0'5'#24 + +#11''''#128#185'x"'#175#5'p$'#192#180#0#161'u'#24#223'>'#172#147#4#248#203#29 + +'A'#138#192'sD'#0'c'#21'~9'#1#26#22'z'#242#243#171'Q'#251'T'#15#238#0#188#25 + +#215#185#242#243#170#127#152's'#252#145#131#143#179#253#3#16#246'"'#17'x=,' + +#233''''#18#12'B'#140#250#253'E'#185#196#31#20'|G'#133#197#181#5#15#21#19'V' + +#127#161#237#23#169#253#192#245#252'k'#224#203'~'#221'}'#245#253#239#11'C&'#0 + +'A'#11#160#182#225#168#9#144'/'#160#0#137#128#249#2#144#8'H'#19'(k'#240#216 + +#246#246#132#181#149'r'#150#29#168'`5'#0#10#10#11'V'#206#3#141#201#10#26'#g' + +#10#168#146#17#1'5'#243#7#176'b!'#218#152'#'#145'+'#27#30'I'#166#192#138#211 + +'v'#129#144#215'%'#245'e'#140'zP'#225#218#161'w'#188#10'E'#211#230#13#234#245 + +#9#174#212#143#247#250#199#217'l'#191#4#223#230'+'#30#140'$W'#127#138#251'3' + +#199#31#222'v5'#252#2'AWK'#202#234'/C'#218#168'F'#213'_)'#143#134'zZ'#253#5 + +#207'?n'#142#254#182#253#234#245#189#167#227#243#19#215#7'h4'#26#214'4'#148 + +'O'#15#166#188#128#242'h\^'#177#213'Yxp'#2#215'uA'#11'P'#168#212#160#181#20 + +#176'ra'#181#174'S'#3'P'#11'Z'#0#229#6#8'Q'#1#190#155'0'#136#202#134'G'#130 + +'_'#240#213's'#22#130#175#189'Q'#234#203#24#213#160#197'e'#191#27#158#132#10 + +'T'#255#7#140#132'x'#166#31#231#244'#Afv?'#173#252#225#8'K'#250#137#6'B'#172 + +#221'W'#132#247#250'S'#165#159#139#154'}'#160#240#211' '#16'a'#245'/'#212'{' + +#234#10#244'>'#10#243'u]'#253'i'#236'7'#181#253#222#142#130#223'@U'#127'H'#8 + +#238#129#230#253'w'#251#254#211#241#25'v'#213#2#240#194#10#132#136#128#160#5 + ,'8'#2#198'9'#173'~'#211'l'#210#2'@'#161'`'#14'A'#5#154#2#150#178#157'@'#159 + +'W'#202#146#130#152#240#147#22#160#227'H'#128#181#15'S'#241#237#196'EY'#130 + +'2y'#186'.]Z'#252#235#210#3#193'Y'#187'Q'#234#203#24#189#192#223#210#146#203 + +#255#10#19#247#26#194#236#6#22#231#7#214#224#143#229#250#243'N'#191'X'#132#19 + +#254#8#175#250'G|'#156#6#16#246#243#142'?'#159#155#21#4#9'q'#127#149'<'#26 + +#168#206'k_'#143#199#139#241#171'?y'#254'Y'#213#31#173#254#184#175'U('#20#181 + +#180#250'k'#181'Z'#7#146#192#144'W'#127#246#17#164#235#163#236'N'#11' _'#0'p' + +#17#1#26'$R'#180#213#153#191#127'8'#166#178#10#217#129'$'#220'j'#189#145#229 + +#6#168#13'z.)'#136'O'#17'V'#178#220#0#222#20'`'#141'D'#249#14'Bra'#196#24'$' + +#213#128#225'J'#5#31#222'r24'#174#249'R'#234#203#24#149' '#13't'#191#27#159 + +#134#178'9'#139#7#252'Za'#213#231#179'}x'#187#159#19'~Z'#209'i'#245#143#133 + +'"'#201#176#31#229#252'GI'#248'q'#239'i'#217#10#222#214'm'#140' '#152#237'O9' + +#255#248'_'#165#217#177#193#160#14'S'#166#31#9'4y'#134#133#145#223'Md'#251 + +#147#240#163'L'#213#167's'#245''''#164#141#0#186#243#5#0'7H'#180#146#15#13 + +#150#249'#'#234#9#181#238#252'%l'#29'Wt'#154#2#134#252'r0'#151'N'#229'j'#3 + +#152#6' r'#8'R'#247' '#149#146'+'#24#18#154#137#178','#193#225#239#24'l\'#243 + +#5#252#231#230#147#165#190#140'Q'#7'CA'#25#28'~'#223#187'h'#130#230#15#252 + +#197#157#195'y:'#139'|'#226#156#205'O'#182'?'#173#234'L'#245#167#132#31'a' + +#245#199'-'#26#8#254#127'{_'#22'kYv'#158#181#246'x'#230's'#238'XsWwW'#187#219 + +'v'#187#227')'#241#0'v'#136#193#145#8#194'F'#8#5#148#4')'#145#176'P'#132#132 + +#20#241#18'!9'#188#0'/H'#188'!'#224#1'x'#2#9#17#144#128'XHH$`x'#128#7#144#172 + +'$'#216#198#221#158#186'k'#174'[w:'#243#176#7#254#239'_'#255'Z{'#237'}'#207 + +#173#186#213']w'#170#190'K'#218'w'#15#247#12#251#236#189#191#239#159#255#165 + +#166#253'='#181#243#222'wT2'#155#209'k'#23'\'#25#8#159'A;'#158'n'#223#232#238 + +#161#229#19#192#159#152#184'?:'#254#162#230'_'#233'Y'#127'n/'#145#254#0#255#7 + +'*'#27'}'#158#208')E'#4#136#173'V'#137#165'.'#139#22#128#174'A'#215'Q:|o'#208 + +#251'b'#127#214'x'#153'+'#255'B"'#129' d'#144#247#174#146')'#176'zUH@'#8#160 + +#225#248#3#184'V@'#155#2'l'#14#248#158'T'#15#150#127'I'#158#23'?'#201#243#206 + +'x'#28#144#198#191#254#181'O'#169#217#197'D'#159'''3'#232'ay'#245#203'_S'#191 + +#240#219#255#248'H/_'#250','#229#198#225'/'#137'>'#22#252#186#208''''#227'2_' + +'m'#247'c'#129#218#191#24'C'#19#152'p'#155#175#249#184#207#182#191'Q'#253'=z' + +#247'k'#171'['#127#28'x)'#138'}JY'#127#180#127'_<'#255'h'#251'u'#239'yK'#127 + +#254']'#207#243#242'.'#203#11#160#31'q'#21'~'#0#163#5'dyp'#229'G{'#27#191#152 + +#229'~'#13#0#246'E'#11#136#234#13#181#242#210'gT'#173#211#213'&'#128#144#0 + +#182#131'Z'#173'0'#5#196#31'P'#174#28'<'#191'Z'#192'w'#254#229'?P'#127#244 + +#187#23'U'#128#199'=z/}D'#253#153'o'#254#11#213#189'~'#235#253#127#8'W'#248 + +#228',ssW'#242'['#187#159'l'#250#217'\K'#127'V'#253#167'"'#253#231'j'#255#222 + +#247#213'd'#239'>{'#253'a&(N'#249'e'#199#223'{'#235#205#17'z'#251'C'#250#163 + +#3#12#247#251#163#5'Y'#128','#253#197#7#240'p>'#159#239':'#158#255#15','#253 + +'1'#158'7ll'#227'Pd'#7#146#22#128'9'#178'.!'#18' Q'#1#172'/'#239'Oko'#220#31 + +#174'~'#206#19#135#160'1'#5#226#246#138'Z}'#233#211'l'#2'@'#250'G-q'#8'J'#243 + +#16'?'#150'Ta3'#211#176';'#229#184#167'='#186#207#214'A'#244#244'G'#150#204 + +#213#191#250'K'#175'?'#243#172'D'#23#227'h'#163#181'y]'#253#220'_'#251#166'z' + +#229#231#223'g'#193#149#17#252'z'#30#175#178#211#15#246#187#145#252'H'#248 + +#129#228'g'#2#152#217#176#31'r'#255'G'#219'w'#200#246#127#135'$'#255#140'I"O' + +'u'#185'o=\'#244'_'#233'm'#191#157#231#252#137'\'#239'o'#26'~@'#250#211#254 + +'m4'#251#132#244#199#12#192#181'Z'#13'>'#130#217'Q'#27'~'#30'e'#251#6'x' + +#138'/'#237#248#203'otw'#223'i'#199'3'#132#249#172#227#143#176#129#164#159'-' + +'H|'#241#252#179#227#143'0'#180'3'#164#177#183#183'7{'#214#134#31'O'#27#199 + ,'B'#0'J*'#5#209'6'#140#206#187#213'h4`'#10'\VZ'#250#223#148#245#165'E'#26'\!' + +#18#248'R'#166#194#136'I'#128#147'~"'#235#15#136#219#29#173#1#136'C'#16#25 + +#130'a='#226#181'o'#138#134'l'#142#128#152#3'b'#18#148#148#128'e'#191#242#164 + +#177#246#148'+'#253'?'#255#225'o'#169#31#253#193#191'='#225#147'z1'#6#188#249 + +#31#251#139#127']'#253#204'_'#254#155#207'>'#163#239#147#158#13#145#250#182 + +#194#207#218#252#162#250'/t'#184#143#19'z&s'#209#0'D'#253#167#237'>'#236#254 + +#253#251#252#154''#174 + +#230#163#254'i'#159#202#185#25'+/'#127'T}'#246#27#127'G]'#255#220'W'#223#215 + +#251#151#206'>g5'#254#188'P'#251#179'\l~'#29#235#207#165#188'W'#199#251#181 + +#218#159#10#248#19'&'#130#153#26'o'#223'S'#253#135'?`'#211' [,'#172#215#191 + +#17#206#251'/'#147#221'/'#223#4#213#31'&'#192#152#22#132#130#224#12#180#170 + +'?-'#152#231#15#14#193#145#211#236#243#185'I'#127#251#155#143'iX'#135' &'#20 + +'%'#192'cZ'#241'Mt'#14#130'/'#0#166#0#189#230#10'-k'#15'G'#189#183'v'''#205 + +#151#141'w_;'#250'b'#213'\'#135'?'#224'u'#21#213'$1'#168#17'["'#240'M[q'#19 + +#30#180'='#5'i'#9#138#217#134'r'#201#21'8'#15'n'#129'{'#255#231#191#169#255 + +#250';'#191'z'#218#167'q'#166'Gs'#253#138'z'#233#203'_S?'#243'+'#191#165#234 + +#171#155#207#245#179'M#'#15'//'#8#0#21'}'#153#16#0#219#253#146#230#11#149#30 + +'E> '#0#150#254#0#255'Tk'#1#179#193#158#218#187#253#135#244#191#194#238'W' + +#176#251#189'd'#241#234#202#246#247'B'#178#255#149#168#254#180'L'#137#4'0' + +#203'/:'#253#222#147'f'#159'w$'#1'h'#219'8'#254#158'W'#216#175':'#142#149#0 + +#224#16#252#214#183#190#197'MC'#136#201'Z'#244#195'`'#152']'#22'-'#0'$pM!J' + +#160#188#149'w'#247#214#190'0Kk=eH'#0#210#157'H'#160's'#249'5'#186#233'/IRP' + +#205'j'#1#8#13#194#28#240'b'#157'#'#160#195#131#18'"4'#25#131#158''''#10#192 + +#249#9#19#254#254#223#254'e'#245#240'";'#176'4'#26'kW'#212#205#159#255#154'z' + +#235#24'@_'#26#206#196#157'6'#209'G&'#241#204#165#161'g.'#177'~V'#253#167#218 + +#238'O'#5#252')'#183#249#30#178#211'o1'#30'j'#233#159'&'#186'4'#152#237#254 + +#189'w'#218#209#180'oT'#127'z>9'#230'Ok4'#250#228'f'#31' '#0#244#249#203#178 + +#12#190#128#253#227'p'#252#185#227#184'aa'#29#130#244#163'j'#164#1'tMn'#0'H@' + +#136#0#29#133#215#147'<'#218#248#233#222#250#23'3'#130#189'q'#10#194#31#0'{' + +#191's'#245#227#170#209#187','#192#143#181'?'#192'5'#7'b]>\'#20#14'A'#11#208 + +'D'#144#151#10#136#156#159#251#164'_~'#18#254#129'C'#190#31's'#1#254#222#175 + +#127'A'#141#30#221'9'#129#147'8'#187#163#177'vYK'#250'_'#251'['#31#12#244'O{' + +#194#141#202#159#231#142#237'o'#192#159#217#226#158'\'#178#252'8'#140'7[X' + +#192'C'#242#167'Sc'#255#143#9#252#127#164'f'#163'}Q'#253#19#235'7Xo'#142#238 + +'m6'#251#144#240#244'Hz'#166#216'g'#12#144'#'#227'O'#21#210#255'.'#225#4#181 + +#254#187#180' '#230'?'#251#250#215#191#158'>O'#199#223#179'\'#158#231#241#249 + +#236#16#188'v'#237'ZD?'#166'I?'#142'M'#1':~]'#242#2#224#16#132'V'#176#218#159 + +'7n'#222#31#174'|'#138#253#1#220#16'$'#212#243#6#196#177#234'^{K'#213'z'#235 + +'L'#0'69'#168')'#249#1'5m'#10#232'D'#161'P'#207'1`'#252#2#158'8'#6#13#1'x:' + +#195#235','#155#4#217'|'#170#254#227'o|^M'#182#31#156#246#169#156#232#208#160 + +#255#243#234#19#4'zl'#31#247'0A'#23#207#216#251#210#196#147#255'!'#192'5Y~' + +#185#128#31#146'?'#19#181#127'!$'#144'Ng'#236#245#239#223#253#174#154#13'w4' + +#248#209#223#15#170#127#134'x?'#236#254#157#183#229#27'!'#253#145#245'7'#161 + +#239#178'1'#127'I'#246'A'#143'?T'#254'm#'#227#143#204#229#217'q8'#254#220'q' + +#18'0`-'#128#214#193#189'{'#247'0'#181'x'#11#141'C'#148#6#189'!'#1#248#5'6i{' + +'e{'#210'}'#227#241#164#253#154'.'#24#242#25#208' '#129#176#214'P'#221#171'o' + +'q'#255#128'@'#204#129#192#248#3#140'S'#208'!'#1#27#29'p'#27#140'B#p'#253#1 + +'v6'#226#167'\'#134#147'L)'#150's'#193#148#224#223#250#245#159'S'#211#189#173 + +#147#251#238#19#30'A\S'#221#151'^W'#215#190#240#139#234#245#191#240#13#213'X' + +#127'N'#160'?'#202#253't<'#253'&'#191'7wm'#254#212'H'#254#2#252#25#131'_''' + +#251'X'#181#31#14#192#217'L'#245#31'|_M'#247#183#216''#239#186#170#127#179#217#156#16 + +'^'#22#199#225#248'+]'#138#227#248#208'e'#223'cL'#1#218#174#199'q'#220'Y,'#22 + +'k'#196'vp'#2#26#18#192#246#6#189#180#247'`'#216'{s'#127#214#188'a'#253#1'a' + +#164'g'#24#170#183'T'#239#198'[*nuu'#211#16'h'#2#13#153'h'#148#246#217#31'P3' + +#230'@A'#2'z'#242'Q_'#151#17'{^'#209'r'#253'e'#245#234'/'#253'U'#181#249#214#23#143#241#203#158#208 + +#198'/'#175#188#206'H{'''#179'O'#247#242'3'#224#207'X'#234'g'#21#201#207#241 + +'~'#2'}'#6'{_'#136#0#165#189#147#157#247#24#252#186#181#151#158#212#211#207 + +#210#228#229#149#237#31#212#130#197#196#181#251#149#14#249#193#238#223#18#213 + +#31's'#252'q'#200#143#182'w'#8#15#195#231'Y'#236's'#132#203'vb'#195#166#9'_' + +#191'~'#29#154'@'#11#181#2#240#7#208#15#191'*aA'#204'1'#8'=p5'#247#252#206 + +#157#254#234#167#198'I}'#213#23#167#160#23#232','#192#184#217'c'#18#8#26'uM' + +#0'l'#18'D'#146')'#136#16#161'4'#18'A'#152#208#180#21#243#29#18'0'#221#133'<' + +'!'#0#229#2#255'9D'#12#142'a6'#227#225#253#159#168#255#254#219#191#172#134 + +#247'~z'#130#183#236#217#6#8#186#190#178#169#214'>'#254#179#234#213'?'#251'+' + +#234#218#159#248#165#163#191#249#176'k'#246'<'#158'PG'#218'kG'#191#201#231 + +#207'm#'#143#194#230'/'#210'{y'#153#27#169#191#208#192#135#148#135#250'O'#132 + +'0'#217#190#163'F[?"'#146#152'Ks'#15']'#223#143'?7'#187'{o7'#194#217#208#177 + +#251#231#244'l'#163#197#23#18'='#182'%'#215#159#193'O8'#128#25#176#141#132 + +#159#157#157#157#169'x'#253#13#248'_'#24#2#224#239's'#19#132#8#248#173'$I' + +#216#31'@'#11'B'#130#208#4#216#31'@'#235#149'\'#249#157'w'#247#214'?='#205 + +#162#14#146#132#152#4#184'7'#0#145'@gMu'#174#189'%'#229#194#162#1#152#252#0 + +'h'#1#146'-X8'#6#203#154'@a'#18#248#197#228'#N1'#209'Y'#237'='#248#255#254 + +#205'?R?'#248'w'#255'DMw'#30#158#234'y'#4#245#166'jn\S+'#175'}'#130'$'#252 + +#159'R7'#190#244#231'T}'#253#202'i_'#158#202#200#203#210'_Rz='#227#236#147'r' + +'^'#6#191#163#246'['#240#139#202#15#224#179'z'#207'*'#191#246#1#204'v'#31#168 + +#193#195#183#233'usn'#238#193#239'Cyo'#154#229'W'#187'{?'#236#196#147#190#168 + +'l'#214#238#23#167#223'.'#236'~ZX'#245#135#211#143'0'#240#152#222#187'O'#166 + +#241#4#9'?'#199#233#245#175#142#211'x'#202'}'#152#2#180#6#9'X'#127#0#217'?' + +#151#29'S'#0#26#1#252#1#221'$'#243#187#239#246#215'?'#179#200#163#134'o'#204 + +#1#216#247'$'#233#153#4#174'|'#156'H'#160'nA'#207'f'#128'h'#4'L'#2#145'&'#1 + +#21#233#168#2#147'@h'#8'@r'#5'|'#129';'#214'2)'#225'Y'#159#166'|'#240#222#219 + +#234#143#255#249#223'W'#15#254#247#31#208'C99'#190'/'#162'k'#17#183'{'#170'u' + +#245'e'#181#250#209#207#168'+'#159#251#170#186#250#249#175#210#245#175#159 + +#246'%x'#250'03L'#219#130#30'c'#231#23#253#251#140#167#223'H~V'#225#231'I'#1 + +'x'#6#255#156#155'{'#178'&@'#255#155#238#222'U'#163'G'#210#206'{Q'#168#253' ' + +#146#203#173'}L'#231#181#131'/q'#156'~H'#245'E'#188#127#15#133'='#180#141'F' + +#144'P'#251#225#244'{D'#207#245#222'I'#218#253#238'8'#141'G|'#169'?@f'#22'b' + +#167#160#210'Z'#0#182#215#233#1#236#204#147'`'#229#189#254#250#167#19#21#198 + +''#28#234'#p'#231'R'#217#151'I' + +#184#15#142'>'#14#251#137#31'`'#188#253#30'-'#239'jR'#224'i'#188'S'#142#22#0 + +#252#27#205#193#237#245#198#240#145#11'~z'#182#140#221#15#240'o'#153'J?z'#230 + +#239#201'4'#223#232#240#131#6' '#199#150#237#247','#151#242#196#190#215#245#7 + +#208#197'h'#18#248'{'#164#10'm'#18#192#175'Hx'#144#179#4'iY'#3#9#204#210'x' + +#237#246#254#250'''3'#207#15'Yr#<'#24'j'#18#8#27'm'#213'!'#18#136#154#29#2'~' + +'h'#181#0#228#8'x'#236#20',H'#128#181#129'J'#152#208#212#17#24#18'`'#231' t' + +#148#220#153#144#164'`'#132#234#147#246#244'+y'#10#4'1'#219'{'#172#230#253#29 + +'5'#31#236#210'zO-'#134#251'\9'#217'}'#249#13#213#185#249#250#217#149#224'G' + +#189#142'K'#239'C'#17#222's[u'#219#16#159#11#254#170#212#151#220#254'L'#154 + +'z'#148#9'@K'#255#209#214#143#213'd'#239#30#189'n'#206#145#1'~'#159#228#248 + +#175#214'F'#15#174#180#251'w'#243#2#252#200#244#131#221#15#240#195#238#127',' + +'!'#191'{R'#223#15#27'n{:'#157#14#136#0#160#194'%''e'#247#31#245'r'#31#251'w' + +'W'#243#3#200#28'@3'#209'Md'#10'*'#237#16#196#26'$'#176'J m'#141#23#181#205 + +#187#253#213#183#136#4#2'm'#207#11#9'p'#4#160#201#230'@D'#234#170#213#4#156 + +#181#23#11#17#24'M'#128'L'#2#21'j'#191#130'2s'#17#26's'#192'M'#30'2UEn'#163 + +#145'3l'#26'|'#232'F^'#10#226#8#224'M'#21#159#210#158'}'#137#239#187'i'#189 + +#218#230#215#128#207#13#248#173#228'_0'#200#217#241'7'#211#161#190#225#163 + ,#183#213#172#255'H'#146'|'#140#218#175'k'#251#187#209'd'#235'zw'#239'=m]d' + +#153'x'#252#145#236#3#240'#'#151#127'['#233'y'#253#24#252#216'F'#178#207'I' + +#198#251#15#27#167#253'('#151'R'#133'I'#11'h#'#25#136#180#128'K'#208#4'h'#31 + +'Z'#0'H'#0#164#176'B@lM'#147'x'#237'N'#127#245#19#169#23#198#218#179'/>'#1 + +#174#12#172#17#9'|L'#197#157'uM'#10#198#15'`'#192'/m'#198'=!'#2'_z'#10'('#19 + +'%'#16#231#160'2'#230#128#239#21#4'`'#174#214#139'>]'#241'y'#25'.'#234']sGl|' + +'O'#202'wm'#3#143#170#179#207'8'#250#0'f'#212#243'/'#28#240#27#231#31#175#167 + +'j'#240#240#7#164'ImK'#140'?'#209#196#145'j'#240#175#213'F'#247'/'#183#145 + +#226'k'#193#159'I'#154'/g'#250')]'#226#251'H'#230#245#131#228#199#164#30#143 + +'1'#171#207'|>'#31#31'w'#170#239'Q.'#227'i'#223'F'#207'8'#5#209'@'#4']'#132 + +#208'P'#212#9#15'"O'#224#138#201#20#4#9'$y'#220#189#189#191#250#214'BE'#245 + +#18#9#136's'#176's'#249#13#21'w/'#177'/'#192'3'#181#2#177#244#16#176'&A'#164 + +#253#2'b'#14#168#208'/'#146#134#140'i '#13'F'#172'F`'#175#152#163#10#156#159 + +':'#163#23'f'#148#146'xl'#171'.}'#140#193#159'i'#201'oc'#251#169'n'#226#1#240 + +'+'''#204#151'K'#190'>'#171#244'3'#241#250#211#177'\B'#127#201't'#162#6#247 + +#191#175#18#228#246'''s'#157#21#232#128#127#163'1'#184#189#217#28'>'#210#138 + +'F'#150';'#146#31'*={'#252#149#238#237#7#240#223#151'p'#223'cH'#254#197'b1' + +#186'v'#237#26#156#131''''#234#244#171#142#179#240#236'Z'#18#232't:1'#177'b' + +#157'.T'#27#149#131#232'$'#4#2'0$ '#173#198'A'#2#205'L'#133#237#219#253#181 + +'7gY'#220#214'}'#0#196#174#143't)qk'#243#150'j'#172'^'#215#146#222#1#189#217 + +'f-'#160#166#147#139'8Dh'#219#142#7#133's0'#240#10#141#192'I rs'#137#205'f~' + +#224'''='#225#10'?'#211#173'>'#175']'#130#142#248'h='#245#250','#191#178#185 + +#211#151#223#5#191#246#238#235#248#190'J'#181#202#175#4#176#156#155#159':' + +#246#254'\'#131'?'#183'j'#191'd'#242#17#25'$'#147#161#234#223#255#158'Ji]H~' + +#157#225#167#210','#191#220#217#255#201'j<'#217#21#193'o'#193#175#138#190'~' + +#166#190#255#1#164#191#132#254#30#163#190#159#198#168#209'h'#204#143';'#207 + +#255'9'#222#165#227'?'#15'S:'#140#162#161#241'x'#140#134#162#29#169#25#184'd' + +'4'#1#165#251#7#160#177'H'#143#174'X'#147#16#218#188#211'_'#251#216'8'#173 + +#173'x2'#239#160#206#254#211#18#191#190'rU'#181#214'oiM'#192#250#1'B'#157',$' + +'d'#224'I%'#161#138#138#190#2#166#152'Hq'#132#192#244#23#240#203#145#2#167 + +#243'P.'#161#195#234#21#245#202#127#158'q'#228'O'#220'='#179#195'{'#234#129 + +#167#255#238'|'#201#207#21#144#27#129#175#14#11#237'9'#133'<*-b'#251#197#162 + +#129#207#210#127#190#144'p'#223'B'#180#129#5#255'o>'#216'a'#155'?'#157#142'u' + +''''#31'Z'#148#128#223'#'#241#127#181#187#247#163'n8'#27','#3#191#210#225'>' + +#128#31'-'#188#31#144'&'#203#14'?'#228#248'#'#220'G'#175#27#161#200'G'#157 + +#146#211#239#131#222#157'c='#23#248#3'~'#252#227#31#251'h%F'#154'@'#195#228#8 + +'`V!'#164#12#131#8'h'#141#164'!4'#26#237#210'Uk'#17#240#234#247#6'k'#175#15 + +#23#245#13'c'#14'0'#17'DP'#241#145':'#220'Sm2'#9'PG'#224'K?'#193#2#252#142'6' + +#192#254#0'c'#14#232'm'#155'8Ti9f'#195#134#158#201'(tr'#207#171#253#7#204#173 + +'=KW'#250','#143#202#245#202#157#166#156'%'#208#27#162#200#164'eW'#150#29'H' + +#231'Ui'#1'z'#227#237'O%'#212#151#207#231#142#195'O|'#0'D'#2#147#221#219'j' + +#178#253#158#222'w$?>'#223#167#15#184#222#219'{'#167#21#204#199'K'#192'ob' + +#253'h'#234#137'4_+'#249#233#153'}L'#160#223#165#231#23'5'#0' '#137'3'#1'~' + +#231'2'#159#153#193'$'#240#189#239'}/@x'#16'$@Z@W'#26#137#184#154#0'"'#3#235 + +'('#28#162#27#129#18#227#248#254#160'wko'#222#188#234'['#245']k'#2#200#26#244 + +#227#26#153#4#31'Q'#181#206#166#150#248#174#244#23#223#128#206#17'0'#249#2 + +#129#205#30'TN'#6#161#237'@'#236#251#5#1'8m'#201#221#26#3#235#164#170#22#27 + +#157#181'+~F'#134'Wr'#228#185#155#249#1#240'k'''#159'H'#251#180#144#250#165 + +'t^'#168#251#137#238#215#175#9'@<'#254#226#237'7'#26#0#19#0#166#233#154'N' + +#213#136#164#254'|'#180#171#227#251'IR'#2#127#160#146#217'K'#221#221#31#214 + +#131#197'T'#192'o'#28'~F'#242's'#129#15'r'#252#209#220#3#146#31#26#0#212#254 + +'('#138'v'#7#131#193#136#180#218#19'M'#243'='#210'u?'#237#19'XvN&<'#184#181 + +#181#21#211'Ek'#208#5'4$'#128'lA'#180#24#135')'#192'$@'#251']'#248#4#232'X' + +#237#209#168#243#210#246#180'}SO8bH@2'#0#137#8#234#189#171#170#185#241'*'#131 + +#222's'#181#129'H'#147#129'''-'#199#149'q'#14'F'#21'm'#192'u'#16#154'z'#2'&' + +#3'eg)'#202#29'2p'#181#255#220'!'#133#15'f'#26#188'(C'#210'u\'#137#159#23#181 + +#249#202'sT}'#199#201'W'#168#249'"'#245#197#214#231'2'#222#180'p'#242'1'#232 + +#165#148#215'z'#252#141#234'/'#170'>'#219#254#201'B-'#250#187'j'#184#245#14 + +#29#27#219#200#128#174#229#151#137';'#189#249#228#165#238#222#15#185#170#143 + +#235#8'l'#168#143'S|'#149'd'#249')'#237#224'C'#184#15'R'#255#1#212'~'#178#249 + +'w'#233#249#29'6'#155#205')i'#183#201'iz'#252#151#141#179#250#4#150'H'#160'A' + +'c2'#153#160#145#8#155#3'B'#2' '#3#209#4'T'#151#128#136#190#131#181#253'Yc' + +#243#225#168#251'Z'#166#194'PKn'#169'!'#8'C1'#9#186#164#13#188#193#213#132#0 + +'>'#28#129#158'D'#4#220#16#161#155'9'#168#156'Z'#2#229#18#129#231#23#179#22 + ,#251#198'I'#232'j'#3'E'#30'a'#238#148#25'z'#213#146#195#3#153'mg'#245#182#188 + +#223#187#249#4#127#134#233#191#167#156#198#28'|'#188#2'zP'#168#3'~'#211#173 + +#135'U}'#9#239')'#167'O?'#188#245#249#28#251#11'+'#249's)'#238#201'%'#207'?' + +''''#240#143'wn'#171')-'#153'y]*R_f'#238'iG'#147#237#171#173#253#219#129#151 + +'&:'#151'(3e'#189#240#246'3'#248#149#206#242'CO?'#246#248#195#230'G'#168#15 + +#224#167'eH'#166#236#20#177#254#179#6'~}'#205#207#238#176#133'C'#4#254#136'.' + +'b'#147'L'#130'.H@:'#10']6'#225'A%$'#128#16'!H`'#158#133#237#187#131#222#235 + +#179#172#214#230'y'#3#140'o'#192#132#10#163#186'j_zM'#197#221#205#2#248'f1'#4 + +#16'W'#142#7#186#211#144#178#243#19#6'em@'#26#143#148'#'#6#158#149#244#172#29 + +','#137#30#152#249#11#142'zG'#206#204#147#227#222#168#167#189' ?'#252#128'i' + +#197#229'y'#14#248'3'''#150#175#28#27#223'Q'#247'y'#31#182#190#27#222'K'#11 + +#137#159#27#208''':'#181'7/'#145'@'#194#245#19'#'#146#250#243#225#142'h'#11 + +':'#188#167#138#30'~'#217#165'F'#255#246'Zc'#244#152'S{%'#212#167'tz/O'#223 + +'-s'#248'A'#237'7'#137'>'#15#207#19#248#143't'#239'N'#251#252#12#9#244#251 + +#253#184#213'j5'#232#226#162#197#248#154#132#4#225#16#188#12#173'@i'#18#232 + +'1'#9'('#175#158#7'~'#252'p'#208#189#185'?o]-'#146'|t'#184#15'&'#129'oL'#130 + +#245'W'#8#236#177#205#9#240'L'#5'a'#172'5'#6#171#9'p'#10'qPT'#21#210':'#15 + +#220')'#202#140'V'#224#21'D'#160#138#237'"JP'#172'K%'#200#206'f^9'#236'='#235 + +#173'z'#158'w'#245#153#31#215#188#152'>'#219'='#149#188#188#145';/'#178#245 + +#249'n'#18#143#177#243'MG^'#145#250'*u$'#191'c'#235#27'/?'#219#237#12#244'E' + +#161#254#207#11'R'#192#255#23#240#242'?'#254'!i'#1#19#177#247'u|'#223'|n'#228 + +'/&'#215#218'{?i'#132's'#174#229#23'G'#4#236'}'#147#222';'#145'P'#31#171#253 + +'J'#194'}'#178'F'#169#239#222'y'#0#127#233#254#156#209#193#231'W%'#1'd'#12'"' + +'Y'#136'.'#178'!'#1#152#5#151'0'#247#128#210'y'#2'm'#186#212'u'#146#184#241 + +'p'#222'X{0^'#185#149#145#236#215'@-'#155#4'H!'#6#9#196#157#13#201#7#144#136 + +#128#1#191')$'#10'+$ '#11#147#138'h'#6#156'N,'#145#130'\'#162#6'V'#27'x'#26 + +#17'8'#221#137'rG;'#240#202'^'#196''''#220#177#147#184#149#249#225#135'+'#167 + +'i'#140'{'#175#244'6'#167'<'#23#0'WO'#0'~^'#150#248#202#22#239'8N>c'#239#187 + +'v'#191#149#252#139#18#240'Y'#19#152'N'#213'd'#251#167'j6'#220'b'#130'@'#179 + +#15'+'#241'3=__'''#154'<'#190#210#234#223'!'#149'?'#205'm'#147'@]'#210#235'd' + +#248#245#165#178#15#222#254'G'#146#215#255'H4'#129'}8'#252'666'#206'<'#248 + +#237#253'9'#227#195#146#128#18#159#128#146'2b"'#130#21'h'#2#146'%h'#178#5'9Y' + +#136'$r'#155#192#211#160';'#23'''Y'#212#184';'#236#189'6Kk'#29'S'#0'd'#27#140 + +#8#184#163#214#26#19'APo'#21#17#1#167#138#208's'#251#10'<'#137#8#220#148'b' + +#153#194#220#134#14#205#196'%'#165')'#204#202'k7'#132'h'#230'4'#176#135#14 + +#132#20#143'n:<'#151'q'#152'*o'#156'v'#246#144#145#236#230#127#249#146#216 + +#189'~'#157#14#227'I'#230#158'!'#2'k'#227'/Q'#247'S'#145#248#2'|'#181#208#149 + +'|J'#236'w'#215#222'7'#206'?E'#251#147#254'=5'#221#189#173#19#127#210'%*?}' + +#209#229#198#224#189#149#198'h'#199#203'MI'#143#14#243')'#1'?'#173#199#180 + +#223#151#154'~4k'#132#196'GE'#31#182#183'I('#161#145'''{'#251#201'\=s'#14#191 + +'e'#227'<'#16#128'=OC'#2#251#251#251#17']'#228':]x'#174#29#136#162'h'#157#246 + +'a'#6'\'#18''''#225#134#212#14'th'#27'}'#4'b'#210#0#162'G'#195#206'K{U'#147 + +' '#212#201'C'#138#171#11'#U'#235']S'#245#181#27#156'M'#200#14'@'#199#4#0#1 + +'(''Dh'#136#192#148#24'+'#153#181'X'#249#229#198'#'#182#21'Y%'#179'P'#231#15 + +'-'''#3#207#209#255#139#222#4#166#151#161'{UN'#136#4#170#143#176#19#182'+m' + +#229#5'Y'#149'CxN'#165#158#27#198'3N='''#150'oA'#159#154'm'#0'>#b'#0#160'u' + +#17#143'Z'#20#13';'#173#199'?IJ>'#0#132#0#147#209#158#154#236#252'D-&'#131'B' + +#213#135#169#128#207'pU'#254#238#238'O'#234'^2'#245't'#229'@'#213#211'?'#147 + +#22#222#168#234#219'q'#193#15'O'#127#24#134#232#235#223'_,'#22#227#25#141#243 + +#2'~'#140#243'B'#0#246'\'#221'<'#1'8'#252#232#194#183#232'p'#143'.'#254#186 + +'8'#7'A'#4#156','#132'V'#227'$'#129';$u'#27#180'_#'#240'E'#131'i}'#237#193 + +#164#247'j'#150#235#249#7#180#147'0`'#21#222#244#16#132'Y'#208'X{'#133#139 + +#138#188#208#137#6#200#220#3#134#8'4q'#4#162#29#136'&`{'#13'8]'#137#131#138 + +#163'P'#8#161'hF"'#19#152#28'H76'#161#195#162','#185#240#15'T='#3'G'#200'1' + +#248#160'%'#203'y^yi'#25#240'z'#229'4'#218'TE|'#159'%'#189#153'l'#195#190#230 + +#160#154#207#246'~'#154#149#218'r+'#150#250#153#6#173#0'_'#137'='#175#164#131 + +#143'2'#4#144'h'#239#127':''u'#127#231']5'#239'?'#210#173#186'L'#26'p'#146#10 + +#209'h'#149#31#149'|'#151'['#253#187'P'#249'9'#188#143#254'}'#160'!m'#239#219 + +#24#191#1#191#210'e'#189#15'e'#198#222#199'R'#207'? '#1'4>K'#25'~G'#29#231 + +#137#0#236'9'#155#180'a'#218#142#26#141'F'#13#17#2#164#7#27#231#160'8'#5'/' + +#217#218#1#29'&'#132's'#176#6#147' Sa'#252'h'#220'~'#169'?onz@'#166#137#20 + +#216'f!Z'#226#195',h'#192', B'#176'R'#223#1#188'Bd '#22'B'#16'M@9'#25#132#214 + +'I'#24'>A+8'#204'GP'#154#242#188#186'v:'#26'['#13#193#161#130#165#190#130'CB' + +#143'O'#200#187#183#160'.%'#224#23#26'H.'#234'})Q'#199'%'#0#215#147'/'#158'}' + ,#163#226#219'p'#158'q'#240'Y'#208#167'b'#231';'#158'}l'#11#192#181#202#175 + +#215':'#175#223'8'#2'%vO'#235#217#222'}5'#222#131#186'?'#211#199#229'3y'#157 + +#167'"'#245#147#201#149#230#254#237'f<'#27'z'#26#247'8'#15#146#250'%{'#223'&' + +#248#208#178'C'#210#254'1'#9#153'G'#210#213'g'#155#128#191'K'#160#31#160#149 + +#23#13#152#8#231#10#252'K'#158#138's3,'#9#208#197#15'k4'#200#12'h"B'#16#4#193 + +#170#227#23#128'F'#0#18'X'#5'A B &A'#148#19#196''''#139#176#253'p'#178#242 + +#202','#141'ZE'#235#240#162'('#200#147'9'#10'k'#221'+'#170#182'rM'#5'h'#162 + +#17#154'y'#8#3#199#28'pM'#3#9#17#134'RK`'#10#140'l'#14'A Z'#129#201'$t'#218 + +#146'U'#137#160'j*'#148#202#146'+'#21#137#21'G'#162';'#242''''#146'A'#165#216 + +'f'#217'c'#235'Jw'#222#168#172'e;7'#137'<'#153#27#190'3'#137'<'#142#164'wc' + +#249#2'|'#29#203'/'#192#175#137#192#9#241#217't^'#13'r'#237#3'H'#10''' -'#139 + +#225#14#219#249#9#171#251#186'I'#167#146'L>'#179#246#232#207'j}t'#127#189'1x' + +#228#177#180#207'3'#147#214#171'$'#190'O'#203'\j'#249#135#226#233#135's'#15 + +#210#30#249#252'['#178#191'O'#207#220#160#223#239'O'#187#221#238#156#8' =o' + +#224#175'>'#9#231'm'#148'J'#137'I'#19#136'%u'#152#157#131't'#140#181#1#144#0 + +#250#11#210'z'#141#253#2#202'k#}'#152#182'czDc rw'#218#186#180'=m_'#207'H' + +#164#235#226#31#237'$'#132'fP'#168#249#145#170#181'/'#169#6#17#129#31'7'#180 + +#244'7j'#191'k'#14#24#127'@'#224#164#17#187#166#129#201'!p'#29#133#198'<'#176 + +#4#224'W'#18#139#180'G'#192#246'.'#180'='#11#141'iP'#152#3'n'#194'Q'#217';' + +#239#29'XU"s'#202'Az'#217#181#144#187#161'='#137#215#231'y'#197#214#151'B'#29 + +#163#226'gy'#145#167'oSu'#139')'#183'\'#201'_H'#253#20'M5'#197'VO-'#9#184'a' + +#190#220#170#251#198'!H'#18#127#184#173#166'{wU:'#27#22'f'#129#11'~'#241')' + +#180#162#217'.I'#253';'#152#156#211'C/`}n'#172#242'+'#221#187#207#228#244#143 + +#140#167#159#182#183#197#219#191'Ej'#254'6'#9#24'h'#2'}'#147#215#239#244#241 + +'3'#192'?7'#224'w'#30#135's;,'#9#16#1#4#8#19#18#27#195'9'#216#154#205'f=h'#3 + +#244#127#244#26'D'#171'1h'#2#240#11#160'r'#144#211#135#17'% '#192'D'#244#17 + +'A'#146#249#241#163'I'#247#230'`'#214'X'#247'l'#241'O'#1'^?0 '#142#184#166#0 + +#206'B'#244#211'3'#166#0#167#13'['#208#23#161'A'#27'!'#136#180#244#207#131 + +#224'@wb'#235'#p*'#15#11'"P:'#164'h'#211#139#165']'#153'*L'#4#151#24#150'^"' + +#175'r'#197#170#26#192'!'#14#190#18#15#184#245#246#216#204#242#146#189'o5'#0 + +'7W'#223#128#221'z'#244#141#202'/'#246'~'#166#167#219'V'#226#228#179#128#183 + +#29'{'#202#224#183#197'='#236#253'_'#168#217'`K'#205#246#239#17#240#199#146 + +#16#148'X'#147#1#251'J:'#246'D^2'#187#212#26#220'n'#215#166'}'#248#28'<'#143 + +'U~V'#252#233#146#177#163'Oz'#247'Me'#178'Nk'#239'C'#237#151#153'{9'#190#15 + +#149#159#20#206'1b'#252#245'z'#29#164'a'#234#249#237'U:O'#227#188#19#128#249 + +#13'H'#24#194#154'#'#4'p'#14#18#1'4E'#27'X5'#190#1'!'#1'6'#9'h'#191#7#191#0 + +'m'#195'A'#8'm'#128#222#231#251#163'$'#238'>'#28'uo.'#178#168#233#154#5#202 + +'I+V'#226''''#136#219#27#170#222#187#174#130'F'#235#160#212'7'#170#191'C'#4 + +#134'L'#148'K'#2#2'z'#229'U'#157#133#14')x'#166#10'Q9~'#130'J7cq$'#30#152#241 + +#232#176#154#3'[m'#231#188#196'm'#180'a6'#189'B+'#240#158#2'zW'#213#247'*' + +#222'|'#29#215#207#172'Df'#7'`R'#168#251#158#1'}'#226'H~'#163#13'd'#134#8'2' + +#142#223#207#6#143#24#248#217'bb'#237'~'#227#216#203'\u'#159#132#252'J}'#252 + +'p'#179'9x'#224#209#142#199#165#130#224#29#218'f%'#198':'#250'f'#210#187#207 + +'t'#238#133#167#223#130#31#19'v'#160#137#7#254#143#254'}'#163#209'h^'#241#244 + +'+u'#14#193#127#200#147'q.'#135#141#16#160#156#248#214#173'['#225#214#214'V' + +#141#14#213#137#173#17'*'#236#145#250#134'b'#162'u''u'#24#251#200'#hC'#27#160 + +#237#26#251#6''#199#245'3'#201#231#183'R'#159#22 + +#19#226'c'#149#31#160#199#2#149'_'#8#1#29'|'#198#244#182')'#217#253' '#140 + +#132#180#206#236'<'#132#249#142#4#156#23'h'#176's'#240#219#223#254'6'#251#5 + +#232#166'E'#4#234':'#28#132'259'#155#4'XD'#27'0$'#208#165#183#146'>'#175#26#4 + +#167#24'f'#1#129'='#160#199'%'#220#157#183'6'#247'&'#173#203#137#10#226#3'D' + +#224#23#246'>4'#130#176#209'!'#173'`'#147#8'a]'#249'a,m'#198#140#3#240'0'#167 + +#224'!'#5'F'#146'3'#224#149'|'#3#166#23'A1'#169#137'%'#2#153#224#196'LuV'#10 + +#18#10'7'#148#156#132#14#3'xF'#210'Wd'#153#145#246#7#28'{N'#252#222#149#252 + +#182'B'#207#237#200'c'#192'/'#132#160'\'#167#159#149#242#142#211#207#233#224 + +#131#255'-'#166#251'j1'#220#162'e'#155'I w'#205#128','#147#150'_'#236#220#195 + +'~'#222#138'g'#187#27#141#193#131'Z'#184#152#150#212'}'#199#214#151#182']' + +#166'c/l'#249'}i'#226#193#158'~Z?Fl'#159#164#252'>='''#3'2/'#199#244','#205 + ,'{'#189#30#192#127'n'#237#253#165#128'9'#237#19'8'#166#223'T2'#9'h N'#211'di' + +'O'#128#167#155'j'#137'@'#204#3#236#19#9#168#14#1#174'A'#251'u:'#30#25#179 + +#128'@'#21#236#205'Z'#27#187#227#230#229#133#10#235#218'F'#247#203#211#141#17 + +#1'('#223#183'ZA'#173#177#170'""'#131#176#185#162#163#4#230#181#142'3'#208'H' + +'~'#255'0-'#192#152#8'&'#147#208#248#7#248#23'V2'#12#221#28#130#220#137#12#8 + +#27#152#196#220#131#209#130'Jz'#174#167#172'j/'#255'V'#226#245'+Iyc'#227#27 + +'{'#223'4'#227#176'Z'#128#1#186#172#165#192#166't'#220'M'#237'u'#215'('#203 + +#157#13#31'3'#240'S'#132#242'2'']W'#166#220#206'e'#209#192'O'#243'vm'#182#189 + +#217#24'>'#140'|H|'#28#23#191'>'#171#251#220'%'#208#205#232#227#240#30#242 + +#249'i'#189'/'#237#187#182#205'"'#206'?'#28#199'k'#166'F'#229''''#205'2;'#207 + +#246#254'a`y'#17'G'#201'$@'#168#176#213'j'#197#2'lT'#12'v'#197#25#184'J'#140 + +#143#232#0#22#248#5'D'#27'P-!'#2#152#5'a'#206'd'#128#174#225#190#191'7k'#174 + +#237#142'[W'#230'y'#216#176#206':'#3'|'#207'H'#242#162#2#17#154'@'#212#222' ' + +#173'`C'#5#141#142#227#252#11#184#231#160#231'8'#2#139#168'@u'#10'3'#207#2 + +#222'F'#5#2#209#4'\'#237#192#151#144#161#149#252'U'#7'`%'#159#192#12#183#149 + +'6'#239'+'#235#28#176#213'zF'#229'O'#171#234'~&fA'#230'T'#234#21#206'?~'#189 + +#209#0'*a'#191#18#9','#230'j6'#218'f'#208''''#211'A'#161'!'#152'L@'#199'l0}' + +#0#16#210#235#198#147#199#27#4'|x'#246'M'#190#241#19#212'}k'#235#211#210#151 + +#238'='#12'~'#186#207#144#254#216#222#15#130#128#19'{h'#153#145#244'_ '#196 + +#247#162#168#252'K'#129#242#2#15'k'#18' J'#128#178'b'#186#185'54'#25'!R@'#227 + +'Q'#152#5'+ '#1#133'Y'#137'5'#9'@'#27#232#209#210#17#179#160#238'{~Lk'#16'A' + +#8'"'#240#9'}'#251#179#250#234#206#164'ue'#150'!'#135#192#128#177#144#218#5 + +#176#3'K'#10'a'#212'Tq'#7'Z'#193#154#10'j'#141'2'#184#157#210'bo'#9'!'#184#9 + +'C'#133#25#224#21'~'#2'''R`o'#173'u'#11'H'#180#192'M$'#146'W'#185'~'#128#210 + +#172#185#178'*'#194'}'#174#244#207#156#233#180#225#240#203'd'#178#205#138#183 + +#191'*'#245#179#188#18#1'H'#212'b'#178#175#230'P'#241#199#187#156#216#147';6' + +#189#251'~K '#244'}>1B'#183'6f'#224#7#200#15'6'#192#231#138#221'2'#240#149#6 + +'?'#128#143'N'#189'#'#201#229#223#23#240#195#185#135#25'y'#25#248#240#240'+M' + +#14#211'N'#167'3G'#3#143'7'#223'|'#243#133'R'#249#15#0#228#180'O'#224#132'~#' + +#155#4#208#6'h;Z]]'#141#160#13#200#140'D0'#11'z'#162#17#172#233#244'aM'#4#180 + +'&'#18'Pm'#186#235#220'l'#4'&'#129'o'#136' '#131'F'#224'y'#195#164#209#219 + +#153'4/O'#211'Z'#7#200#180#192'tH'#160'4'#231#128#152#0#232'I'#16#212'z*jt' + +#201#168#232#210'~'#173#210'[`I'#231'!G'#213'/'#171#254'x'#173#18#159#128#241 + +#234'{'#182#152#168#8#4'x'#149#181'*7'#222'PE'#218#190#178#13'8'#157#146#221 + +#204#13#241#21#234#190'w'#192#23'P'#201#233'7'#145#0#2'v2'#27#170#20'v'#253 + +#164'O'#219#131'"'#219#207'x'#239#197#137#231#153#254'~v;'#231'p^'#167'6'#217 + +'^'#175#143#182'|'#143'sy'#213'2'#224';'#237#185#173#147'O'#233#9':'#160#214 + +#239#25#240#3#248'$'#12#246#200#222#135#3#16'z'#254#132'l'#253#217#139#230 + +#232'{'#26'8>,'#227#128'6P'#171#213'bz^0G'#22#166'*G'#159#129#30#28#133#240 + +#17#28#212#6'T'#211#152#5#4#180#18#17'(.'#25#11#163#253'yc}0k'#172#205#210 + +#168'Y'#0#180#172#198#27#245'>'#247#202#196#0'B'#8#27'+*'#170'wT'#0'B'#128#19 + +#209'!'#0#27#14#148#162#162'jc'#210#146#9#224'4"'#177'w'#185#218#140'D'#194 + +'~n'#233'n)'#12#232'j'#2#198#9#232#168#251'n'#184'/'#207'+I?yA'#0'H'#206'I' + +#166'}'#150#244#201'tH'#255'J'#10''' '#155#20'i)4'#200'Q'#0'K&'#184#184'Y' + +#138#4#158#149#218'x'#167#25#209#135'i'#204#231#154#160#24#248#0'<'#235#252 + +'b'#231'/*'#234#254'H'#226#250#198#214'G'#136'oW'#188#251'}'#186#215'C'#168 + +#251#176#245'www'#23'd'#231'sl'#255#19#159#248'D'#254#162#131#223'yB>4'#163 + +#164#13#192'7'#176#178#178#18#17#25#208'f'#204'}'#6'h'#1#216#225'(\1'#218#128 + +#210#26#2#250#18'"'#164'h'#136#0'Y'#132'1a.'#160'g=dg!'#20'r'#210#11#166'i' + +#220#216#155'5'#215'G'#179#218'Z'#162#130#200'S'#5#25#20#146#220#169#7#240 + +#141#243#207#28#15#148#31'7Y;'#8#226#22'}B'#131#9#130#29#141#202'5'#3#156#181 + +#141#18#136#170#159#171#194'$'#200#171#209#1'U'#16#130#155#244#227'6'#222'4' + +#7#149#201#4#212'$'#192' u'#18'}'#12#232#177'dp'#188#211#146'/'#198'l'#199'c' + +#201#200'4/'#1#190#186'm'#181#137#204#250#20'`'#195'7'#195'y'#191'S'#159#236 + +'t'#163#233#158#199'I'#5'b'#143#232#188#131'Ll|l'#1#244#236#224's'#128#143 + +#134#29'#'#153#153#135#195'{'#198#222'7'#14'>'#216#249't'#175#199't'#159#167 + +'('#224'[b'#235';W'#224#197#29#31'6'#2#176#191#217'h'#3#155#155#155#254't:' + +#13'1S1'#252#3'0'#11#232#223'-'#178#7#225#12'D6'#225#138'8'#7'W'#196'y'#168 + +#157#132#158#215#164#199#177'A'#159'V;@'#4#30#224#166'Q:'#152#215#187#253'Yc' + +'}'#148#196'+'#185#22#233'V'#133'7)'#191'E'#135#225#162#243#176'K'#8#185#152 + +#0#164'x'#16#25#212#153#28#130#176#206')'#201'>'#214'd>'#148#10#139'J'#191 + +#244'`'#219#242'"G'#160#236#237#247'Jf@^$'#7#25'3'#1#248'K'#209'H'#19'@'#159 + +'p'#197']'#150#152#245#212#206#198#163#242#195#0#15#252'f%'#147#1#239'1'#251 + +#181'`1&'#21#127#167'GK'#232#193'!'#160'L'#237'0'#147'B'#154'iu'#223#177#241 + ,#171#18#223#216#249#3#1'?'#146'w'#0'~^'#144#194'K'#210#30#197';'#172#238'w' + +#187#221#217#214#214'V'#226'x'#248'_X['#255#176#241'a$'#128#210'o_f'#22#208 + +#225#26#217#130#28'6$'#2#128'F'#208's'#23#209#6#208'k'#160'm'#136#128#128#140 + +'(CL'#251#16#211'Rc'#204#157#238'|'#180'*O'#9#206#251#179#198#234'h^'#235'M' + +#211#168#157#230#162#25#24#199#158'r'#10#131'J'#132'`'#156#127#190'>ig'#187 + +#152#199#16']'#144#27'*'#8'"q:'#134'tX"'#17#158#164'"'#243#233#232#181'/Z' + +#134#150#190#137#216#218'R)'#151'9'#139's'#28#146#28#18#158'_'#207#225'7'#7 + +#196#182#196#183#240#1#184#0'W'#165#130' 1#8T'#167#242#154#191#24#213#163#249 + +#176'G*>Zn'#23#17#8#145#246'8'#3#2'>x'#18#206'}''o'#223#134#244#164'K'#207 + +#184#2'|'#187#208'=d'#224'#'#172#135'L>"'#2#246#238'#'#149#151#8' '#251#176 + +'I}w|'#152#9#192#140#3'f'#1'B'#127#244'p'#196#198'QH'#255'o'#9#216#187#244' ' + +#245#184#150#128#136'@4'#2'v'#20'*'#204'T'#164#188':4'#2')4'#10#173'V'#224'#' + +#29'E'#251#10#176#13#208#18#9#212#137#12#186#147'E'#220#157'$q'#139#224#16#26 + +'S'#161#232''''#232';'#205'D+'#246#190#152#2#150','#148#155'*l~'#150#252'@.' + +#30':$$'#232#216#255#182'EW'#169'1'#191#201#250'S'#165'\'#0'['#221#167#138 + +#148'`'#6'u'#166'T'#158'/'#7'<'#214#181' '#25#215#131#249#176#25#207#251#237 + +'h6'#242#149'8'#243'<61'#140'moA'#175't'#202'.'#24#133#213'|Y'#230#198#179'o' + +'T}'#19#211#151#5#158#254'>'#128'OD>'#140#162'h'#12#137'O'#199#167't'#127#23 + +'t<'#249'0'#170#251#203#198#5#1#20#195's'#205#130';w'#238#4#198'?'#128'9'#7 + +#232'!B'#205'@'#203#241#19#244'$'#140#200'k'#248#7#20'"'#6'9W'#26#214#161#209 + +#18#216#17'm@BQ'#24#248#30#200' '#160'c>'#180'^F'#165'/'#229'<'#244'wL$@'#132 + +#208#153'.'#162#206'4'#141#219#153#14#8#138#237'^T'#4#22'e'#194#170#168#10'T' + +#254'R'#240#219#191'U'#207#127#241#207'J'#246'_'#197#7'`Gn'#205#0#3'z'#183 + +#145'g'#225'G(^g'#0#31#251#201#164#22#206#135#173'h>h'#147#164#15#252'4)^c' + +#153#197#128'^Y'#21#255#160#180'/'#169#250#144#248'p'#224')'#1#187#164#242 + +#150#164#189#1'~'#171#213#154#141'F#'#246#236#147#169#151'~X'#213#253'e'#227 + +#130#0#202#227#128#127#192#16#1'=H'#28':'#164#127's2'#17#173'['#244#0#162#216 + +#168'+'#26#129#171#13#176#143#0#175#229#228'#'#223#135'Ya'#200' 8@'#6#128#174 + +#158'`'#132'a'#142'|<"'#132#246'x'#17#183#146'4'#168#207#179#176#190'H'#131 + +'Z'#170#160#219'k'#251#221'8'#245#140'K'#191'T'#13#184'$'#239#223#141#8#228 + +#203'~t5'#20'h'#134'['#251#239#185#210#221#253#191#6'n'#228#167#211#208#207 + +'fQ'#144#204#234#225'bL'#18'~'#16'.'#3#188#233#18'"'#182'C'#174#127#145#168 + +#248'E'#214#30'-'#11'g'#218'-'#171#234'+'#157#190#203#224#167'{'#224#18#192 + +#144'#'#179'I'#194#210#254#2#248'O'#31#23#4#176'|,%'#2'Z'#135#244'@'#177'F'#0 + +'`'#211#186'I*f'#139#236'J'#214#10#132#16#12#9'X"@'#19#18#218#6'y'#212'@'#6 + +' '#2#218#14#133#12'|'#218#151#194#2#206#177#169#16#130#178#128'N'#179' '#154 + +'fQm'#158#16')'#164'!'#19'C'#146#250#181'E'#22#214'r'#195#2'y'#17#247#207#221 + +#219#235#29#248'y2'#242#165#155#252#170'R'#11'0'#253'7'#240#178'E'#236#167 + +#179#200'O'#166'Q'#152#206#226' '#153#214'BZ'#252'd^'#10#31#28#4#188#212#222 + +#235#20']Ro'#178#220#168#19#185'JM'''#30'U'#150#246'('#207#157'J?>'#11'|'#168 + +#251't'#157#135#0#191#0#30'j>&'#221#132'I0E'#6#159#249#172'%'#192'_'#242'K?' + +#188#227#130#0#158'<'#150#18#1'|'#4#237'6'#201#183#217#140';'#20#19#1#160#203 + +#144#169'5h'#201#186'm'#246#141#198#0#243'@i'#13#2#4#2'2`"'#144#133#181#2'!' + +#4#175'B'#8#162#229#235'F'#0'E*'#191#201#243#247#2'"'#129'('#205#252' '#205 + +#149#159#229'~'#0#19'"'#203#184#160')'#160#181#143#207'&'#158#241#233'8'#142 + +#249'x'#15' '#233'{y'#202#139#162'Wy'#10#219#153'g'#142'y'#244#137'~'#158#6#4 + +'N'#218'N#?K0C'#14#127#181#237#249#167#247#204'1}Z'#185#20#11'j'#213#222#145 + +#240#12'B'#237#197#183'q{+'#237'Mi'#174#210#192#159'HW'#158#145'*'#128#15#169 + +#143#184'='#239#147#186#143#10#189'1'#173'!'#241#209#140'snl'#252'G'#143#30 + +'e'#23#192#127#250#184' '#128#163#13'K'#4#223#253#238'w=4%'#5#25#208#161#144 + +#164'N'#212'l6'#1'd'#214#10#232#129'lxz'#174'B'#180'('#3#240#153#4'h'#223#144 + +'C'#211#209#10'jB'#6#136#30'DJG'#16't'#20'A'#19#2#242#10#8#139#220#2'Dr'#130 + +#217'y^'#164#249#225#143#239#219'm'#140#220'sN'#250#224#207#240#14#252'#?' + +#176#225#202#240#138#242' '#249#0'z;/'#210#133'9'#25#152#147'!3'#237'P'#212 + +#21'x'#158#199#217#3'.'#224#233'X"'#221'vy'#150#29#167'@'#7#224#7#152'a'#223 + +#143' '#229#165' '#135#215't|'#4#208'C'#210#3#244#240#230'c!'#2'^'#192#171'O' + +#199#211#11#224'?'#219#184' '#128'g'#27'%"@'#212#224#210#165'K>I'#164#144#30 + +'D&'#3#180''''#4#168#145'a'#8'2'#192#2'2P'#152#202#220'Y'#132#8#140'i'#192 + +#230#1'k'#5#30';'#14']B`2'#160'c'#1'b'#8#162#29'0'#17#152#22' '#24'y'#145#223 + +#167'r'#183#11'`'#165#17#192#129'y'#9#151#254'J'#227#225'We'#253'_)'#227#164 + +#211'h'#215'L$'#130']'#25#231#157#150#242#136#238#231'6Vo='#248#6#240'R'#142 + +'k'#194'x'#0#255'd'#137#212#231'E'#18'vX'#189#23#21#127#14#208'c'#166']'#196 + +#241'WVV2x'#245#137#148#243#11#224'?'#219#184' '#128#247'7l^-'#194#135#244#16 + +'z'#198'<'#160#135#18#128'E'#143'B6'#17#224'/'#160'}'#16'B'#131#164#22#8#129 + ,'5'#0#172'}'#157'Q'#216#144'F'#165'L'#4'R'#177#200#239#177'D'#160#29#136#161 + +#199'A}'#144#129'v '#210#182#246#31'(]'#151' '#219#170#152'}'#132#165's'#209 + +'4'#200#156#244'!, '#160'Vy^v'#3'j'#183#164'W'#184#253#10'U>7'#157't'#217#129 + +''''#222'{'#165#165#188#5#190'S'#127#207'^|'#165#165'=/p'#236#161#209#6#253 + +'~'#168#243#19#172'%'#166'?!'#160'c'#31#196'0C=>'#169#247' '#142#132#142'!y' + +#7#128#207#156'8'#190#156#253#5#232#159'e\'#16#192#7#27#150#8#240#0#186'Z'#1 + +'I'#168'`gg'#7'R;'#132#137#0#243#20'd'#0'p'#139#218'_'#23#240'#'#215#192#128 + +#159'5'#2'G30D`4'#3#215'g`'#9'Ai'#13#1'$'#16'pI?'#231#28's'#242#156'''`'#247 + +#12#17'('#19';8D'#19'p'#192#207#0'/'#8'AK~'#165'{'#230#27#213'>'#173#0#222 + +#196#233#141#138'o'#156'y'#0#191#241#228'O'#5#220'v'#27#199#1'~'#243#127#168 + +#245'x}'#20'Es'#0#31#210#30#234'='#17'jz'#227#198#141#20#160#135#180'w'#242 + +#245#249'|O'#251'a8'#143#227#130#0#158#223'8'#160#21#12#6#3#175#211#233#4#180 + +#248#244#0#179#153#0'I'#14'S'#129#30#234#152#30'n'#164#31'C'#202#215#232'X' + +#141#142#25'S'#192#152#5#150#4#232#189#186'eY'#161#21#132'UBP'#154#20'x'#246 + +'$!'#4#156#147'/'#224#247'DK'#176#219#149#243#182#170#188'2'#210#221#181#225 + +'s''>/'#210']z'#234#25#208'/'#28#208'W'#213'|+'#245'E'#221#231#181#144#194#12 + +'*=IwH'#249#5'@O@_'#200'g&'#0'=T|c'#219#11#232#205'y'#186#235#139#241'>'#198 + +#5#1#28#207'Xj"'#208#218#7#25'@3'#160#7#157'M'#5','#4'nL'#127#142#233#206'"' + +#151#16'|'#157'?`4'#6#248#22'P'#189#24#11#17'D'#134#16'@*'#244#186'RD'#1'D@' + +#175'E'#196#194#19'2`"'#192#182#28#243#212#146'x`'#201#142'/'#0#159#27#21'_' + +#21'j=7'#212#196'B'#223#195#192#167#207#157#211#246#1#2#192'B'#191'k'#230#2 + +#158#200#14#210#29#239'Y@'#194#131'H'#232'xj$'#189#1'=]'#175#188#162#226#187 + +#235#139#241#1#199#5#1#28#239#176#215#215'8'#14#141'f'#0'3aoo'#143#9'!@i'#218 + +'`'#16#192'l'#160#151#134' '#3#172'A'#8' '#7':'#206'k'#128#158'^'#202'k9'#30 + +#154#227'J'#252#4#202'1'#13#180'I'#192'f'#128'oH'#0#231#148'!.X'#144'@q'#178 + +#5#208'sQ'#237'-'#240#177#166#247'X'#201#175#196#161''''#4#176'0'#251#134#0 + +'d!<'''#6#228#144#236#176#223#23'Fk'#0#224#137#3#210#181#181#181#148'~?'#212 + +#250#140'L'#168#28#160#191'p'#232#157#204#184' '#128#147#27#165'D\'#233'Y' + +#168'@'#8#208#12'n'#222#188#233'-#'#4#12#2'M '#160#14#5#212'au'#219#172#149 + +'&'#14#214#0'0'#0'v'#1'k6'#155#217't:'#205#232#156#243'e'#18'~'#9#224#171#219#23#227#152 + +#199#5#1#156#141'Q'#186#15#198'\'#192#182'1'#25#8'H'#30'H'#129'H'#192'#py' + +#134#24#8#148#30#200#129#128#232#25'r'#160'}'#143'@j'#23':'#206#128#199'6>' + +#19#219#4'V'#187#141#181#207#253'L'#148'"'#0#27#192#243'>}/o'#155#133#190'?' + +#7#208#137'Dr'#128#156#190'+'#235#247#251'9'#129#222#2#29#146#189#221'n'#231 + +#6#236#248#156#11#192#159#205'qA'#0'gsT'#239#139''''#192'Q.1`'#13'r'#184'u' + +#235#150'7'#28#14'-9'#224'8'#8#2'k'#179'O'#192#230'5'#8#3#235#245#245'u'#187 + +'m'#6#128#140'5Iy'#11'J'#2';o'#3#220'X?~'#252'8'#199'6@'#142#253'e@'#199#250 + +#16#176'/'#219#191#24#167'8.'#8#224'|'#141'e'#247#235#0'9`'#24#130'0'#3'D' + +#177#236#3#161'Y`]'#175#215#15#0#211#128#218#29#6#224#24#0'9'#214#135#0#253 + +#176'c'#23#227#12#141#11#2'x1'#198#179#220#199#163#190#246#168#224#189#0#249 + +'9'#30#23#4'p1.'#198#135'x'#252#127'p'#251'ut'#3#215#244'"'#0#0#0#0'IEND'#174 + +'B`'#130'('#0#0#0#128#0#0#0#0#1#0#0#1#0' '#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0 + +#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#1#0#0#0#1#0#0#0#2#128#128#128#2'UUU'#3'@@@'#4'333'#5'III'#7'@@@'#8 + +'999'#9'999'#9'MMM'#10'FFF'#11'FFF'#11'FFF'#11'MMM'#10'999'#9'@@@'#8'@@@'#8 + +'UUU'#6'333'#5'UUU'#3#128#128#128#2#0#0#0#2#0#0#0#1#0#0#0#1#0#0#0#1#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#1#0#0#0#1#128#128#128#2'UUU'#3'UUU'#6'@@@'#8'FFF'#11'III'#14'<<' + +'<'#17'III'#21'EEE'#26'DDD'#30'DDD"EEE%AAA''DDD)AAA+AAA+AAA+DDD)AAA''GGG$FFF' + +'!DDD'#30'==='#25'@@@'#20'@@@'#16';;;'#13'FFF'#11'@@@'#8'333'#5'UUU'#3#128 + +#128#128#2#0#0#0#1#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#0#0#0 + +#2'UUU'#3'+++'#6'999'#9'NNN'#13'CCC'#19'BBB'#27'GGG$DDD-CCC5DDD'#211'SC6'#219'W@0'#227'[>+'#235']<('#238'^<'''#240 + +'_<%'#243'`<#'#245'a;"'#247'a:!'#248'a;"'#246'`<$'#245'_<%'#242'^='''#240'\=' + +')'#237'Z=,'#233'V@1'#225'RD8'#217'NG?'#210'JHD'#204'IHC'#204'HHD'#204'GEC' + +#203'FEC'#202'EED'#198'EED'#195'DDC'#190'DDC'#183'DDD'#172'DDD'#157'DDD'#138 + +'DDDtCCC\DDDDCCC.@@@'#28'DDD'#15'III'#7'UUU'#3#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'UUU'#3'@@' + +'@'#8'KKK'#17'HHH CCC5CCCPDDDlCCC'#134'DDC'#156'EED'#172'FEC'#185'GFD'#193'G' + +'FC'#198'HFC'#202'IGD'#203'PE;'#213'VA0'#227']<('#239'a;#'#246'd9'#30#254'g:' + +#29#255'g:'#30#255'i<'#30#255'j='#31#255'j>'#30#255'k>'#30#255'l?'#31#255'l@' + +#31#255'mA'#31#255'nA'#31#255'm@'#31#255'l@'#31#255'l?'#31#255'k>'#30#255'j>' + +#30#255'j='#31#255'i<'#30#255'g:'#30#255'f:'#29#255'd9'#31#252'`<#'#245'[=*' + +#236'UA3'#223'MF?'#210'IHC'#204'HFD'#204'FFC'#203'FFE'#200'DDC'#197'EED'#191 + +'DCC'#182'DDD'#170'CCC'#152'CCC'#129'DDDfDDDKDDD1FFF'#29'@@@'#16'III'#7'UUU' + +#3#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'UUU'#3'II' + +'I'#7'@@@'#16'@@@ FFF7DDDRCCCoCCC'#140'DDC'#163'EED'#180'EED'#191'FFC'#198'I' + +'GD'#201'ME?'#208'UA2'#224'\<('#238'b9 '#250'f:'#29#255'h;'#30#255'j>'#30#255 + +'m@'#31#255'oB '#255'qD '#255'sF '#255'uH!'#255'|L#'#255#128'O$'#255#133'Q%' + +#255#136'S&'#255#139'V'''#255#143'X('#255#145'Y)'#255#142'W('#255#139'U''' + +#255#135'S&'#255#131'Q%'#255#128'O$'#255'yK"'#255'tG!'#255'rE '#255'pD '#255 + +'nA '#255'l@'#31#255'j='#31#255'g;'#30#255'e9'#29#255'a;!'#247'Z=+'#234'RB5' + +#221'JGC'#207'HFD'#204'FEC'#203'FFE'#200'EED'#196'DDC'#189'DDD'#177'CCC'#159 + +'DDD'#135'CCCjBBBMBBB2FFF'#29'III'#14'UUU'#6#128#128#128#2#0#0#0#1#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#2'333'#5';;;'#13'BBB'#27'AAA3BBBQDDDqDDD'#142'EED'#165 + +'EDB'#183'FEC'#194'HFD'#200'IFB'#205'SA3'#223'^;&'#242'e8'#29#255'g;'#30#255 + +'j>'#31#255'mA'#31#255'pD!'#255'tG!'#255'~M#'#255#141'W('#255#151']*'#255#160 + +'c-'#255#169'i0'#255#178'n1'#255#181'q2'#255#182's3'#255#183't3'#255#184't3' + +#255#184'v3'#255#185'v4'#255#186'w3'#255#185'v3'#255#184'u3'#255#184't3'#255 + +#183't3'#255#182'r3'#255#181'q2'#255#175'l1'#255#166'h/'#255#158'a,'#255#149 + ,'\*'#255#138'U('#255'zK"'#255'sF '#255'pC '#255'l@'#31#255'i='#31#255'g;'#30 + +#255'c8'#31#252'[<*'#237'RC8'#218'IGD'#205'HFD'#204'EED'#201'DDC'#198'EED' + +#191'DDD'#179'CCC'#161'DDD'#136'CCCkEEEJDDD-@@@'#24'FFF'#11'@@@'#4#0#0#0#1#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#1'UUU'#3'999'#9'FFF'#22'CCC*DDDGDDDiCCC'#138'EED'#165'FEC'#184'FEC'#194 + +'HHD'#200'QC9'#216'[<*'#237'c8'#31#253'g;'#30#255'j>'#31#255'nA '#255'sF!' + +#255'|M#'#255#141'W('#255#158'a,'#255#173'k1'#255#181'r3'#255#185'v4'#255#187 + +'y4'#255#189'{4'#255#191'~5'#255#193#129'5'#255#195#131'5'#255#196#132'6'#255 + +#197#134'6'#255#198#134'6'#255#199#136'6'#255#200#136'6'#255#200#137'6'#255 + +#199#136'6'#255#198#135'6'#255#198#134'6'#255#197#133'5'#255#196#132'6'#255 + +#195#131'5'#255#193#128'5'#255#191'~4'#255#188'z4'#255#186'x4'#255#184'u3' + +#255#181'q2'#255#168'i/'#255#153'_+'#255#137'T'''#255'yJ"'#255'rE '#255'm@' + +#31#255'i<'#31#255'f:'#30#255'b9!'#249'X>.'#232'MD>'#212'HFD'#204'EED'#202'E' + +'ED'#198'EED'#192'CCC'#180'CCC'#160'DDD'#132'DDDbCCCACCC&CCC'#19'@@@'#8'UUU' + +#3#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'333'#5 + +'III'#14'>>>!DDD'#255 + +#232#177'>'#255#234#179'?'#255#236#181'>'#255#236#182'?'#255#237#183'?'#255 + ,#237#183'?'#255#238#183'@'#255#238#184'?'#255#238#185'?'#255#238#184'?'#255 + +#238#183'@'#255#237#182'?'#255#237#183'?'#255#236#182'?'#255#236#181'>'#255 + +#234#179'>'#255#232#176'>'#255#230#175'>'#255#229#172'='#255#227#169'='#255 + +#224#167'='#255#220#161'<'#255#217#157'<'#255#213#153';'#255#209#148':'#255 + +#204#142'9'#255#198#135'8'#255#193#129'7'#255#188'{6'#255#183't5'#255#171'k2' + +#255#142'W)'#255'tH"'#255'nA '#255'h<'#31#255'd7'#30#255'[:('#240'KD?'#211'G' + +'FD'#204'DDC'#201'EDD'#195'CCC'#182'CCC'#159'CCC}EEEUBBB2@@@'#24'999'#9'UUU' + +#3#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#1'333'#5'III'#14'BBB#EEECCCCkEEE'#145'DDC'#174'FFE'#192'KE@'#206'Z;)' + +#238'c8'#30#255'i<'#31#255'oB!'#255'|M%'#255#153'_-'#255#178'o4'#255#186'x6' + +#255#192#128'7'#255#198#135'9'#255#204#142':'#255#209#149';'#255#214#155'=' + +#255#219#161'>'#255#223#167'>'#255#227#170'>'#255#230#174'?'#255#232#177'@' + +#255#235#181'A'#255#237#183'A'#255#238#185'A'#255#240#187'A'#255#241#188'A' + +#255#242#189'B'#255#243#190'A'#255#244#191'B'#255#244#192'B'#255#244#191'B' + +#255#244#192'B'#255#244#192'B'#255#245#193'A'#255#244#192'B'#255#244#192'B' + +#255#244#191'B'#255#244#192'B'#255#244#191'B'#255#243#190'A'#255#242#189'B' + +#255#240#187'A'#255#239#186'A'#255#238#184'@'#255#237#183'A'#255#235#179'@' + +#255#232#176'?'#255#229#173'?'#255#226#169'?'#255#223#165'>'#255#218#160'=' + +#255#213#153'<'#255#208#147';'#255#202#140':'#255#196#133'9'#255#190'~7'#255 + +#184'v6'#255#173'l3'#255#145'Y+'#255'uH$'#255'm@ '#255'g;'#31#255'b7'#31#253 + +'U>/'#230'IEC'#206'FFE'#202'EED'#199'CCC'#189'DDD'#170'DDD'#139'BBBdCCC=BBB' + +#31'@@@'#12'UUU'#3#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#1'UUU'#6'KKK'#17'DDD)EEENDDDxDCC'#157'DDC'#182'GGC'#197'T=1'#225'a7 ' + +#252'g;'#31#255'l@ '#255'wI$'#255#154'^.'#255#179'o6'#255#186'x7'#255#193#128 + +'9'#255#200#137':'#255#207#146'<'#255#212#153'>'#255#217#159'>'#255#222#166 + +'?'#255#227#170'@'#255#231#175'A'#255#234#180'B'#255#236#182'B'#255#238#185 + +'B'#255#240#187'B'#255#242#190'D'#255#243#191'C'#255#244#192'D'#255#245#193 + +'C'#255#246#194'D'#255#247#194'D'#255#247#196'E'#255#247#196'D'#255#247#196 + +'D'#255#248#197'D'#255#248#197'D'#255#248#197'D'#255#248#197'D'#255#248#197 + +'D'#255#248#197'D'#255#248#196'D'#255#247#196'D'#255#247#196'D'#255#247#195 + +'E'#255#246#195'D'#255#245#193'D'#255#245#193'C'#255#244#192'D'#255#243#191 + +'C'#255#242#189'C'#255#240#186'C'#255#238#184'C'#255#236#182'B'#255#233#179 + +'B'#255#230#174'A'#255#226#169'@'#255#221#164'?'#255#216#157'>'#255#211#151 + +'='#255#205#143'<'#255#198#135':'#255#191#127'8'#255#184'w7'#255#174'l4'#255 + +#144'X+'#255'rE"'#255'j> '#255'e9'#30#255'_8"'#247'O@8'#219'GFD'#204'DDC'#201 + +'CCC'#194'CCC'#178'DDD'#151'DDDqDDDGGGG$III'#14'@@@'#4#0#0#0#1#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#2'III'#7'@@@'#20'CCC.DDDVCCC'#130'EED'#165'DDC'#189 + +'LB='#207']7$'#244'd7'#31#255'j> '#255'qE"'#255#140'W+'#255#174'l5'#255#186 + +'x8'#255#193#129':'#255#200#138'<'#255#207#146'>'#255#213#155'?'#255#220#163 + +'@'#255#225#169'A'#255#229#174'B'#255#233#179'D'#255#236#182'D'#255#239#185 + +'D'#255#241#189'E'#255#242#190'E'#255#244#192'E'#255#245#194'E'#255#246#195 + +'F'#255#247#195'F'#255#247#196'G'#255#247#197'F'#255#248#197'F'#255#248#197 + +'F'#255#249#198'F'#255#249#198'G'#255#249#198'G'#255#249#198'G'#255#249#198 + +'G'#255#249#198'G'#255#249#198'G'#255#249#198'G'#255#249#198'G'#255#249#198 + +'G'#255#249#198'G'#255#249#198'G'#255#249#198'F'#255#248#197'F'#255#248#197 + +'F'#255#247#196'F'#255#247#196'F'#255#247#195'F'#255#246#194'F'#255#244#193 + +'F'#255#243#191'E'#255#242#190'E'#255#240#188'E'#255#238#185'D'#255#235#181 + +'D'#255#232#178'C'#255#228#172'C'#255#223#167'B'#255#218#161'@'#255#212#153 + +'?'#255#205#144'='#255#198#135';'#255#191#127'9'#255#183'u7'#255#167'g3'#255 + +#130'P('#255'oB"'#255'h< '#255'c7'#30#255'X:*'#237'HFB'#207'EEE'#202'DCC'#197 + +'DDD'#184'CCC'#160'CCCzEEENFFF(@@@'#16'333'#5#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2 + +'III'#7'FFF'#22'BBB2CCC\DDD'#136'DDC'#171'EED'#192'Q?5'#219'a6'#31#252'f:'#31 + +#255'mA!'#255#127'N'''#255#164'f3'#255#182'u8'#255#190#127':'#255#199#138'=' + +#255#207#147'?'#255#213#155'A'#255#220#163'B'#255#225#170'D'#255#230#177'E' + +#255#234#181'E'#255#237#184'F'#255#240#188'G'#255#242#189'G'#255#243#192'G' + +#255#244#193'H'#255#245#194'H'#255#246#195'H'#255#247#196'H'#255#247#197'H' + +#255#247#197'H'#255#248#198'H'#255#248#198'H'#255#248#197'H'#255#248#198'H' + +#255#248#198'I'#255#249#198'I'#255#249#198'I'#255#249#198'I'#255#249#198'I' + +#255#249#198'I'#255#249#198'I'#255#249#198'I'#255#249#198'I'#255#249#198'I' + +#255#249#198'I'#255#249#198'I'#255#248#198'I'#255#248#198'H'#255#248#198'H' + +#255#248#198'H'#255#248#198'H'#255#247#197'H'#255#247#196'I'#255#247#195'H' + +#255#246#195'H'#255#245#195'H'#255#244#193'H'#255#243#191'G'#255#241#189'G' + +#255#239#186'G'#255#236#183'F'#255#233#180'F'#255#229#175'D'#255#224#168'D' + +#255#218#161'B'#255#211#153'@'#255#205#144'?'#255#196#134'='#255#188'{:'#255 + +#180'r8'#255#155'_/'#255'wJ$'#255'j? '#255'e8'#30#255']8#'#246'LB<'#213'FEE' + +#203'EED'#199'DDD'#188'DDD'#165'DDD'#128'DDDSFFF,GGG'#18'+++'#6#0#0#0#1#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#2'III'#7'CCC'#23'BBB6DDDaCCC'#141'DDC'#174'GDB'#196'V:+'#233'c7'#30#255'h; ' + +#255'pC#'#255#146'Z-'#255#179'p7'#255#187'{;'#255#196#133'='#255#204#144'?' + +#255#212#154'B'#255#219#163'E'#255#225#170'E'#255#230#176'G'#255#234#181'H' + +#255#238#185'I'#255#240#189'I'#255#242#190'J'#255#243#192'J'#255#244#193'J' + +#255#245#195'J'#255#246#195'J'#255#246#196'J'#255#247#196'K'#255#247#196'K' + +#255#247#197'K'#255#247#197'K'#255#247#197'K'#255#247#197'J'#255#247#197'J' + +#255#247#198'J'#255#247#198'J'#255#247#198'J'#255#247#198'J'#255#247#198'J' + +#255#247#198'J'#255#247#198'J'#255#247#198'J'#255#247#198'J'#255#247#198'J' + +#255#247#198'J'#255#247#198'J'#255#247#198'J'#255#247#198'J'#255#247#197'J' + +#255#247#197'J'#255#247#197'J'#255#247#197'K'#255#247#197'K'#255#247#197'K' + +#255#247#196'K'#255#246#196'K'#255#246#196'J'#255#246#195'J'#255#245#195'J' + +#255#244#194'J'#255#243#191'I'#255#241#189'I'#255#239#188'I'#255#236#184'H' + +#255#233#180'H'#255#228#174'G'#255#223#168'E'#255#217#160'C'#255#210#151'B' + +#255#202#141'?'#255#193#130'<'#255#185'x:'#255#174'm6'#255#134'S*'#255'mA"' + +#255'f:'#31#255'a6'#30#253'R>4'#224'FFE'#203'EED'#200'CCC'#190'DDD'#169'CCC' + +#133'CCCXAAA/CCC'#19'+++'#6#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#1'III'#7'CCC'#23'BBB6CCCcCCC'#144'EED'#177'JC>'#202 + +'[6"'#244'c8'#31#255'j?!'#255'xI&'#255#162'd2'#255#183'u:'#255#192#129'='#255 + +#200#140'@'#255#209#150'B'#255#217#160'E'#255#223#169'G'#255#229#176'H'#255 + +#233#181'J'#255#236#185'J'#255#239#188'K'#255#241#190'K'#255#242#192'K'#255 + +#243#193'L'#255#244#194'L'#255#245#195'L'#255#245#195'L'#255#245#195'L'#255 + +#246#196'L'#255#246#196'L'#255#246#196'L'#255#246#196'L'#255#246#196'M'#255 + +#246#196'M'#255#246#197'M'#255#246#197'M'#255#246#197'M'#255#246#197'M'#255 + +#246#197'M'#255#246#197'M'#255#246#197'M'#255#246#197'M'#255#246#197'M'#255 + +#246#197'M'#255#246#197'M'#255#246#197'M'#255#246#197'M'#255#246#197'M'#255 + +#246#197'M'#255#246#197'M'#255#246#197'M'#255#246#197'M'#255#246#196'M'#255 + +#246#196'M'#255#246#196'M'#255#246#196'L'#255#246#196'L'#255#246#196'L'#255 + +#246#196'L'#255#245#195'L'#255#245#196'L'#255#244#195'M'#255#244#194'L'#255 + +#243#193'L'#255#242#192'L'#255#241#190'K'#255#238#188'K'#255#236#184'J'#255 + +#232#179'I'#255#228#173'H'#255#222#166'F'#255#215#158'E'#255#207#148'B'#255 + +#198#137'?'#255#190'~<'#255#180'r9'#255#150']/'#255'qE$'#255'h< '#255'b6'#30 + +#255'W9*'#235'GED'#204'DDC'#201'DDD'#192'CCC'#172'CCC'#137'DDDZAAA/GGG'#18'3' + +'33'#5#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'+++'#6'II' + +'I'#21'CCC5DDDbCCC'#145'DDC'#178'LB;'#206'^6 '#249'd8'#31#255'l@!'#255#131'Q' + +'*'#255#172'k7'#255#186'z;'#255#196#133'?'#255#205#146'C'#255#213#156'E'#255 + +#220#165'G'#255#227#173'I'#255#232#180'K'#255#236#184'L'#255#238#187'L'#255 + ,#240#189'N'#255#241#191'N'#255#242#192'N'#255#243#193'N'#255#244#194'N'#255 + +#244#194'N'#255#244#194'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255 + +#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255 + +#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255 + +#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255 + +#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255 + +#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255 + +#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255#244#195'O'#255 + +#244#195'O'#255#244#195'O'#255#244#194'O'#255#244#195'N'#255#244#194'N'#255 + +#243#193'N'#255#242#192'M'#255#241#190'N'#255#240#189'M'#255#237#186'M'#255 + +#235#182'L'#255#230#178'K'#255#225#171'I'#255#219#163'G'#255#211#153'D'#255 + +#202#143'B'#255#192#130'>'#255#183'u:'#255#164'f4'#255'yK&'#255'i=!'#255'c7' + +#30#255'Z8%'#241'GEC'#205'DDC'#201'CCC'#193'DDD'#173'DDD'#136'BBBYDDD-KKK'#17 + +'333'#5#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'333'#5'CCC'#19'BBB2CCC_DD' + +'D'#143'DDC'#178'M@8'#211'_5'#31#251'e9'#31#255'lA"'#255#144'Y/'#255#179'r9' + +#255#188'}='#255#198#138'B'#255#208#149'D'#255#217#161'H'#255#223#170'K'#255 + +#229#177'L'#255#234#181'M'#255#236#186'N'#255#239#188'O'#255#240#190'P'#255 + +#241#191'P'#255#242#192'P'#255#242#192'P'#255#242#193'P'#255#243#193'P'#255 + +#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255 + +#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255 + +#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255 + +#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255 + +#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255 + +#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255 + +#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255 + +#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#194'P'#255#243#193'P'#255 + +#242#193'P'#255#242#192'O'#255#242#192'P'#255#241#192'P'#255#240#190'P'#255 + +#238#188'O'#255#236#185'N'#255#232#180'M'#255#228#175'L'#255#222#167'I'#255 + +#215#159'H'#255#205#147'D'#255#196#134'@'#255#186'y<'#255#173'm7'#255#130'O*' + +#255'j?!'#255'c8'#31#255'[7#'#245'HDA'#208'DDC'#201'CCC'#193'CCC'#172'CCC' + +#134'AAAVAAA+@@@'#16'@@@'#4#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'@@@'#4'<<<'#17'CCC.CC' + +'C[CCC'#140'EED'#176'O>5'#213'_5'#30#253'e9'#31#255'nB#'#255#151'\1'#255#181 + +'s:'#255#191#129'@'#255#201#142'C'#255#211#154'G'#255#219#164'K'#255#226#173 + +'M'#255#231#179'O'#255#234#184'P'#255#237#187'Q'#255#239#189'Q'#255#240#190 + +'R'#255#240#191'Q'#255#241#192'R'#255#241#192'R'#255#241#192'R'#255#242#192 + +'R'#255#242#192'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193 + +'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193 + +'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193 + +'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193 + +'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193 + +'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193 + +'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193 + +'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193'R'#255#242#193 + +'R'#255#242#192'R'#255#242#192'R'#255#241#192'R'#255#241#192'R'#255#241#192 + +'R'#255#240#191'Q'#255#240#190'R'#255#238#189'Q'#255#236#186'P'#255#234#182 + +'O'#255#230#177'N'#255#224#171'L'#255#217#162'J'#255#208#150'F'#255#198#138 + +'C'#255#188'}>'#255#177'o:'#255#136'S,'#255'k?"'#255'c8'#31#255'\6!'#248'JC?' + +#211'DCC'#201'CCC'#193'CCC'#171'BBB'#131'DDDRAAA''777'#14'UUU'#3#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +'UUU'#3';;;'#13'AAA''CCCTBBB'#135'DDC'#174'N=5'#213'`4'#29#254'e9'#31#255'oC' + +'$'#255#156'`3'#255#181'u<'#255#193#131'A'#255#204#146'E'#255#213#157'I'#255 + +#221#167'M'#255#227#175'O'#255#232#180'Q'#255#235#184'R'#255#237#187'S'#255 + +#238#189'S'#255#239#190'S'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255 + +#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255 + +#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255 + +#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255 + ,#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255 + +#234#187'R'#255#202#161'G'#255#232#185'R'#255#240#191'T'#255#240#191'T'#255 + +#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255 + +#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255 + +#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255 + +#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255 + +#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255#240#191'T'#255 + +#239#189'S'#255#238#188'R'#255#236#186'R'#255#234#184'Q'#255#231#179'Q'#255 + +#226#173'O'#255#219#165'L'#255#211#154'H'#255#201#142'E'#255#190#128'@'#255 + +#179'q:'#255#140'V.'#255'l@"'#255'c8'#31#255'\4'#31#250'JC>'#211'CCC'#201'DD' + +'D'#192'CCC'#168'CCC~DDDKFFF!MMM'#10#128#128#128#2#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#2'333'#10'@@@ EEE' + +'JCCC~EDD'#169'L?8'#208'^4'#30#253'd8 '#255'pD%'#255#159'b4'#255#182'v='#255 + +#194#132'C'#255#205#147'H'#255#215#160'L'#255#222#169'O'#255#228#176'Q'#255 + +#232#181'S'#255#235#185'T'#255#236#187'T'#255#237#188'U'#255#238#189'U'#255 + +#238#190'U'#255#238#190'U'#255#238#191'U'#255#239#190'U'#255#239#190'U'#255 + +#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255 + +#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255 + +#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255#181#144'@'#255 + +';/'#21#255#21#16#7#255#9#7#3#255#2#2#1#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1 + +#1#255#7#6#3#255#17#14#6#255#31#25#11#255'2'''#18#255'SB'#29#255#157'}8'#255 + +#233#186'S'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255 + +#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255 + +#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255 + +#239#190'U'#255#239#190'U'#255#239#190'U'#255#238#190'U'#255#238#190'U'#255 + +#238#190'U'#255#238#189'U'#255#237#188'U'#255#236#186'T'#255#234#184'T'#255 + +#231#180'S'#255#226#175'Q'#255#220#166'N'#255#212#156'K'#255#202#143'F'#255 + +#190#129'A'#255#179'r<'#255#145'Y0'#255'k?"'#255'c7'#31#255'[4 '#248'IC@'#209 + +'DDD'#200'CCC'#190'CCC'#163'DDDtCCCAEEE'#26'III'#7#0#0#0#1#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'III'#7'==='#25'AAA?CCCsBBB' + +#162'K?;'#202'^4'#30#252'c8 '#255'oB%'#255#160'b5'#255#183'v>'#255#194#134'D' + +#255#205#148'J'#255#215#161'M'#255#223#171'Q'#255#228#177'T'#255#232#182'U' + +#255#234#185'V'#255#236#187'V'#255#236#187'V'#255#237#188'W'#255#237#189'W' + +#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#188'W' + +#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#188'W' + +#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#188'W' + +#255#237#188'W'#255#237#188'W'#255#159'~:'#255#16#13#6#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255#16#13#6 + +#255'9-'#21#255'y`,'#255#208#165'M'#255#237#188'W'#255#237#188'W'#255#237#188 + +'W'#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#188 + +'W'#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#188 + +'W'#255#237#188'W'#255#237#188'W'#255#237#188'W'#255#237#189'W'#255#237#188 + +'W'#255#236#187'V'#255#235#186'V'#255#234#184'U'#255#231#180'U'#255#227#175 + +'R'#255#221#169'Q'#255#213#157'L'#255#202#144'H'#255#191#129'C'#255#180's=' + +#255#145'X0'#255'j>#'#255'b6'#31#255'Z5#'#245'GDB'#206'DDD'#200'CCC'#186'DDD' + +#154'EEEhBBB6@@@'#20'333'#5#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#1'@@@'#4'GGG'#18'AAA3DDDfCCC'#152'IA>'#195'\4 '#250'c7'#31#255'm@#'#255 + +#156'_5'#255#182'v?'#255#194#134'E'#255#206#148'K'#255#215#161'O'#255#223#171 + +'S'#255#228#178'V'#255#232#182'V'#255#233#185'X'#255#234#186'X'#255#235#187 + +'X'#255#236#187'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188 + +'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188 + +'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188 + +'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255'9-'#21 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#6 + +#5#2#255'$'#29#14#255'ZH"'#255#169#135'@'#255#234#186'X'#255#236#188'X'#255 + ,#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255 + +#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255 + +#236#188'X'#255#236#187'X'#255#235#187'Y'#255#235#186'X'#255#234#186'X'#255 + +#233#184'W'#255#231#180'W'#255#227#176'T'#255#221#169'R'#255#213#158'N'#255 + +#203#145'J'#255#192#130'D'#255#179's='#255#139'U/'#255'i="'#255'a5'#30#255'X' + +'7%'#242'FDC'#204'CCC'#198'DDD'#180'CCC'#144'CCC[AAA+III'#14'UUU'#3#0#0#0#1#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#2'@@@'#12'AAA''CCCWCCC'#140'GB?' + +#185'Z4!'#247'a6'#30#255'j?"'#255#151']2'#255#181't>'#255#194#133'F'#255#206 + +#149'M'#255#215#161'Q'#255#223#170'T'#255#228#178'W'#255#231#181'Y'#255#232 + +#183'Y'#255#233#185'Z'#255#234#185'Y'#255#234#186'Y'#255#234#186'Y'#255#234 + +#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234 + +#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234 + +#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234 + +#186'Z'#255#234#186'Z'#255'C5'#26#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#1#1#1#255#20#16#8#255'K;'#29#255#189#150'I'#255#234#186'Z'#255#234#186 + +'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186 + +'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186'Z'#255#234#186'Y'#255#234#186 + +'Y'#255#234#185'Y'#255#233#185'Z'#255#232#183'Y'#255#230#181'X'#255#226#176 + +'W'#255#221#169'T'#255#213#159'O'#255#203#145'K'#255#190#129'D'#255#178'p=' + +#255#134'Q-'#255'g;"'#255'`4'#29#255'U7('#238'CCC'#202'DDD'#195'DDD'#173'BBB' + +#131'CCCL@@@ 999'#9#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'III'#7'BBB'#27'CC' + +'CEDDD|DDD'#170'V6%'#238'`5'#30#255'h<"'#255#145'Y1'#255#179's?'#255#192#132 + +'F'#255#205#148'M'#255#215#161'R'#255#222#171'U'#255#227#176'X'#255#230#181 + +'Z'#255#231#183'Z'#255#232#183'['#255#232#184'['#255#233#185'['#255#233#185 + +'['#255#233#185'['#255#233#185'['#255#233#185'['#255#233#185'['#255#233#185 + +'['#255#233#185'['#255#233#185'['#255#233#185'['#255#233#185'['#255#233#185 + +'['#255#233#185'['#255#233#185'['#255#233#185'['#255#233#185'['#255#233#185 + +'['#255#233#185'['#255#233#185'['#255#127'd1'#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#13#11#5 + +#255'N>'#31#255#193#153'L'#255#233#185'['#255#233#185'['#255#233#185'['#255 + +#233#185'['#255#233#185'['#255#233#185'['#255#233#185'['#255#233#185'['#255 + +#233#185'['#255#233#184'['#255#232#184'['#255#232#183'Z'#255#231#182'Z'#255 + +#229#180'Y'#255#226#175'X'#255#220#168'U'#255#213#158'R'#255#201#144'K'#255 + +#189#127'D'#255#175'n<'#255#128'N+'#255'e9 '#255'_3'#29#255'Q;1'#227'CCC'#201 + +'CCC'#191'CCC'#163'CCCrAAA;FFF'#22'333'#5#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'@@@'#4'<<<' + +#17'AAA3EEEhCCC'#156'R:/'#220'_3'#29#255'e: '#255#134'Q-'#255#178'p>'#255#190 + +#130'F'#255#203#145'M'#255#213#161'S'#255#221#170'W'#255#226#176'Z'#255#229 + +#180'Z'#255#230#182'\'#255#231#182'\'#255#231#183'\'#255#231#183'\'#255#231 + +#183'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255#231 + +#183'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255#231 + +#183'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255#231 + +#183'\'#255#231#183'\'#255#231#183'\'#255#180#142'G'#255#1#1#1#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#15#12#6#255'VE"'#255#215#171'V'#255 + +#231#183'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255 + +#231#183'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255#231#182'\'#255 + +#230#181'['#255#228#178'['#255#225#175'Y'#255#219#168'W'#255#211#156'Q'#255 + +#200#142'K'#255#187'|D'#255#172'k<'#255'wF('#255'c7 '#255'^1'#30#254'K@:'#214 + +'DDD'#199'CCC'#184'CCC'#148'AAA^GGG+NNN'#13'UUU'#3#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2'MMM'#10'@' + +'@@$DDDSDDD'#139'L?8'#197'^1'#29#254'c7 '#255'wG)'#255#173'l<'#255#188#127'E' + +#255#201#144'N'#255#212#158'T'#255#220#169'X'#255#225#175'['#255#228#179'\' + +#255#229#180'\'#255#230#181']'#255#230#181']'#255#230#182']'#255#230#182']' + +#255#230#182']'#255#230#182']'#255#230#182']'#255#230#182']'#255#230#182']' + +#255#230#182']'#255#230#182']'#255#230#182']'#255#230#182']'#255#230#182']' + +#255#230#182']'#255#230#182']'#255#230#182']'#255#230#182']'#255#230#182']' + +#255#230#182']'#255#230#182']'#255#221#175'Y'#255#10#8#4#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#1#255'4' + +')'#21#255#184#146'J'#255#230#182']'#255#230#182']'#255#230#182']'#255#230 + +#182']'#255#230#182']'#255#230#182']'#255#230#182']'#255#230#181']'#255#229 + +#182']'#255#228#180']'#255#227#178'\'#255#224#174'['#255#218#166'W'#255#209 + +#155'R'#255#198#139'K'#255#184'zC'#255#162'd8'#255'l@$'#255'a5'#30#255'Z3 ' + +#249'FBA'#206'DDD'#196'CCC'#174'CCC'#129'BBBIFFF'#29'@@@'#8#0#0#0#1#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'333'#5'FF' + +'F'#22'BBB>CCCvFA?'#174'Z3'#31#248'`5'#30#255'l@$'#255#163'd9'#255#184'{D' + +#255#199#142'N'#255#210#156'T'#255#218#167'Y'#255#223#174'\'#255#226#177'^' + +#255#228#179'^'#255#228#179'^'#255#228#180'_'#255#228#180'_'#255#228#180'_' + +#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#228#180'_' + +#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#228#180'_' + +#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#228#180'_' + +#255#228#180'_'#255#228#180'_'#255#228#180'_'#255'bM)'#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#27#21#11#255#140'o;'#255#228#180'_'#255#228#180 + +'_'#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#228#180 + +'_'#255#228#179'^'#255#227#179'^'#255#226#176']'#255#222#172'['#255#216#164 + +'X'#255#207#152'R'#255#195#137'K'#255#181'tA'#255#149'Z3'#255'g<"'#255'_3'#29 + +#255'V6'''#239'CCC'#201'CCC'#190'CCC'#159'CCCkCCC5GGG'#18'@@@'#4#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2'@@@'#12'CCC' + +'*DDD^DDD'#150'U6('#230'^2'#28#255'f:!'#255#149'Z3'#255#181'uB'#255#195#137 + +'K'#255#208#154'T'#255#216#165'Y'#255#221#172']'#255#225#176'^'#255#226#178 + +'_'#255#227#178'_'#255#227#178'_'#255#227#179'_'#255#227#179'_'#255#227#179 + +'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#227#179 + +'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#227#179 + +'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#227#179 + +'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#13#10#6#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'&'#30#16#255#208#164 + +'W'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#227#178 + +'_'#255#227#178'_'#255#226#179'`'#255#226#177'_'#255#224#176'^'#255#220#170 + +'\'#255#214#162'X'#255#205#149'R'#255#191#131'I'#255#177'p?'#255#131'O.'#255 + +'c7 '#255']1'#29#255'N;3'#222'DDD'#199'DDD'#181'CCC'#140'DDDSDDD"999'#9#0#0#0 + +#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'+++'#6'@@@'#24 + +'EEECCCC~K=7'#193']0'#28#255'b6'#31#255#129'M,'#255#177'o@'#255#191#131'J' + +#255#204#149'S'#255#214#163'Z'#255#220#171']'#255#223#174'_'#255#225#176'`' + +#255#225#177'`'#255#226#177'`'#255#226#177'`'#255#226#177'`'#255#226#177'`' + +#255#226#177'`'#255#226#177'`'#255#226#177'`'#255#226#177'`'#255#226#177'`' + +#255#226#177'`'#255#226#177'`'#255#226#177'`'#255#226#177'`'#255#226#177'`' + ,#255#226#177'`'#255#226#177'`'#255#226#177'`'#255#226#177'`'#255#226#177'`' + +#255#226#177'`'#255#226#177'`'#255#226#177'`'#255#161'~D'#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#4#3#2 + +#255#134'i9'#255#226#177'`'#255#226#177'`'#255#226#177'`'#255#226#177'`'#255 + +#226#177'`'#255#225#178'`'#255#225#177'`'#255#224#176'_'#255#222#174'^'#255 + +#219#169']'#255#212#159'X'#255#200#144'Q'#255#187'~G'#255#170'j<'#255'qB%' + +#255'`5'#30#255'Z2'#31#250'FBA'#205'CCC'#193'DDD'#166'CCCsCCC9CCC'#19'@@@'#4 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2'@@@'#12'AAA+BBB' + +'aDBB'#155'Y3!'#244'_3'#29#255'l?$'#255#167'f;'#255#186'}H'#255#200#144'R' + +#255#211#158'Y'#255#218#168']'#255#221#172'`'#255#223#174'a'#255#223#176'a' + +#255#224#176'b'#255#224#176'b'#255#224#176'b'#255#224#176'b'#255#224#176'b' + +#255#224#176'b'#255#224#176'b'#255#224#176'b'#255#224#176'b'#255#224#176'b' + +#255#224#176'b'#255#224#176'b'#255#224#176'b'#255#224#176'b'#255#224#176'b' + +#255#224#176'b'#255#224#176'b'#255#224#176'b'#255#224#176'b'#255#224#176'b' + +#255#224#176'b'#255#224#176'b'#255#224#176'b'#255'hR.'#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255'qY2'#255#224#176'b'#255#224#176'b'#255#224#176'b'#255#224#176 + +'b'#255#224#176'b'#255#224#176'b'#255#223#176'a'#255#223#174'`'#255#221#172 + +'_'#255#217#166']'#255#208#155'W'#255#196#139'O'#255#182'wE'#255#152'\5'#255 + +'e9!'#255'^2'#29#255'S7*'#233'DDD'#200'CCC'#183'DDD'#143'EEEUDDD"UUU'#9#0#0#0 + +#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'333'#5'@@@'#24'DDDDCCC~P8-' + +#211']0'#29#255'c8!'#255#144'V2'#255#180'uD'#255#196#138'P'#255#207#155'X' + +#255#215#165']'#255#220#171'`'#255#221#173'b'#255#222#174'a'#255#222#175'b' + +#255#222#175'b'#255#222#175'b'#255#222#175'b'#255#222#175'b'#255#222#175'b' + +#255#222#175'b'#255#222#175'b'#255#222#175'b'#255#222#175'b'#255#222#175'b' + +#255#222#175'b'#255#222#175'b'#255#222#175'b'#255#222#175'b'#255#222#175'b' + +#255#222#175'b'#255#222#175'b'#255#222#175'b'#255#222#175'b'#255#222#175'b' + +#255#222#175'b'#255#222#175'b'#255#222#175'b'#255'VD&'#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#1#1#0#255#166#132'J'#255#222#175'b'#255#222#175'b'#255#222#175 + +'b'#255#222#175'b'#255#222#175'b'#255#222#175'b'#255#222#174'a'#255#221#173 + +'a'#255#219#170'`'#255#213#163'\'#255#205#150'V'#255#192#132'M'#255#176'oA' + +#255'}K,'#255'a5'#31#255'\0'#28#254'I?;'#212'CCC'#194'DDD'#166'CCCrDDD8GGG' + +#18'@@@'#4#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2'FFF'#11'DDD)BBB`G@<' + +#164'[1'#29#252'_3'#29#255'uD)'#255#174'l?'#255#189#130'L'#255#204#150'V'#255 + +#213#162'^'#255#217#168'`'#255#220#172'b'#255#221#173'b'#255#221#173'c'#255 + +#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255 + +#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255 + +#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255 + +#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255 + +#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255'gQ.'#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + ,#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#8#6#4#255#207#163']'#255#221#173'c'#255 + +#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255#221#173'c'#255 + +#221#172'b'#255#219#171'b'#255#217#167'`'#255#211#159'['#255#200#145'T'#255 + +#185'{H'#255#164'd;'#255'h<#'#255'^1'#29#255'X3#'#244'DDD'#200'CCC'#183'DDD' + +#142'DDDSFFF!@@@'#8#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@@'#4'III'#21'EEE?DD' + +'D|S5'''#222'\1'#28#255'c8!'#255#158'_8'#255#183'yH'#255#198#142'S'#255#209 + +#158'\'#255#215#166'`'#255#218#170'b'#255#219#171'c'#255#219#171'd'#255#219 + +#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219 + +#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219 + +#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219 + +#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219 + +#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#213 + +#168'b'#255#3#3#1#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'M<#'#255#219#172 + +'d'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219#172'd'#255#219#172 + +'d'#255#219#171'd'#255#219#170'c'#255#217#168'b'#255#214#164'`'#255#207#153 + +'Z'#255#194#136'P'#255#178'rD'#255#139'R1'#255'a4'#31#255'\0'#28#255'L<5'#219 + +'CCC'#193'DDD'#164'CCCoCCC5@@@'#16'UUU'#3#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'@@@'#8 + +'BBB#CCCWHA='#158'\0'#28#253'_3'#29#255'~I+'#255#175'nB'#255#191#133'O'#255 + +#205#151'Z'#255#213#163'a'#255#216#167'c'#255#217#169'c'#255#218#170'd'#255 + +#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255 + +#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255 + +#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255 + +#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255 + +#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255 + +#218#170'd'#255#218#170'd'#255'YF)'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#15#12#7#255#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#170'd'#255 + +#218#170'd'#255#218#170'd'#255#218#170'd'#255#218#169'c'#255#217#168'c'#255 + +#215#166'b'#255#211#160'_'#255#201#147'W'#255#187#127'L'#255#169'h>'#255'l=$' + +#255'^1'#29#255'W3"'#244'DDD'#199'DDD'#180'DDD'#136'DDDKBBB'#27'UUU'#6#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0'UUU'#3'DDD'#15'EEE4BBBpS6)'#215'\1'#28#255'b7!'#255#158'_9' + +#255#184'{J'#255#199#144'W'#255#209#158'_'#255#214#165'c'#255#216#168'd'#255 + +#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255 + +#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255 + +#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255 + +#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255 + +#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255 + +#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255 + +'YD)'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#189#147'W'#255#217#168'd' + +#255#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd'#255#217#168'd' + +#255#217#168'd'#255#216#168'd'#255#215#167'c'#255#213#164'a'#255#207#154']' + +#255#195#138'S'#255#179'tF'#255#139'R1'#255'`5'#30#255'\0'#28#255'K=7'#216'D' + +'DD'#191'DDD'#157'CCCcAAA+FFF'#11#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'+++'#6'EEE'#26'BBBIE?=' + +#144'Z0'#28#252'^2'#29#255'zF*'#255#174'mB'#255#192#135'R'#255#205#152'\'#255 + +#211#161'b'#255#214#165'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255 + +#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255 + +#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255 + +#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255 + +#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255 + +#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255 + +#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255'jR1'#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255'fN/'#255#215#166'd'#255#215#166'd'#255#215#166'd' + +#255#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd'#255#215#166'd' + +#255#215#167'e'#255#214#164'c'#255#210#159'a'#255#202#148'Z'#255#187#128'N' + +#255#168'f='#255'i;#'#255'\1'#28#255'V3#'#242'CCC'#197'DDD'#173'BBB{FFF>@@@' + +#20'@@@'#4#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#1'MMM'#10'FFF(CCC_R6*'#206'\0'#28#255'`5'#31#255#154'\8' + +#255#182'yJ'#255#199#144'Y'#255#208#156'`'#255#212#163'd'#255#213#165'd'#255 + +#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255 + +#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255 + +#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255 + +#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255 + +#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255 + +#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255 + +#214#165'e'#255#214#165'e'#255#214#165'e'#255#135'h@'#255#2#1#1#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'b' + +'L/'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255#214#165 + +'e'#255#214#165'e'#255#214#165'e'#255#214#165'e'#255#213#165'e'#255#213#164 + +'d'#255#211#161'c'#255#206#154'^'#255#194#139'U'#255#177'sF'#255#135'P/'#255 + +'^3'#29#255'[/'#27#255'J>9'#213'DDD'#185'CCC'#144'DDDSHHH III'#7#0#0#0#1#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'UUU'#3 + +'<<<'#17'DDD8DBAyZ0'#29#248'\1'#28#255'uB'''#255#172'lA'#255#190#132'Q'#255 + +#203#151'^'#255#209#160'c'#255#211#162'e'#255#212#163'e'#255#212#163'e'#255 + +#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255 + +#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255 + +#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255 + +#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255 + +#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255 + +#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255 + +#212#163'e'#255#212#163'e'#255#212#163'e'#255#156'xK'#255#1#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'jQ2'#255#212 + +#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255#212 + +#163'e'#255#212#163'e'#255#212#163'e'#255#212#163'e'#255#212#162'e'#255#211 + +#162'd'#255#208#158'b'#255#200#147'['#255#186'~M'#255#165'd<'#255'd8!'#255'\' + +'0'#28#255'T5'''#237'CCC'#193'DDD'#162'CCCjCCC.@@@'#12#0#0#0#2#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'333'#5'GGG'#25'BB' + +'BIN:1'#174'[/'#27#255'^2'#29#255#145'T3'#255#180'vI'#255#196#142'Y'#255#206 + +#155'a'#255#209#161'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211 + +#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211 + +#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211 + ,#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211 + +#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211 + +#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211 + +#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211 + +#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255'O=&'#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'sX7'#255#211 + +#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211 + +#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#210 + +#161'f'#255#209#159'd'#255#204#153'`'#255#192#135'U'#255#175'pE'#255'~H+'#255 + +']0'#29#255'Z0'#28#253'FBA'#201'DDD'#176'CCC~FFF>CCC'#19'@@@'#4#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'999'#9'EEE%CCC[V3' + +'$'#222'\0'#27#255'f7!'#255#167'd>'#255#187#128'Q'#255#200#148'^'#255#207#156 + +'d'#255#209#159'e'#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160 + +'e'#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160 + +'e'#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160 + +'e'#255#209#160'e'#255#209#160'e'#255#151'tI'#255'2&'#25#255#27#21#13#255#15 + +#12#7#255#7#5#3#255#7#5#3#255' '#25#16#255'P='''#255#151'tI'#255#209#160'e' + +#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160'e' + +#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160'e' + +#255#209#160'e'#255#209#160'e'#255#6#5#3#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#146'pF'#255#209#160'e'#255#209#160'e'#255 + +#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160'e'#255 + +#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#160'e'#255#209#159'e'#255 + +#206#155'c'#255#198#143'['#255#182'zM'#255#151'Y6'#255'^3'#29#255'[/'#27#255 + +'N:1'#222'DDD'#185'DDD'#142'DDDOIII'#28'+++'#6#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2';;;'#13'DDD1F@=x[/'#28#253'\1'#28 + +#255'~G+'#255#174'oE'#255#193#137'X'#255#203#151'b'#255#207#156'e'#255#207 + +#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208 + +#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208 + +#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f'#255'x[;' + +#255#15#12#8#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#4#3#2#255'bJ0'#255#208#158'f'#255#208#158'f' + +#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f' + +#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f'#255'3'''#25#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#2#2#1#255#208#158'f' + +#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f' + +#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f'#255#208#158'f' + +#255#208#158'f'#255#207#158'e'#255#206#156'd'#255#201#149'_'#255#189#131'T' + +#255#169'h@'#255'j:#'#255'\0'#28#255'V3#'#242'DDD'#191'CCC'#156'BBB`AAA''333' + +#10#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@@'#4'C' + +'CC'#19'EEE?Q7+'#179'[/'#27#255'^1'#29#255#152'X6'#255#181'yM'#255#197#144']' + +#255#204#153'c'#255#206#155'f'#255#206#156'e'#255#206#156'e'#255#206#156'e' + +#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#206#156'e' + +#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#206#156'e' + +#255#202#154'c'#255'6)'#27#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#14#10#7#255#178#135'W'#255#206#156'e'#255#206#156'e'#255#206#156'e' + +#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#206#156'e' + +#255#206#156'e'#255'WB+'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + ,#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#29#22#14#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#206#156'e' + +#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#206#156'e' + +#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#206#156'e'#255#205#156'e' + +#255#203#151'c'#255#194#139'Z'#255#176'qH'#255#131'K-'#255'\1'#28#255'[/'#27 + +#255'HA='#204'DDD'#169'DDDqEEE4III'#14#128#128#128#2#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'+++'#6'BBB'#27'EEENW2!'#228'[/'#27#255'i9!' + +#255#168'e?'#255#187#130'T'#255#200#147'`'#255#203#153'e'#255#205#154'e'#255 + +#205#154'e'#255#205#154'e'#255#205#154'e'#255#205#154'e'#255#205#154'e'#255 + +#205#154'e'#255#205#154'e'#255#205#154'e'#255#205#154'e'#255#205#154'e'#255 + +#205#154'e'#255#205#154'e'#255#199#150'a'#255#19#14#9#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#7#6#4#255#178#133'W' + +#255#205#154'e'#255#205#154'e'#255#205#154'e'#255#205#154'e'#255#205#154'e' + +#255#205#154'e'#255#205#154'e'#255#205#154'e'#255'S>)'#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#128'a?'#255#205#154'e'#255#205#154'e' + +#255#205#154'e'#255#205#154'e'#255#205#154'e'#255#205#154'e'#255#205#154'e' + +#255#205#154'e'#255#205#154'e'#255#205#154'e'#255#205#154'e'#255#205#154'e' + +#255#205#154'e'#255#204#154'e'#255#203#152'd'#255#197#145'^'#255#182'zO'#255 + +#157'Z8'#255']1'#29#255'[/'#27#255'P9.'#226'CCC'#179'CCC'#129'CCCA@@@'#20'@@' + +'@'#4#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'999'#9'EEE%EA?' + +'b[/'#27#253'\0'#27#255#127'F*'#255#173'nG'#255#191#136'Z'#255#200#149'c'#255 + +#202#152'e'#255#202#152'e'#255#202#153'e'#255#202#153'e'#255#202#153'e'#255 + +#202#153'e'#255#202#153'e'#255#202#153'e'#255#202#153'e'#255#202#153'e'#255 + +#202#153'e'#255#202#153'e'#255#202#153'e'#255#202#153'e'#255#31#24#16#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#11#8#6#255#200#151'e'#255#202#153'e'#255#202#153'e'#255#202 + +#153'e'#255#202#153'e'#255#202#153'e'#255#202#153'e'#255#202#153'e'#255'O;''' + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255''''#29#19#255#202#153'e'#255 + +#202#153'e'#255#202#153'e'#255#202#153'e'#255#202#153'e'#255#202#153'e'#255 + +#202#153'e'#255#202#153'e'#255#202#153'e'#255#202#153'e'#255#202#153'e'#255 + +#202#153'e'#255#202#153'e'#255#202#153'e'#255#202#152'e'#255#202#151'd'#255 + +#199#147'b'#255#188#130'U'#255#168'e@'#255'k:"'#255'[/'#27#255'V3$'#241'CCC' + +#186'BBB'#142'EEENBBB'#27'+++'#6#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#2'@@@'#12'DDD-O:0'#146'[/'#27#255'\0'#28#255#145'R2'#255#179'wM' + +#255#194#141'^'#255#200#148'c'#255#201#150'e'#255#201#150'e'#255#201#150'e' + +#255#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e' + +#255#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e' + +#255';,'#30#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'S>*'#255#201#150'e' + +#255#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e' + +#255#201#150'e'#255'K8&'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#29#22#14#255 + +#184#138']'#255#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e'#255 + ,#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e'#255 + +#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e'#255#201#150'e'#255 + +#201#150'e'#255#200#149'd'#255#199#148'c'#255#191#136'['#255#173'mG'#255'}D(' + +#255'\0'#27#255'Z0'#28#253'DBB'#192'CCC'#152'DDDZBBB#@@@'#8#0#0#0#1#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#2'III'#14'CCC5T5'''#190'[/'#27#255 + +'_2'#29#255#162'^:'#255#184'}S'#255#195#142'`'#255#198#147'd'#255#199#148'd' + +#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#199#148'd' + +#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#199#148'd' + +#255#199#148'd'#255#147'mJ'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#3#2#1#255#195#144'b'#255#199#148'd'#255#199#148'd'#255#199#148'd'#255 + +#199#148'd'#255#199#148'd'#255#199#148'd'#255'H6$'#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#3#2#1#255#23#17#12 + +#255'qT8'#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#199 + +#148'd'#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#199 + +#148'd'#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#199 + +#148'd'#255#199#148'd'#255#199#148'd'#255#199#148'd'#255#198#146'c'#255#193 + +#140'^'#255#178'uN'#255#143'O1'#255'\0'#28#255'[/'#27#255'J=7'#208'CCC'#161 + +'DDDfAAA+FFF'#11#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'UUU'#3'<<<' + +#17'CCC=X1 '#227'[/'#27#255'm:"'#255#167'eA'#255#187#130'X'#255#195#143'a' + +#255#196#144'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c' + +#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c' + +#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#19#14#10#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#135'cD'#255#197#145'c'#255#197 + +#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255'I5$' + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#19#14#10#255'4&'#26#255'cI2'#255 + +#161'vP'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197 + +#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197 + +#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197 + +#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197#145'c'#255#197 + +#145'c'#255#197#145'b'#255#196#144'c'#255#194#140'`'#255#182'|S'#255#159'\:' + +#255']2'#28#255'[/'#27#255'Q8-'#226'DDD'#168'DDDqAAA3NNN'#13#128#128#128#2#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@@'#4':::'#22'G@/[/'#27 + +#254'[/'#27#255'}A&'#255#167'gD'#255#180'zW'#255#181'|Y'#255#181'|Y'#255#181 + +'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y' + +#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#136']C'#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#19#13#9#255#151'gJ'#255#181'|Y'#255#181'|Y'#255#181 + +'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y' + +#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#171'vU'#255'1"'#24#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255'}V>'#255 + +#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181 + +'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y' + +#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255 + +#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181 + +'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y'#255#181'|Y' + +#255#181'|Y'#255#181'|Y'#255#178'wT'#255#161'];'#255'k8 '#255'[/'#27#255'V3#' + +#238'DDD'#151'CCCWFFF!@@@'#8#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2'FFF'#11 + +'K:3?[/'#27#255'[/'#27#255#131'F*'#255#169'iH'#255#179'xV'#255#180'zW'#255 + +#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180 + +'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255'<)'#29#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#1#1#1#255'O6&'#255#180'{W'#255#180'{W'#255#180'{W'#255#180 + +'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W' + +#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255 + +#180'{W'#255#142'aE'#255#27#19#13#255#2#1#1#255#0#0#0#255#0#0#0#255#0#0#0#255 + ,#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#8#5#4#255 + +#135']A'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180 + +'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255'pL6'#255'+'#29#20#255'('#28#19 + +#255'*'#28#20#255'+'#29#21#255'-'#30#21#255'fF2'#255#180'{W'#255#180'{W'#255 + +#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180 + +'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W'#255#180'{W' + +#255#180'{W'#255#180'{W'#255#180'{W'#255#180'zX'#255#178'vU'#255#163'_>'#255 + +'r<"'#255'[/'#27#255'X2!'#243'CCC'#152'BBBYDDD"@@@'#8#0#0#0#1#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#2'FFF'#11'N8.J[/'#27#255'[/'#27#255#135'H,'#255#170'kI'#255 + +#178'wV'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179 + +'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX' + +#255#16#11#8#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#19#13#10#255#150'fJ'#255#179'yX'#255#179 + +'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX' + +#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255 + +#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179 + +'yX'#255'~V>'#255'=)'#30#255#19#13#9#255#1#1#1#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255'$'#24#17#255#172'uT'#255#179'yX'#255#179'yX'#255#179'yX' + +#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#158'kN'#255'=)'#30#255#6 + +#4#3#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#6#4#3#255'?+'#31#255#164'oP'#255#179'yX'#255#179'yX'#255#179'yX'#255#179 + +'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX' + +#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255#179'yX'#255 + +#177'uU'#255#164'b@'#255'v?%'#255'[/'#27#255'Y1'#31#246'CCC'#152'BBBYDDD"@@@' + +#8#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'FFF'#11'Q7+U[/'#27#255'\0'#28#255 + +#139'J-'#255#171'lL'#255#177'wW'#255#178'wV'#255#178'wV'#255#178'wV'#255#178 + +'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV' + +#255#178'wV'#255#172'sT'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#1#255'O5&'#255#178'wV'#255#178'wV' + +#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255 + +#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178 + +'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV' + +#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#176'wV'#255 + +'vO9'#255'7%'#27#255#16#10#8#255#1#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#11#8#6#255'9&'#28#255#137'\C'#255#178'wV'#255#178'wV'#255 + +#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255'M3%' + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255'4"'#25#255#178'wV' + +#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255 + +#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178'wV'#255#178 + +'wV'#255#178'wV'#255#176'tT'#255#165'cC'#255'yA'''#255'[/'#27#255'Z0'#29#250 + +'DDD'#150'CCCWFFF!III'#7#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'MMM'#10'R4' + +'''^[/'#27#255'\0'#28#255#142'M.'#255#171'nN'#255#177'uV'#255#177'wX'#255#177 + +'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX' + +#255#177'wX'#255#177'wX'#255#177'wX'#255'gF3'#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#23#16#12#255#152'fK'#255#177 + +'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX' + +#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255 + +#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177 + +'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX' + +#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#173'uV'#255 + +#136'\D'#255#133'YB'#255#131'XA'#255#128'V@'#255#153'gL'#255#177'wX'#255#177 + +'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX' + +#255#177'wX'#255#177'wX'#255'S8)'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255'"'#23#17#255#175'wX'#255#177'wX'#255#177 + +'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX' + +#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#177'wX'#255#175'tU'#255 + +#166'eE'#255'}B)'#255'\0'#28#255'[/'#28#253'CCC'#148'CCCTBBB'#31'III'#7#0#0#0 + ,#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'999'#9'V4%h[/'#27#255'\0'#28#255#145'O0' + +#255#171'mN'#255#175'sU'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255 + +#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175 + +'uW'#255'*'#29#21#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#2 + +#1#1#255'X;,'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255 + +#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175 + +'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW' + +#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255 + +#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175 + +'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW' + +#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255 + +#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255'^?/'#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255'$'#24#18#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255 + +#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175'uW'#255#175 + +'uW'#255#175'uW'#255#175'uW'#255#175'sT'#255#166'eE'#255#128'D*'#255'\0'#28 + +#255'[/'#27#255'ECB'#149'CCCP@@@'#28'UUU'#6#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#1'@@@'#8'W3#q[/'#27#255'\1'#29#255#150'Q1'#255#171'mN'#255#174'sU'#255 + +#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175 + +'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#15#10#8#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#4#3#2#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#29#19#14#255#156'iM'#255#175'uV'#255 + +#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175 + +'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV' + +#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255 + +#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175 + +'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV' + +#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255 + +#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175 + +'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#11#7#6#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255'sM9'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255 + +#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175'uV'#255#175 + +'tV'#255#174'rS'#255#167'fG'#255#131'G,'#255'\0'#28#255'[/'#27#255'GA?'#150 + +'CCCLGGG'#25'333'#5#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'III'#7'W3#k[/'#27 + +#255'\1'#29#255#149'P2'#255#169'lM'#255#174'qT'#255#175'tV'#255#175'tV'#255 + +#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175 + +'tV'#255#175'tV'#255#175'tV'#255#9#6#4#255#0#0#0#255#0#0#0#255#0#0#0#255#136 + +'ZC'#255'T8*'#255#1#1#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#7#5#3#255 + +'bA0'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV' + +#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255 + +#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175 + +'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV' + +#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255 + +#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175 + +'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV' + +#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255 + +#165'nR'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#10#7#5#255#175'tV'#255#175 + +'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV'#255#175'tV' + +#255#175'tV'#255#175'tV'#255#175'tV'#255#174'sU'#255#173'qR'#255#166'eG'#255 + +#131'F,'#255'\0'#28#255'[/'#27#255'EA?'#145'DDDGFFF'#22'@@@'#4#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#1'333'#5'W3#\[/'#27#255'\1'#29#255#146'P3'#255#168 + +'jM'#255#173'pT'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU' + +#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255 + +#4#3#2#255#0#0#0#255#0#0#0#255#21#14#10#255#173'rU'#255#173'rU'#255#152'dK' + +#255'dB1'#255'A+ '#255'D-!'#255#141']E'#255#173'rU'#255#173'rU'#255#173'rU' + +#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255 + +#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173 + +'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU' + ,#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255 + +#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173 + +'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU' + +#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255 + +#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#169'pS'#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#139'\D'#255#173'rU'#255#173'rU' + +#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255#173'rU'#255 + +#173'rU'#255#173'rU'#255#173'qT'#255#172'oR'#255#165'cF'#255#128'E+'#255'\0' + +#28#255'[/'#27#255'CBA'#132'DDD@CCC'#19'UUU'#3#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0'@@@'#4'U2"L[/'#27#255'\1'#29#255#143'N3'#255#168'hK'#255#172'oT' + +#255#173'qU'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255 + +#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#1#1#1#255#0#0#0 + +#255#0#0#0#255'nI7'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173 + +'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV' + +#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255 + +#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173 + +'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV' + +#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255 + +#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173 + +'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV' + +#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255 + +#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#2#1#1#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255'H0$'#255#173'rV'#255#173'rV'#255#173'rV' + +#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255#173'rV'#255 + +#173'rV'#255#173'qU'#255#171'nQ'#255#165'dF'#255'~D+'#255'\1'#29#255'Z0'#28 + +#252'CCCzCCC9@@@'#16#128#128#128#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'U' + +'UU'#3'T2#=[/'#27#255'\1'#29#255#140'N1'#255#166'gI'#255#171'oR'#255#173'qU' + +#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255 + +#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#1#1#1#255#27#18#13#255'a@0' + +#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255 + +#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173 + +'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU' + +#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255 + +#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173 + +'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU' + +#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255 + +#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173 + +'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU' + +#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255'$'#24#18#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#31#20#15#255#173'qU'#255#173'qU'#255#173'qU'#255 + +#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173'qU'#255#173 + +'qU'#255#172'pT'#255#169'lP'#255#164'aD'#255'{C*'#255'\1'#29#255'Y0'#30#247 + +'CCCoBBB2;;;'#13#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128 + +#2'V6''-[/'#27#255'\1'#29#255#137'L0'#255#165'fH'#255#170'mQ'#255#172'pT'#255 + +#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172 + +'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#166'lS'#255#172'pU'#255#172'pU' + +#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255 + +#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172 + +'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU' + +#255#172'pU'#255#172'pU'#255#172'pU'#255#168'nS'#255#134'WB'#255'b@0'#255'tK' + +'9'#255#166'lS'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU' + +#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255 + +#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172 + +'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU' + +#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255 + +#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#129'T@'#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + ,#255#0#0#0#255#0#0#0#255#22#14#11#255#172'pU'#255#172'pU'#255#172'pU'#255#172 + +'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU'#255#172'pU' + +#255#172'oT'#255#170'mP'#255#163'`C'#255'xB*'#255'\1'#29#255'Y1'#31#241'BBBd' + +'CCC*MMM'#10#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2'T7*'#29 + +'[/'#27#255'\1'#29#255#134'J0'#255#165'dG'#255#169'lQ'#255#171'pU'#255#172'q' + +'W'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW' + +#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255 + +#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172 + +'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW' + +#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255 + +#135'YD'#255'$'#24#18#255#3#2#2#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#8#5#4#255#30#20#16#255'xO='#255#172'qW'#255#172'qW'#255#172'qW'#255 + +#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172 + +'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW' + +#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255 + +#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172 + +'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#14#9#7#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#20#13#10#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW' + +#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#172'qW'#255#171'oT'#255 + +#169'jM'#255#162'_A'#255's>'''#255'\1'#29#255'X2 '#234'CCCXDDD"@@@'#8#0#0#0#1 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'C><'#9'[/'#27#247'\1'#29#255 + +'}F-'#255#164'bE'#255#169'lO'#255#171'pT'#255#172'qV'#255#172'qV'#255#172'qV' + +#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255 + +#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172 + +'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV' + +#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255 + +#172'qV'#255#172'qV'#255#154'eM'#255#22#15#11#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#25#17#13#255#136'ZE'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV' + +#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255 + +#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172 + +'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV' + +#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255 + +#172'qV'#255'U7*'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#17#11#9#255#172'qV'#255#172 + +'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV'#255#172'qV' + +#255#172'qV'#255#172'qV'#255#171'oT'#255#168'jM'#255#161'^@'#255'k;%'#255'\0' + +#28#255'V3#'#220'CCCLEEE'#26'333'#5#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0'+++'#6'[/'#28#214'\1'#29#255't@)'#255#162'`B'#255#168'jO'#255 + +#172'pV'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173 + +'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX' + +#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255 + +#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173 + +'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#144'_I'#255#6#4#3 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'Z;-'#255 + +#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173 + +'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX' + +#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255 + +#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173 + +'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#171'pV'#255#3#2#1#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255'!'#22#17#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX' + +#255#173'rX'#255#173'rX'#255#173'rX'#255#173'rX'#255#172'qX'#255#171'oU'#255 + +#167'hM'#255#160'[>'#255'b5!'#255'\0'#28#255'S5'''#196'EEE?CCC'#19'@@@'#4#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'UUU'#3'Z0'#29#176'\1'#29 + +#255'k:%'#255#162'^A'#255#169'jN'#255#173'qV'#255#174'sY'#255#174'sY'#255#174 + +'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY' + +#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255 + +#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174 + ,'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY' + +#255#151'dM'#255#4#2#2#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#1#1#1#255#136'YF'#255#174'sY'#255#174'sY'#255#174's' + +'Y'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY' + +#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255 + +#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174 + +'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY' + +#255#174'sY'#255'5#'#27#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'G.$'#255#174'sY'#255#174'sY'#255 + +#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174 + +'sY'#255#174'sY'#255#172'pV'#255#167'gK'#255#153'X:'#255'^3'#31#255'\0'#28 + +#255'Q7+'#166'BBB2777'#14#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#2'Z0'#29#137'\0'#28#255'a5!'#255#160']>'#255#168'jN'#255 + +#173'sY'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175 + +'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\' + +#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255 + +#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175 + +'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#29#20#15#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#8 + +#5#4#255#169'rX'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\' + +#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255 + +#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175 + +'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\' + +#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#156'jR'#255#1#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255'yQ?'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255 + +#175'v\'#255#175'v\'#255#175'v\'#255#175'v\'#255#174'u['#255#172'qV'#255#166 + +'gJ'#255#143'S6'#255'^2'#31#255'[/'#27#255'O;2'#130'CCC&999'#9#0#0#0#1#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'Z0'#29'a\0'#28#255 + +'^3'#31#255#153'W;'#255#168'jN'#255#174'tZ'#255#176'x_'#255#176'y_'#255#176 + +'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_' + +#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255 + +#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176 + +'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255'oL='#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255']@2'#255#176'y_'#255#176'y_'#255#176 + +'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255'Z=1'#255')'#28#22#255#26#18#14 + +#255#14#10#8#255#10#7#5#255#23#16#12#255'+'#30#23#255'E0&'#255#138'_J'#255 + +#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176 + +'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_' + +#255#176'y_'#255'#'#24#19#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#172'w]'#255#176'y_'#255#176'y_'#255 + +#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176'y_'#255#176 + +'y_'#255#175'w^'#255#172'rW'#255#165'fI'#255#134'K2'#255']1'#30#255'[/'#27 + +#255'H?:ZBBB'#27'+++'#6#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0'X/'#29'7[/'#27#255'^2'#31#255#141'P5'#255#167'hK'#255#174 + +'sY'#255#177'x_'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za' + +#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255 + +#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177 + +'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za' + +#255#177'za'#255#177'za'#255#9#6#5#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255'%'#25#20#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255'bD6'#255#8 + +#6#4#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255'>+"'#255#175'za'#255#177'za'#255#177'za'#255#177'za' + +#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255 + +#177'za'#255#177'za'#255#177'za'#255#136'^K'#255#0#0#0#255#0#0#0#255#0#0#0 + ,#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#16#11#9#255#177'za'#255#177 + +'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za'#255#177'za' + +#255#177'za'#255#177'za'#255#176'x^'#255#172'qV'#255#164'cF'#255'{E,'#255']1' + +#30#255'Z0'#29#245'DDD'#255 + +'`5!'#255'\0'#28#255'T5'''#155'DDD'#30'III'#7#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'Z/'#28'w\0'#28#255 + +'`5!'#255#157'\?'#255#172'pU'#255#179'}d'#255#181#129'i'#255#182#129'j'#255 + +#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255 + +#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255 + +#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255 + +#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255 + +#182#129'j'#255#182#129'j'#255#182#129'j'#255'.!'#27#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#2#1#1#255#166'va'#255#182#129'j'#255#182#129'j'#255'A.&' + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#9#6#5#255#170'yd'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255#182 + +#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255#182 + +#129'j'#255#182#129'j'#255#182#129'j'#255#8#6#5#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#135'`O'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255 + +#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255#182#129'j'#255 + +#182#129'j'#255#182#129'j'#255#181#128'h'#255#177'za'#255#169'kP'#255#139'Q7' + +#255'^3'#31#255'\0'#28#255'N9/\GGG'#18'UUU'#3#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'X.'#26'4\0'#28#255 + ,'^3'#31#255#141'S8'#255#170'mQ'#255#179'|c'#255#182#130'k'#255#184#132'm'#255 + +#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255 + +#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255 + +#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255 + +#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255 + +#184#132'm'#255#184#132'm'#255#184#132'm'#255#20#15#12#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255'N8.'#255#184#132'm'#255#184#132'm'#255#184#132'm' + +#255#22#16#13#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#21#15#13#255#182#130'm'#255#184#132'm'#255#184#132 + +'m'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132 + +'m'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255'N8.'#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#23#17#13#255#184#132'm'#255#184#132'm'#255#184#132'm'#255 + +#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255#184#132'm'#255 + +#184#132'm'#255#184#132'm'#255#183#131'l'#255#182#129'j'#255#177'x_'#255#167 + +'hK'#255'zG/'#255']1'#30#255'Z0'#28#241'@@@(MMM'#10#0#0#0#1#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'='#31 + +#18#3'[/'#27#238']1'#30#255'{G/'#255#167'hL'#255#177'za'#255#183#131'l'#255 + +#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255 + +#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255 + +#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255 + +#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255 + +#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#26#19#16#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#12#9#7#255#185#134'p'#255#185#134'p'#255#185#134'p' + +#255#185#134'p'#255#3#2#2#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'U>4'#255#185#134'p'#255#185 + +#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#185 + +#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#25#18 + +#15#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255'xWI'#255#185#134'p'#255#185#134'p'#255#185#134 + +'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134'p'#255#185#134 + +'p'#255#185#134'p'#255#185#134'p'#255#184#134'o'#255#182#129'j'#255#175'v\' + +#255#165'dG'#255'h;&'#255'\1'#29#255'X2 '#193'==='#25'+++'#6#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0'[/'#27#170'\1'#29#255'f9%'#255#164'bG'#255#175'v]'#255#183#131 + +'l'#255#186#135'r'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137 + +'s'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137 + +'s'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137 + +'s'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137 + +'s'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137's'#255'$'#27#23 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#129'_P'#255#186#137's'#255#186#137's'#255 + +#186#137's'#255#186#137's'#255#1#1#1#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255' '#23#19#255#186 + +#137's'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137's'#255#186 + +#137's'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137's'#255#186 + +#137's'#255#172#127'j'#255#7#5#4#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#12#9#7#255#186#137's'#255#186#137's' + +#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137's' + +#255#186#137's'#255#186#137's'#255#186#137's'#255#186#137's'#255#185#135'q' + +#255#181#129'i'#255#173'qW'#255#149'X='#255'`5!'#255'\0'#28#255'V4%'#127'333' + +#15#0#0#0#3#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'Z/'#27'O\0'#28#255'_4 '#255#144'U:' + +#255#172'qV'#255#182#130'k'#255#187#137't'#255#188#139'u'#255#188#140'v'#255 + +#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255 + +#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255 + ,#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255 + +#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255 + +#188#140'v'#255'1$'#31#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255':+$'#255#188#140'v'#255#188#140 + +'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255#1#1#1#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#4#3#3#255#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255 + +#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255 + +#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255'}]N'#255'6("' + +#255#14#11#9#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'S>5'#255 + +#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255 + +#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255#188#140'v'#255 + +#188#139'u'#255#186#136'r'#255#180'~f'#255#169'kP'#255'|H1'#255'^2'#31#255'[' + +'/'#27#249'L=6+III'#7#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#5'[/'#27#235 + +']1'#30#255'wD/'#255#169'jO'#255#180#127'g'#255#187#137'u'#255#189#141'x'#255 + +#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255 + +#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255 + +#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255 + +#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255 + +#189#142'y'#255#189#142'y'#255'J7/'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#16#12#11#255#187#140'y'#255 + +#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#1 + +#1#1#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#181#136'u'#255#189#142'y'#255#189#142 + +'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142 + +'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142 + +'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#11#8#7#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#1#1#1#255#181#136's'#255#189#142'y'#255#189#142'y'#255#189 + +#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189#142'y'#255#189 + +#142'y'#255#189#142'y'#255#189#142'y'#255#189#141'x'#255#186#136'q'#255#177 + +'za'#255#164'dG'#255'f:&'#255'\1'#29#255'Y1'#31#186'@@@'#16'UUU'#3#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'Z/'#27#147'\1'#29#255'b8$'#255#160'bF'#255 + +#177'y`'#255#186#137's'#255#190#143'z'#255#191#145'|'#255#191#145'|'#255#191 + +#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191 + +#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191 + +#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191 + +#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#162 + +'{i'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#1#1#1#255#162'{i'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255 + +#191#145'|'#255#191#145'|'#255#191#145'|'#255#2#1#1#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1 + +#1#1#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145 + +'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145 + +'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145 + +'|'#255#191#145'|'#255#5#4#3#255#0#0#0#255#0#0#0#255#0#0#0#255'&'#29#25#255 + +#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255 + +#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255#191#145'|'#255 + +#191#145'|'#255#189#142'y'#255#184#134'o'#255#174'sY'#255#143'U;'#255'`5!' + +#255'\0'#28#255'U3$`@@@'#8#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0'Z.'#27'5\0'#28#255'_4 '#255#137'Q8'#255#173'rX'#255#184#134'o'#255#190#144 + +'{'#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127#255#192 + +#147#127#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127#255 + +#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127 + +#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147 + +#127#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127#255#14 + ,#11#9#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255' ' + +#24#21#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127#255 + +#192#147#127#255#192#147#127#255#192#147#127#255#4#3#3#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#8#6#5#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127 + +#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147 + +#127#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127#255#192 + +#147#127#255#192#147#127#255#192#147#127#255#1#1#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#137'iZ'#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147 + +#127#255#192#147#127#255#192#147#127#255#192#147#127#255#192#147#127#255#192 + +#147#127#255#192#147#127#255#192#146'~'#255#189#142'y'#255#182#129'j'#255#169 + +'lP'#255'uD.'#255'^2'#31#255'[/'#28#237'NFB'#21'UUU'#3#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#211']1'#30#255'l>)'#255#167'iM' + +#255#181#127'g'#255#190#143'z'#255#193#148#128#255#194#149#130#255#194#149 + +#130#255#194#149#130#255#194#149#130#255#194#149#130#255#194#149#130#255#194 + +#149#130#255#194#149#130#255#194#149#130#255#194#149#130#255#194#149#130#255 + +#194#149#130#255#194#149#130#255#194#149#130#255#194#149#130#255#194#149#130 + +#255#194#149#130#255#194#149#130#255#194#149#130#255#194#149#130#255#194#149 + +#130#255#194#149#130#255'G60'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255'ZE<'#255#194#149#130#255#194#149#130#255#194#149#130#255 + +#194#149#130#255#194#149#130#255#194#149#130#255#194#149#130#255#7#6#5#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#23#17#15#255#194#149#130#255#194#149#130#255#194#149#130 + +#255#194#149#130#255#194#149#130#255#194#149#130#255#194#149#130#255#194#149 + +#130#255#194#149#130#255#194#149#130#255#194#149#130#255#194#149#130#255#194 + +#149#130#255#194#149#130#255#194#149#130#255#179#137'x'#255#0#0#0#255#0#0#0 + +#255#0#0#0#255'-#'#30#255#194#149#130#255#194#149#130#255#194#149#130#255#194 + +#149#130#255#194#149#130#255#194#149#130#255#194#149#130#255#194#149#130#255 + +#194#149#130#255#194#149#130#255#194#149#130#255#192#147#127#255#188#140'v' + +#255#177'za'#255#156'_D'#255'a6#'#255'\1'#29#255'Y1'#31#153'@@@'#8#0#0#0#1#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'Z/'#27']\0'#28#255 + +'`5!'#255#143'V='#255#175'v]'#255#187#138'u'#255#193#149#129#255#195#152#132 + +#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152 + +#133#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152#133#255#195 + +#152#133#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152#133#255 + +#195#152#133#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152#133 + +#255#195#152#133#255#195#152#133#255#170#133't'#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#172#133'u'#255#195#152#133#255#195#152 + +#133#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152#133#255#146 + +'rd'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'_JA'#255#195#152#133#255#195#152#133 + +#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152 + +#133#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152#133#255#195 + +#152#133#255#195#152#133#255#195#152#133#255#195#152#133#255#140'm`'#255#0#0 + +#0#255#0#0#0#255#6#5#4#255#186#145#127#255#195#152#133#255#195#152#133#255 + +#195#152#133#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152#133 + +#255#195#152#133#255#195#152#133#255#195#152#133#255#195#152#132#255#192#147 + +#127#255#185#134'p'#255#172'pU'#255'|I2'#255'^3'#31#255'\0'#28#250'R5()UUU'#3 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#3 + +'[/'#27#221']1'#30#255'oA,'#255#169'lP'#255#183#131'l'#255#192#147#127#255 + +#196#154#135#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136 + +#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155 + +#136#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255#197 + +#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255 + +#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255#26#20#18#255 + ,#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#8#6#5#255#197#155#136#255#197 + +#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255 + +#197#155#136#255#28#22#19#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#4#3#3#255#193#153#134#255 + +#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136 + +#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155 + +#136#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255#197 + +#155#136#255#182#143'~'#255'=0*'#255#7#5#5#255#130'fY'#255#197#155#136#255 + +#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136 + +#255#197#155#136#255#197#155#136#255#197#155#136#255#197#155#136#255#196#154 + +#136#255#195#152#133#255#190#144'{'#255#180'~f'#255#159'bG'#255'c8%'#255'\1' + +#29#255'Z0'#30#163'III'#7#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27'g\0'#28#255'a6#'#255#147'Y@'#255#177 + +'za'#255#190#143'z'#255#196#154#135#255#198#157#139#255#198#157#139#255#198 + +#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255 + +#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139 + +#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157 + +#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198 + +#157#139#255'<0+'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'*!'#29#255 + +#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139 + +#255#198#157#139#255#164#130's'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'?2,'#255#198 + +#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255 + +#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139 + +#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157 + +#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198 + +#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255 + +#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139#255#198#157#139 + +#255#198#157#139#255#198#156#138#255#195#152#132#255#187#138't'#255#173'sY' + +#255#127'L5'#255'^3'#31#255'\0'#28#252'U3$,'#128#128#128#2#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#7 + +'[/'#27#229'^2'#31#255'qB.'#255#171'nS'#255#185#134'p'#255#194#151#131#255 + +#198#158#140#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160#142 + +#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160 + +#142#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160#142#255#200 + +#160#142#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160#142#255 + +#200#160#142#255#200#160#142#255#200#160#142#255'9.)'#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255'hSJ'#255#200#160#142#255#200#160#142#255#200#160#142 + +#255#200#160#142#255#200#160#142#255#200#160#142#255'6+'''#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#6#5#5#255#184#148#131#255#200#160#142#255#200#160#142#255#200#160#142 + +#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160 + +#142#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160#142#255#200 + +#160#142#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160#142#255 + +#200#160#142#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160#142 + +#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160#142#255#200#160 + +#142#255#200#160#142#255#200#160#142#255#199#159#141#255#198#157#139#255#192 + +#147#127#255#181#127'g'#255#161'dI'#255'd:&'#255'\1'#29#255'Z0'#29#171'@@@'#4 + +#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27'q\1'#29#255'a6#'#255#143'W?'#255#177'za'#255 + +#191#144'|'#255#198#157#139#255#200#161#144#255#201#162#145#255#201#163#145 + +#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163 + +#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201 + +#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255 + +#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255'=2,'#255#0#0 + ,#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255'!'#27#24#255#197#161#143#255#201#163#145#255 + +#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255#197#161#143 + +#255#3#2#2#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#1#1#1#255#149'zl'#255#201#163#145#255#201#163#145 + +#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163 + +#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201 + +#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255 + +#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145 + +#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201#163 + +#145#255#201#163#145#255#201#163#145#255#201#163#145#255#201#162#145#255#200 + +#161#143#255#197#155#136#255#187#138'u'#255#173'rX'#255'|I3'#255'_4 '#255'\0' + +#28#253'W1 2'#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#6'\0'#28#216'^2'#31#255 + +'i=)'#255#165'jP'#255#184#133'n'#255#196#152#134#255#201#162#145#255#202#164 + +#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202 + +#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255 + +#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148 + +#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165 + +#148#255'E82'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#2#2#2#255#1#1#1#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'.&"'#255#202#165#148#255#202#165#148 + +#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165 + +#148#255#146'wk'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'eRI'#255#202#165#148#255#202#165#148 + +#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165 + +#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202 + +#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255 + +#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148 + +#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165 + +#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202#165#148#255#202 + +#164#147#255#200#160#143#255#193#148#128#255#180'~f'#255#151'^D'#255'a7$'#255 + +'\1'#29#255'Z0'#28#156'UUU'#3#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27 + +'D\0'#28#255'`5!'#255#128'N8'#255#175'v]'#255#190#143'{'#255#200#159#142#255 + +#203#165#150#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151 + +#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167 + +#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204 + +#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255 + +#204#167#151#255'N?9'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'vaW'#255 + +#204#167#151#255#160#131'w'#255'cRI'#255'WG@'#255#168#137'|'#255#204#167#151 + +#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167 + +#151#255#204#167#151#255#204#167#151#255#145'wk'#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'G:4'#255#204#167 + +#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204 + +#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255 + +#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151 + +#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167 + +#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204 + +#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255#204#167#151#255 + +#204#167#151#255#204#167#150#255#202#165#148#255#198#155#138#255#186#137's' + +#255#171'nU'#255'oB.'#255'^2'#31#255'\0'#28#235'V2"'#21#0#0#0#1#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#169'\1'#29#255'c9&'#255#155'aH'#255 + +#182#128'j'#255#195#152#133#255#202#164#148#255#205#169#154#255#206#169#155 + +#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169 + +#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206 + +#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255 + +#206#169#155#255#206#169#155#255#206#169#155#255'VGA'#255#0#0#0#255#0#0#0#255 + ,#0#0#0#255#5#4#4#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169 + +#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206 + +#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255 + +#206#169#155#255#152'}r'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#2#1#1#255'vaY'#255#206#169#155#255#206#169#155#255#206#169 + +#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206 + +#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255 + +#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155 + +#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169 + +#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206 + +#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255#206#169#155#255 + +#205#167#152#255#201#162#145#255#192#147#127#255#177'za'#255#138'T='#255'`6"' + +#255'\1'#29#255'[0'#29'e'#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0'[/'#27#27'\0'#28#243'^3'#31#255'pC/'#255#171'oU'#255#188#138'u' + +#255#199#158#141#255#205#169#154#255#207#171#157#255#207#172#158#255#207#172 + +#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207 + +#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255 + +#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158 + +#255#207#172#158#255'~i`'#255#0#0#0#255#0#0#0#255#0#0#0#255#22#18#16#255#207 + +#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255 + +#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158 + +#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172 + +#158#255'/''$'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#9#7#7#255 + +#164#136'~'#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158 + +#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172 + +#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207 + +#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255 + +#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158 + +#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172 + +#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#171#157#255#204 + +#167#151#255#196#153#136#255#183#131'l'#255#160'fK'#255'f;('#255']1'#30#255 + +'[/'#27#199'te^'#3#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0'[/'#27'q\0'#28#255'`6"'#255#130'P9'#255#177'x`'#255#192#146 + +#127#255#203#164#149#255#208#173#159#255#209#175#161#255#209#175#161#255#209 + +#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255 + +#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161 + +#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175 + +#161#255#199#167#153#255#0#0#0#255#0#0#0#255#0#0#0#255'.&#'#255#209#175#161 + +#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175 + +#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209 + +#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255 + +#209#175#161#255'*$!'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'"'#28#26#255#197#165#153#255 + +#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161 + +#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175 + +#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209 + +#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255 + +#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161 + +#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175#161#255#209#175 + +#161#255#209#175#161#255#209#175#161#255#209#174#160#255#207#171#157#255#200 + +#160#144#255#188#139'w'#255#171'pV'#255'rD0'#255'^3'#31#255'\0'#28#250'\2'#30 + +'1'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0'[/'#27#1'[/'#27#184']1'#30#255'c9&'#255#148'^E'#255#182#128'j'#255#197 + +#154#136#255#206#170#155#255#210#176#163#255#211#178#164#255#211#178#165#255 + +#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165 + +#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178 + ,#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211 + +#178#165#255#12#10#9#255#0#0#0#255#0#0#0#255'MA<'#255#211#178#165#255#211#178 + +#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211 + +#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255 + +#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165 + +#255#211#178#165#255#178#150#139#255'D95'#255#9#7#7#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'VIC'#255#211#178#165#255#211#178#165 + +#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178 + +#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211 + +#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255 + +#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165 + +#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178 + +#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211#178#165#255#211 + +#178#165#255#211#178#165#255#211#178#164#255#209#176#162#255#204#167#151#255 + +#193#148#129#255#177'x`'#255#129'P9'#255'`6"'#255'\0'#28#255'[0'#28't'#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0'[/'#27#21'\0'#28#229'^2'#31#255'i?+'#255#163'jP'#255#186#136 + +'s'#255#200#160#144#255#209#174#160#255#212#180#167#255#213#181#169#255#213 + +#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255 + +#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169 + +#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181 + +#169#255'.''%'#255#0#0#0#255',%#'#255#200#170#159#255#213#181#169#255#213#181 + +#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213 + +#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255 + +#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169 + +#255#213#181#169#255#213#181#169#255#213#181#169#255#139'vo'#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'.''$'#255#213#181#169#255#213#181#169 + +#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181 + +#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213 + +#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255 + +#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169 + +#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181 + +#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213#181#169#255#213 + +#181#169#255#213#181#169#255#212#180#168#255#211#178#165#255#207#171#157#255 + +#197#155#137#255#182#128'j'#255#148']E'#255'c9&'#255']1'#30#255'[/'#27#179#0 + +#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27'?\0'#28#252'_4 '#255'tF1'#255#172 + +'sY'#255#190#142'z'#255#203#165#150#255#211#178#164#255#213#183#170#255#214 + +#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255 + +#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172 + +#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184 + +#172#255#127'ng'#255'{ib'#255#214#184#172#255#214#184#172#255#214#184#172#255 + +#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172 + +#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184 + +#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214 + +#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255' '#28#26#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#14#12#11#255#209#180#168#255#214#184#172 + +#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184 + +#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214 + +#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255 + +#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172 + +#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184 + +#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214#184#172#255#214 + +#184#172#255#214#184#172#255#214#184#172#255#213#182#169#255#209#176#161#255 + +#200#161#143#255#186#135'q'#255#161'gO'#255'h=*'#255'^2'#31#255'\0'#28#226'W' + +'-'#26#19#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27'}\1'#29#255'`6"' + +#255'|M8'#255#175'x^'#255#192#147#127#255#205#170#154#255#213#181#169#255#215 + ,#185#173#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255 + +#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175 + +#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187 + +#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216 + +#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255 + +#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175 + +#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187 + +#175#255#216#187#175#255#216#187#175#255#216#187#175#255#187#162#151#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#2#2#2#255#180#156#146#255#216#187#175 + +#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187 + +#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216 + +#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255 + +#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175 + +#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187 + +#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216#187#175#255#216 + +#187#175#255#216#187#175#255#216#187#175#255#215#185#173#255#211#179#166#255 + +#202#165#148#255#188#139'w'#255#167'mU'#255'nC/'#255'^3'#31#255'\0'#28#251'Z' + +'.'#27';'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#2'[/'#27 + +#170'\1'#29#255'a7$'#255#130'Q<'#255#178'{c'#255#195#151#132#255#208#173#159 + +#255#215#185#173#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189 + +#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217 + +#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255 + +#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178 + +#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189 + +#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217 + +#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255 + +#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255'.(&'#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#128'oi'#255#217#189#178#255#217#189#178 + +#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189 + +#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217 + +#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255 + +#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178 + +#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189 + +#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217#189#178#255#217 + +#189#178#255#217#189#178#255#217#188#177#255#213#183#170#255#205#168#153#255 + +#191#144'|'#255#170'rZ'#255'sF2'#255'`5!'#255'\0'#28#255'Z/'#27'g'#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#6'[/'#27 + +#188']1'#30#255'c9&'#255#136'V?'#255#180'~g'#255#197#154#136#255#209#176#162 + +#255#216#187#176#255#219#192#181#255#219#192#182#255#219#193#183#255#219#193 + +#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219 + +#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255 + +#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183 + +#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193 + +#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219 + +#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255 + +#219#193#183#255#219#193#183#255#158#138#131#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#1#1#1#255#131'sm'#255#219#193#183#255#219#193#183#255#219#193#183#255 + +#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183 + +#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193 + +#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219 + +#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255 + +#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183 + +#255#219#193#183#255#219#193#183#255#219#193#183#255#219#193#183#255#219#192 + +#182#255#218#191#180#255#215#185#173#255#207#172#156#255#193#147#128#255#174 + +'v^'#255'wJ6'#255'`6"'#255'\1'#29#255'[/'#27'~'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#12'[/'#27#203 + +']1'#30#255'c:'''#255#141'YC'#255#181#128'h'#255#198#155#138#255#210#177#164 + +#255#217#190#178#255#220#194#184#255#221#195#185#255#221#196#186#255#221#196 + +#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221 + +#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255 + +#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186 + +#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196 + +#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221 + +#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255 + +#221#196#186#255're_'#255#0#0#0#255#0#0#0#255#4#4#4#255#160#142#134#255#221 + +#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255 + +#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186 + +#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196 + +#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221 + +#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255 + +#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186#255#221#196#186 + +#255#221#196#186#255#221#196#186#255#221#195#185#255#219#193#183#255#216#187 + +#175#255#207#172#158#255#194#148#130#255#176'x_'#255'{M8'#255'a6#'#255'\1'#29 + +#255'[/'#27#148#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#21'\0'#28#217']1'#30#255'c:''' + +#255#138'XB'#255#181#127'h'#255#197#156#137#255#211#178#164#255#218#191#180 + +#255#221#196#187#255#222#198#188#255#223#198#189#255#223#198#189#255#223#198 + +#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223 + +#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255 + +#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189 + +#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198 + +#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223 + +#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#221#196#187#255 + +#6#6#5#255#10#9#8#255#188#167#159#255#223#198#189#255#223#198#189#255#223#198 + +#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223 + +#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255 + +#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189 + +#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198 + +#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223 + +#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255#223#198#189#255 + +#222#198#188#255#221#196#186#255#217#188#177#255#208#173#159#255#193#149#129 + +#255#174'w^'#255'zM8'#255'a7$'#255'\1'#29#255'[/'#27#170'[/'#27#2#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0'[/'#27' \0'#28#223']1'#30#255'c:'''#255#132'T?'#255#180 + +'~g'#255#197#155#136#255#211#178#164#255#219#193#181#255#223#198#189#255#224 + +#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255 + +#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192 + +#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201 + +#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224 + +#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255 + +#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192 + +#255#224#201#192#255#224#201#192#255#134'xr'#255#205#184#176#255#224#201#192 + +#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201 + +#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224 + +#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255 + +#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192 + +#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201 + +#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224#201#192#255#224 + +#201#192#255#224#201#192#255#223#200#191#255#222#197#187#255#217#189#178#255 + +#207#172#158#255#192#147#127#255#171'u\'#255'vI6'#255'a6#'#255'\1'#29#255'[/' + +#27#179'[/'#27#6#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#25'\' + +'0'#28#209']1'#30#255'c9&'#255#128'Q='#255#177'{c'#255#195#151#133#255#209 + +#176#162#255#219#192#181#255#223#200#191#255#225#203#194#255#226#204#196#255 + +#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196 + +#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204 + +#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226 + +#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255 + +#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196 + +#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204 + +#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226 + +#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255 + +#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196 + +#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204 + +#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226 + +#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255#226#204#196#255 + +#226#204#196#255#226#204#196#255#226#203#195#255#225#202#193#255#222#198#188 + +#255#217#188#177#255#206#169#155#255#191#144'|'#255#168'qY'#255'rG3'#255'`6"' + +#255'\1'#29#255'[/'#27#159'[/'#27#4#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0'[/'#27#15'\0'#28#193']1'#30#255'b8%'#255'yM8'#255#170 + +'u\'#255#192#146'~'#255#207#171#156#255#217#189#178#255#223#200#191#255#226 + +#205#197#255#227#206#198#255#228#207#199#255#228#207#199#255#228#207#199#255 + +#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199 + +#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207 + +#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228 + +#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255 + +#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199 + +#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207 + +#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228 + +#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255 + +#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199 + +#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207 + +#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228#207#199#255#228 + +#207#199#255#228#207#199#255#227#206#198#255#226#204#196#255#222#198#188#255 + +#215#185#173#255#202#165#148#255#187#137'u'#255#159'jR'#255'nD0'#255'`6"'#255 + +'\1'#29#255'[/'#27#137#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#8'[/'#27#175'\1'#29#255'`6"'#255'n' + +'D0'#255#158'iR'#255#187#137'u'#255#202#165#148#255#215#186#174#255#223#199 + +#190#255#227#205#198#255#229#208#201#255#229#209#202#255#229#210#202#255#229 + +#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255 + +#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202 + +#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210 + +#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229 + +#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255 + +#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202 + +#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210 + +#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229 + +#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255 + +#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202 + +#255#229#210#202#255#229#210#202#255#229#210#202#255#229#210#202#255#229#209 + +#202#255#228#207#201#255#226#204#197#255#221#196#187#255#212#180#168#255#198 + +#157#140#255#183#130'l'#255#143'^G'#255'g>+'#255'_4 '#255'\1'#29#254'[/'#27 + +'q'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#3'[/'#27#132'\1'#29#254'_4 '#255'g>+' + +#255#140'[F'#255#181#129'j'#255#198#155#138#255#211#178#165#255#221#195#185 + +#255#227#204#197#255#230#209#203#255#230#212#205#255#231#212#206#255#231#212 + +#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231 + +#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255 + +#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206 + +#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212 + +#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231 + +#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255 + +#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206 + +#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212 + +#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231 + +#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255#231#212#206#255 + +#231#212#206#255#231#211#206#255#230#211#205#255#229#209#201#255#225#203#194 + +#255#219#191#181#255#208#173#159#255#193#149#129#255#173'w`'#255'~Q='#255'c:' + +''''#255'^2'#31#255'\0'#28#238'[/'#27'O'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0'[/'#27'F\0'#28#234'^2'#31#255'c:'''#255'zN:'#255#168's['#255 + +#190#143'{'#255#205#167#152#255#217#187#177#255#225#201#193#255#229#209#202 + +#255#232#213#207#255#232#214#209#255#233#215#210#255#233#215#210#255#233#215 + +#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233 + +#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255 + +#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210 + +#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215 + +#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233 + +#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255 + +#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210 + +#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215 + +#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233#215#210#255#233 + +#215#210#255#232#215#209#255#232#214#208#255#231#212#206#255#228#207#201#255 + +#223#198#189#255#213#182#170#255#200#160#144#255#186#136'r'#255#158'iR'#255 + +'pE2'#255'a7$'#255']1'#30#255'\0'#28#201'[/'#27#31#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#26'\0'#28#193']1'#30#255'`' + +'6"'#255'iA.'#255#142']H'#255#179#128'h'#255#196#153#135#255#210#176#163#255 + +#220#194#184#255#227#205#198#255#231#212#206#255#233#216#211#255#234#217#212 + +#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218 + +#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234 + +#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255 + +#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213 + +#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218 + +#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234 + +#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255 + +#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213 + +#255#234#218#213#255#234#218#213#255#234#218#213#255#234#218#213#255#234#217 + +#212#255#234#216#211#255#233#215#210#255#230#211#205#255#226#203#195#255#218 + +#190#179#255#206#170#155#255#192#146#127#255#172'v`'#255#129'S?'#255'e<)'#255 + +'_4 '#255'\1'#29#255'[/'#27#143'[/'#27#5#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#3'[/'#27#127'\0'#28 + +#248'^3'#31#255'c:'''#255'sI6'#255#158'kT'#255#186#136's'#255#200#160#143#255 + ,#213#180#169#255#222#197#187#255#229#208#201#255#232#214#209#255#234#218#213 + +#255#235#219#215#255#236#220#215#255#236#220#216#255#236#220#216#255#236#220 + +#216#255#236#220#216#255#236#220#216#255#236#220#216#255#236#220#216#255#236 + +#220#216#255#236#220#216#255#236#220#216#255#236#220#216#255#236#220#216#255 + +#236#220#216#255#236#220#216#255#236#220#216#255#236#220#216#255#236#220#216 + +#255#236#220#216#255#236#220#216#255#236#220#216#255#236#220#216#255#236#220 + +#216#255#236#220#216#255#236#220#216#255#236#220#216#255#236#220#216#255#236 + +#220#216#255#236#220#216#255#236#220#216#255#236#220#216#255#236#220#216#255 + +#236#220#216#255#236#220#216#255#236#220#216#255#236#220#216#255#236#220#216 + +#255#236#220#216#255#236#220#215#255#235#219#215#255#234#217#212#255#232#213 + +#207#255#227#205#198#255#219#193#183#255#209#176#162#255#196#153#136#255#181 + +#129'l'#255#145'`K'#255'lB0'#255'a7$'#255']1'#30#255'\0'#28#231'[/'#27'O'#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27'$\0'#28#185'\1'#29#255'`5!'#255 + +'f=*'#255#128'S>'#255#166'r['#255#188#139'v'#255#201#161#145#255#213#181#169 + +#255#223#197#189#255#229#209#202#255#233#216#210#255#235#219#215#255#236#221 + +#217#255#237#222#219#255#238#223#220#255#238#223#220#255#238#223#220#255#238 + +#223#220#255#238#223#220#255#238#223#220#255#238#223#220#255#238#223#220#255 + +#238#223#220#255#238#223#220#255#238#223#220#255#238#223#220#255#238#223#220 + +#255#238#223#220#255#238#223#220#255#238#223#220#255#238#223#220#255#238#223 + +#220#255#238#223#220#255#238#223#220#255#238#223#220#255#238#223#220#255#238 + +#223#220#255#238#223#220#255#238#223#220#255#238#223#220#255#238#223#220#255 + +#238#223#220#255#238#223#220#255#238#223#220#255#238#223#220#255#238#223#220 + +#255#237#222#219#255#237#222#218#255#236#221#217#255#235#218#214#255#232#214 + +#208#255#228#206#199#255#220#193#184#255#210#176#163#255#197#155#137#255#184 + +#134'o'#255#155'iR'#255'uI7'#255'c:'''#255'^3'#31#255'\1'#29#252'[/'#27#144 + +'[/'#27#14#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[' + +'/'#27'U\0'#28#228']1'#30#255'`6"'#255'g>,'#255#127'R?'#255#164'qZ'#255#188 + +#139'v'#255#200#159#144#255#211#179#166#255#220#194#184#255#228#206#199#255 + +#232#214#209#255#235#219#215#255#237#222#219#255#238#225#221#255#239#225#222 + +#255#239#225#222#255#239#226#223#255#239#226#223#255#239#226#223#255#239#226 + +#223#255#239#226#223#255#239#226#223#255#239#226#223#255#239#226#223#255#239 + +#226#223#255#239#226#223#255#239#226#223#255#239#226#223#255#239#226#223#255 + +#239#226#223#255#239#226#223#255#239#226#223#255#239#226#223#255#239#226#223 + +#255#239#226#223#255#239#226#223#255#239#226#223#255#239#226#223#255#239#226 + +#223#255#239#226#223#255#239#226#223#255#239#225#222#255#238#225#221#255#238 + +#224#220#255#237#222#218#255#235#218#214#255#231#212#206#255#226#203#195#255 + +#218#191#180#255#209#174#160#255#197#154#136#255#184#132'o'#255#154'hR'#255 + +'uK8'#255'e;('#255'_4 '#255'\1'#29#255'\0'#28#197'[/'#27'/'#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27 + +#12'[/'#27#134'\0'#28#242'^2'#31#255'a5#'#255'g>+'#255'|Q='#255#160'lV'#255 + +#184#133'p'#255#196#152#134#255#207#170#156#255#216#187#175#255#224#200#192 + +#255#230#210#203#255#234#216#211#255#236#220#216#255#238#224#220#255#239#226 + +#223#255#240#227#225#255#240#228#225#255#240#228#225#255#241#229#226#255#241 + +#229#226#255#241#229#226#255#241#229#226#255#241#229#227#255#241#229#227#255 + +#241#229#227#255#241#229#227#255#241#229#227#255#241#229#227#255#241#229#227 + +#255#241#229#227#255#241#229#227#255#241#229#226#255#241#229#226#255#241#229 + ,#226#255#241#229#226#255#240#228#225#255#240#228#225#255#240#227#224#255#239 + +#225#222#255#238#223#220#255#236#220#215#255#233#215#210#255#228#207#201#255 + +#222#196#187#255#213#183#170#255#204#166#150#255#192#147#127#255#179#127'i' + +#255#150'fO'#255'tI7'#255'e;('#255'`5!'#255']1'#30#255'\0'#28#223'[/'#27'`[/' + +#27#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#17'[/'#27#127'\0'#28#238']1' + +#30#255'`6"'#255'e<)'#255'rI6'#255#142'_J'#255#170'wa'#255#188#140'w'#255#199 + +#158#141#255#208#173#159#255#216#186#175#255#222#196#187#255#227#206#198#255 + +#232#213#208#255#235#219#214#255#237#222#218#255#238#224#220#255#239#226#223 + +#255#240#227#225#255#241#229#226#255#242#230#228#255#242#230#228#255#242#231 + +#229#255#242#231#229#255#242#231#229#255#242#231#229#255#242#231#229#255#242 + +#231#229#255#242#231#229#255#242#230#228#255#241#229#227#255#241#229#226#255 + +#240#227#225#255#239#225#222#255#238#224#220#255#236#221#217#255#234#218#213 + +#255#231#211#206#255#226#204#196#255#220#194#184#255#214#183#171#255#206#169 + +#155#255#196#153#135#255#185#135'r'#255#162'q['#255#134'XD'#255'lC1'#255'c:' + +''''#255'_4 '#255']0'#30#255'\0'#28#217'[/'#27'`[/'#27#4#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#13'[/'#27'w\0'#28#233 + +']1'#30#255'_4 '#255'b8%'#255'h?-'#255'zN;'#255#149'dP'#255#170'xa'#255#187 + +#137't'#255#194#150#131#255#202#164#148#255#210#176#163#255#216#187#175#255 + +#220#194#184#255#224#200#192#255#228#207#199#255#231#212#206#255#234#217#211 + +#255#236#220#215#255#236#222#217#255#237#222#219#255#238#223#220#255#238#223 + +#220#255#238#224#220#255#238#223#220#255#237#223#219#255#237#223#218#255#236 + +#221#217#255#235#219#215#255#233#216#210#255#230#211#204#255#227#204#197#255 + +#223#199#190#255#219#192#183#255#215#185#173#255#208#173#159#255#200#160#144 + +#255#192#146#127#255#183#133'o'#255#164's\'#255#142']J'#255'rI7'#255'f=*'#255 + +'a6#'#255'^3'#31#255'\1'#29#255'\0'#28#210'[/'#27'X[/'#27#2#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0'[/'#27#5'[/'#27'P\0'#28#173'\1'#29#249']1'#30#255'`5!'#255'c9&'#255'g' + +'>,'#255'qH6'#255#133'YE'#255#153'iT'#255#172'yd'#255#186#136'q'#255#191#144 + +'}'#255#196#153#136#255#202#162#146#255#207#171#156#255#211#178#165#255#214 + +#183#171#255#216#186#175#255#217#188#177#255#218#190#179#255#219#191#182#255 + +#219#192#182#255#219#192#181#255#218#189#179#255#217#187#177#255#215#185#173 + +#255#213#182#169#255#210#176#163#255#205#169#154#255#200#160#144#255#195#151 + +#133#255#190#142'z'#255#183#132'o'#255#167'u_'#255#148'eP'#255#127'S@'#255'm' + +'E2'#255'f=*'#255'b7%'#255'_4 '#255']1'#30#255'\0'#28#235'[/'#27#147'[/'#27 + +'5'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[' + ,'/'#27#18'[/'#27'i\0'#28#199'\1'#29#254']1'#30#255'_4 '#255'a6#'#255'd9('#255 + +'g>,'#255'oF3'#255'}Q>'#255#138'[G'#255#149'fQ'#255#160'oZ'#255#170'xa'#255 + +#176'}h'#255#180#128'l'#255#183#133'p'#255#186#136's'#255#188#138'u'#255#188 + +#139'v'#255#187#138'u'#255#186#135'r'#255#183#132'n'#255#178#128'j'#255#174 + +'|e'#255#168'v`'#255#158'mW'#255#146'bN'#255#133'YE'#255'yM;'#255'mC1'#255'g' + +'>+'#255'c9&'#255'`6"'#255'^3'#31#255']1'#30#255'\0'#28#248'\0'#28#173'[/'#27 + +'O[/'#27#5#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#20'[/'#27'V\0'#28#153 + +'\0'#28#220'\1'#29#255']1'#30#255'^3'#31#255'`5!'#255'a7$'#255'c9&'#255'e;(' + +#255'f=*'#255'g>,'#255'i@.'#255'jB0'#255'mE2'#255'qH5'#255'tJ7'#255'qG5'#255 + +'lC1'#255'jA0'#255'h?-'#255'g>+'#255'e<)'#255'd:('#255'c9&'#255'a6#'#255'`5!' + +#255'^2'#31#255']1'#30#255'\1'#29#252'\0'#28#201'[/'#27#134'[/'#27'C[/'#27#8 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0'[/'#27#31'[/'#27'_[/'#27#138'\0'#28#176'\0'#28#213'\0'#28 + +#248'\1'#29#255'\1'#29#255'\1'#29#255']1'#30#255'^2'#31#255'^2'#31#255'^3'#31 + +#255'^3'#31#255'^3'#31#255'^2'#31#255']1'#30#255']1'#30#255'\1'#29#255'\1'#29 + +#255'\1'#29#255'\0'#28#241'\0'#28#203'\0'#28#165'[/'#27#127'[/'#27'N[/'#27#15 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0'[/'#27#2'[/'#27'![/'#27'E[/'#27'U[/'#27'a[/'#27'm[/'#27'y[/'#27 + +#134'\0'#29#141'[/'#27#130'[/'#27'v[/'#27'j[/'#27'^[/'#27'Q[/'#27'=[/'#27#23 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#128#0#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#224#0#0#3#255#255#255#255#255 + +#255#255#255#255#255#255#254#0#0#0#0'?'#255#255#255#255#255#255#255#255#255 + +#255#240#0#0#0#0#7#255#255#255#255#255#255#255#255#255#255#128#0#0#0#0#0#255 + +#255#255#255#255#255#255#255#255#254#0#0#0#0#0#0'?'#255#255#255#255#255#255 + +#255#255#248#0#0#0#0#0#0#15#255#255#255#255#255#255#255#255#224#0#0#0#0#0#0#3 + +#255#255#255#255#255#255#255#255#128#0#0#0#0#0#0#0#255#255#255#255#255#255 + +#255#254#0#0#0#0#0#0#0#0'?'#255#255#255#255#255#255#252#0#0#0#0#0#0#0#0#31 + +#255#255#255#255#255#255#240#0#0#0#0#0#0#0#0#7#255#255#255#255#255#255#224#0 + +#0#0#0#0#0#0#0#3#255#255#255#255#255#255#128#0#0#0#0#0#0#0#0#1#255#255#255 + +#255#255#255#0#0#0#0#0#0#0#0#0#0#127#255#255#255#255#254#0#0#0#0#0#0#0#0#0#0 + +'?'#255#255#255#255#252#0#0#0#0#0#0#0#0#0#0#31#255#255#255#255#248#0#0#0#0#0 + +#0#0#0#0#0#15#255#255#255#255#240#0#0#0#0#0#0#0#0#0#0#7#255#255#255#255#224#0 + +#0#0#0#0#0#0#0#0#0#3#255#255#255#255#192#0#0#0#0#0#0#0#0#0#0#1#255#255#255 + +#255#128#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#0#0#0#0#0#0#0#0#0#0#0#0#127 + +#255#255#254#0#0#0#0#0#0#0#0#0#0#0#0#127#255#255#254#0#0#0#0#0#0#0#0#0#0#0#0 + +'?'#255#255#252#0#0#0#0#0#0#0#0#0#0#0#0#31#255#255#248#0#0#0#0#0#0#0#0#0#0#0 + +#0#15#255#255#240#0#0#0#0#0#0#0#0#0#0#0#0#7#255#255#240#0#0#0#0#0#0#0#0#0#0#0 + +#0#7#255#255#224#0#0#0#0#0#0#0#0#0#0#0#0#3#255#255#192#0#0#0#0#0#0#0#0#0#0#0 + +#0#3#255#255#192#0#0#0#0#0#0#0#0#0#0#0#0#1#255#255#128#0#0#0#0#0#0#0#0#0#0#0 + +#0#1#255#255#128#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#127#254#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#127#254#0#0#0#0#0#0#0#0#0#0#0#0#0#0'?'#254#0#0#0#0#0#0#0#0#0#0#0#0#0#0'?' + +#252#0#0#0#0#0#0#0#0#0#0#0#0#0#0'?'#252#0#0#0#0#0#0#0#0#0#0#0#0#0#0#31#252#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#31#248#0#0#0#0#0#0#0#0#0#0#0#0#0#0#15#248#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#15#248#0#0#0#0#0#0#0#0#0#0#0#0#0#0#15#240#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#7#240#0#0#0#0#0#0#0#0#0#0#0#0#0#0#7#240#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#7#224#0#0#0#0#0#0#0#0#0#0#0#0#0#0#7#224#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3 + +#224#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#224#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#224#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#3#224#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#192#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#3#192#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#192#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#1#192#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#192#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#1#192#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#192#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#192#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#1#192#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#192#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#1#192#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1#192#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#1#192#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#192#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#3#224#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#224#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#224 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#224#0#0#0#0#0#0#0#0#0#0#0#0#0#0#3#224#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#3#240#0#0#0#0#0#0#0#0#0#0#0#0#0#0#7#240#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#7#240#0#0#0#0#0#0#0#0#0#0#0#0#0#0#7#240#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#15#248#0#0#0#0#0#0#0#0#0#0#0#0#0#0#15#248#0#0#0#0#0#0#0#0#0#0#0#0#0#0#15 + +#248#0#0#0#0#0#0#0#0#0#0#0#0#0#0#15#252#0#0#0#0#0#0#0#0#0#0#0#0#0#0#31#252#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#31#252#0#0#0#0#0#0#0#0#0#0#0#0#0#0'?'#254#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0'?'#254#0#0#0#0#0#0#0#0#0#0#0#0#0#0'?'#254#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#127#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#127#255#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#255#255#128#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#128#0#0#0#0#0#0#0#0 + +#0#0#0#0#1#255#255#128#0#0#0#0#0#0#0#0#0#0#0#0#1#255#255#192#0#0#0#0#0#0#0#0 + +#0#0#0#0#3#255#255#192#0#0#0#0#0#0#0#0#0#0#0#0#3#255#255#224#0#0#0#0#0#0#0#0 + +#0#0#0#0#7#255#255#224#0#0#0#0#0#0#0#0#0#0#0#0#15#255#255#240#0#0#0#0#0#0#0#0 + +#0#0#0#0#15#255#255#248#0#0#0#0#0#0#0#0#0#0#0#0#31#255#255#248#0#0#0#0#0#0#0 + +#0#0#0#0#0'?'#255#255#252#0#0#0#0#0#0#0#0#0#0#0#0#127#255#255#252#0#0#0#0#0#0 + +#0#0#0#0#0#0#255#255#255#254#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#255#0#0#0#0 + +#0#0#0#0#0#0#0#1#255#255#255#255#128#0#0#0#0#0#0#0#0#0#0#3#255#255#255#255 + +#128#0#0#0#0#0#0#0#0#0#0#7#255#255#255#255#192#0#0#0#0#0#0#0#0#0#0#15#255#255 + +#255#255#224#0#0#0#0#0#0#0#0#0#0#31#255#255#255#255#240#0#0#0#0#0#0#0#0#0#0 + +#31#255#255#255#255#248#0#0#0#0#0#0#0#0#0#0'?'#255#255#255#255#252#0#0#0#0#0 + +#0#0#0#0#0#127#255#255#255#255#254#0#0#0#0#0#0#0#0#0#1#255#255#255#255#255 + +#255#0#0#0#0#0#0#0#0#0#3#255#255#255#255#255#255#128#0#0#0#0#0#0#0#0#7#255 + +#255#255#255#255#255#224#0#0#0#0#0#0#0#0#15#255#255#255#255#255#255#240#0#0#0 + +#0#0#0#0#0#31#255#255#255#255#255#255#248#0#0#0#0#0#0#0#0#127#255#255#255#255 + +#255#255#254#0#0#0#0#0#0#0#0#255#255#255#255#255#255#255#255#128#0#0#0#0#0#0 + +#3#255#255#255#255#255#255#255#255#192#0#0#0#0#0#0#7#255#255#255#255#255#255 + +#255#255#240#0#0#0#0#0#0#31#255#255#255#255#255#255#255#255#252#0#0#0#0#0#0 + +#127#255#255#255#255#255#255#255#255#255#0#0#0#0#0#3#255#255#255#255#255#255 + +#255#255#255#255#224#0#0#0#0#15#255#255#255#255#255#255#255#255#255#255#252#0 + +#0#0#0#127#255#255#255#255#255#255#255#255#255#255#255#192#0#0#7#255#255#255 + +#255#255#255#255#255#255#255#255#255#254#0#1#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255#255 + +#255#255#255#255#255#255#255#255#255'('#0#0#0'@'#0#0#0#128#0#0#0#1#0' '#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'@@@'#4'III'#7'III'#7 + +'333'#5#128#128#128#2#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'UUU'#6'DDD' + +#15'FFF'#22'EEE'#26'DDD'#30'III#GGG/DDD'#30#255'j>'#31#253'g>#'#249'[>+'#235'PB8'#218'HE' + +'C'#203'FEC'#195'EED'#184'DDD'#166'DDDqEEE4@@@'#20'@@@'#4#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1 + +'999'#9'BBB'#31'CCCPEDD'#143'FFE'#182'NB:'#211'Z?-'#231'g>#'#249'l?'#31#255 + +'zK$'#253#150']*'#255#165'h.'#255#172'm0'#255#180's2'#255#186'x4'#255#189'{4' + +#255#192#127'5'#255#190'|4'#255#187'x4'#255#182'u3'#255#175'p1'#255#167'j/' + +#255#156'b+'#255#131'R&'#254'oB '#255'i>!'#253'_>)'#238'S@6'#222'FEB'#203'DD' + +'C'#190'DDD'#164'CCCkCCC.PPP'#16'UUU'#3#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#2'CCC'#19'BBBBDDD'#136'EED'#179'LA9' + +#209'`=&'#243'k?'#31#255#127'N&'#254#154'`,'#255#176'q1'#255#191'~5'#255#200 + +#138'7'#255#207#145'8'#255#210#149'9'#255#213#153'9'#255#217#157':'#255#219 + +#160';'#255#221#162';'#255#220#162':'#255#217#158':'#255#215#155':'#255#211 + +#151'9'#255#208#146'8'#255#203#141'8'#255#194#129'6'#255#183'v4'#255#163'f.' + +#255#137'U('#254'qC"'#254'f' + +'>>!+++'#6#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@@'#4'BBB'#27'CC' + +'C[CCB'#165'LD='#203']<('#238'j> '#255#135'R('#254#176'p3'#255#193#128'7'#255 + +#202#139'9'#255#211#151';'#255#220#162'<'#255#227#170'>'#255#232#176'?'#255 + +#234#180'?'#255#237#182'?'#255#239#185'@'#255#241#187'@'#255#242#188'A'#255 + +#241#187'@'#255#240#185'A'#255#238#183'@'#255#235#180'@'#255#233#178'?'#255 + +#229#173'>'#255#222#165'='#255#215#156'<'#255#205#144':'#255#196#133'8'#255 + +#185'x5'#255#152'^-'#255'oC"'#254'd<#'#247'QA7'#220'FFE'#200'CCC'#180'CCC}AA' + +'A/UUU'#9#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'III'#7'CCC&DDDpECC'#180'X<,'#232'i=' + +'!'#254#128'O('#254#170'l3'#255#194#130':'#255#210#150'>'#255#220#163'?'#255 + +#227#171'A'#255#234#180'B'#255#240#187'D'#255#242#190'D'#255#244#193'E'#255 + +#246#194'D'#255#247#195'E'#255#248#197'E'#255#249#197'E'#255#249#198'E'#255 + +#249#197'E'#255#248#196'E'#255#247#195'E'#255#246#195'E'#255#245#194'D'#255 + +#243#191'D'#255#240#188'C'#255#236#183'C'#255#230#174'B'#255#223#165'@'#255 + +#215#156'?'#255#200#137';'#255#182'u6'#255#146'[,'#255'm@!'#254'`:%'#244'KA;' + +#211'CCC'#189'CCC'#144'BBB>PPP'#16#128#128#128#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'999'#9'@@@4CCC'#133 + +'HD@'#192'_9$'#244'rE%'#254#164'h3'#255#191#127';'#255#206#146'?'#255#219#163 + +'C'#255#232#178'F'#255#238#185'G'#255#241#189'H'#255#244#193'H'#255#246#195 + +'I'#255#247#196'I'#255#247#197'J'#255#247#197'I'#255#247#198'I'#255#248#198 + +'I'#255#248#198'I'#255#248#197'I'#255#248#198'I'#255#248#198'I'#255#248#198 + +'I'#255#247#197'I'#255#247#197'I'#255#247#196'I'#255#246#196'I'#255#245#194 + +'H'#255#242#190'H'#255#239#187'H'#255#235#182'G'#255#224#168'D'#255#211#153 + +'A'#255#196#134'='#255#177'q7'#255#133'Q)'#254'e: '#253'N?7'#218'DDC'#195'CC' + +'C'#160'FFFP@@@'#20#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0'III'#7'FFF3CCC'#145'LB;'#204'd:"'#250'|L('#254#180's9'#255 + +#202#143'A'#255#216#159'F'#255#228#174'I'#255#236#184'K'#255#241#191'L'#255 + +#243#193'M'#255#244#194'M'#255#244#195'M'#255#245#196'M'#255#245#195'M'#255 + +#245#195'M'#255#245#195'M'#255#245#195'M'#255#245#195'M'#255#245#195'M'#255 + +#245#195'M'#255#245#195'M'#255#245#195'M'#255#245#195'M'#255#245#195'M'#255 + +#245#195'M'#255#245#195'M'#255#245#196'M'#255#245#195'M'#255#244#194'M'#255 + +#243#194'M'#255#242#192'M'#255#238#186'L'#255#232#179'J'#255#220#165'F'#255 + +#208#150'C'#255#190#127'<'#255#147'[.'#255'h< '#255'S=1'#228'EED'#199'DDD' + +#168'BBBUGGG'#18#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +'@@@'#4'FFF(EEE'#134'P?5'#212'e:!'#254#137'U,'#254#186'z='#255#208#150'E'#255 + +#224#171'L'#255#233#181'O'#255#238#187'P'#255#240#191'P'#255#242#192'Q'#255 + +#242#193'Q'#255#242#193'Q'#255#242#193'P'#255#242#193'Q'#255#242#193'Q'#255 + +#242#193'Q'#255#242#193'Q'#255#242#193'Q'#255#242#193'Q'#255#242#193'Q'#255 + ,#242#193'Q'#255#242#193'Q'#255#242#193'Q'#255#242#193'Q'#255#242#193'Q'#255 + +#242#193'Q'#255#242#193'Q'#255#242#193'Q'#255#242#193'Q'#255#242#193'Q'#255 + +#242#193'Q'#255#242#193'Q'#255#241#192'Q'#255#239#189'P'#255#234#184'O'#255 + +#228#175'M'#255#215#159'I'#255#194#132'@'#255#160'd3'#255'k?"'#254'X:*'#236 + +'FDC'#201'CCC'#164'AAAG;;;'#13#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'U' + +'UU'#3'BBB'#31'CCCvO=3'#211'f:'#31#255#150']2'#255#190#128'A'#255#211#155'I' + +#255#226#175'Q'#255#234#185'S'#255#237#188'T'#255#238#190'T'#255#239#191'U' + +#255#239#191'U'#255#239#191'U'#255#239#191'U'#255#239#191'U'#255#239#191'U' + +#255#239#191'U'#255#239#191'U'#255#235#189'S'#255'|d,'#255'N>'#28#255'4*'#19 + +#255'=1'#22#255'WE'#31#255'w_*'#255#173#139'='#255#239#191'U'#255#239#191'U' + +#255#239#191'U'#255#239#191'U'#255#239#191'U'#255#239#191'U'#255#239#191'U' + +#255#239#191'U'#255#239#191'U'#255#239#190'T'#255#238#189'U'#255#236#187'S' + +#255#230#179'R'#255#217#162'L'#255#198#138'D'#255#170'l8'#255'pC$'#254'Z8''' + +#240'DBB'#197'CCC'#153'FFF:@@@'#8#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2'FFF'#22 + +'BBBeJ?9'#195'b8 '#254#150']2'#255#194#133'E'#255#213#158'N'#255#226#176'T' + +#255#233#185'W'#255#236#187'W'#255#236#188'X'#255#236#188'X'#255#236#188'X' + +#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188'X' + +#255#236#188'X'#255'cO%'#255#4#3#1#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#0#255#18#14#7#255'A4'#24#255#134'k2' + +#255#218#174'R'#255#236#188'X'#255#236#188'X'#255#236#188'X'#255#236#188'X' + +#255#236#188'X'#255#236#188'X'#255#236#187'W'#255#234#186'W'#255#229#180'U' + +#255#218#165'P'#255#201#143'H'#255#173'o<'#255'k>#'#254'S;-'#231'CCC'#193'CC' + +'C'#141'DDD-fff'#5#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@@'#12'DDDKFA='#179'`7 '#251#137'S-' + +#255#192#131'E'#255#214#161'Q'#255#226#176'W'#255#231#183'Y'#255#233#185'[' + +#255#233#186'['#255#234#185'Z'#255#234#185'Z'#255#234#185'Z'#255#234#185'Z' + +#255#234#185'Z'#255#234#185'Z'#255#234#185'Z'#255#234#185'Z'#255'L<'#29#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#8#7#3#255'P' + +'?'#31#255#203#161'N'#255#234#185'Z'#255#234#185'Z'#255#234#185'Z'#255#234 + +#185'Z'#255#233#186'['#255#232#183'Z'#255#228#178'Y'#255#219#167'T'#255#201 + +#143'K'#255#163'g8'#255'f: '#255'O=4'#222'DDD'#188'CCCzBBB'#27#0#0#0#1#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'U' + +'UU'#3'GGG$D@@'#147'\6#'#245'{I*'#254#185'{C'#255#211#157'R'#255#225#175'Z' + +#255#229#181'\'#255#230#183']'#255#230#183']'#255#230#183']'#255#230#183']' + +#255#230#183']'#255#230#183']'#255#230#183']'#255#230#183']'#255#230#183']' + +#255#230#183']'#255#138'm8'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#24#20#10#255'x_0' + +#255#226#181'['#255#230#183']'#255#230#183']'#255#230#183']'#255#230#181'\' + +#255#227#177'['#255#217#165'V'#255#196#136'J'#255#151']4'#255'b8 '#254'K@9' + +#214'CCC'#175'AAAJ...'#11#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@@'#16'CCC\V6'''#228'nA&'#254#178'tA'#255#205 + +#151'R'#255#221#172'\'#255#226#179'_'#255#228#180'_'#255#228#180'_'#255#228 + +#180'_'#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#228 + +#180'_'#255#228#180'_'#255#228#180'_'#255#228#180'_'#255#17#13#7#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#2#1#1#255'H9'#30#255#224#178']' + +#255#228#180'_'#255#228#180'_'#255#227#179'^'#255#224#175']'#255#213#160'W' + +#255#190#129'H'#255#137'T/'#255'^4 '#252'FB?'#201'CCC'#140'DDD"'#0#0#0#3#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@@'#4'FFF,J=7' + +#175'`4'#30#255#165'g;'#255#200#144'Q'#255#217#166'\'#255#223#176'`'#255#225 + +#177'`'#255#225#177'a'#255#225#177'a'#255#225#177'a'#255#225#177'a'#255#225 + +#177'a'#255#225#177'a'#255#225#177'a'#255#225#177'a'#255#225#177'a'#255#225 + +#177'a'#255#218#171'^'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#11#9#5#255#196#154'U'#255#225#177'a'#255#225#177 + +'`'#255#224#177'a'#255#220#171'^'#255#208#154'W'#255#184'{F'#255'nA%'#254'T8' + +'*'#233'DDD'#180'CCCX333'#15#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0'CCC'#19'CCCjY5#'#239'~J,'#254#191#132'M'#255#213#162']'#255 + ,#220#171'a'#255#221#173'c'#255#222#174'b'#255#222#174'b'#255#222#174'b'#255 + +#222#174'b'#255#222#174'b'#255#222#174'b'#255#222#174'b'#255#222#174'b'#255 + +#222#174'b'#255#222#174'b'#255#222#174'b'#255#154'yC'#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#15#11#6 + +#255#218#172'`'#255#222#174'b'#255#222#174'b'#255#221#173'b'#255#217#167'_' + +#255#202#146'T'#255#156'a9'#255'^4'#30#254'G@='#206'DDD'#151'>>>)@@@'#4#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'UUU'#3'AAA+L;4'#188'b6 '#254#170 + +'l@'#255#206#152'Z'#255#217#168'b'#255#219#171'd'#255#219#171'd'#255#219#171 + +'d'#255#219#171'd'#255#219#171'd'#255#219#171'd'#255#219#171'd'#255#219#171 + +'d'#255#219#171'd'#255#219#171'd'#255#219#171'd'#255#219#171'd'#255#219#171 + +'d'#255#219#171'd'#255#26#20#12#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'oW3'#255#219#171'd'#255#219 + +#171'd'#255#219#171'd'#255#218#169'c'#255#212#161'_'#255#187#127'L'#255'uD)' + +#254'W6('#238'CCC'#182'CCC[III'#14#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0'@@@'#12'EBBS[3'#31#244#134'O/'#255#192#134'Q'#255#212#162'b'#255#215 + +#167'd'#255#216#168'd'#255#216#168'd'#255#216#168'd'#255#216#168'd'#255#216 + +#168'd'#255#216#168'd'#255#216#168'd'#255#216#168'd'#255#216#168'd'#255#216 + +#168'd'#255#216#168'd'#255#216#168'd'#255#216#168'd'#255#216#168'd'#255#198 + +#154'\'#255#5#4#2#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255'!'#25#15#255#216#168'd'#255#216#168'd'#255#216#168 + +'d'#255#216#168'd'#255#214#166'd'#255#202#147'Y'#255#161'e='#255'^2'#29#255 + +'J?:'#208'CCC'#137'EEE'#26#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'C' + +'CC'#23'O9/'#171'`3'#31#254#174'pD'#255#203#150']'#255#212#163'e'#255#213#164 + +'e'#255#213#164'e'#255#213#164'e'#255#213#164'e'#255#213#164'e'#255#213#164 + +'e'#255#213#164'e'#255#213#164'e'#255#213#164'e'#255#213#164'e'#255#213#164 + +'e'#255#213#164'e'#255#213#164'e'#255#213#164'e'#255#213#164'e'#255#213#164 + +'e'#255#173#133'R'#255#3#2#1#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#22#17#11#255#213#164'e'#255#213#164'e'#255#213#164 + +'e'#255#213#164'e'#255#213#164'f'#255#209#158'a'#255#187#128'O'#255'yD)'#254 + +'W4$'#241'BBB'#169'DDD1@@@'#4#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2'FFF(W4' + +'$'#229'{E)'#255#191#134'T'#255#207#157'c'#255#210#160'f'#255#210#160'f'#255 + +#210#160'f'#255#210#160'f'#255#210#160'f'#255#210#160'f'#255#210#160'f'#255 + +#210#160'f'#255#152'tJ'#255'[E,'#255'K9$'#255'{]<'#255#196#149'_'#255#210#160 + +'f'#255#210#160'f'#255#210#160'f'#255#210#160'f'#255#210#160'f'#255#159'yM' + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'"' + +#26#17#255#210#160'f'#255#210#160'f'#255#210#160'f'#255#210#160'f'#255#210 + +#160'f'#255#209#160'e'#255#199#146']'#255#156'_;'#255'\1'#28#254'FBA'#188'FF' + +'FXNNN'#13#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'FFF'#11'F@=T\/'#28#253#151'\9'#255 + +#200#147'_'#255#207#156'e'#255#207#156'e'#255#207#156'e'#255#207#156'e'#255 + +#207#156'e'#255#207#156'e'#255#207#156'e'#255#178#135'W'#255'$'#27#17#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'N:&'#255#207#156'e'#255#207 + +#156'e'#255#207#156'e'#255#207#156'e'#255#207#156'e'#255#3#2#1#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'uX9'#255#207#156'e'#255#207 + +#156'e'#255#207#156'e'#255#207#156'e'#255#207#156'e'#255#207#157'e'#255#204 + +#153'b'#255#180'wK'#255'a4'#30#254'M;3'#216'DDD'#132'==='#25#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0'CCC'#19'N9.'#159'^2'#30#254#176'rI'#255#202#150'c'#255#203 + +#153'e'#255#203#153'f'#255#203#153'f'#255#203#153'f'#255#203#153'f'#255#203 + +#153'f'#255#163'zQ'#255#1#1#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#29#22#15#255#203#153'f'#255#203#153'f'#255#203#153 + +'f'#255#203#153'f'#255#14#10#7#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + ,#0#0#255#4#3#2#255#203#153'f'#255#203#153'f'#255#203#153'f'#255#203#153'f' + +#255#203#153'f'#255#203#153'f'#255#203#153'f'#255#203#152'e'#255#190#134'X' + +#255'yC)'#254'V5&'#239'DDD'#165'FFF('#128#128#128#2#0#0#0#0#0#0#0#0#0#0#0#0 + +'GGG'#25'V4%'#212's@&'#254#186#128'U'#255#199#148'd'#255#200#148'd'#255#200 + +#148'd'#255#200#148'd'#255#200#148'd'#255#200#148'd'#255#198#146'd'#255#12#9 + +#6#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#138'fE'#255#200#148'd'#255#200#148'd'#255#200#148'd'#255 + +#15#11#7#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255'&'#28#19#255#145'kH'#255 + +#200#148'd'#255#200#148'd'#255#200#148'd'#255#200#148'd'#255#200#148'd'#255 + +#200#148'd'#255#200#148'd'#255#200#148'd'#255#194#141'^'#255#146'W6'#255'[0' + +#28#254'EBB'#178'CCC9UUU'#6#0#0#0#0#0#0#0#0#0#0#0#0'JAA'#31'\1'#29#249#140'P' + +'2'#255#190#135'\'#255#196#143'c'#255#196#143'c'#255#196#143'c'#255#196#143 + +'c'#255#196#143'c'#255#196#143'c'#255'>-'#31#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'&' + +#28#19#255#196#143'c'#255#196#143'c'#255#196#143'c'#255#25#18#12#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#2#2#1 + +#255'*'#31#21#255'kM6'#255#187#137'_'#255#196#143'c'#255#196#143'c'#255#196 + +#143'c'#255#196#143'c'#255#196#143'c'#255#196#143'c'#255#196#143'c'#255#196 + +#143'c'#255#196#143'c'#255#196#143'c'#255#194#141'b'#255#170'kF'#255'\0'#28 + +#254'L<5'#203'CCCH333'#10#0#0#0#0#0#0#0#0#0#0#0#1'K3+@[/'#27#255#160'`>'#255 + +#190#136'_'#255#191#137'`'#255#191#137'`'#255#191#137'`'#255#191#137'`'#255 + +#191#137'`'#255#189#135'`'#255#1#1#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#30#21#15#255 + +#191#137'`'#255#191#137'`'#255#191#137'`'#255'aF1'#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#5#3#2#255#165'vS'#255#191#137'`' + +#255#191#137'`'#255#191#137'`'#255#191#137'`'#255#191#137'`'#255#191#137'`' + +#255#191#137'`'#255#191#137'`'#255#191#137'`'#255#191#137'`'#255#191#137'`' + +#255#191#137'`'#255#191#137'`'#255#191#136'`'#255#178'vQ'#255'h7 '#253'Q8,' + +#220'DDDV;;;'#13#0#0#0#0#0#0#0#0'UUU'#3'R4''^[/'#27#255#169'hF'#255#187#131 + +']'#255#187#132'^'#255#187#132'^'#255#187#132'^'#255#187#132'^'#255#187#132 + +'^'#255'uS;'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'{W>'#255#187#132'^'#255 + +#187#132'^'#255#187#132'^'#255#185#130'^'#255#19#14#10#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#1#1#1#255#158'oO'#255#187#132'^'#255#187#132'^' + +#255#187#132'^'#255#187#132'^'#255#187#132'^'#255#187#132'^'#255#187#132'^' + +#255#187#132'^'#255#187#132'^'#255#187#132'^'#255#187#132'^'#255#187#132'^' + +#255#187#132'^'#255#187#132'^'#255#187#132'^'#255#181'{V'#255'r<"'#255'T6''' + +#228'BBBd@@@'#16#0#0#0#0#0#0#0#0'UUU'#6'T5''}_2'#30#253#171'kI'#255#183'}Z' + +#255#183'~Z'#255#183'~Z'#255#183'~Z'#255#183'~Z'#255#183'~Z'#255'. '#23#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#1#1#0#255'S9)'#255#183'~Z'#255#183'~Z'#255#183'~Z'#255#183'~Z' + +#255#183'~Z'#255#173'xV'#255#31#21#15#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'b' + +'C0'#255#183'~Z'#255#183'~Z'#255#183'~Z'#255#183'~Z'#255#183'~Z'#255#183'~Z' + +#255#183'~Z'#255#183'~Z'#255#183'~Z'#255#183'~Z'#255#183'~Z'#255#183'~Z'#255 + +#183'~Z'#255#183'~Z'#255#183'~Z'#255#183'~Z'#255#181'zV'#255'zA%'#255'X4$' + +#237'DDDqCCC'#19#0#0#0#0#0#0#0#0'@@@'#8'U4%'#149'f5'#31#252#172'mK'#255#180 + +'yX'#255#180'yX'#255#180'yX'#255#180'yX'#255#180'yX'#255#180'yX'#255#6#4#3 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#19#13#9#255#153'gK'#255#180'yX'#255#180'yX'#255#180'yX'#255#180'yX' + +#255#180'yX'#255#180'yX'#255#180'yX'#255#180'yX'#255'{S<'#255'+'#29#21#255#7 + +#4#3#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#1 + +#255'gF3'#255#180'yX'#255#180'yX'#255#180'yX'#255#139']D'#255'+'#29#21#255#8 + +#6#4#255#8#6#4#255#16#11#8#255'W:*'#255#178'wV'#255#180'yX'#255#180'yX'#255 + +#180'yX'#255#180'yX'#255#180'yX'#255#180'yX'#255#180'yX'#255#179'yV'#255#131 + +'F+'#255'[3!'#245'CCCyIII'#21#0#0#0#0#0#0#0#0'UUU'#6'X3"'#165'n:"'#253#172'p' + +'O'#255#177'wW'#255#177'wW'#255#177'wW'#255#177'wW'#255#177'wW'#255#173'uU' + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1 + +#0#0#255'P6'''#255#177'wW'#255#177'wW'#255#177'wW'#255#177'wW'#255#177'wW' + ,#255#177'wW'#255#177'wW'#255#177'wW'#255#177'wW'#255#177'wW'#255#177'wW'#255 + +#177'wW'#255#177'wW'#255#158'jM'#255'W;+'#255''''#26#19#255'"'#23#17#255'%' + +#25#18#255'W:+'#255#167'qS'#255#177'wW'#255#177'wW'#255#177'wW'#255'@+'#31 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#3#2#1#255 + +#149'dI'#255#177'wW'#255#177'wW'#255#177'wW'#255#177'wW'#255#177'wW'#255#177 + +'wW'#255#177'vV'#255#139'M0'#255'[1'#30#250'DDDpCCC'#19#0#0#0#0#0#0#0#0'UUU' + +#3'Y1'#31#182'v>%'#255#172'oQ'#255#175'tW'#255#175'tW'#255#175'tW'#255#175't' + +'W'#255#175'tW'#255'}S?'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#26#17#13#255#150'cK'#255#175'tW'#255#175'tW'#255#175'tW'#255 + +#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175 + +'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW' + +#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255 + +#175'tW'#255'dC2'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#9#6#4#255#169'pU'#255#175'tW'#255#175'tW'#255#175't' + +'W'#255#175'tW'#255#175'tW'#255#174'sU'#255#145'S6'#255']0'#28#254'DBBd@@@' + +#16#0#0#0#0#0#0#0#0#0#0#0#0'Z0'#30#175'v=%'#255#171'nP'#255#174'rV'#255#174 + +'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255'L2&'#255#0#0#0#255'/'#31#23#255 + +'}R>'#255' '#21#16#255'!'#22#17#255#139'[E'#255#174'rV'#255#174'rV'#255#174 + +'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV' + +#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255 + +#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174 + +'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255'?*'#31#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'6#'#27 + +#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#173'qT'#255 + +#145'S7'#255'\1'#29#254'AAAV;;;'#13#0#0#0#0#0#0#0#0#0#0#0#0'Z1'#30#150'n;$' + +#252#169'jM'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255 + +#149'bI'#255'@* '#255#170'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU' + +#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255 + +#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172 + +'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU' + +#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255 + +'G/#'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#24#16#12#255#172'qU'#255#172'qU'#255#172'qU'#255#172 + +'qU'#255#172'qU'#255#171'oS'#255#138'N3'#255'\2'#31#249'DDDG999'#9#0#0#0#0#0 + +#0#0#0#0#0#0#0'X1!|g7#'#250#167'gI'#255#172'pT'#255#172'qU'#255#172'qU'#255 + +#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172 + +'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU' + +#255#172'qU'#255'P5('#255')'#27#20#255#27#18#13#255'5#'#26#255'pJ8'#255#172 + +'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU' + +#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255 + +#172'qU'#255#172'qU'#255#162'jO'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#9#6#4#255#172'qU'#255#172 + +'qU'#255#172'qU'#255#172'qU'#255#172'qU'#255#170'mR'#255#131'I.'#255'[4"'#241 + +'FFF7UUU'#6#0#0#0#0#0#0#0#0#0#0#0#0'Y1!`b5 '#251#164'cG'#255#172'pU'#255#173 + +'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255#173'rW' + +#255#173'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255 + +#173'rW'#255'}S?'#255#9#6#5#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#16#11#8#255#152'dM'#255#173'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255 + +#173'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255#173 + +'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255'$'#24#18#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#4#3#2#255#173'r' + +'W'#255#173'rW'#255#173'rW'#255#173'rW'#255#173'rW'#255#170'mQ'#255'|C*'#255 + +'W4$'#229'CCC&'#0#0#0#2#0#0#0#0#0#0#0#0#0#0#0#0'X5!A^2'#31#254#162'bE'#255 + +#173'rV'#255#175'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#175 + +'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#175'tY' + +#255#175'tY'#255'{Q?'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#14#9#7#255#173'tY'#255#175'tY'#255#175'tY'#255 + +#175'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#175 + +'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#132'XC'#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#21 + +#14#11#255#175'tY'#255#175'tY'#255#175'tY'#255#175'tY'#255#174'tY'#255#170'm' + +'P'#255't?('#254'U5&'#203'@@@'#24#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'X0'#24' ^2' + +#31#255#156'\A'#255#175'v\'#255#177'y`'#255#177'y`'#255#177'y`'#255#177'y`' + +#255#177'y`'#255#177'y`'#255#177'y`'#255#177'y`'#255#177'y`'#255#177'y`'#255 + ,#177'y`'#255#177'y`'#255#177'y`'#255#11#8#6#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#136']J'#255#177 + +'y`'#255#177'y`'#255'7%'#30#255#9#6#5#255#13#9#7#255#16#11#9#255#26#18#14#255 + +#139'_K'#255#177'y`'#255#177'y`'#255#177'y`'#255#177'y`'#255#177'y`'#255#177 + +'y`'#255#18#12#9#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255'<)!'#255#177'y`'#255#177'y`'#255#177'y`'#255#177'y`'#255#176 + +'x^'#255#169'kP'#255'j<&'#253'U4%'#168';;;'#13#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0'^2'#29#234#136'O4'#255#176'x^'#255#180'~f'#255#180'~f'#255#180'~f' + +#255#180'~f'#255#180'~f'#255#180'~f'#255#180'~f'#255#180'~f'#255#180'~f'#255 + +#180'~f'#255#180'~f'#255#180'~f'#255#146'gS'#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#139'bO'#255#170'x`'#255#20#14#11#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255']A4'#255#180'~f'#255#180'~f'#255#180'~f'#255#180'~f'#255 + +#180'~f'#255'qO@'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#1#1#0#255#165't^'#255#180'~f'#255#180'~f'#255#180'~f'#255#180'~f'#255 + +#178'zb'#255#162'dH'#255'_3'#31#254'R6)c@@@'#4#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0'[/'#29#153'r?)'#252#174'sZ'#255#182#129'j'#255#183#131'l'#255#183 + +#131'l'#255#183#131'l'#255#183#131'l'#255#183#131'l'#255#183#131'l'#255#183 + +#131'l'#255#183#131'l'#255#183#131'l'#255#183#131'l'#255#183#131'l'#255'ZA5' + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#5#3#3#255#179#127'j'#255'uTE'#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'{XI'#255#183#131'l' + +#255#183#131'l'#255#183#131'l'#255#183#131'l'#255#183#131'l'#255#20#15#12#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255':)"'#255#183#131'l'#255 + +#183#131'l'#255#183#131'l'#255#183#131'l'#255#183#131'l'#255#179'|c'#255#140 + +'R9'#255'\2'#31#248'@@6'#28#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +'[/'#29'E`5 '#252#166'iO'#255#183#131'l'#255#186#136'q'#255#186#136'q'#255 + +#186#136'q'#255#186#136'q'#255#186#136'q'#255#186#136'q'#255#186#136'q'#255 + +#186#136'q'#255#186#136'q'#255#186#136'q'#255#186#136'q'#255'\D8'#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255'oQC'#255#186#136'q'#255'X@6'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#12#9#7#255#186#136'q'#255#186 + +#136'q'#255#186#136'q'#255#186#136'q'#255#186#136'q'#255#148'lZ'#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#169'|g'#255#186#136'q'#255#186 + +#136'q'#255#186#136'q'#255#186#136'q'#255#185#134'q'#255#177'y`'#255'tB+'#254 + +'W2!'#194'III'#14#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@'#0#4'^3' + +#30#245#144'W='#255#184#134'o'#255#189#141'x'#255#189#141'x'#255#189#141'x' + +#255#189#141'x'#255#189#141'x'#255#189#141'x'#255#189#141'x'#255#189#141'x' + +#255#189#141'x'#255#189#141'x'#255#189#141'x'#255'tWJ'#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'('#30#26#255 + +#189#141'x'#255#189#141'x'#255'?/('#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#187#139'v'#255#189#141 + +'x'#255#189#141'x'#255#189#141'x'#255#189#141'x'#255#189#141'x'#255#172#128 + +'m'#255'_G<'#255#1#0#0#255#0#0#0#255'-"'#28#255#189#141'x'#255#189#141'x'#255 + +#189#141'x'#255#189#141'x'#255#189#141'x'#255#186#137's'#255#171'oU'#255'a6"' + +#253'T5$jUUU'#3#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'\/' + +#27#170'vD,'#252#181#128'h'#255#190#144'{'#255#192#146'~'#255#192#146'~'#255 + +#192#146'~'#255#192#146'~'#255#192#146'~'#255#192#146'~'#255#192#146'~'#255 + +#192#146'~'#255#192#146'~'#255#192#146'~'#255#186#142'z'#255#1#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#2#1#1#255#186#142'z' + +#255#192#146'~'#255#192#146'~'#255'=.('#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#192#146'~'#255#192 + +#146'~'#255#192#146'~'#255#192#146'~'#255#192#146'~'#255#192#146'~'#255#192 + +#146'~'#255#192#146'~'#255#0#0#0#255#0#0#0#255#167#127'n'#255#192#146'~'#255 + +#192#146'~'#255#192#146'~'#255#192#146'~'#255#191#145'}'#255#186#137's'#255 + +#149'[A'#255'^1'#31#250'F:.'#22#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0'\.'#28'H`5 '#252#164'jP'#255#190#143'z'#255#194#151#131 + +#255#194#151#131#255#194#151#131#255#194#151#131#255#194#151#131#255#194#151 + +#131#255#194#151#131#255#194#151#131#255#194#151#131#255#194#151#131#255#194 + +#151#131#255#27#21#18#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255' '#25#21#255#194#151#131#255#194#151#131#255#194#151#131#255'7*%' + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#12#9#8#255#194#151#131#255#194#151#131#255#194#151#131#255#194#151 + +#131#255#194#151#131#255#194#151#131#255#194#151#131#255#190#149#129#255#0#0 + ,#0#255'0% '#255#194#151#131#255#194#151#131#255#194#151#131#255#194#151#131 + +#255#194#151#131#255#192#147#127#255#180'~f'#255'q@+'#252'Z0'#29#180#0#0#0#2 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0']0' + +#28#199'{H2'#252#184#134'o'#255#196#153#134#255#197#156#137#255#197#156#137 + +#255#197#156#137#255#197#156#137#255#197#156#137#255#197#156#137#255#197#156 + +#137#255#197#156#137#255#197#156#137#255#197#156#137#255'G81'#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255'WE='#255#197#156#137#255#197 + +#156#137#255#191#152#133#255#1#1#1#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#135'k^'#255#197#156#137#255#197 + +#156#137#255#197#156#137#255#197#156#137#255#197#156#137#255#197#156#137#255 + +#197#156#137#255#197#156#137#255#16#12#11#255#174#138'y'#255#197#156#137#255 + +#197#156#137#255#197#156#137#255#197#156#137#255#197#155#136#255#191#145'|' + +#255#151'_F'#255'^3'#31#253'T2!-'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[0'#29'5_4 '#254#161'hP'#255#195#152#132 + +#255#200#161#143#255#200#161#144#255#200#161#144#255#200#161#144#255#200#161 + +#144#255#200#161#144#255#200#161#144#255#200#161#144#255#200#161#144#255#200 + +#161#144#255'xaW'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#1 + +#255#171#138'{'#255#200#161#144#255#200#161#144#255#127'f\'#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255')!'#30#255 + +#200#161#144#255#200#161#144#255#200#161#144#255#200#161#144#255#200#161#144 + +#255#200#161#144#255#200#161#144#255#200#161#144#255#200#161#144#255#153'{n' + +#255#200#161#144#255#200#161#144#255#200#161#144#255#200#161#144#255#200#161 + +#144#255#198#156#138#255#181#128'h'#255'l>*'#252'Z1'#30#159#0#0#0#1#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0'^0'#27#173'uE/'#249#186#136'r'#255#201#162#145#255#203#165#150#255#203#165 + +#150#255#203#165#150#255#203#165#150#255#203#165#150#255#203#165#150#255#203 + +#165#150#255#203#165#150#255#203#165#150#255#163#132'x'#255#0#0#0#255#0#0#0 + +#255#26#21#19#255',$!'#255'-%!'#255#156'~s'#255#203#165#150#255#203#165#150 + +#255#203#165#150#255'@4/'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#4#3#3#255#186#151#138#255#203#165#150#255#203#165 + +#150#255#203#165#150#255#203#165#150#255#203#165#150#255#203#165#150#255#203 + +#165#150#255#203#165#150#255#203#165#150#255#203#165#150#255#203#165#150#255 + +#203#165#150#255#203#165#150#255#203#165#150#255#203#164#149#255#195#152#132 + +#255#146'\D'#255'_3'#31#247'R3'#30#25#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'Z-'#30'"^4 '#252#155 + +'cK'#255#196#153#136#255#206#169#155#255#207#171#156#255#207#171#156#255#207 + +#171#156#255#207#171#156#255#207#171#156#255#207#171#156#255#207#171#156#255 + +#207#171#156#255#203#167#152#255#0#0#0#255#0#0#0#255#193#159#145#255#207#171 + +#156#255#207#171#156#255#207#171#156#255#207#171#156#255#207#171#156#255#207 + +#171#156#255'E94'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#15#12#11#255#182#150#137#255#207#171#156#255#207#171#156#255#207#171#156 + +#255#207#171#156#255#207#171#156#255#207#171#156#255#207#171#156#255#207#171 + +#156#255#207#171#156#255#207#171#156#255#207#171#156#255#207#171#156#255#207 + +#171#156#255#207#171#156#255#206#170#155#255#201#162#145#255#178'}f'#255'h<(' + +#250'[0'#28#129#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0']1'#29#130'f:&'#250#171'u' + +'^'#255#202#164#148#255#210#176#163#255#210#177#164#255#210#177#164#255#210 + +#177#164#255#210#177#164#255#210#177#164#255#210#177#164#255#210#177#164#255 + +#210#177#164#255#2#1#1#255#27#22#21#255#210#177#164#255#210#177#164#255#210 + +#177#164#255#210#177#164#255#210#177#164#255#210#177#164#255#210#177#164#255 + +#210#177#164#255'I=8'#255#6#5#4#255#0#0#0#255#0#0#0#255#0#0#0#255'''!'#31#255 + +#206#175#162#255#210#177#164#255#210#177#164#255#210#177#164#255#210#177#164 + +#255#210#177#164#255#210#177#164#255#210#177#164#255#210#177#164#255#210#177 + +#164#255#210#177#164#255#210#177#164#255#210#177#164#255#210#177#164#255#210 + +#177#164#255#210#176#163#255#206#170#155#255#188#139'w'#255'zI4'#252'^2'#29 + +#222']/'#23#11#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'^1'#29#181'oA-' + +#249#182#132'n'#255#208#173#159#255#213#182#169#255#213#183#170#255#213#183 + +#170#255#213#183#170#255#213#183#170#255#213#183#170#255#213#183#170#255#213 + +#183#170#255#12#10#9#255#159#136#127#255#213#183#170#255#213#183#170#255#213 + +#183#170#255#213#183#170#255#213#183#170#255#213#183#170#255#213#183#170#255 + +#213#183#170#255#213#183#170#255#139'xo'#255#0#0#0#255#0#0#0#255'% '#30#255 + +#213#183#170#255#213#183#170#255#213#183#170#255#213#183#170#255#213#183#170 + +#255#213#183#170#255#213#183#170#255#213#183#170#255#213#183#170#255#213#183 + ,#170#255#213#183#170#255#213#183#170#255#213#183#170#255#213#183#170#255#213 + +#183#170#255#213#183#170#255#211#178#165#255#196#152#134#255#136'T?'#254'`1 ' + +#243'U+'#28'$'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'U+'#21#12 + +']2'#30#218'zK5'#251#192#146#127#255#212#180#168#255#216#187#176#255#217#188 + +#177#255#217#188#177#255#217#188#177#255#217#188#177#255#217#188#177#255#217 + +#188#177#255'o`Z'#255#217#188#177#255#217#188#177#255#217#188#177#255#217#188 + +#177#255#217#188#177#255#217#188#177#255#217#188#177#255#217#188#177#255#217 + +#188#177#255#217#188#177#255#27#24#22#255#0#0#0#255#9#8#7#255#209#180#171#255 + +#217#188#177#255#217#188#177#255#217#188#177#255#217#188#177#255#217#188#177 + +#255#217#188#177#255#217#188#177#255#217#188#177#255#217#188#177#255#217#188 + +#177#255#217#188#177#255#217#188#177#255#217#188#177#255#217#188#177#255#217 + +#188#177#255#215#185#173#255#202#163#147#255#152'cM'#255'`5 '#252'X.'#27'B'#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'].'#23'!_' + +'3 '#241#135'V@'#254#197#155#137#255#215#185#173#255#219#193#183#255#220#194 + +#184#255#220#194#184#255#220#194#184#255#220#194#184#255#220#194#184#255#220 + +#194#184#255#220#194#184#255#220#194#184#255#220#194#184#255#220#194#184#255 + +#220#194#184#255#220#194#184#255#220#194#184#255#220#194#184#255#220#194#184 + +#255#220#194#184#255#4#4#4#255#13#11#11#255#197#173#164#255#220#194#184#255 + +#220#194#184#255#220#194#184#255#220#194#184#255#220#194#184#255#220#194#184 + +#255#220#194#184#255#220#194#184#255#220#194#184#255#220#194#184#255#220#194 + +#184#255#220#194#184#255#220#194#184#255#220#194#184#255#220#194#183#255#218 + +#190#179#255#205#169#154#255#165'pY'#255'b8$'#252'[/'#27'h'#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'Y1'#28'?_' + +'3!'#249#132'T?'#252#193#148#130#255#215#186#174#255#223#198#189#255#223#200 + +#191#255#223#200#191#255#223#200#191#255#223#200#191#255#223#200#191#255#223 + +#200#191#255#223#200#191#255#223#200#191#255#223#200#191#255#223#200#191#255 + +#223#200#191#255#223#200#191#255#223#200#191#255#223#200#191#255#223#200#191 + +#255#199#179#171#255#215#192#183#255#223#200#191#255#223#200#191#255#223#200 + +#191#255#223#200#191#255#223#200#191#255#223#200#191#255#223#200#191#255#223 + +#200#191#255#223#200#191#255#223#200#191#255#223#200#191#255#223#200#191#255 + +#223#200#191#255#223#200#191#255#223#199#190#255#219#192#183#255#203#165#150 + +#255#158'kS'#255'c9%'#251']0'#30#147#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'Z-'#25'3_3'#30 + +#234'wI5'#250#185#138'v'#255#215#186#174#255#225#203#194#255#227#205#197#255 + +#227#205#197#255#227#205#197#255#227#205#197#255#227#205#197#255#227#205#197 + +#255#227#205#197#255#227#205#197#255#227#205#197#255#227#205#197#255#227#205 + +#197#255#227#205#197#255#227#205#197#255#227#205#197#255#227#205#197#255#227 + +#205#197#255#227#205#197#255#227#205#197#255#227#205#197#255#227#205#197#255 + +#227#205#197#255#227#205#197#255#227#205#197#255#227#205#197#255#227#205#197 + +#255#227#205#197#255#227#205#197#255#227#205#197#255#227#205#197#255#226#204 + +#196#255#220#194#183#255#200#159#143#255#144'_H'#254'a6"'#253'\1'#30'y'#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'\3'#31#25'^2'#29#207'nB.'#249#175'~i'#255 + +#213#182#169#255#225#202#193#255#230#209#203#255#230#211#205#255#230#211#205 + +#255#230#211#205#255#230#211#205#255#230#211#205#255#230#211#205#255#230#211 + +#205#255#230#211#205#255#230#211#205#255#230#211#205#255#230#211#205#255#230 + +#211#205#255#230#211#205#255#230#211#205#255#230#211#205#255#230#211#205#255 + +#230#211#205#255#230#211#205#255#230#211#205#255#230#211#205#255#230#211#205 + +#255#230#211#205#255#230#211#205#255#230#211#205#255#230#211#205#255#230#210 + +#204#255#227#205#198#255#219#191#181#255#193#149#131#255#131'R='#251'_4 '#247 + +'Z0'#26'O'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'` '#8']0' + +#28#169'e:'''#250#148'aL'#255#196#153#136#255#220#193#183#255#229#209#202#255 + +#233#216#210#255#234#216#211#255#234#216#211#255#234#216#211#255#234#216#211 + +#255#234#216#211#255#234#216#211#255#234#216#211#255#234#216#211#255#234#216 + +#211#255#234#216#211#255#234#216#211#255#234#216#211#255#234#216#211#255#234 + +#216#211#255#234#216#211#255#234#216#211#255#234#216#211#255#234#216#211#255 + +#234#216#211#255#234#216#211#255#234#216#211#255#233#216#211#255#231#212#206 + ,#255#224#200#192#255#207#171#156#255#168'va'#255'rE1'#249'^3'#31#230'Y,'#28 + +'.'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0'^1'#29'h`3'#31#237'nA/'#249#158'mW'#255#203#165#150#255#224#201#192 + +#255#232#213#208#255#235#219#215#255#237#222#218#255#237#222#218#255#237#222 + +#218#255#237#222#218#255#237#222#218#255#237#222#218#255#237#222#218#255#237 + +#222#218#255#237#222#218#255#237#222#218#255#237#222#218#255#237#222#218#255 + +#237#222#218#255#237#222#218#255#237#222#218#255#237#222#218#255#237#222#218 + +#255#236#220#216#255#233#216#211#255#228#206#200#255#213#182#170#255#177#131 + +'n'#255'}M:'#250'a6"'#253']1'#29#155'U1'#24#21#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'].'#23#11 + +']1'#29'~`5!'#246'tF5'#249#166'u`'#255#202#164#148#255#221#195#186#255#230 + +#210#203#255#234#218#213#255#238#224#220#255#240#227#224#255#240#227#225#255 + +#240#227#225#255#240#227#225#255#240#227#225#255#240#227#225#255#240#227#225 + +#255#240#227#225#255#240#227#225#255#240#227#225#255#240#227#225#255#239#225 + +#222#255#236#220#215#255#232#213#207#255#225#203#194#255#210#176#164#255#183 + +#138'u'#255#133'UA'#252'c9&'#254'^2'#30#178'\.'#26''''#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'U1'#24#21']0'#30#147'`7"'#251'jA-'#249#133'UA' + +#253#169'zf'#255#201#162#146#255#220#194#184#255#230#211#205#255#233#215#210 + +#255#234#217#212#255#236#220#215#255#237#222#218#255#238#223#220#255#237#222 + +#219#255#236#220#216#255#234#219#213#255#233#216#211#255#231#213#206#255#225 + +#203#194#255#209#174#160#255#181#136'u'#255#145'`L'#255'sG4'#249'c9&'#255'_2' + +#30#198'].'#28'7'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0'U+'#28#18'\.'#27'^_1'#30#179'c7$'#248'h?,'#251#127 + +'Q;'#251#148'dN'#255#163't_'#255#175#129'n'#255#186#143'~'#255#198#157#141 + +#255#204#167#151#255#201#161#145#255#191#149#132#255#179#135'u'#255#167'ye' + +#255#153'iT'#255#136'WC'#254'pE2'#249'c9&'#255'_3'#31#212'Z/'#27'|].'#29','#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'U9'#28#9'\.'#26'N^0'#29#157'`' + +'4 '#203'c6#'#230'c7%'#249'd:('#255'f=*'#255'i?-'#252'g>+'#255'e;('#255'd9&' + +#253'b7$'#237'a5!'#214'_1'#30#180'\/'#26'lX,'#26#29#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0'`0 '#16'[1'#24'*].'#27'B]1'#29'4\3'#31#25'UU'#0#3#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#248#15#255 + +#255#255#255#255#254#0#0#127#255#255#255#255#240#0#0#7#255#255#255#255#192#0 + +#0#1#255#255#255#255#0#0#0#0#255#255#255#252#0#0#0#0'?'#255#255#248#0#0#0#0 + +#31#255#255#240#0#0#0#0#7#255#255#192#0#0#0#0#3#255#255#128#0#0#0#0#1#255#255 + +#128#0#0#0#0#0#255#255#0#0#0#0#0#0#127#254#0#0#0#0#0#0#127#252#0#0#0#0#0#0'?' + +#252#0#0#0#0#0#0#31#248#0#0#0#0#0#0#31#248#0#0#0#0#0#0#15#240#0#0#0#0#0#0#15 + ,#240#0#0#0#0#0#0#7#224#0#0#0#0#0#0#7#224#0#0#0#0#0#0#7#224#0#0#0#0#0#0#3#192 + +#0#0#0#0#0#0#3#192#0#0#0#0#0#0#3#192#0#0#0#0#0#0#1#192#0#0#0#0#0#0#1#192#0#0 + +#0#0#0#0#1#128#0#0#0#0#0#0#1#128#0#0#0#0#0#0#1#128#0#0#0#0#0#0#1#128#0#0#0#0 + +#0#0#1#128#0#0#0#0#0#0#1#128#0#0#0#0#0#0#1#192#0#0#0#0#0#0#1#192#0#0#0#0#0#0 + +#1#192#0#0#0#0#0#0#1#192#0#0#0#0#0#0#1#192#0#0#0#0#0#0#3#192#0#0#0#0#0#0#3 + +#224#0#0#0#0#0#0#3#224#0#0#0#0#0#0#7#224#0#0#0#0#0#0#7#224#0#0#0#0#0#0#7#240 + +#0#0#0#0#0#0#15#240#0#0#0#0#0#0#15#248#0#0#0#0#0#0#31#248#0#0#0#0#0#0#31#252 + +#0#0#0#0#0#0'?'#252#0#0#0#0#0#0#127#254#0#0#0#0#0#0#127#254#0#0#0#0#0#0#255 + +#255#0#0#0#0#0#1#255#255#128#0#0#0#0#3#255#255#192#0#0#0#0#7#255#255#224#0#0 + +#0#0#15#255#255#240#0#0#0#0#31#255#255#248#0#0#0#0'?'#255#255#254#0#0#0#0#127 + +#255#255#255#0#0#0#1#255#255#255#255#192#0#0#7#255#255#255#255#240#0#0#31#255 + +#255#255#255#254#0#0#255#255#255#255#255#255#248#31#255#255#255#255#255#255 + +#255#255#255#255#255'('#0#0#0'0'#0#0#0'`'#0#0#0#1#0' '#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0'UUU'#3'333'#5'UUU'#6'III'#7'@@@'#8'@@@'#8'III'#7 + +'UUU'#6'333'#5'UUU'#3#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'@@@' + +#4'@@@'#8'@@@'#16'DDD1BBBMCCC_FCCrDBB'#129'FDD'#133'CCCvCCCcDDDRDDD('#240'l@!'#252'qE!' + +#253'yJ$'#252#129'R&'#252#138'X)'#253#134'T('#253'}N%'#252'uG#'#252'oC"'#253 + +'h=#'#248'Z>.'#230'OC;'#211'FEC'#198'DDC'#187'BBB|CCC&999'#9#0#0#0#1#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#2'<<<'#17'CCCWEED'#170'OB9'#211'd=&'#244'qE"'#253#137'V)'#253 + +#164'h.'#255#186'y3'#255#194#130'5'#255#198#135'6'#255#203#140'7'#255#207#145 + +'8'#255#205#143'7'#255#201#137'7'#255#196#132'6'#255#192#127'5'#255#177'r1' + +#255#152'_+'#254'{L%'#252'k?"'#251'[>-'#233'IEA'#203'EDD'#184'DDDq<<<'#30'@@' + +'@'#4#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0'@@@'#4'BBB#EDD'#146'KB<'#205'a='''#242'yK&'#252#166'i/'#255#192#128'6' + +#255#205#143'9'#255#217#159'<'#255#226#169'>'#255#230#173'>'#255#232#176'>' + +#255#235#180'?'#255#237#182'@'#255#236#181'?'#255#234#178'>'#255#231#175'>' + +#255#228#171'>'#255#223#165'<'#255#211#150':'#255#199#136'8'#255#182'v5'#255 + +#146'\,'#253'k@"'#252'W?1'#227'GFE'#199'CCC'#171'???=@@@'#8#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'III'#7'DDD8ECB'#170'[>,'#234'sF$' + +#252#160'e0'#255#196#133';'#255#216#158'@'#255#227#170'A'#255#234#180'C'#255 + +#241#189'D'#255#245#193'E'#255#246#195'F'#255#247#195'F'#255#247#196'E'#255 + +#248#197'F'#255#248#197'E'#255#247#195'F'#255#247#194'F'#255#246#194'E'#255 + +#244#192'E'#255#238#184'C'#255#230#176'C'#255#223#166'A'#255#207#147'='#255 + +#182'w7'#255#138'V+'#253'h>#'#250'NA9'#215'CCC'#186'@@@[;;;'#13#0#0#0#1#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@@'#8'EEENGC?'#189'b;%'#245#139'W-'#253#190 + +#127';'#255#212#153'B'#255#227#172'F'#255#239#186'I'#255#242#191'J'#255#244 + +#193'K'#255#246#195'K'#255#247#196'K'#255#247#196'K'#255#247#196'L'#255#247 + +#196'L'#255#247#196'L'#255#247#196'L'#255#247#196'L'#255#247#196'K'#255#247 + +#196'K'#255#246#196'K'#255#245#195'J'#255#243#193'J'#255#242#190'J'#255#234 + +#180'H'#255#221#165'E'#255#202#142'@'#255#173'o5'#255'oC$'#252'T?3'#225'CCC' + +#193'AAAy@@@'#16#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'+++'#6'DDD@K@<'#198'g<"'#250#154 + +'a2'#254#200#141'B'#255#222#168'J'#255#234#183'N'#255#239#189'P'#255#242#192 + +'P'#255#242#193'P'#255#243#193'P'#255#243#193'P'#255#243#193'P'#255#243#193 + +'P'#255#243#193'P'#255#243#193'P'#255#243#193'P'#255#243#193'P'#255#243#193 + ,'P'#255#243#193'P'#255#243#193'P'#255#243#193'P'#255#243#193'P'#255#242#193 + +'P'#255#242#193'P'#255#241#191'P'#255#238#187'N'#255#229#176'L'#255#214#158 + +'G'#255#183'y;'#255'yJ)'#252'[=,'#236'CCB'#195'EEEoFFF'#11#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'UUU'#3 + +'CCC.J?;'#190'g=#'#252#167'k7'#255#205#147'H'#255#226#173'P'#255#235#186'T' + +#255#238#189'T'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U' + +#255#239#190'U'#255#239#190'U'#255#191#152'D'#255'A4'#23#255'>1'#22#255'D6' + +#24#255'H9'#26#255'RA'#29#255#146's4'#255#228#182'Q'#255#239#190'U'#255#239 + +#190'U'#255#239#190'U'#255#239#190'U'#255#239#190'U'#255#238#190'U'#255#237 + +#187'T'#255#232#182'S'#255#217#162'M'#255#191#129'B'#255#132'R-'#253'[9('#240 + +'DDD'#191'CCCW@@@'#8#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#1'>>>'#29'F@='#169'd9#'#250#165'i8'#255#208#151'L'#255 + +#226#174'U'#255#233#184'Y'#255#235#186'Y'#255#235#187'Y'#255#235#187'Y'#255 + +#235#187'Y'#255#235#187'Y'#255#235#187'Y'#255#235#187'Y'#255'<0'#23#255#1#1#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#0#255#0#0#0#255#6 + +#5#2#255'*!'#16#255'w^-'#255#227#181'W'#255#235#187'Y'#255#235#187'Y'#255#235 + +#186'Y'#255#234#186'Y'#255#231#181'X'#255#218#164'Q'#255#194#133'E'#255'{J*' + +#252'U=/'#230'CCC'#186'EEE?@@@'#4#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0'333'#10'DAAw_9%'#244#150'^4'#254#204#148'N'#255#225#175 + +'Y'#255#230#181'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255#231#183 + +'\'#255#231#183'\'#255#231#183'\'#255#231#183'\'#255'hR*'#255#1#1#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#1#1#0#255#1#1#0#255'*!'#17#255#164#130'B'#255#231#183'\' + +#255#231#183'\'#255#231#182']'#255#228#179'['#255#217#165'V'#255#185'|C'#255 + +'nA'''#252'N>5'#219'CCC'#163'@@@'#20#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#128#128#128#2'@@@,W8*'#227#132'P/'#253#196#139'M'#255#220 + +#170'['#255#226#179'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#227 + +#179'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#227#179'_'#255#4#3#2 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#0 + +#255#7#6#3#255#178#141'J'#255#227#179'_'#255#227#179'_'#255#225#176'^'#255 + +#211#158'U'#255#174'q?'#255'c9"'#252'GA>'#203'BBB]III'#7#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0'FFF'#11'H>:'#150'e:#'#252#186'~H'#255#214#164'\' + +#255#222#174'a'#255#223#175'b'#255#223#175'b'#255#223#175'b'#255#223#175'b' + +#255#223#175'b'#255#223#175'b'#255#223#175'b'#255#223#175'b'#255#188#148'S' + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#1#1#1#255#154'yC'#255#223#175'b'#255#223#175'a'#255 + +#220#171'`'#255#204#150'U'#255#145'Y5'#254'Y8('#238'CCC'#175'FFF'#29#0#0#0#1 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'UUU'#3'AAA3Z7'''#236#148'\6'#255#207#154'Z' + +#255#218#170'b'#255#219#171'd'#255#219#171'd'#255#219#171'd'#255#219#171'd' + +#255#219#171'd'#255#219#171'd'#255#219#171'd'#255#219#171'd'#255#219#171'd' + +#255#211#165'`'#255#6#5#3#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#2#2#1#255#219#171'd'#255#219 + +#171'd'#255#219#171'd'#255#215#166'`'#255#189#129'M'#255'h=$'#252'H>;'#207'E' + +'EEhIII'#7#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'III'#7'K<5'#137'h;$'#252#188#130 + +'O'#255#213#164'b'#255#215#167'd'#255#215#167'd'#255#215#167'd'#255#215#167 + +'d'#255#215#167'd'#255#215#167'd'#255#215#167'd'#255#215#167'd'#255#215#167 + +'d'#255#215#167'd'#255#215#167'd'#255#168#130'N'#255#1#1#1#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#200#155']'#255#215#167'd'#255#215#167'd'#255#215#166'd'#255#205#153']' + +#255#153'`:'#255'[6$'#243'CCC'#164';;;'#13#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'7' + +'77'#14'Z5%'#229#150'[8'#255#203#150'^'#255#211#162'e'#255#211#162'e'#255#211 + +#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211 + +#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211#162'e'#255#211 + +#162'e'#255#142'mD'#255#1#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#1#1#0#255#145'pF'#255#211#162'e'#255#211#162 + +'e'#255#211#162'e'#255#210#159'd'#255#189#131'R'#255'f9#'#252'I@;'#202'===.' + +#128#128#128#2#0#0#0#0#0#0#0#0#128#128#128#2'D??4]3'#30#252#181'yM'#255#206 + +#155'd'#255#207#157'f'#255#207#157'f'#255#207#157'f'#255#207#157'f'#255#205 + +#155'f'#255'S?('#255#1#1#1#255#1#0#0#255#3#2#1#255#15#11#7#255#169#128'S'#255 + ,#207#157'f'#255#207#157'f'#255#207#157'f'#255#16#12#8#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255#186#141'\' + +#255#207#157'f'#255#207#157'f'#255#207#157'f'#255#207#157'e'#255#201#148'`' + +#255#135'O0'#254'R9-'#226'BBBeIII'#7#0#0#0#0#0#0#0#0'UUU'#6'O8/'#141'o>''' + +#251#193#139'['#255#203#151'e'#255#203#152'e'#255#203#152'e'#255#203#152'e' + +#255#203#152'e'#255#23#17#11#255#1#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#1#1#1#255#153'rL'#255#203#152'e'#255#203#152'e'#255',!'#22#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255' '#24#16 + +#255#203#152'e'#255#203#152'e'#255#203#152'e'#255#203#152'e'#255#203#152'e' + +#255#202#150'd'#255#165'jC'#255'\3!'#247'DDD'#151'MMM'#10#0#0#0#0#0#0#0#0'@@' + +'@'#8'Z6%'#206#142'T5'#255#195#142'a'#255#198#145'c'#255#198#145'c'#255#198 + +#145'c'#255#198#145'c'#255'W@,'#255#1#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255'%'#27#19#255#198#145'c'#255#198#145'c'#255'U>+' + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255#1#1#1#255#27#20#13#255'vW;' + +#255#198#145'c'#255#198#145'c'#255#198#145'c'#255#198#145'c'#255#198#145'c' + +#255#198#145'c'#255#198#145'c'#255#184'}S'#255'`4 '#252'FA>'#183'@@@'#12#0#0 + +#0#0#0#0#0#0'999'#9']2'#30#243#166'gD'#255#192#138'`'#255#192#139'a'#255#192 + +#139'a'#255#192#139'a'#255#190#137'a'#255#1#1#1#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#8#6#4#255#192#139'a'#255#192#139 + +'a'#255#129']B'#255#1#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255'Q;)'#255#192#139'a' + +#255#192#139'a'#255#192#139'a'#255#192#139'a'#255#192#139'a'#255#192#139'a' + +#255#192#139'a'#255#192#139'a'#255#192#139'a'#255#192#139'a'#255#188#132'[' + +#255'u@'''#252'M;3'#212'999'#18#0#0#0#0#0#0#0#0'FFF'#11'^1'#29#250#174'oK' + +#255#186#131'\'#255#186#131'\'#255#186#131'\'#255#186#131'\'#255'vS:'#255#1#1 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255 + +'S:)'#255#186#131'\'#255#186#131'\'#255#184#129'\'#255'('#28#20#255#1#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255'Q9('#255#186#131'\'#255#186#131'\'#255#186#131'\'#255#186#131'\'#255#186 + +#131'\'#255#186#131'\'#255#186#131'\'#255#186#131'\'#255#186#131'\'#255#186 + +#131'\'#255#186#131'\'#255#186#130'['#255#131'I-'#255'Q9-'#221'FFF!'#0#0#0#1 + +#0#0#0#0'M33'#20'_2'#30#251#173'pN'#255#180'{X'#255#180'{X'#255#180'{X'#255 + +#180'{X'#255'-'#30#22#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#2#1#1#255'dE1'#255#180'{X'#255#180'{X'#255#180'{X'#255#180'{X'#255 + +#180'{X'#255'O6&'#255#2#1#1#255#1#1#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255'G0#'#255#180'{X'#255#180'{X'#255#178'{X'#255'hH3'#255'U:)'#255 + +'mK5'#255#180'{X'#255#180'{X'#255#180'{X'#255#180'{X'#255#180'{X'#255#180'{X' + +#255#180'{X'#255#139'P3'#255'U7)'#231'BBB2UUU'#3#0#0#0#0'T1&,c5 '#249#174'rQ' + +#255#178'wW'#255#178'wW'#255#178'wW'#255#178'wW'#255#8#5#4#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#1#0#0#255#27#18#13#255#164'nQ'#255#178'wW'#255#178 + +'wW'#255#178'wW'#255#178'wW'#255#178'wW'#255#178'wW'#255#178'wW'#255#178'wW' + +#255#142'_F'#255'H0#'#255#20#13#10#255#25#16#12#255'9'''#28#255'lI5'#255#178 + +'wW'#255#178'wW'#255'kG4'#255#1#1#1#255#1#1#0#255#1#0#0#255#1#0#0#255#3#2#1 + +#255'zQ<'#255#178'wW'#255#178'wW'#255#178'wW'#255#178'wW'#255#178'wW'#255#149 + +'W9'#255'Z5%'#238'DDD-'#128#128#128#2#0#0#0#0'Y3 Bj8#'#248#173'qS'#255#175't' + +'W'#255#175'tW'#255#175'tW'#255#175'tW'#255#1#0#0#255#1#1#1#255#0#0#0#255#0#0 + +#0#255#5#3#3#255'cB2'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175 + +'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW' + +#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255 + +#173'rU'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#2#1 + +#1#255#152'eL'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#155'[>' + +#255'\4"'#244'@@@'#28#0#0#0#1#0#0#0#0'X0!3g7"'#246#172'oR'#255#174'rV'#255 + +#174'rV'#255#174'rV'#255#166'lR'#255#7#5#3#255#131'VA'#255#155'fM'#255'oI7' + +#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255 + +#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174 + +'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV'#255#174'rV' + +#255#153'dL'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#0#0#0#255'<'''#29#255#174'rV'#255#174'rV'#255#174'rV'#255#173'qU'#255#151'Y' + +'='#255']6%'#239'333'#15#0#0#0#0#0#0#0#0'O1'''#25'b3'#31#247#168'jN'#255#172 + +'oU'#255#172'oU'#255#172'oU'#255#172'oU'#255#172'oU'#255#172'oU'#255#172'oU' + +#255#172'oU'#255#172'oU'#255#172'oU'#255#172'oU'#255#172'oU'#255#136'XD'#255 + ,'U7*'#255'^=/'#255'kE5'#255#170'oU'#255#172'oU'#255#172'oU'#255#172'oU'#255 + +#172'oU'#255#172'oU'#255#172'oU'#255#172'oU'#255#172'oU'#255#172'oU'#255#172 + +'oU'#255#172'oU'#255#5#3#2#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255'!'#21#16#255#172'oU'#255#172'oU'#255#172'oU'#255#172'oT'#255 + +#143'R7'#255'Y6('#225'@@@'#12#0#0#0#0#0#0#0#0'333'#5'_2'#31#248#167'hL'#255 + +#172'qW'#255#172'qX'#255#172'qX'#255#172'qX'#255#172'qX'#255#172'qX'#255#172 + +'qX'#255#172'qX'#255#172'qX'#255#172'qX'#255#172'qX'#255':&'#30#255#1#0#0#255 + +#1#1#0#255#1#1#1#255#1#1#0#255#4#2#2#255#133'WD'#255#172'qX'#255#172'qX'#255 + +#172'qX'#255#172'qX'#255#172'qX'#255#172'qX'#255#172'qX'#255#172'qX'#255#172 + +'qX'#255#172'qX'#255'E.$'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#30#20#15#255#172'qX'#255#172'qX'#255#172'qX'#255#172'pV'#255 + +#134'K2'#255'V8)'#199'999'#9#0#0#0#0#0#0#0#0#0#0#0#1'_3'#30#239#164'fJ'#255 + +#175'w]'#255#175'w^'#255#175'w^'#255#175'w^'#255#175'w^'#255#175'w^'#255#175 + +'w^'#255#175'w^'#255#175'w^'#255#175'w^'#255'hF7'#255#1#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#7#5#4#255#175'w^'#255#175'w^'#255'{TB' + +#255'X;/'#255']?2'#255#127'VD'#255#175'w^'#255#175'w^'#255#175'w^'#255#175'w' + +'^'#255#165'qY'#255#1#1#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#1 + +#255'fF7'#255#175'w^'#255#175'w^'#255#175'w^'#255#175'v\'#255'{D-'#253'S5(' + +#154'333'#5#0#0#0#0#0#0#0#0#0#0#0#0'a3'#30#200#149'Z?'#255#179'|c'#255#179'}' + +'e'#255#179'}e'#255#179'}e'#255#179'}e'#255#179'}e'#255#179'}e'#255#179'}e' + +#255#179'}e'#255#179'}e'#255#19#13#11#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#2#1#1#255#179'}e'#255'E0'''#255#1#0#0#255#1#1#0#255 + +#1#1#0#255#0#0#0#255'R:/'#255#179'}e'#255#179'}e'#255#179'}e'#255#179'}e'#255 + +'.!'#26#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#1#255#177'}e'#255#179 + +'}e'#255#179'}e'#255#179'}e'#255#175'v\'#255'g8$'#251'W7*O'#0#0#0#1#0#0#0#0#0 + +#0#0#0#0#0#0#0'[0'#29'lyD-'#249#181#128'i'#255#183#131'l'#255#183#131'l'#255 + +#183#131'l'#255#183#131'l'#255#183#131'l'#255#183#131'l'#255#183#131'l'#255 + +#183#131'l'#255#183#131'l'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255'"'#25#20#255#183#131'l'#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255'B/'''#255#183#131'l'#255#183#131'l'#255 + +#183#131'l'#255#169'yd'#255#1#1#1#255#0#0#0#255#0#0#0#255#0#0#0#255'#'#25#21 + +#255#183#131'l'#255#183#131'l'#255#183#131'l'#255#183#131'l'#255#167'lQ'#255 + +'^3'#31#248'@@@'#12#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'Y1'#30#26'b5 '#244#178'z' + +'c'#255#187#138't'#255#187#138'u'#255#187#138'u'#255#187#138'u'#255#187#138 + +'u'#255#187#138'u'#255#187#138'u'#255#187#138'u'#255#187#138'u'#255#2#2#1#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#0#255#170'~j'#255#177 + +#130'o'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#4#3#3 + +#255#187#138'u'#255#187#138'u'#255#187#138'u'#255#187#138'u'#255'jNB'#255#11 + +#8#7#255#0#0#0#255#0#0#0#255#152'p`'#255#187#138'u'#255#187#138'u'#255#187 + +#138'u'#255#186#136'r'#255#144'W?'#255']6#'#193'333'#5#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0'`4'#31#217#160'gN'#255#190#143'{'#255#191#145'}'#255#191 + +#145'}'#255#191#145'}'#255#191#145'}'#255#191#145'}'#255#191#145'}'#255#191 + +#145'}'#255#191#145'}'#255#19#14#12#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255'7*$'#255#191#145'}'#255#164'|k'#255#1#1#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#2#2#1#255#191#145'}'#255#191#145'}'#255 + +#191#145'}'#255#191#145'}'#255#191#145'}'#255#191#145'}'#255#0#0#0#255#30#23 + +#20#255#191#145'}'#255#191#145'}'#255#191#145'}'#255#191#145'}'#255#187#138 + +'t'#255'p>('#249'Y2#U'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27 + +'huB+'#244#190#142'z'#255#195#152#132#255#195#152#132#255#195#152#132#255#195 + +#152#132#255#195#152#132#255#195#152#132#255#195#152#132#255#195#152#132#255 + +'A3,'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255#183#142'|'#255 + +#195#152#132#255#138'k]'#255#1#1#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#9#7#6#255#195#152#132#255#195#152#132#255#195#152#132#255#195 + +#152#132#255#195#152#132#255#195#152#132#255#1#1#1#255#160'}m'#255#195#152 + +#132#255#195#152#132#255#195#152#132#255#194#150#131#255#167'pW'#255'`4 '#240 + +'M33'#10#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@'#0#4'`3'#30#229 + +#164'nU'#255#197#156#137#255#199#159#141#255#199#159#141#255#199#159#141#255 + +#199#159#141#255#199#159#141#255#199#159#141#255#199#159#141#255'x`U'#255#1#1 + +#1#255#0#0#0#255#0#0#0#255#0#0#0#255#18#14#13#255#199#159#141#255#199#159#141 + +#255' '#26#23#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#0#255 + +#139'oc'#255#199#159#141#255#199#159#141#255#199#159#141#255#199#159#141#255 + +#199#159#141#255#199#159#141#255'^KC'#255#199#159#141#255#199#159#141#255#199 + +#159#141#255#199#159#141#255#192#147#127#255'rB-'#249'\1 k'#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'\.'#28'Sn>('#243#194#149#131 + ,#255#202#165#148#255#203#165#149#255#203#165#149#255#203#165#149#255#203#165 + +#149#255#203#165#149#255#203#165#149#255#169#138'|'#255#0#0#0#255#1#1#1#255 + +#16#13#11#255#23#19#17#255#171#139'~'#255#203#165#149#255#203#165#149#255#3#3 + +#2#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255'*"'#31#255#203#165 + +#149#255#203#165#149#255#203#165#149#255#203#165#149#255#203#165#149#255#203 + +#165#149#255#203#165#149#255#203#165#149#255#203#165#149#255#203#165#149#255 + +#203#165#149#255#201#162#145#255#163'mU'#255'_3'#31#227'U'#0#0#3#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'a3'#30#213#153 + +'eM'#254#204#167#151#255#207#172#158#255#207#172#158#255#207#172#158#255#207 + +#172#158#255#207#172#158#255#207#172#158#255#205#170#156#255#0#0#0#255'<1.' + +#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172 + +#158#255#20#16#15#255#1#0#0#255#0#0#0#255#0#0#0#255#1#0#0#255'?40'#255#207 + +#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255 + +#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158#255#207#172#158 + +#255#207#172#158#255#207#171#156#255#192#147#127#255'k<'''#244'Z.'#29'L'#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +'^/'#27'&b5!'#240#174'{f'#255#209#176#162#255#212#180#167#255#212#180#167#255 + +#212#180#167#255#212#180#167#255#212#180#167#255#212#180#167#255#6#5#5#255 + +#179#151#140#255#212#180#167#255#212#180#167#255#212#180#167#255#212#180#167 + +#255#212#180#167#255#212#180#167#255'gXR'#255#0#0#0#255#0#0#0#255'gXR'#255 + +#212#180#167#255#212#180#167#255#212#180#167#255#212#180#167#255#212#180#167 + +#255#212#180#167#255#212#180#167#255#212#180#167#255#212#180#167#255#212#180 + +#167#255#212#180#167#255#211#179#166#255#202#162#146#255#127'M7'#248'`2'#31 + +#169#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0'[/'#26'Fg:#'#242#190#145#127#255#214#184#172#255#216 + +#187#176#255#216#187#176#255#216#187#176#255#216#187#176#255#216#187#176#255 + +'k]X'#255#216#187#176#255#216#187#176#255#216#187#176#255#216#187#176#255#216 + +#187#176#255#216#187#176#255#216#187#176#255'E<8'#255#0#0#0#255'>63'#255#216 + +#187#176#255#216#187#176#255#216#187#176#255#216#187#176#255#216#187#176#255 + +#216#187#176#255#216#187#176#255#216#187#176#255#216#187#176#255#216#187#176 + +#255#216#187#176#255#216#187#175#255#210#176#163#255#147'_H'#252'`4'#31#210 + +'U++'#6#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'\0'#29'trB-'#242#198#157#140#255#218#191 + +#180#255#221#195#185#255#221#195#185#255#221#195#185#255#221#195#185#255#221 + +#195#185#255#221#195#185#255#221#195#185#255#221#195#185#255#221#195#185#255 + +#221#195#185#255#221#195#185#255#221#195#185#255',''%'#255'920'#255#221#195 + +#185#255#221#195#185#255#221#195#185#255#221#195#185#255#221#195#185#255#221 + +#195#185#255#221#195#185#255#221#195#185#255#221#195#185#255#221#195#185#255 + +#221#195#185#255#220#194#184#255#213#183#170#255#162'oW'#255'b5 '#232'].'#23 + +#22#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'_1'#30#138'l>)'#242#187#143'|' + +#255#221#196#186#255#225#202#193#255#225#203#194#255#225#203#194#255#225#203 + +#194#255#225#203#194#255#225#203#194#255#225#203#194#255#225#203#194#255#225 + +#203#194#255#225#203#194#255#225#203#194#255#225#203#194#255#225#203#194#255 + +#225#203#194#255#225#203#194#255#225#203#194#255#225#203#194#255#225#203#194 + +#255#225#203#194#255#225#203#194#255#225#203#194#255#225#203#194#255#225#203 + +#194#255#224#201#192#255#212#180#168#255#149'aK'#252'a5!'#230']2'#25')'#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#28'\d9$'#241#172 + +'|h'#255#222#197#187#255#228#206#200#255#230#209#203#255#230#209#203#255#230 + +#209#203#255#230#209#203#255#230#209#203#255#230#209#203#255#230#209#203#255 + +#230#209#203#255#230#209#203#255#230#209#203#255#230#209#203#255#230#209#203 + +#255#230#209#203#255#230#209#203#255#230#209#203#255#230#209#203#255#230#209 + +#203#255#230#209#203#255#230#209#203#255#229#209#202#255#226#204#197#255#208 + +#173#159#255#131'R;'#245'a3'#31#207'Y3'#26#20#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'].'#28'7a5!'#236#137'WB'#248#201 + +#163#148#255#229#210#202#255#233#215#210#255#234#217#212#255#234#217#212#255 + +#234#217#212#255#234#217#212#255#234#217#212#255#234#217#212#255#234#217#212 + +#255#234#217#212#255#234#217#212#255#234#217#212#255#234#217#212#255#234#217 + +#212#255#234#217#212#255#234#217#212#255#234#217#212#255#234#216#211#255#231 + +#212#206#255#221#195#185#255#174#128'm'#255'm>*'#242'`1'#29#163'f33'#5#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0'b'''#20#13'`2'#29#140'd8$'#241#151'hR'#251#211#179#167#255#233#215 + +#210#255#236#220#215#255#237#222#219#255#238#225#221#255#238#225#221#255#238 + +#225#221#255#238#225#221#255#238#225#221#255#238#225#221#255#238#225#221#255 + +#238#225#221#255#238#225#221#255#238#223#220#255#236#221#217#255#234#219#213 + +#255#227#205#198#255#188#146#128#255'wH2'#242'b5 '#219'].'#27'B'#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'X1'#29#26'a3'#30#168'f:$'#242#134'T?' + +#246#179#136'v'#255#214#183#172#255#235#218#214#255#238#225#221#255#239#226 + +#223#255#240#227#224#255#240#227#225#255#240#227#225#255#239#226#223#255#239 + +#225#222#255#238#224#220#255#226#204#196#255#199#161#145#255#158'o['#254'rD-' + +#239'b4"'#232'^2'#30'\'#0#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0'`+ '#24']/'#30'fd6#'#197'c8#'#243'vE0'#240#140'ZF' + +#247#156'mY'#255#171#127'm'#255#184#143#127#255#178#136'v'#255#164'wd'#255 + +#148'dP'#252#130'Q;'#243'l<('#239'b6"'#234'b5!'#151'Z-'#29'>UU'#0#3#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0'].'#23#11'Z/'#29'G^4 fa4!'#130'd6!'#166'd7#'#194 + +'d7"'#182'c6"'#150'_3'#31's\0'#29'YY/'#30'+'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#224#3#255#255#255 + +#255#255#254#0#0#127#255#255#255#255#248#0#0#31#255#255#255#255#224#0#0#7#255 + +#255#255#255#192#0#0#3#255#255#255#255#128#0#0#1#255#255#255#255#0#0#0#0#127 + +#255#255#254#0#0#0#0#127#255#255#252#0#0#0#0'?'#255#255#248#0#0#0#0#31#255 + +#255#240#0#0#0#0#15#255#255#240#0#0#0#0#15#255#255#224#0#0#0#0#7#255#255#224 + +#0#0#0#0#3#255#255#192#0#0#0#0#3#255#255#192#0#0#0#0#3#255#255#192#0#0#0#0#1 + +#255#255#128#0#0#0#0#1#255#255#128#0#0#0#0#1#255#255#128#0#0#0#0#1#255#255 + +#128#0#0#0#0#1#255#255#128#0#0#0#0#0#255#255#128#0#0#0#0#0#255#255#128#0#0#0 + +#0#0#255#255#128#0#0#0#0#0#255#255#128#0#0#0#0#1#255#255#128#0#0#0#0#1#255 + +#255#128#0#0#0#0#1#255#255#128#0#0#0#0#1#255#255#192#0#0#0#0#1#255#255#192#0 + +#0#0#0#3#255#255#192#0#0#0#0#3#255#255#224#0#0#0#0#7#255#255#224#0#0#0#0#7 + +#255#255#224#0#0#0#0#15#255#255#240#0#0#0#0#15#255#255#248#0#0#0#0#31#255#255 + +#248#0#0#0#0'?'#255#255#252#0#0#0#0'?'#255#255#254#0#0#0#0#127#255#255#255#0 + +#0#0#0#255#255#255#255#128#0#0#1#255#255#255#255#192#0#0#3#255#255#255#255 + +#224#0#0#15#255#255#255#255#248#0#0#31#255#255#255#255#254#0#0#127#255#255 + +#255#255#255#192#7#255#255#255#255#255#255#255#255#255#255#255#255'('#0#0#0 + +' '#0#0#0'@'#0#0#0#1#0' '#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2'CCC'#19'FFF'#22'UUU'#3#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0'@@@'#12'EAAGDDB'#133'DDC'#181'HC?'#205'LA;'#213 + +'JB='#212'FC@'#204'EED'#185'DDC'#145'DDDSFFF'#22#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'III'#14'EEBoLA;'#208'eE-'#235'xK(' + +#246#131'R)'#250#139'W*'#251#149'_,'#252#145'\+'#252#136'V*'#250#128'Q('#249 + +'rI)'#244'\D2'#227'FB?'#207'CCC'#134'DDD'#30#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0'EEENMA9'#206'oF)'#245#147']-'#252#187'}4'#255#211#150'9'#255#224 + +#167';'#255#230#174'='#255#234#179'>'#255#233#178'>'#255#228#171'='#255#221 + +#163'<'#255#205#143'8'#255#175'r2'#255#131'R*'#250'eC,'#238'FB?'#205'CCCoUUU' + +#3#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0'@@@'#4'GEA|dB+'#239#142'[.'#252#198#137'<'#255#227#172'C'#255 + +#236#183'E'#255#242#190'F'#255#246#195'G'#255#248#198'G'#255#249#199'H'#255 + +#249#198'H'#255#247#196'G'#255#245#193'G'#255#240#188'F'#255#234#180'D'#255 + +#220#163'A'#255#183'y8'#255'}O*'#250'WA4'#225'CCC'#152'<<<'#17#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#1'G@='#148 + +'lD*'#245#175'u8'#254#221#166'I'#255#234#182'M'#255#242#193'P'#255#243#194'O' + +#255#244#195'O'#255#244#195'P'#255#244#195'P'#255#244#195'P'#255#244#195'P' + +#255#244#195'P'#255#244#195'P'#255#243#194'O'#255#243#194'O'#255#240#190'O' + +#255#230#179'L'#255#212#155'F'#255#148'^1'#252'`A.'#234'CCC'#171'@@@'#12#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'FA>vmB)'#247#189 + +#130'A'#255#224#172'P'#255#236#187'U'#255#238#189'W'#255#238#190'V'#255#238 + +#190'V'#255#238#190'V'#255'fQ%'#255#17#14#6#255#17#13#6#255#16#13#6#255',#' + +#16#255#155'|8'#255#238#190'V'#255#238#190'V'#255#238#189'V'#255#238#189'W' + +#255#233#184'U'#255#217#163'M'#255#164'l8'#254'_>+'#238'DDD'#147#128#128#128 + +#2#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'FDD=e?*'#243#183'}B'#255 + +#223#171'W'#255#232#183'['#255#232#183'\'#255#232#183'\'#255#232#183'\'#255 + +#232#183'\'#255'>1'#25#255#1#1#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255 + +#1#1#1#255#5#4#2#255#22#17#9#255'pX,'#255#218#171'V'#255#232#183'\'#255#230 + +#182'['#255#217#164'T'#255#152'a7'#252'V=1'#228'DDDb'#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#128#128#128#2'Z<-'#215#163'k='#254#217#166'['#255#226#178'`' + +#255#226#179'a'#255#226#179'a'#255#226#179'a'#255#226#179'a'#255#226#179'a' + +#255#5#4#2#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#3#3#1#255',#'#19#255#226#179'a'#255#225#177'_' + +#255#208#154'T'#255#129'O1'#251'H?;'#205'@@@'#20#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0'J@<[vF,'#249#206#153'Y'#255#220#172'b'#255#220#172'c'#255#220#172'c'#255 + +#220#172'c'#255#220#172'c'#255#220#172'c'#255#205#160']'#255#4#3#2#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#1#0#0#255'.$'#21#255#220#172'c'#255#218#170'a'#255#190#132 + +'N'#255'c=)'#242'CCCz'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'\9('#218#177'vG'#255 + +#213#164'c'#255#214#166'e'#255#214#166'e'#255#214#166'e'#255#214#166'e'#255 + +#214#166'e'#255#214#166'e'#255#214#166'e'#255'v\8'#255#2#2#1#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#11#9#5#255#214#166'e'#255#214#166'e'#255#209#159'a'#255#139'Y' + +'6'#252'K>7'#206'333'#5#0#0#0#0#0#0#0#0'?;9'#19'mA+'#247#201#148'^'#255#209 + +#159'e'#255#209#159'e'#255#209#159'e'#255#146'oF'#255#18#14#9#255#21#16#10 + +#255'O<&'#255#209#159'e'#255#209#159'e'#255'$'#27#17#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#11#8#5#255#209#159'e'#255#209#159'e'#255#208#158'e'#255#185#128'Q'#255 + +'^9)'#240'BBB6'#0#0#0#0#0#0#0#0'P8-q'#144'Z:'#252#201#150'd'#255#202#151'd' + +#255#202#151'd'#255'uW:'#255#2#1#1#255#0#0#0#255#0#0#0#255#1#0#0#255'-!'#22 + +#255#202#151'd'#255'ZC-'#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#1#1#0#255#5#4#3#255'gM3'#255#202#151'd' + +#255#202#151'd'#255#202#151'd'#255#197#145'`'#255'l@*'#248'CCBo'#0#0#0#0#0#0 + +#0#0'^7$'#194#171'pK'#255#194#140'a'#255#194#140'a'#255#194#140'a'#255#6#4#3 + +#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#7#5#4#255#194#140'a'#255#139'eE' + +#255#1#1#1#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#13 + +#9#6#255'wV<'#255#192#138'a'#255#194#140'a'#255#194#140'a'#255#194#140'a'#255 + +#194#140'a'#255#193#140'a'#255#137'T7'#252'K=6'#158#0#0#0#0#0#0#0#0'a6#'#220 + +#177'uQ'#255#185#129'['#255#185#129'['#255#127'Y>'#255#1#1#0#255#0#0#0#255#0 + +#0#0#255#0#0#0#255#2#1#1#255'8'''#27#255#185#129'['#255#185#129'['#255'+'#30 + +#21#255#2#1#1#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#13#9#6#255#179'}Y' + +#255#185#129'['#255#185#129'['#255#185#129'['#255#185#129'['#255#185#129'[' + +#255#185#129'['#255#185#129'['#255#152'^>'#255'P:1'#190#0#0#0#0#0#0#0#0'c7#' + +#227#175'sS'#255#178'xW'#255#178'xW'#255','#30#21#255#0#0#0#255#0#0#0#255#0#0 + +#0#255#5#4#3#255'uO:'#255#178'xW'#255#178'xW'#255#178'xW'#255#178'xW'#255'xP' + +':'#255'('#26#19#255#10#7#5#255#10#7#5#255#28#19#13#255#168'rS'#255#163'nO' + +#255#25#17#12#255#6#4#3#255#17#11#8#255'bB/'#255#178'xW'#255#178'xW'#255#178 + +'xW'#255#158'aB'#255'V9,'#210#0#0#0#0#0#0#0#0'f7"'#227#173'sT'#255#175'tW' + +#255#175'tW'#255#15#10#7#255#13#8#6#255#5#4#3#255'+'#29#21#255#169'pU'#255 + +#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175 + +'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#175'tW'#255#17#11#8#255#0#0#0 + +#255#0#0#0#255#0#0#0#255#2#2#1#255#136'ZD'#255#175'tW'#255#175'tW'#255#161'd' + +'G'#255'[8('#211#0#0#0#0#0#0#0#0'e6"'#218#171'nR'#255#173'qV'#255#173'qV'#255 + +#136'YC'#255#173'qV'#255#173'qV'#255#173'qV'#255#173'qV'#255#173'qV'#255'sK9' + +#255'uM:'#255#159'gN'#255#173'qV'#255#173'qV'#255#173'qV'#255#173'qV'#255#173 + +'qV'#255#173'qV'#255#173'qV'#255'5"'#27#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0 + +#0#255'H/$'#255#173'qV'#255#173'qV'#255#153'^D'#255'Y8*'#188#0#0#0#0#0#0#0#0 + +'c5 '#203#170'kQ'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY' + ,#255#174'sY'#255#164'mU'#255#11#7#6#255#1#1#1#255#1#1#1#255#5#3#2#255#127'TA' + +#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255#174'sY'#255 + +#128'UA'#255#2#1#1#255#0#0#0#255#0#0#0#255#0#0#0#255'J1&'#255#174'sY'#255#174 + +'sY'#255#147'X?'#255'S8,'#140#0#0#0#0#0#0#0#0'd4'#30#153#162'gM'#255#178'{c' + +#255#178'{c'#255#178'{c'#255#178'{c'#255#178'{c'#255#178'{c'#255'A-$'#255#0#0 + +#0#255#0#0#0#255#0#0#0#255#0#0#0#255#20#14#11#255'xSB'#255#6#4#3#255#5#4#3 + +#255#18#12#10#255#170'u_'#255#178'{c'#255#178'{c'#255#9#6#5#255#0#0#0#255#0#0 + +#0#255#3#2#2#255#166's]'#255#178'{c'#255#178'{c'#255#131'P8'#252'S3$>'#0#0#0 + +#0#0#0#0#0'[/'#27'3'#137'T='#247#184#134'o'#255#184#134'o'#255#184#134'o'#255 + +#184#134'o'#255#184#134'o'#255#184#134'o'#255#14#10#9#255#0#0#0#255#0#0#0#255 + +#0#0#0#255#1#1#1#255'\C7'#255#14#10#8#255#0#0#0#255#0#0#0#255#0#0#0#255#14#10 + +#8#255#184#134'o'#255#184#134'o'#255'xWI'#255#2#1#1#255#0#0#0#255#18#14#11 + +#255#184#134'o'#255#184#134'o'#255#183#131'l'#255'h:&'#240#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0'n<%'#218#189#140'x'#255#190#143'z'#255#190#143'z'#255#190#143 + +'z'#255#190#143'z'#255#190#143'z'#255',!'#28#255#0#0#0#255#0#0#0#255#0#0#0 + +#255#9#7#6#255#190#143'z'#255#9#7#6#255#0#0#0#255#0#0#0#255#0#0#0#255#5#4#3 + +#255#190#143'z'#255#190#143'z'#255#190#143'z'#255#159'xe'#255#0#0#0#255#140 + +'jZ'#255#190#143'z'#255#190#143'z'#255#175'yc'#255'b6"'#193#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0'd4'#30#151#167's\'#254#196#154#135#255#196#154#135#255#196#154 + +#135#255#196#154#135#255#196#154#135#255'qYN'#255#0#0#0#255#0#0#0#255#1#1#1 + +#255'v]R'#255#194#152#133#255#5#4#4#255#0#0#0#255#0#0#0#255#0#0#0#255#10#8#7 + +#255#196#154#135#255#196#154#135#255#196#154#135#255#196#154#135#255'"'#27#24 + +#255#196#154#135#255#196#154#135#255#196#154#135#255#131'R<'#248'^1'#28'1'#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#14'o>('#224#198#157#140#255#202#163#146 + +#255#202#163#146#255#202#163#146#255#202#163#146#255#170#138'{'#255#0#0#0#255 + +#8#6#6#255#26#21#19#255#202#163#146#255#143'th'#255#1#1#1#255#0#0#0#255#0#0#0 + +#255#2#2#2#255#143'sg'#255#202#163#146#255#202#163#146#255#202#163#146#255 + +#202#163#146#255#191#155#138#255#202#163#146#255#202#163#146#255#183#135'r' + +#255'd5 '#193#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'd3'#30'{'#156 + +'jS'#248#209#174#160#255#209#174#160#255#209#174#160#255#209#174#160#255#209 + +#174#160#255#2#2#2#255#205#172#158#255#209#174#160#255#209#174#160#255#169 + +#140#129#255#11#9#9#255#1#1#0#255#4#3#3#255#132'oe'#255#209#174#160#255#209 + +#174#160#255#209#174#160#255#209#174#160#255#209#174#160#255#209#174#160#255 + +#209#174#160#255#205#167#152#255'yG3'#235'[/'#27'"'#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'd4'#30#181#179#134'r'#254#215#185#173#255#215 + +#185#173#255#215#185#173#255#215#185#173#255'm^X'#255#215#185#173#255#215#185 + +#173#255#215#185#173#255#215#185#173#255#133'sk'#255#0#0#0#255#156#134'}'#255 + +#215#185#173#255#215#185#173#255#215#185#173#255#215#185#173#255#215#185#173 + +#255#215#185#173#255#215#185#173#255#214#183#172#255#143'^I'#243'b3'#29'`'#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#8'f6 ' + +#205#189#148#131#254#222#197#187#255#222#197#187#255#222#197#187#255#222#197 + +#187#255#222#197#187#255#222#197#187#255#222#197#187#255#222#197#187#255#127 + +'qk'#255#134'wq'#255#222#197#187#255#222#197#187#255#222#197#187#255#222#197 + +#187#255#222#197#187#255#222#197#187#255#222#197#187#255#220#193#183#255#159 + +'o['#247'd3'#30#147#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0'[/'#27#15'c3'#30#193#176#132'q'#248#228#206#199#255 + +#228#208#201#255#228#208#201#255#228#208#201#255#228#208#201#255#228#208#201 + +#255#228#208#201#255#228#208#201#255#228#208#201#255#228#208#201#255#228#208 + +#201#255#228#208#201#255#228#208#201#255#228#208#201#255#228#208#201#255#221 + +#196#186#255#141']I'#237'c3'#29#129#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#2'c3'#29#150 + +#135'XD'#231#208#176#164#255#235#219#215#255#235#219#215#255#235#219#215#255 + +#235#219#215#255#235#219#215#255#235#219#215#255#235#219#215#255#235#219#215 + +#255#235#219#215#255#235#219#215#255#235#219#215#255#232#214#209#255#189#149 + +#133#253'qA+'#220'a2'#29'O'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27 + +'"e4'#30#185#144'cO'#235#195#158#144#254#230#209#203#255#242#231#229#255#242 + +#231#229#255#242#231#229#255#242#231#229#255#242#231#229#255#241#230#226#255 + +#220#193#184#255#180#141'|'#251'zK6'#226'd3'#30#142'[/'#27#10#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#28'b3'#29'{g5'#30 + +#198'xH2'#218#137']J'#229#156'r`'#236#151'mZ'#234#132'VB'#227'q?)'#213'f4'#30 + +#182'_1'#28'W[/'#27#11#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + ,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#5'[/' + +#27#30'[/'#27#22'[/'#27#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#252'?'#255 + +#255#192#3#255#255#0#0#255#254#0#0'?'#248#0#0#31#240#0#0#15#240#0#0#7#224#0#0 + +#7#192#0#0#3#192#0#0#3#192#0#0#1#128#0#0#1#128#0#0#1#128#0#0#1#128#0#0#1#128 + +#0#0#1#128#0#0#1#128#0#0#1#128#0#0#1#128#0#0#1#128#0#0#3#192#0#0#3#192#0#0#3 + +#192#0#0#7#224#0#0#7#240#0#0#15#240#0#0#31#248#0#0'?'#252#0#0#127#255#0#0#255 + +#255#192#3#255#255#252'?'#255'('#0#0#0#16#0#0#0' '#0#0#0#1#0' '#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +';;;'#13'ICB7M=4zL>6xFBA;@@@'#16#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0'III'#7'W;,'#171'nC('#245#145'`+'#250#181#127'2'#253#175 + +'z1'#253#139'\*'#250'h?&'#244'P=3'#159'@@@'#12#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0'K921d;'''#235#191#137'7'#254#249#198'E'#255#251#199'F'#255#251#200 + +'F'#255#251#200'F'#255#251#199'F'#255#246#194'E'#255#173'y3'#253'\9)'#229'E>' + +';2'#0#0#0#0#0#0#0#0#0#0#0#0'>2,'#7'nC'''#238#223#171'N'#255#239#191'U'#255 + +#240#192'U'#255#164#131':'#255'@3'#23#255'J;'#26#255'~e-'#255#196#157'E'#255 + +#239#191'U'#255#212#159'J'#255'a<('#231'MMM'#10#0#0#0#0#0#0#0#0'[7('#183#195 + +#145'N'#254#228#180'_'#255#228#180'_'#255#228#180'_'#255'40'#255#210#176#163#255 + +#148'|s'#255'RD?'#255#210#176#163#255#140'fW'#243'[/'#27#2#0#0#0#0'tI6'#209 + +#216#188#178#255#221#195#185#255#213#188#178#255'$'#31#30#255#131'sn'#255'sf' + +'`'#255#0#0#0#255'eYU'#255#221#195#185#255#221#195#185#255#204#180#170#255 + +#207#178#166#255'k>+'#182#0#0#0#0#0#0#0#0'[/'#27#31#156'xi'#240#232#213#207 + +#255#232#213#207#255#180#165#161#255#232#213#207#255#182#167#162#255'ICA'#255 + +#226#207#201#255#232#213#207#255#232#213#207#255#231#213#206#255#134'_O'#233 + +'[/'#27#12#0#0#0#0#0#0#0#0#0#0#0#0'd3'#30'e'#171#139'~'#240#239#226#224#255 + +#242#231#229#255#242#231#229#255#240#229#227#255#242#231#229#255#242#231#229 + +#255#242#231#229#255#235#221#216#255#153'uh'#236'a2'#29'?'#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#0#0#0#0'\0'#27'*'#131'\I'#215#212#191#183#252#239#229#226#255 + +#253#250#252#255#253#249#250#255#236#223#220#255#204#180#172#250'yM;'#196'[/' + +#27#23#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0'[/'#27#3'[/' + +#27'>c3'#29#131'uI4'#190'oA-'#183'b2'#29'v[/'#27'4'#0#0#0#0#0#0#0#0#0#0#0#0#0 + +#0#0#0#0#0#0#0#248#31#172'A'#224#7#172'A'#192#3#172'A'#128#1#172'A'#128#1#172 + +'A'#0#0#172'A'#0#0#172'A'#0#0#172'A'#0#0#172'A'#0#0#172'A'#0#0#172'A'#128#1 + +#172'A'#128#1#172'A'#192#3#172'A'#224#7#172'A'#240#31#172'A' +]); + diff --git a/applications/lazstats/source_orig/LazStats.manifest b/applications/lazstats/source_orig/LazStats.manifest new file mode 100644 index 000000000..515fedeef --- /dev/null +++ b/applications/lazstats/source_orig/LazStats.manifest @@ -0,0 +1,17 @@ + + + + Your application description here. + + + + + + + + + + + + + \ No newline at end of file diff --git a/applications/lazstats/source_orig/LazStats.res b/applications/lazstats/source_orig/LazStats.res new file mode 100644 index 000000000..7c6cf3e4b Binary files /dev/null and b/applications/lazstats/source_orig/LazStats.res differ diff --git a/applications/lazstats/source_orig/kaplanmeierunit.lfm b/applications/lazstats/source_orig/kaplanmeierunit.lfm new file mode 100644 index 000000000..61b3d4ab7 --- /dev/null +++ b/applications/lazstats/source_orig/kaplanmeierunit.lfm @@ -0,0 +1,433 @@ +object KaplanMeierFrm: TKaplanMeierFrm + Left = 306 + Height = 366 + Top = 147 + Width = 493 + Caption = 'Kaplan-Meier Survival Analysis' + ClientHeight = 366 + ClientWidth = 493 + OnShow = FormShow + LCLVersion = '0.9.28.2' + object Label1: TLabel + Left = 8 + Height = 14 + Top = 7 + Width = 90 + Caption = 'Available Variables' + ParentColor = False + end + object Label2: TLabel + Left = 217 + Height = 14 + Top = 24 + Width = 64 + Caption = 'Time Variable' + ParentColor = False + end + object Label3: TLabel + Left = 216 + Height = 14 + Top = 112 + Width = 133 + Caption = 'Event vs Censored Variable' + ParentColor = False + end + object Label4: TLabel + Left = 217 + Height = 14 + Top = 128 + Width = 122 + Caption = 'Event = 1, Censored = 2' + ParentColor = False + end + object Label5: TLabel + Left = 224 + Height = 14 + Top = 202 + Width = 133 + Caption = 'Group Variable (if 2 groups)' + ParentColor = False + end + object Label6: TLabel + Left = 217 + Height = 14 + Top = 220 + Width = 153 + Caption = '(Experimental = 1, Control = 2)' + ParentColor = False + end + object VarList: TListBox + Left = 6 + Height = 332 + Top = 23 + Width = 163 + ItemHeight = 0 + TabOrder = 0 + end + object TimeInBtn: TBitBtn + Left = 176 + Height = 27 + Top = 23 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = TimeInBtnClick + TabOrder = 1 + end + object TimeOutBtn: TBitBtn + Left = 177 + Height = 27 + Top = 56 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = TimeOutBtnClick + TabOrder = 2 + end + object EventInBtn: TBitBtn + Left = 177 + Height = 27 + Top = 112 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = EventInBtnClick + TabOrder = 3 + end + object EventOutBtn: TBitBtn + Left = 177 + Height = 27 + Top = 144 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = EventOutBtnClick + TabOrder = 4 + end + object GroupInBtn: TBitBtn + Left = 177 + Height = 27 + Top = 200 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = GroupInBtnClick + TabOrder = 5 + end + object GroupOutBtn: TBitBtn + Left = 177 + Height = 27 + Top = 232 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = GroupOutBtnClick + TabOrder = 6 + end + object TimeEdit: TEdit + Left = 216 + Height = 21 + Top = 41 + Width = 143 + TabOrder = 7 + Text = 'TimeEdit' + end + object EventEdit: TEdit + Left = 217 + Height = 21 + Top = 144 + Width = 143 + TabOrder = 8 + Text = 'TimeEdit' + end + object GroupEdit: TEdit + Left = 217 + Height = 21 + Top = 238 + Width = 143 + TabOrder = 9 + Text = 'TimeEdit' + end + object GroupBox1: TGroupBox + Left = 175 + Height = 83 + Top = 273 + Width = 185 + Caption = 'Options:' + ClientHeight = 65 + ClientWidth = 181 + TabOrder = 10 + object PlotChk: TCheckBox + Left = 7 + Height = 17 + Top = 6 + Width = 172 + Caption = 'Graph Survival Probabilities (%)' + TabOrder = 0 + end + object PrintChk: TCheckBox + Left = 7 + Height = 17 + Top = 34 + Width = 144 + Caption = 'Print Computation Results' + TabOrder = 1 + end + end + object ResetBtn: TButton + Left = 392 + Height = 32 + Top = 72 + Width = 83 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 11 + end + object CancelBtn: TButton + Left = 392 + Height = 32 + Top = 128 + Width = 83 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 12 + end + object ComputeBtn: TButton + Left = 392 + Height = 32 + Top = 184 + Width = 83 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 13 + end + object ReturnBtn: TButton + Left = 392 + Height = 32 + Top = 240 + Width = 83 + Caption = 'Return' + ModalResult = 1 + TabOrder = 14 + end + object HelpBtn: TButton + Tag = 127 + Left = 392 + Height = 33 + Top = 16 + Width = 86 + Caption = 'Help' + OnClick = HelpBtnClick + TabOrder = 15 + end +end diff --git a/applications/lazstats/source_orig/kaplanmeierunit.lrs b/applications/lazstats/source_orig/kaplanmeierunit.lrs new file mode 100644 index 000000000..5351e5582 --- /dev/null +++ b/applications/lazstats/source_orig/kaplanmeierunit.lrs @@ -0,0 +1,352 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TKaplanMeierFrm','FORMDATA',[ + 'TPF0'#15'TKaplanMeierFrm'#14'KaplanMeierFrm'#4'Left'#3'2'#1#6'Height'#3'n'#1 + +#3'Top'#3#147#0#5'Width'#3#237#1#7'Caption'#6#30'Kaplan-Meier Survival Analy' + +'sis'#12'ClientHeight'#3'n'#1#11'ClientWidth'#3#237#1#6'OnShow'#7#8'FormShow' + +#10'LCLVersion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2 + +#14#3'Top'#2#7#5'Width'#2'Z'#7'Caption'#6#19'Available Variables'#11'ParentC' + +'olor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#217#0#6'Height'#2#14#3'Top'#2#24#5 + +'Width'#2'@'#7'Caption'#6#13'Time Variable'#11'ParentColor'#8#0#0#6'TLabel'#6 + +'Label3'#4'Left'#3#216#0#6'Height'#2#14#3'Top'#2'p'#5'Width'#3#133#0#7'Capti' + +'on'#6#26'Event vs Censored Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Labe' + +'l4'#4'Left'#3#217#0#6'Height'#2#14#3'Top'#3#128#0#5'Width'#2'z'#7'Caption'#6 + +#23'Event = 1, Censored = 2'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Lef' + +'t'#3#224#0#6'Height'#2#14#3'Top'#3#202#0#5'Width'#3#133#0#7'Caption'#6#28'G' + +'roup Variable (if 2 groups)'#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Le' + +'ft'#3#217#0#6'Height'#2#14#3'Top'#3#220#0#5'Width'#3#153#0#7'Caption'#6#31 + +'(Experimental = 1, Control = 2)'#11'ParentColor'#8#0#0#8'TListBox'#7'VarLis' + +'t'#4'Left'#2#6#6'Height'#3'L'#1#3'Top'#2#23#5'Width'#3#163#0#10'ItemHeight' + +#2#0#8'TabOrder'#2#0#0#0#7'TBitBtn'#9'TimeInBtn'#4'Left'#3#176#0#6'Height'#2 + +#27#3'Top'#2#23#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0 + +#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0 + +#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V' + +#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y' + +#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0 + +'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157 + +#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195 + +#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0 + +#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255 + +#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144 + +#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201 + +#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190 + +'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255 + +'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#9'NumGlyphs'#2#0#7'OnClick'#7#14'TimeInBtnClick'#8'TabOrder'#2#1#0#0#7'TBit' + +'Btn'#10'TimeOutBtn'#4'Left'#3#177#0#6'Height'#2#27#3'Top'#2'8'#5'Width'#2' ' + +#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16 + +#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8' + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255 + +'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%' + +'i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200 + +#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139 + +#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v' + +#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201 + +#127#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159 + +#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197 + +#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X' + +#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B' + +#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#15 + +'TimeOutBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#10'EventInBtn'#4'Left'#3#177 + +#0#6'Height'#2#27#3'Top'#2'p'#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0 + +#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0 + +#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\' + +#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?' + +#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0 + +#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255 + +#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137 + +#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255 + +#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158 + +#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255 + +#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255 + +'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q' + +#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G' + +#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#15'EventInBtnClick'#8'TabOrder' + +#2#3#0#0#7'TBitBtn'#11'EventOutBtn'#4'Left'#3#177#0#6'Height'#2#27#3'Top'#3 + +#144#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0 + +'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0 + +#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G' + +#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161 + +'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131 + +#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/' + +'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e' + +#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255 + +#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132 + +#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255 + +#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154 + +#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255 + +#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255 + +#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201 + +#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O' + +#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num' + +'Glyphs'#2#0#7'OnClick'#7#16'EventOutBtnClick'#8'TabOrder'#2#4#0#0#7'TBitBtn' + +#10'GroupInBtn'#4'Left'#3#177#0#6'Height'#2#27#3'Top'#3#200#0#5'Width'#2' ' + +#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16 + +#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$' + +#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']' + +#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I' + +#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!' + +'c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169 + +#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203 + +#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190 + +'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165 + +#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255 + +#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135 + +#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199 + +'t'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255 + +'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157 + +'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#15 + +'GroupInBtnClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'#11'GroupOutBtn'#4'Left'#3 + +#177#0#6'Height'#2#27#3'Top'#3#232#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0 + +'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0 + +#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h' + +#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255 + +';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255 + +#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152 + +#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255 + +#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!' + +'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216 + +#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142 + +#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255 + +'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255 + +'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5' + +#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199 + +'t'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#16'GroupOutBtnClick'#8'Ta' + +'bOrder'#2#6#0#0#5'TEdit'#8'TimeEdit'#4'Left'#3#216#0#6'Height'#2#21#3'Top'#2 + +')'#5'Width'#3#143#0#8'TabOrder'#2#7#4'Text'#6#8'TimeEdit'#0#0#5'TEdit'#9'Ev' + +'entEdit'#4'Left'#3#217#0#6'Height'#2#21#3'Top'#3#144#0#5'Width'#3#143#0#8'T' + +'abOrder'#2#8#4'Text'#6#8'TimeEdit'#0#0#5'TEdit'#9'GroupEdit'#4'Left'#3#217#0 + +#6'Height'#2#21#3'Top'#3#238#0#5'Width'#3#143#0#8'TabOrder'#2#9#4'Text'#6#8 + +'TimeEdit'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3#175#0#6'Height'#2'S'#3'To' + +'p'#3#17#1#5'Width'#3#185#0#7'Caption'#6#8'Options:'#12'ClientHeight'#2'A'#11 + +'ClientWidth'#3#181#0#8'TabOrder'#2#10#0#9'TCheckBox'#7'PlotChk'#4'Left'#2#7 + +#6'Height'#2#17#3'Top'#2#6#5'Width'#3#172#0#7'Caption'#6' Graph Survival Pro' + +'babilities (%)'#8'TabOrder'#2#0#0#0#9'TCheckBox'#8'PrintChk'#4'Left'#2#7#6 + +'Height'#2#17#3'Top'#2'"'#5'Width'#3#144#0#7'Caption'#6#25'Print Computation' + +' Results'#8'TabOrder'#2#1#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#136#1#6'He' + +'ight'#2' '#3'Top'#2'H'#5'Width'#2'S'#7'Caption'#6#5'Reset'#7'OnClick'#7#13 + +'ResetBtnClick'#8'TabOrder'#2#11#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#136#1 + +#6'Height'#2' '#3'Top'#3#128#0#5'Width'#2'S'#7'Caption'#6#6'Cancel'#11'Modal' + +'Result'#2#2#8'TabOrder'#2#12#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#136#1#6 + +'Height'#2' '#3'Top'#3#184#0#5'Width'#2'S'#7'Caption'#6#7'Compute'#7'OnClick' + +#7#15'ComputeBtnClick'#8'TabOrder'#2#13#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3 + +#136#1#6'Height'#2' '#3'Top'#3#240#0#5'Width'#2'S'#7'Caption'#6#6'Return'#11 + +'ModalResult'#2#1#8'TabOrder'#2#14#0#0#7'TButton'#7'HelpBtn'#3'Tag'#2#127#4 + +'Left'#3#136#1#6'Height'#2'!'#3'Top'#2#16#5'Width'#2'V'#7'Caption'#6#4'Help' + +#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#15#0#0#0 +]); diff --git a/applications/lazstats/source_orig/kaplanmeierunit.pas b/applications/lazstats/source_orig/kaplanmeierunit.pas new file mode 100644 index 000000000..4276c8a05 --- /dev/null +++ b/applications/lazstats/source_orig/kaplanmeierunit.pas @@ -0,0 +1,1069 @@ +unit KaplanMeierUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, MainUnit, Globals, functionsLib, OutPutUnit, DataProcs, + DictionaryUnit, Math, Clipbrd, contexthelpunit; + +type + + { TKaplanMeierFrm } + + TKaplanMeierFrm = class(TForm) + HelpBtn: TButton; + ResetBtn: TButton; + CancelBtn: TButton; + ComputeBtn: TButton; + ReturnBtn: TButton; + PlotChk: TCheckBox; + PrintChk: TCheckBox; + GroupBox1: TGroupBox; + TimeInBtn: TBitBtn; + TimeOutBtn: TBitBtn; + EventInBtn: TBitBtn; + EventOutBtn: TBitBtn; + GroupInBtn: TBitBtn; + GroupOutBtn: TBitBtn; + TimeEdit: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + Label5: TLabel; + Label6: TLabel; + EventEdit: TEdit; + GroupEdit: TEdit; + VarList: TListBox; + procedure ComputeBtnClick(Sender: TObject); + procedure EventInBtnClick(Sender: TObject); + procedure EventOutBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure GroupInBtnClick(Sender: TObject); + procedure GroupOutBtnClick(Sender: TObject); + procedure HelpBtnClick(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + procedure TimeInBtnClick(Sender: TObject); + procedure TimeOutBtnClick(Sender: TObject); + private + { private declarations } + procedure plotxy(var Xpoints : IntDyneVec; + var Ypoints : DblDyneVec; + var Dropped : IntDyneVec; + var Dropped2 : IntDyneVec; + Xmax, Xmin, Ymax, Ymin : double; + N : integer; + XEdit : string; + YEdit : string; + curveno : integer); + public + { public declarations } + end; + +var + KaplanMeierFrm: TKaplanMeierFrm; + +implementation +uses BlankFrmUnit; + +{ TKaplanMeierFrm } + +procedure TKaplanMeierFrm.ResetBtnClick(Sender: TObject); +VAR i : integer; +begin + VarList.Clear; + for i := 1 to NoVariables do + VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); + TimeEdit.Text := ''; + EventEdit.Text := ''; + GroupEdit.Text := ''; + PlotChk.Checked := false; + PrintChk.Checked := false; + TimeInBtn.Visible := true; + EventInBtn.Visible := true; + GroupInBtn.Visible := true; + TimeOutBtn.Visible := false; + EventOutBtn.Visible := false; + GroupOutBtn.Visible := false; +end; + +procedure TKaplanMeierFrm.TimeInBtnClick(Sender: TObject); +VAR i : integer; +begin + i := VarList.ItemIndex; + TimeEdit.Text := VarList.Items.Strings[i]; + VarList.Items.Delete(i); + TimeInBtn.Visible := false; + TimeOutBtn.Visible := true; +end; + +procedure TKaplanMeierFrm.TimeOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(TimeEdit.Text); + TimeEdit.Text := ''; + TimeInBtn.Visible := true; + TimeOutBtn.Visible := false; +end; + +procedure TKaplanMeierFrm.FormShow(Sender: TObject); +begin + ResetBtnClick(self); +end; + +procedure TKaplanMeierFrm.GroupInBtnClick(Sender: TObject); +VAR i : integer; +begin + i := VarList.ItemIndex; + GroupEdit.Text := VarList.Items.Strings[i]; + VarList.Items.Delete(i); + GroupInBtn.Visible := false; + GroupOutBtn.Visible := true; +end; + +procedure TKaplanMeierFrm.GroupOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(GroupEdit.Text); + GroupEdit.Text := ''; + GroupInBtn.Visible := true; + GroupOutBtn.Visible := false; +end; + +procedure TKaplanMeierFrm.HelpBtnClick(Sender: TObject); +begin + ContextHelpForm.HelpMessage((Sender as TButton).tag); +end; + +procedure TKaplanMeierFrm.EventInBtnClick(Sender: TObject); +VAR i : integer; +begin + i := VarList.ItemIndex; + EventEdit.Text := VarList.Items.Strings[i]; + VarList.Items.Delete(i); + EventInBtn.Visible := false; + EventOutBtn.Visible := true; +end; + +procedure TKaplanMeierFrm.ComputeBtnClick(Sender: TObject); +var + outline, astring : string; + PrintIt, Graph1, TwoGroups : boolean; + Size1, Size2, TotalSize, NoDeaths, ThisTime, FoundIn, GraphType : integer; + mintime, maxtime, tempint, nopoints, noprobs, tempvalue : integer; + NoCensored, nocats, i, j, k, icase, oldtime, pos, first, last : integer; + noinexp, noincntrl, count, TimeCol, DeathsCol, CensoredCol : integer; + GroupCol : integer; + minprob, maxprob, cumprop, proportion, term1, term2, term3 : double; + E1, E2, O1, O2, Chisquare, ProbChi, Risk, LogRisk, SELogRisk : double; + HiConf, LowConf, HiLogLevel, LowLogLevel, lastexp, lastctr : double; + TimePlot, Dropped, Dropped2, Time, AtRisk, Dead, SurvivalTimes : IntDyneVec; + ExpCnt, CntrlCnt, TotalatRisk, ExpatRisk, CntrlatRisk : IntDyneVec; + Deaths, Group, Censored : IntDyneVec; + ProbPlot, ProbPlot2, CondProb, ExpProp, CntrlProp : DblDyneVec; + CumPropExp, CumPropCntrl : DblDyneVec; + TimeLabel, GroupLabel, DeathsLabel : string; +begin + PrintIt := false; + // get options + if (PlotChk.Checked = true) then Graph1 := true + else Graph1 := false; + if (PrintChk.Checked) then PrintIt := true else PrintIt := false; + + // get variable columns and labels + TimeLabel := TimeEdit.Text; + GroupLabel := GroupEdit.Text; + DeathsLabel := EventEdit.Text; + TimeCol := 0; + DeathsCol := 0; + CensoredCol := 0; + GroupCol := 0; + for i := 1 to NoVariables do + begin + if (TimeLabel = OS3MainFrm.DataGrid.Cells[i,0]) then TimeCol := i; + if (DeathsLabel = OS3MainFrm.DataGrid.Cells[i,0]) then DeathsCol := i; + if (GroupLabel = OS3MainFrm.DataGrid.Cells[i,0]) then GroupCol := i; + end; + if ((TimeCol = 0) or (DeathsCol = 0)) then + begin + ShowMessage('ERROR! One or more variables not selected.'); + exit; + end; + if (GroupEdit.Text = '') then + begin + TwoGroups := false; + Size1 := NoCases; + Size2 := 0; + end + else + begin + Size1 := 0; + Size2 := 0; + TwoGroups := true; + for i := 1 to NoCases do + begin + if (StrToInt(OS3MainFrm.DataGrid.Cells[GroupCol,i]) = 1) then + Size1 := Size1 + 1 + else Size2 := Size2 + 1; + end; + end; + + // allocate space for the data + SetLength(SurvivalTimes,NoCases+2); + SetLength(ExpCnt,NoCases+2); + SetLength(CntrlCnt,NoCases+2); + SetLength(TotalatRisk,NoCases+2); + SetLength(ExpatRisk,NoCases+2); + SetLength(CntrlatRisk,NoCases+2); + SetLength(ExpProp,NoCases+2); + SetLength(CntrlProp,NoCases+2); + SetLength(Deaths,NoCases+2); + SetLength(Group,NoCases+2); + SetLength(Censored,NoCases+2); + SetLength(CumPropExp,NoCases+2); + SetLength(CumPropCntrl,NoCases+2); + + // initialize arrays + for i := 0 to NoCases+1 do + begin + SurvivalTimes[i] := 0; + ExpCnt[i] := 0; + CntrlCnt[i] := 0; + TotalatRisk[i] := 0; + ExpatRisk[i] := 0; + CntrlatRisk[i] := 0; + ExpProp[i] := 0.0; + CntrlProp[i] := 0.0; + Deaths[i] := 0; + Group[i] := 0; + Censored[i] := 0; + CumPropExp[i] := 0.0; + CumPropCntrl[i] := 0.0; + end; + mintime := 0; + maxtime := 0; + + // Get Data + if (not TwoGroups) then + begin + for i := 1 to NoCases do + begin + SurvivalTimes[i] := StrToInt(OS3MainFrm.DataGrid.Cells[TimeCol,i]); + if (SurvivalTimes[i] > maxtime) then maxtime := SurvivalTimes[i]; + tempvalue := StrToInt(OS3MainFrm.DataGrid.Cells[DeathsCol,i]); + if (tempvalue = 1) then Deaths[i] := 1 else Deaths[i] := 0; + if (tempvalue = 2) then Censored[i] := 1 else Censored[i] := 0; + end; + + // sort cases by time + for i := 0 to NoCases - 1 do + begin + for j := i + 1 to NoCases do + begin + if (SurvivalTimes[i] > SurvivalTimes[j]) then + begin + tempint := SurvivalTimes[i]; + SurvivalTimes[i] := SurvivalTimes[j]; + SurvivalTimes[j] := tempint; + tempint := Censored[i]; + Censored[i] := Censored[j]; + Censored[j] := tempint; + tempint := Deaths[i]; + Deaths[i] := Deaths[j]; + Deaths[j] := tempint; + end; + end; + end; + + // get number censored in each time slot + nopoints := maxtime + 1; + SetLength(Dropped,nopoints+2); + SetLength(Dropped2,nopoints+2); + for j := 0 to nopoints do + begin + Dropped[j] := 0; + Dropped2[j] := 0; + end; + ThisTime := SurvivalTimes[0]; + for i := 0 to NoCases do + begin + if (ThisTime = SurvivalTimes[i]) then + begin + if(Censored[i] > 0) then + begin + tempint := SurvivalTimes[i] - mintime; + Dropped[tempint] := Dropped[tempint] + Censored[i]; + end; + end + else // new time + begin + ThisTime := SurvivalTimes[i]; + if(Censored[i] > 0) then + begin + tempint := SurvivalTimes[i] - mintime; + Dropped[tempint] := Dropped[tempint] + Censored[i]; + end; + end; + end; + + // calculate expected proportions and adjust survival counts + cumprop := 1.0; + ExpCnt[0] := NoCases; + ExpProp[0] := 1.0; + CumPropExp[0] := 1.0; + + // collapse deaths and censored into first time occurance + icase := 0; + oldtime := SurvivalTimes[0]; + for i := 1 to NoCases do + begin + if (SurvivalTimes[i] <> oldtime) then + begin + oldtime := SurvivalTimes[i]; + icase := i; + end; + + // find no. of deaths at this time + NoDeaths := Deaths[i]; + for j := i+1 to NoCases do + begin + ThisTime := SurvivalTimes[j]; + if ((Deaths[j] > 0) and (oldtime = ThisTime)) then + begin + NoDeaths := NoDeaths + Deaths[j]; + Deaths[icase] := Deaths[icase] + Deaths[j]; + Deaths[j] := 0; + end; + end; + // find no. of censored at this time + NoCensored := Censored[i]; + for j := i+1 to NoCases do + begin + ThisTime := SurvivalTimes[j]; + if((Censored[j] > 0) and (oldtime = ThisTime)) then + begin + NoCensored := NoCensored + Censored[j]; + Censored[icase] := Censored[icase] + Censored[j]; + Censored[j] := 0; + end; + end; + end; +{ + // debug check + FrmOutPut.RichOutPut.Clear(); + for (int i := 0; i <= NoCases; i++) + begin + sprintf(outline,'case %d Day %d Deaths %d Censored %d', + i,SurvivalTimes[i], Deaths[i],Censored[i]); + FrmOutPut.RichOutPut.Lines.Add(outline); + end; + FrmOutPut.ShowModal(); +} + // get no. of categories + for i := 0 to NoCases do + if ((Deaths[i] > 0) or (Censored[i] > 0)) then nocats := nocats + 1; + SetLength(Time,nocats+2); + SetLength(AtRisk,nocats+2); + SetLength(Dead,nocats+2); + SetLength(CondProb,nocats+2); + for i := 0 to nocats do + begin + Time[i] := 0; + AtRisk[i] := 0; + Dead[i] := 0; + CondProb[i] := 0.0; + end; + pos := 0; + for i := 0 to NoCases do + begin + if ((Deaths[i] > 0) or (Censored[i] > 0)) then + begin + pos := pos + 1; + Time[pos] := SurvivalTimes[i]; + Dead[pos] := Deaths[i]; + Dropped[pos] := Censored[i]; + end; + end; + Time[0] := 0; + AtRisk[0] := NoCases; + Dead[0] := 0; + Dropped[0] := 0; + CondProb[0] := 0.0; + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(' Time Censored Dead At Risk Probability'); + for i := 1 to nocats do + begin + AtRisk[i] := AtRisk[i-1] - Dead[i-1] - Dropped[i-1]; + CondProb[i-1] := 1.0 - Dead[i-1] / AtRisk[i-1]; + end; + for i := 0 to nocats do + begin + outline := format(' %3d %3d %3d %3d %6.3f', + [Time[i],Dropped[i],Dead[i],AtRisk[i],CondProb[i]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.ShowModal; + + // Get cumulative proportions + for i := 0 to nocats do + begin + if (AtRisk[i] > 0) then + begin + CumPropExp[i] := cumprop * CondProb[i]; + cumprop := CumPropExp[i]; + end; + end; + cumprop := 1.0; + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Kaplan-Meier Survival Test'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('No Control Group Method'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('TIME NO.ALIVE CENSORED DEATHS COND. PROB. CUM.PROP.SURVIVING'); + for i := 0 to nocats do + begin + outline := format(' %4d %4d %4d %4d %7.4f %7.4f', + [Time[i], + AtRisk[i],Dropped[i],Deaths[i],CondProb[i],CumPropExp[i]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.ShowModal; + if (Graph1) then // plot Y := cumulative proportion surviving, x := time + begin + // Get points to plot + nopoints := maxtime + 1; + SetLength(TimePlot,nocats+2); + SetLength(ProbPlot,nocats+2); + ProbPlot[0] := 1.0; + for j := 0 to nocats do + begin + TimePlot[j] := Time[j]; + ProbPlot[j] := CumPropExp[j]; + end; + BlankFrm.Show; + plotxy(TimePlot, ProbPlot, Dropped, Dropped2, + maxtime,0,1.0, 0.0, nocats,'TIME','PROBABILITY',1); + end; // end if graph1 + ProbPlot := nil; + TimePlot := nil; + CondProb := nil; + Dead := nil; + AtRisk := nil; + Time := nil; + end // end if not two groups +//============================================================================// + else // Experimental and control groups + begin + // obtain no. in experimental and control groups + ExpCnt[0] := Size1; + CntrlCnt[0] := Size2; + TotalSize := Size1 + Size2; + CumPropExp[0] := 1.0; + CumPropCntrl[0] := 1.0; + TotalatRisk[0] := TotalSize; + O1 := 0; + O2 := 0; + outline := format('Total Group 1 := %d, Total Group 2 := %d, Grand Total := %d', + [ExpCnt[0], CntrlCnt[0], TotalSize]); + ShowMessage(outline); + + // Now read values. Note storage starts in 1, not 0! + for i := 1 to NoCases do + begin + SurvivalTimes[i] := StrToInt(OS3MainFrm.DataGrid.Cells[TimeCol,i]); + if (SurvivalTimes[i] > maxtime) then maxtime := SurvivalTimes[i]; + tempvalue := StrToInt(OS3MainFrm.DataGrid.Cells[DeathsCol,i]); + if (tempvalue = 1) then Deaths[i] := 1 else Deaths[i] := 0; + if (tempvalue = 2) then Censored[i] := 1 else Censored[i] := 0; + Group[i] := StrToInt(OS3MainFrm.DataGrid.Cells[GroupCol,i]); + end; + + // sort cases by time + for i := 1 to NoCases - 1 do + begin + for j := i + 1 to NoCases do + begin + if (SurvivalTimes[i] > SurvivalTimes[j]) then + begin + tempint := SurvivalTimes[i]; + SurvivalTimes[i] := SurvivalTimes[j]; + SurvivalTimes[j] := tempint; + tempint := Censored[i]; + Censored[i] := Censored[j]; + Censored[j] := tempint; + tempint := Deaths[i]; + Deaths[i] := Deaths[j]; + Deaths[j] := tempint; + tempint := Group[i]; + Group[i] := Group[j]; + Group[j] := tempint; + end; + end; + end; + + // sort cases within each time slot by deaths first then censored + ThisTime := SurvivalTimes[1]; + first := 1; + last := 1; + for i := 1 to NoCases do + begin + if (ThisTime = SurvivalTimes[i]) then + begin + last := i; + continue; + end + else // sort the cases from first to last on event (descending) + begin + if (last > first) then // more than 1 to sort + begin + for j := first to last - 1 do + begin + for k := j + 1 to last do + begin + if (Deaths[j] < Deaths[k] ) then // swap + begin + tempint := Censored[j]; + Censored[j] := Censored[k]; + Censored[k] := tempint; + tempint := Deaths[j]; + Deaths[j] := Deaths[k]; + Deaths[k] := tempint; + tempint := Group[j]; + Group[j] := Group[k]; + Group[k] := tempint; + end; + end; // next k + end; // next j + end; // if last > first + end; // end else sort + first := last + 1; + ThisTime := SurvivalTimes[first]; + last := first; + end; // next i + + // get number censored in each time slot + nopoints := maxtime + 1; + SetLength(Dropped,nopoints+2); + SetLength(Dropped2,nopoints+2); + for j := 0 to nopoints do + begin + Dropped[j] := 0; + Dropped2[j] := 0; + end; + ThisTime := SurvivalTimes[1]; + for i := 1 to NoCases do + begin + if (ThisTime = SurvivalTimes[i]) then + begin + if(Censored[i] > 0) then + begin + tempint := SurvivalTimes[i] - mintime; + if (Group[i] = 1) then + Dropped[tempint] := Dropped[tempint] + Censored[i] + else Dropped2[tempint] := Dropped2[tempint] + Censored[i]; + end; + end + else // new time + begin + ThisTime := SurvivalTimes[i]; + if(Censored[i] > 0) then + begin + tempint := SurvivalTimes[i] - mintime; + if (Group[i] = 1) then + Dropped[tempint] := Dropped[tempint] + Censored[i] + else Dropped2[tempint] := Dropped2[tempint] + Censored[i]; + end; + end; + end; + + for i := 0 to NoCases do + begin + noinexp := 0; + noincntrl := 0; + if (Deaths[i] > 0) then + begin + // find no. of deaths at this time + NoDeaths := Deaths[i]; + ThisTime := SurvivalTimes[i]; + for j := i+1 to NoCases do + begin + if ((Deaths[j] > 0) and (SurvivalTimes[j] = ThisTime)) then + begin + NoDeaths := NoDeaths + Deaths[j]; + Deaths[i] := Deaths[i] + Deaths[j]; + Deaths[j] := 0; + end; + end; + if (TotalatRisk[i] > 0) then + begin + term1 := ExpCnt[i]; + term2 := TotalatRisk[i]; + term3 := NoDeaths; + ExpatRisk[i] := ceil((term1 / term2) * term3); +// ExpatRisk[i] := (ExpCnt[i]) / TotalatRisk[i]) * NoDeaths; + term1 := CntrlCnt[i]; + CntrlatRisk[i] := ceil((term1 / term2) * term3); +// CntrlatRisk[i] := (CntrlCnt[i] / TotalatRisk[i]) * NoDeaths; + end; + if (i < NoCases-1) then TotalatRisk[i+1] := TotalatRisk[i] - Deaths[i]; + // find no. in exp. or control groups and decrement their counts + for j := 1 to NoCases do + begin + if ( (ThisTime = SurvivalTimes[j]) and (Censored[j] = 0)) then + begin + if (Group[j] = 1) then + begin + noinexp := noinexp + 1; + O1 := O1 + 1; + end; + if (Group[j] = 2) then + begin + noincntrl := noincntrl + 1; + O2 := O2 + 1; + end; + end; + end; + if ( (i < NoCases) and (noinexp > 0) ) then + begin + term1 := ExpCnt[i]; + term2 := noinexp; + term3 := ExpCnt[i]; + ExpProp[i] := (term1 - term2) / term3; +// ExpProp[i] := (ExpCnt[i] - noinexp) / ExpCnt[i]; + if (i > 0) then CumPropExp[i] := CumPropExp[i-1] * ExpProp[i]; + ExpCnt[i+1] := ExpCnt[i] - noinexp; + CumPropExp[i+1] := CumPropExp[i]; + end; + if ( (i < NoCases) and (noinexp = 0) ) then + begin + ExpCnt[i+1] := ExpCnt[i]; + CumPropExp[i+1] := CumPropExp[i]; + end; + if ( (i < NoCases) and (noincntrl > 0) ) then + begin + term1 := CntrlCnt[i]; + term2 := noincntrl; + term3 := CntrlCnt[i]; + CntrlProp[i] := (term1 - term2) / term3; +// CntrlProp[i] := (CntrlCnt[i] - noincntrl) / CntrlCnt[i]; + if (i > 0) then CumPropCntrl[i] := CumPropCntrl[i-1] * CntrlProp[i]; + CntrlCnt[i+1] := CntrlCnt[i] - noincntrl; + CumPropCntrl[i+1] := CumPropCntrl[i]; + end; + if ( (i < NoCases) and (noincntrl = 0) ) then + begin + CntrlCnt[i+1] := CntrlCnt[i]; + CumPropCntrl[i+1] := CumPropCntrl[i]; + end; + end; // end if deaths[i] > 0 + + if ( (Censored[i] > 0) and (i < NoCases) ) then + begin + if (Group[i] = 1) then + begin + ExpCnt[i+1] := ExpCnt[i] - 1; + CntrlCnt[i+1] := CntrlCnt[i]; + ExpProp[i+1] := ExpProp[i]; + CumPropExp[i+1] := CumPropExp[i]; + CumPropCntrl[i+1] := CumPropCntrl[i]; + end; + if (Group[i] = 2) then + begin + CntrlCnt[i+1] := CntrlCnt[i] - 1; + ExpCnt[i+1] := ExpCnt[i]; + CntrlProp[i+1] := CntrlProp[i]; + CumPropCntrl[i+1] := CumPropCntrl[i]; + CumPropExp[i+1] := CumPropExp[i]; + end; + TotalatRisk[i+1] := TotalatRisk[i] - 1; + end; + if ( (Deaths[i] = 0) and (Censored[i] = 0) and (i < NoCases) ) then + begin + ExpCnt[i+1] := ExpCnt[i]; + CntrlCnt[i+1] := CntrlCnt[i]; + CumPropExp[i+1] := CumPropExp[i]; + CumPropCntrl[i+1] := CumPropCntrl[i]; + TotalatRisk[i+1] := TotalatRisk[i]; + end; + end; // next case i + + // Now calculate chisquare, relative risk (r), logr, and S.E. of log risk + E1 := 0.0; + for i := 0 to NoCases do E1 := E1 + ExpatRisk[i]; + E2 := (O1 + O2) - E1; + Chisquare := ((O1 - E1) * (O1 - E1)) / E1 + ((O2 - E2) * (O2 - E2)) / E2; + ProbChi := chisquaredprob(Chisquare,1); + Risk := (O1 / E1) / (O2 / E2); + LogRisk := ln(Risk); + SELogRisk := sqrt(1.0/E1 + 1.0/E2); + HiConf := LogRisk + (inversez(0.975) * SELogRisk); + LowConf := LogRisk - (inversez(0.975) * SELogRisk); + HiLogLevel := exp(HiConf); + LowLogLevel := exp(LowConf); + end; + + // Print Results + if (TwoGroups and PrintIt) then // both experimental and control groups + begin + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Kaplan-Meier Survival Test'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Comparison of Two Groups Methd'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('TIME GROUP CENSORED TOTAL AT EVENTS AT RISK IN EXPECTED NO. AT RISK IN EXPECTED NO.'); + OutPutFrm.RichEdit.Lines.Add(' RISK GROUP 1 EVENTS IN 1 GROUP 2 EVENTS IN 2'); + for i := 1 to NoCases+1 do + begin + outline := format('%4d %4d %4d %4d %4d %4d %7d %4d %7d', + [SurvivalTimes[i-1],Group[i-1],Censored[i-1],TotalatRisk[i-1], + Deaths[i-1],ExpCnt[i-1],ExpatRisk[i-1],CntrlCnt[i-1],CntrlatRisk[i-1]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('TIME DEATHS GROUP AT RISK PROPORTION CUMULATIVE'); + OutPutFrm.RichEdit.Lines.Add(' SURVIVING PROP.SURVIVING'); + + for i := 1 to NoCases do + begin + if (Group[i] = 1) then + begin + count := ExpCnt[i]; + proportion := ExpProp[i]; + cumprop := CumPropExp[i]; + end + else + begin + count := CntrlCnt[i]; + proportion := CntrlProp[i]; + cumprop := CumPropCntrl[i]; + end; + outline := format('%4d %4d %4d %4d %7.4f %7.4f', + [SurvivalTimes[i],Deaths[i],Group[i],count,proportion,cumprop]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.RichEdit.Lines.Add(''); + outline := format('Total Expected Events for Experimental Group := %8.3f',[E1]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('Observed Events for Experimental Group := %8.3f',[O1]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('Total Expected Events for Control Group := %8.3f',[E2]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('Observed Events for Control Group := %8.3f',[O2]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('Chisquare = %8.3f with probability = %5.3f',[Chisquare,ProbChi]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('Risk := %8.3f, Log Risk := %8.3f, Std.Err. Log Risk := %8.3f', + [Risk, LogRisk, SELogRisk]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('95 Percent Confidence interval for Log Risk = (%5.3f,%5.3f)', + [LowConf,HiConf]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('95 Percent Confidence interval for Risk := (%5.3f,%5.3f)', + [LowLogLevel,HiLogLevel]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.ShowModal; + + // Plot data output + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('EXPERIMENTAL GROUP CUMULATIVE PROBABILITY'); + OutPutFrm.RichEdit.Lines.Add('CASE TIME DEATHS CENSORED CUM.PROB.'); + for i := 1 to NoCases do + begin + if (Group[i] = 1) then + begin + outline := format('%3d %3d %3d %3d %5.3f',[i, + SurvivalTimes[i], Deaths[i], Censored[i], CumPropExp[i]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + end; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('CONTROL GROUP CUMULATIVE PROBABILITY'); + OutPutFrm.RichEdit.Lines.Add('CASE TIME DEATHS CENSORED CUM.PROB.'); + for i := 1 to NoCases do + begin + if (Group[i] = 2) then + begin + outline := format('%3d %3d %3d %3d %5.3f',[i, + SurvivalTimes[i], Deaths[i], Censored[i], CumPropCntrl[i]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + end; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.ShowModal; + end; // if 2 groups and printit + + if (Graph1) then // plot cumulative proportion surviving (Y) against time (X) + begin + nopoints := maxtime + 1; + SetLength(TimePlot,nopoints+2); + SetLength(ProbPlot,nopoints+2); + SetLength(ProbPlot2,nopoints+2); + ProbPlot[0] := 1.0; + ProbPlot2[0] := 1.0; + lastexp := 1.0; + lastctr := 1.0; + for i := 0 to nopoints do + begin + TimePlot[i] := 0; + ProbPlot[i] := 1.0; + ProbPlot2[i] := 1.0; + end; + TimePlot[0] := 0; + mintime := 0; + for i := 1 to nopoints do + begin + TimePlot[i] := i; + for j := 1 to NoCases do + begin + if (SurvivalTimes[j] = i) then + begin + if (Group[j] = 1) then + begin + ProbPlot[i] := CumPropExp[j]; // ExpProp[j]; + lastexp := CumPropExp[j]; // ExpProp[j]; + end; + if (Group[j] = 2) then + begin + ProbPlot2[i] := CumPropCntrl[j]; //CntrlProp[j]; + lastctr := CumPropCntrl[j]; // CntrlProp[j]; + end; + end + else + begin + if (Group[j] = 1) then ProbPlot[i] := lastexp; + if (Group[j] = 2) then ProbPlot2[i] := lastctr; + end; + end; + end; + BlankFrm.Image1.Canvas.Clear; + BlankFrm.Show; + plotxy(TimePlot, ProbPlot, Dropped, Dropped2, + maxtime, 0, 1.0, 0.0, nopoints, 'TIME', 'PROBABILITY',1); + + plotxy(TimePlot, ProbPlot2, Dropped, Dropped2, + maxtime, 0, 1.0, 0.0, nopoints, 'TIME', 'PROBABILITY',2); + + ProbPlot2 := nil; + ProbPlot := nil; + TimePlot := nil; + end; // if graph plot := 1 + Dropped2 := nil; + Dropped := nil; + + // clean up memory + Dropped2 := nil; + Dropped := nil; + CumPropCntrl := nil; + CumPropExp := nil; + Censored := nil; + Group := nil; + Deaths := nil; + CntrlProp := nil; + ExpProp := nil; + CntrlatRisk := nil; + ExpatRisk := nil; + TotalatRisk := nil; + CntrlCnt := nil; + ExpCnt := nil; + SurvivalTimes := nil; +end; + +procedure TKaplanMeierFrm.EventOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(EventEdit.Text); + EventEdit.Text := ''; + EventInBtn.Visible := true; + EventOutBtn.Visible := false; +end; + +procedure TKaplanMeierFrm.plotxy(var Xpoints: IntDyneVec; + var Ypoints: DblDyneVec; var Dropped: IntDyneVec; var Dropped2: IntDyneVec; + Xmax, Xmin, Ymax, Ymin: double; N: integer; XEdit: string; YEdit: string; + curveno: integer); +var + i, xpos, ypos, hleft, hright, vtop, vbottom, imagewide : integer; + vhi, hwide, offset, strhi, imagehi : integer; + noxvalues, digitwidth, Xvalue, xvalincr, oldxpos : integer; + maxval, minval, valincr, Yvalue, value, oldypos, term1, term2, term3 : double; + Title, outline : string; +label again, second; + +begin + if (curveno = 2) then goto second; + BlankFrm.Image1.Canvas.Font.Color := clBlack; + Title := 'SURVIVAL CURVE'; + BlankFrm.Caption := Title; + imagewide := BlankFrm.Image1.Width; + imagehi := BlankFrm.Image1.Height; + BlankFrm.Image1.Canvas.FloodFill(0,0,clWhite,fsBorder); + vtop := 20; + vbottom := ceil(imagehi) - 130; + vhi := vbottom - vtop; + hleft := 100; + hright := imagewide - 80; + hwide := hright - hleft; + BlankFrm.Image1.Canvas.Pen.Color := clBlack; + BlankFrm.Image1.Canvas.Brush.Color := clWhite; + + // Draw chart border +// ImageFrm.Image.Canvas.Rectangle(0,0,imagewide,imagehi); + + // draw horizontal axis + noxvalues := N; + xvalincr := 1; + digitwidth := BlankFrm.Image1.Canvas.TextWidth('9'); +again: + if ( (noxvalues * 4 * digitwidth) > hwide) then + begin + noxvalues := noxvalues div 2; + xvalincr := 2 * xvalincr; + goto again; + end; + BlankFrm.Image1.Canvas.Pen.Style := psSolid; + BlankFrm.Image1.Canvas.Pen.Color := clBlack; + BlankFrm.Image1.Canvas.MoveTo(hleft,vbottom); + BlankFrm.Image1.Canvas.LineTo(hright,vbottom); + for i := 1 to noxvalues do + begin + ypos := vbottom; + Xvalue := Xpoints[1] + xvalincr * (i - 1); // Xmin + xvalincr * (i - 1); + term1 := (Xvalue - Xmin) / (Xmax - Xmin); + term2 := hwide; + term3 := hleft; + xpos := floor((term1 * term2) + term3); + BlankFrm.Image1.Canvas.MoveTo(xpos,ypos); + ypos := ypos + 10; + BlankFrm.Image1.Canvas.LineTo(xpos,ypos); + outline := format('%d',[Xvalue]); + Title := outline; + offset := BlankFrm.Image1.Canvas.TextWidth(Title) div 2; + xpos := xpos - offset; + BlankFrm.Image1.Canvas.Pen.Color := clBlack; + BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title); + end; + xpos := hleft + (hwide div 2) - (BlankFrm.Image1.Canvas.TextWidth(XEdit) div 2); + ypos := vbottom + 22; + BlankFrm.Image1.Canvas.TextOut(xpos,ypos,XEdit); + + // Draw vertical axis + Title := YEdit; + xpos := hleft - BlankFrm.Image1.Canvas.TextWidth(Title) div 2; + ypos := vtop - BlankFrm.Image1.Canvas.TextHeight(Title); + BlankFrm.Image1.Canvas.TextOut(xpos,ypos,YEdit); + xpos := hleft; + ypos := vtop; + BlankFrm.Image1.Canvas.MoveTo(xpos,ypos); + ypos := vbottom; + BlankFrm.Image1.Canvas.LineTo(xpos,ypos); + valincr := (Ymax - Ymin) / 10.0; + for i := 1 to 11 do + begin + value := Ymax - ((i-1) * valincr); + outline := format('%8.2f',[value]); + Title := outline; + strhi := BlankFrm.Image1.Canvas.TextHeight(Title); + xpos := 10; + Yvalue := Ymax - (valincr * (i-1)); + ypos := ceil(vhi * ( (Ymax - Yvalue) / (Ymax - Ymin))); + ypos := ypos + vtop - strhi div 2; + BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title); + xpos := hleft; + ypos := ypos + strhi div 2; + BlankFrm.Image1.Canvas.MoveTo(xpos,ypos); + xpos := hleft - 10; + BlankFrm.Image1.Canvas.LineTo(xpos,ypos); + end; + + // get xpos and ypos for first point to second point +second: xpos := hleft; + ypos := vtop; + BlankFrm.Image1.Canvas.MoveTo(xpos,ypos); // Probability := 1 at time 0 + if (curveno = 1) then BlankFrm.Image1.Canvas.Pen.Color := clNavy + else BlankFrm.Image1.Canvas.Pen.Color := clRed; + ypos := ceil(vhi * ( (Ymax - Ypoints[0]) / (Ymax - Ymin))); + ypos := ypos + vtop; + xpos := ceil(hwide * ( (Xpoints[1] - Xmin) / (Xmax - Xmin))); + xpos := xpos + hleft; + BlankFrm.Image1.Canvas.LineTo(xpos,ypos); + + // draw points for x and y pairs + oldxpos := xpos; + oldypos := ypos; + for i := 1 to N - 1 do + begin + ypos := ceil(vhi * ( (Ymax - Ypoints[i]) / (Ymax - Ymin))); + ypos := ypos + vtop; + if (ypos <> oldypos) then // draw line down to new ypos using old xpos + begin + if (curveno = 1) then BlankFrm.Image1.Canvas.Pen.Style := psSolid + else BlankFrm.Image1.Canvas.Pen.Style := psDot; + BlankFrm.Image1.Canvas.LineTo(oldxpos,ypos); + end; + xpos := ceil(hwide * ( (Xpoints[i] - Xmin) / (Xmax - Xmin))); + xpos := xpos + hleft; + oldxpos := xpos; + oldypos := ypos; + BlankFrm.Image1.Canvas.Pen.Style := psSolid; + BlankFrm.Image1.Canvas.LineTo(xpos,ypos); + end; + + // show censored + BlankFrm.Image1.Canvas.Pen.Style := psSolid; + BlankFrm.Image1.Canvas.Pen.Color := clBlack; + for i := 1 to N do + begin + if ((Dropped[i] = 0) and (curveno = 1)) then continue; + if ((Dropped2[i] = 0) and (curveno = 2)) then continue; + if (curveno = 1) then + begin + BlankFrm.Image1.Canvas.Font.Color := clNavy; + ypos := vbottom + 35; + xpos := ceil(hwide * ((Xpoints[i] - Xmin) / (Xmax - Xmin))); + xpos := xpos + hleft; + outline := format('%d',[Dropped[i]]); + Title := outline; + BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title); + end + else + begin + BlankFrm.Image1.Canvas.Font.Color := clRed; + ypos := vbottom + 48; + xpos := ceil(hwide * ((Xpoints[i] - Xmin) / (Xmax - Xmin))); + xpos := xpos + hleft; + outline := format('%d',[Dropped2[i]]); + Title := outline; + BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title); + end; + end; + + BlankFrm.Image1.Canvas.Font.Color := clBlack; + ypos := vbottom + 60; + Title := 'NUMBER CENSORED'; + xpos := hleft + (hwide div 2) - (BlankFrm.Image1.Canvas.TextWidth(Title) div 2); + BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title); + + BlankFrm.Image1.Canvas.Font.Color := clNavy; + Title := 'EXPERIMENTAL'; + xpos := 5; + ypos := vbottom + 35; + BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title); + if (curveno = 2) then + begin + BlankFrm.Image1.Canvas.Font.Color := clRed; + Title := 'CONTROL'; + xpos := 5; + ypos := vbottom + 48; + BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title); + end; +end; + +initialization + {$I kaplanmeierunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/kappaunit.lfm b/applications/lazstats/source_orig/kappaunit.lfm new file mode 100644 index 000000000..8f6e580a8 --- /dev/null +++ b/applications/lazstats/source_orig/kappaunit.lfm @@ -0,0 +1,484 @@ +object WeightedKappaFrm: TWeightedKappaFrm + Left = 132 + Height = 410 + Top = 112 + Width = 631 + Caption = 'Kappa and Weighted Kappa' + ClientHeight = 410 + ClientWidth = 631 + OnShow = FormShow + LCLVersion = '0.9.28.2' + object Label1: TLabel + Left = 10 + Height = 14 + Top = 112 + Width = 44 + Caption = 'Variables' + ParentColor = False + end + object Label2: TLabel + Left = 216 + Height = 14 + Top = 130 + Width = 38 + Caption = 'Rater A' + ParentColor = False + end + object Label3: TLabel + Left = 216 + Height = 14 + Top = 209 + Width = 37 + Caption = 'Rater B' + ParentColor = False + end + object Label4: TLabel + Left = 216 + Height = 14 + Top = 280 + Width = 93 + Caption = 'Variable to Analyze' + ParentColor = False + end + object Label5: TLabel + Left = 376 + Height = 14 + Top = 112 + Width = 114 + Caption = 'Total Number of Cases:' + ParentColor = False + end + object InputGroup: TRadioGroup + Left = 9 + Height = 90 + Top = 8 + Width = 610 + AutoFill = True + Caption = 'Input Options:' + ChildSizing.LeftRightSpacing = 6 + ChildSizing.TopBottomSpacing = 6 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.EnlargeVertical = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsScaleChilds + ChildSizing.ShrinkVertical = crsScaleChilds + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + ClientHeight = 72 + ClientWidth = 606 + Items.Strings = ( + 'Count cases classified by row and column variables in the data grid' + 'Use frequencies in a variable for a given row variable value and column variable value.' + 'Use proportions in a variable for a given row variable value and column variable value.' + ) + OnClick = InputGroupClick + TabOrder = 0 + end + object VarList: TListBox + Left = 9 + Height = 212 + Top = 128 + Width = 160 + ItemHeight = 0 + TabOrder = 1 + end + object RowIn: TBitBtn + Left = 176 + Height = 32 + Top = 130 + Width = 27 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + OnClick = RowInClick + TabOrder = 2 + end + object RowOut: TBitBtn + Left = 176 + Height = 22 + Top = 168 + Width = 27 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + OnClick = RowOutClick + TabOrder = 3 + end + object ColIn: TBitBtn + Left = 176 + Height = 22 + Top = 209 + Width = 27 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + OnClick = ColInClick + TabOrder = 4 + end + object ColOut: TBitBtn + Left = 176 + Height = 22 + Top = 232 + Width = 27 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + OnClick = ColOutClick + TabOrder = 5 + end + object DepIn: TBitBtn + Left = 176 + Height = 22 + Top = 280 + Width = 27 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + OnClick = DepInClick + TabOrder = 6 + end + object DepOut: TBitBtn + Left = 176 + Height = 20 + Top = 308 + Width = 27 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + OnClick = DepOutClick + TabOrder = 7 + end + object RaterAEdit: TEdit + Left = 216 + Height = 21 + Top = 144 + Width = 120 + TabOrder = 8 + Text = 'RaterAEdit' + end + object RaterBEdit: TEdit + Left = 216 + Height = 21 + Top = 224 + Width = 120 + TabOrder = 9 + Text = 'Edit1' + end + object DepEdit: TEdit + Left = 216 + Height = 21 + Top = 296 + Width = 120 + TabOrder = 10 + Text = 'Edit1' + end + object NCasesEdit: TEdit + Left = 496 + Height = 21 + Top = 105 + Width = 62 + TabOrder = 11 + Text = 'NCasesEdit' + end + object GroupBox1: TGroupBox + Left = 376 + Height = 197 + Top = 136 + Width = 242 + Caption = 'Options:' + ClientHeight = 179 + ClientWidth = 238 + TabOrder = 12 + object ObsChk: TCheckBox + Left = 9 + Height = 17 + Top = 2 + Width = 157 + Caption = 'Show Observed Frequencies' + TabOrder = 0 + end + object ExpChk: TCheckBox + Left = 9 + Height = 17 + Top = 25 + Width = 155 + Caption = 'Show Expected Frequencies' + TabOrder = 1 + end + object PropChk: TCheckBox + Left = 9 + Height = 17 + Top = 50 + Width = 187 + Caption = 'Show Row and Column Proportions' + TabOrder = 2 + end + object ChiChk: TCheckBox + Left = 9 + Height = 17 + Top = 77 + Width = 155 + Caption = 'Show Cell Chi Square Values' + TabOrder = 3 + end + object YatesChk: TCheckBox + Left = 9 + Height = 17 + Top = 104 + Width = 209 + Caption = 'Use Yates'' Correction for a 2 by 2 table' + TabOrder = 4 + end + object SaveChk: TCheckBox + Left = 9 + Height = 17 + Top = 130 + Width = 179 + Caption = 'Save as a File of Frequency Data' + TabOrder = 5 + end + end + object ResetBtn: TButton + Left = 136 + Height = 33 + Top = 360 + Width = 79 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 13 + end + object Cancel: TButton + Left = 257 + Height = 33 + Top = 360 + Width = 79 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 14 + end + object ComputeBtn: TButton + Left = 376 + Height = 33 + Top = 360 + Width = 79 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 15 + end + object ReturnBtn: TButton + Left = 496 + Height = 33 + Top = 360 + Width = 79 + Caption = 'Return' + ModalResult = 1 + TabOrder = 16 + end + object HelpBtn: TButton + Tag = 128 + Left = 10 + Height = 33 + Top = 360 + Width = 86 + Caption = 'Help' + OnClick = HelpBtnClick + TabOrder = 17 + end +end diff --git a/applications/lazstats/source_orig/kappaunit.lrs b/applications/lazstats/source_orig/kappaunit.lrs new file mode 100644 index 000000000..88fde99ed --- /dev/null +++ b/applications/lazstats/source_orig/kappaunit.lrs @@ -0,0 +1,367 @@ +LazarusResources.Add('TWeightedKappaFrm','FORMDATA',[ + 'TPF0'#17'TWeightedKappaFrm'#16'WeightedKappaFrm'#4'Left'#3#132#0#6'Height'#3 + +#154#1#3'Top'#2'p'#5'Width'#3'w'#2#7'Caption'#6#24'Kappa and Weighted Kappa' + +#12'ClientHeight'#3#154#1#11'ClientWidth'#3'w'#2#6'OnShow'#7#8'FormShow'#10 + +'LCLVersion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#10#6'Height'#2#14 + +#3'Top'#2'p'#5'Width'#2','#7'Caption'#6#9'Variables'#11'ParentColor'#8#0#0#6 + +'TLabel'#6'Label2'#4'Left'#3#216#0#6'Height'#2#14#3'Top'#3#130#0#5'Width'#2 + +'&'#7'Caption'#6#7'Rater A'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left' + +#3#216#0#6'Height'#2#14#3'Top'#3#209#0#5'Width'#2'%'#7'Caption'#6#7'Rater B' + +#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#216#0#6'Height'#2#14#3 + +'Top'#3#24#1#5'Width'#2']'#7'Caption'#6#19'Variable to Analyze'#11'ParentCol' + +'or'#8#0#0#6'TLabel'#6'Label5'#4'Left'#3'x'#1#6'Height'#2#14#3'Top'#2'p'#5'W' + +'idth'#2'r'#7'Caption'#6#22'Total Number of Cases:'#11'ParentColor'#8#0#0#11 + +'TRadioGroup'#10'InputGroup'#4'Left'#2#9#6'Height'#2'Z'#3'Top'#2#8#5'Width'#3 + +'b'#2#8'AutoFill'#9#7'Caption'#6#14'Input Options:'#28'ChildSizing.LeftRight' + +'Spacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHor' + +'izontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24 + +'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChi' + +'lds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Lay' + +'out'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1 + +#12'ClientHeight'#2'H'#11'ClientWidth'#3'^'#2#13'Items.Strings'#1#6'CCount c' + +'ases classified by row and column variables in the data grid'#6'WUse freque' + +'ncies in a variable for a given row variable value and column variable valu' + +'e.'#6'WUse proportions in a variable for a given row variable value and col' + +'umn variable value.'#0#7'OnClick'#7#15'InputGroupClick'#8'TabOrder'#2#0#0#0 + +#8'TListBox'#7'VarList'#4'Left'#2#9#6'Height'#3#212#0#3'Top'#3#128#0#5'Width' + +#3#160#0#10'ItemHeight'#2#0#8'TabOrder'#2#1#0#0#7'TBitBtn'#5'RowIn'#4'Left'#3 + +#176#0#6'Height'#2' '#3'Top'#3#130#0#5'Width'#2#27#10'Glyph.Data'#10':'#4#0#0 + +'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0 + +#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S' + +#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';' + +#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255 + +#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211 + +#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130 + +#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$' + +#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171 + +#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204 + +#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J' + +#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255 + +'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161 + +'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255 + ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#7'OnClick'#7#10'RowInClick'#8'TabOrder'#2#2#0#0#7'TBitB' + +'tn'#6'RowOut'#4'Left'#3#176#0#6'Height'#2#22#3'Top'#3#168#0#5'Width'#2#27#10 + +'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0 + +#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G' + +#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)' + +#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134 + +#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203 + +#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190 + +'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127 + +#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255 + +#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135 + +#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255 + +#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177 + +'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255 + +'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#11'RowOutClick'#8'Ta' + ,'bOrder'#2#3#0#0#7'TBitBtn'#5'ColIn'#4'Left'#3#176#0#6'Height'#2#22#3'Top'#3 + +#209#0#5'Width'#2#27#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0 + +'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0 + +#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G' + +#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^' + +#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195 + +'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144 + +#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255 + +'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255 + +#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212 + +#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133 + +#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255 + +#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255 + +']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145 + +'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick' + +#7#10'ColInClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#6'ColOut'#4'Left'#3#176#0#6 + +'Height'#2#22#3'Top'#3#232#0#5'Width'#2#27#10'Glyph.Data'#10':'#4#0#0'6'#4#0 + +#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0 + +#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207 + +'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';' + +#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255 + +#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211 + +#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130 + +#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$' + +#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171 + +#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204 + +#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x' + +#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209 + +#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M' + +#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255 + +'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#7'OnClick'#7#11'ColOutClick'#8'TabOrder'#2#5#0#0#7'TBit' + +'Btn'#5'DepIn'#4'Left'#3#176#0#6'Height'#2#22#3'Top'#3#24#1#5'Width'#2#27#10 + +'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0 + +#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184 + +'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255 + +';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$' + +#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255 + +#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147 + ,#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|' + +#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218 + +#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147 + +#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255 + +'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't' + +#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S' + +#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\' + +#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#7'OnClick'#7#10'DepInClick'#8'TabOrder'#2 + +#6#0#0#7'TBitBtn'#6'DepOut'#4'Left'#3#176#0#6'Height'#2#20#3'Top'#3'4'#1#5'W' + +'idth'#2#27#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0 + +'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0 + +#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O' + +#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V' + +#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255 + +'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5' + +#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195 + +'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144 + +#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255 + +'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255 + +#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212 + +#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133 + +#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255 + +#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135 + +#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A' + +#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#7'OnClick' + +#7#11'DepOutClick'#8'TabOrder'#2#7#0#0#5'TEdit'#10'RaterAEdit'#4'Left'#3#216 + +#0#6'Height'#2#21#3'Top'#3#144#0#5'Width'#2'x'#8'TabOrder'#2#8#4'Text'#6#10 + +'RaterAEdit'#0#0#5'TEdit'#10'RaterBEdit'#4'Left'#3#216#0#6'Height'#2#21#3'To' + +'p'#3#224#0#5'Width'#2'x'#8'TabOrder'#2#9#4'Text'#6#5'Edit1'#0#0#5'TEdit'#7 + +'DepEdit'#4'Left'#3#216#0#6'Height'#2#21#3'Top'#3'('#1#5'Width'#2'x'#8'TabOr' + +'der'#2#10#4'Text'#6#5'Edit1'#0#0#5'TEdit'#10'NCasesEdit'#4'Left'#3#240#1#6 + +'Height'#2#21#3'Top'#2'i'#5'Width'#2'>'#8'TabOrder'#2#11#4'Text'#6#10'NCases' + +'Edit'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3'x'#1#6'Height'#3#197#0#3'Top' + +#3#136#0#5'Width'#3#242#0#7'Caption'#6#8'Options:'#12'ClientHeight'#3#179#0 + +#11'ClientWidth'#3#238#0#8'TabOrder'#2#12#0#9'TCheckBox'#6'ObsChk'#4'Left'#2 + +#9#6'Height'#2#17#3'Top'#2#2#5'Width'#3#157#0#7'Caption'#6#25'Show Observed ' + +'Frequencies'#8'TabOrder'#2#0#0#0#9'TCheckBox'#6'ExpChk'#4'Left'#2#9#6'Heigh' + +'t'#2#17#3'Top'#2#25#5'Width'#3#155#0#7'Caption'#6#25'Show Expected Frequenc' + +'ies'#8'TabOrder'#2#1#0#0#9'TCheckBox'#7'PropChk'#4'Left'#2#9#6'Height'#2#17 + +#3'Top'#2'2'#5'Width'#3#187#0#7'Caption'#6#31'Show Row and Column Proportion' + +'s'#8'TabOrder'#2#2#0#0#9'TCheckBox'#6'ChiChk'#4'Left'#2#9#6'Height'#2#17#3 + +'Top'#2'M'#5'Width'#3#155#0#7'Caption'#6#27'Show Cell Chi Square Values'#8'T' + +'abOrder'#2#3#0#0#9'TCheckBox'#8'YatesChk'#4'Left'#2#9#6'Height'#2#17#3'Top' + +#2'h'#5'Width'#3#209#0#7'Caption'#6'(Use Yates'' Correction for a 2 by 2 tab' + +'le'#8'TabOrder'#2#4#0#0#9'TCheckBox'#7'SaveChk'#4'Left'#2#9#6'Height'#2#17#3 + +'Top'#3#130#0#5'Width'#3#179#0#7'Caption'#6' Save as a File of Frequency Dat' + +'a'#8'TabOrder'#2#5#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#136#0#6'Height'#2 + +'!'#3'Top'#3'h'#1#5'Width'#2'O'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetB' + +'tnClick'#8'TabOrder'#2#13#0#0#7'TButton'#6'Cancel'#4'Left'#3#1#1#6'Height'#2 + +'!'#3'Top'#3'h'#1#5'Width'#2'O'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8 + +'TabOrder'#2#14#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3'x'#1#6'Height'#2'!'#3 + +'Top'#3'h'#1#5'Width'#2'O'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBt' + +'nClick'#8'TabOrder'#2#15#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#240#1#6'Heig' + +'ht'#2'!'#3'Top'#3'h'#1#5'Width'#2'O'#7'Caption'#6#6'Return'#11'ModalResult' + +#2#1#8'TabOrder'#2#16#0#0#7'TButton'#7'HelpBtn'#3'Tag'#3#128#0#4'Left'#2#10#6 + +'Height'#2'!'#3'Top'#3'h'#1#5'Width'#2'V'#7'Caption'#6#4'Help'#7'OnClick'#7 + +#12'HelpBtnClick'#8'TabOrder'#2#17#0#0#0 +]); diff --git a/applications/lazstats/source_orig/kappaunit.pas b/applications/lazstats/source_orig/kappaunit.pas new file mode 100644 index 000000000..14f34a9a6 --- /dev/null +++ b/applications/lazstats/source_orig/kappaunit.pas @@ -0,0 +1,670 @@ +unit KappaUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, ExtCtrls, Buttons, MainUnit, Globals, OutPutUnit, FunctionsLib, + Math, DictionaryUnit, DataProcs, MatrixLib, contexthelpunit; + +type + + { TWeightedKappaFrm } + + TWeightedKappaFrm = class(TForm) + HelpBtn: TButton; + ResetBtn: TButton; + Cancel: TButton; + ComputeBtn: TButton; + ReturnBtn: TButton; + ObsChk: TCheckBox; + ExpChk: TCheckBox; + PropChk: TCheckBox; + ChiChk: TCheckBox; + YatesChk: TCheckBox; + SaveChk: TCheckBox; + GroupBox1: TGroupBox; + NCasesEdit: TEdit; + Label5: TLabel; + RowIn: TBitBtn; + RowOut: TBitBtn; + ColIn: TBitBtn; + ColOut: TBitBtn; + DepIn: TBitBtn; + DepOut: TBitBtn; + RaterAEdit: TEdit; + RaterBEdit: TEdit; + DepEdit: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + VarList: TListBox; + InputGroup: TRadioGroup; + procedure ColInClick(Sender: TObject); + procedure ColOutClick(Sender: TObject); + procedure ComputeBtnClick(Sender: TObject); + procedure DepInClick(Sender: TObject); + procedure DepOutClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure HelpBtnClick(Sender: TObject); + procedure InputGroupClick(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + procedure RowInClick(Sender: TObject); + procedure RowOutClick(Sender: TObject); + private + { private declarations } + public + { public declarations } + end; + +var + WeightedKappaFrm: TWeightedKappaFrm; + +implementation + +{ TWeightedKappaFrm } + +procedure TWeightedKappaFrm.ResetBtnClick(Sender: TObject); +VAR i : integer; +begin + VarList.Clear; + RaterAEdit.Text := ''; + RaterBEdit.Text := ''; + DepEdit.Text := ''; + DepEdit.Visible := false; + RowIn.Visible := true; + RowOut.Visible := false; + ColIn.Visible := true; + ColOut.Visible := false; + DepIn.Visible := false; + DepOut.Visible := false; + NCasesEdit.Text := ''; + NCasesEdit.Visible := false; + Label4.Visible := false; + Label5.Visible := false; + InputGroup.ItemIndex := 0; + for i := 1 to NoVariables do + VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); +end; + +procedure TWeightedKappaFrm.RowInClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + RaterAEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + RowIn.Visible := false; + RowOut.Visible := true; +end; + +procedure TWeightedKappaFrm.RowOutClick(Sender: TObject); +begin + VarList.Items.Add(RaterAEdit.Text); + RaterAEdit.Text := ''; + RowIn.Visible := true; + RowOut.Visible := false; +end; + +procedure TWeightedKappaFrm.FormShow(Sender: TObject); +begin + ResetBtnClick(self); +end; + +procedure TWeightedKappaFrm.HelpBtnClick(Sender: TObject); +begin + ContextHelpForm.HelpMessage((Sender as TButton).tag); +end; + +procedure TWeightedKappaFrm.InputGroupClick(Sender: TObject); +VAR index : integer; +begin + index := InputGroup.ItemIndex; + if (index = 2) then // only proportions available - get N size + begin + Label4.Visible := true; + NCasesEdit.Visible := true; + NCasesEdit.SetFocus; + DepIn.Visible := true; + DepOut.Visible := false; + DepEdit.Visible := true; + Label5.Visible := true; + end; + if (index = 1) then // frequencies available for each row and column combo + begin + Label4.Visible := true; + NCasesEdit.Visible := false; + DepIn.Visible := true; + DepOut.Visible := false; + DepEdit.Visible := true; + Label5.Visible := false; + end; + if (index = 0) then // have to count cases in each row and col. combination + begin + NCasesEdit.Visible := false; + DepIn.Visible := false; + DepOut.Visible := false; + DepEdit.Visible := false; + Label4.Visible := false; + Label5.Visible := false; + end; +end; + +procedure TWeightedKappaFrm.ColInClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + RaterBEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + ColIn.Visible := false; + ColOut.Visible := true; +end; + +procedure TWeightedKappaFrm.ColOutClick(Sender: TObject); +begin + VarList.Items.Add(RaterBEdit.Text); + RaterBEdit.Text := ''; + ColIn.Visible := true; + ColOut.Visible := false; +end; + +procedure TWeightedKappaFrm.ComputeBtnClick(Sender: TObject); +VAR + i, j, k, RowNo, ColNo, DepNo, MinRow, MaxRow, MinCol, MaxCol : integer; + Row, Col, NoSelected, Ncases, Nrows, Ncols, FObs, df : integer; + RowLabels, ColLabels : StrDyneVec; + ColNoSelected : IntDyneVec; + cellstring : string; + outline : string; + Freq : IntDyneMat; + Prop, Expected, CellChi : DblDyneMat; + PObs, ChiSquare, ProbChi, liklihood, Fval, phi : double; + yates, aresult : boolean; + title : string; + filename : string; + Adjchisqr, Adjprobchi, probliklihood, pearsonr : double; + pobserved, SumX, SumY, VarX, VarY, obsdiag, expdiag, expnondiag : double; + pexpected, MantelHaenszel, MHprob, CoefCont, CramerV, Kappa : double; + Frq : integer; + weights, quadweights : DblDyneMat; +begin + SetLength(ColNoSelected,NoVariables); + yates := false; + RowNo := 0; + ColNo := 0; + DepNo := 0; + pobserved := 0.0; + pexpected := 0.0; + + for i := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[i,0]; + if (cellstring = RaterAEdit.Text) then RowNo := i; + if (cellstring = RaterBEdit.Text) then ColNo := i; + if (cellstring = DepEdit.Text) then DepNo := i; + end; + if ((InputGroup.ItemIndex > 0) and (DepNo = 0)) then + begin + ShowMessage('ERROR! You must select a dependent variable.'); + ColNoSelected := nil; + exit; + end; + if ((RowNo = 0) or (ColNo = 0)) then // || (DepNo == 0)) + begin + ShowMessage('ERROR! A required variable has not been selected.'); + ColNoSelected := nil; + exit; + end; + + aresult := ValidValue(RowNo,1); + if (aresult = false) then + begin + ColNoSelected := nil; + exit; + end; + aresult := ValidValue(ColNo,1); + if (aresult = false) then + begin + ColNoSelected := nil; + exit; + end; + + ColNoSelected[0] := RowNo; + ColNoSelected[1] := ColNo; + NoSelected := 2; + if (InputGroup.ItemIndex > 0) then // for reading proportions or frequencies + begin + NoSelected := 3; + ColNoSelected[2] := DepNo; + end; + if (InputGroup.ItemIndex = 1) then + begin + aresult := ValidValue(DepNo,1); + if (aresult = false) then + begin + ColNoSelected := nil; + exit; + end; + end; + if (InputGroup.ItemIndex = 2) then + begin + aresult := ValidValue(DepNo,0); + if (aresult = false) then + begin + ColNoSelected := nil; + exit; + end; + end; + + // get min and max of row and col numbers + MinRow := 1000; + MaxRow := 0; + MinCol := 1000; + MaxCol := 0; + for i := 1 to NoCases do + begin + if (NOT GoodRecord(i,NoSelected,ColNoSelected)) then continue; + Row := StrToInt(OS3MainFrm.DataGrid.Cells[RowNo,i]); + Col := StrToInt(OS3MainFrm.DataGrid.Cells[ColNo,i]); + if (Row > MaxRow) then MaxRow := Row; + if (Row < MinRow) then MinRow := Row; + if (Col > MaxCol) then MaxCol := Col; + if (Col < MinCol) then MinCol := Col; + end; + Nrows := MaxRow - MinRow + 1; + Ncols := MaxCol - MinCol + 1; + + // allocate and initialize + SetLength(Freq,Nrows+1,Ncols+1); + SetLength(Prop,Nrows+1,Ncols+1); + SetLength(Expected,Nrows,Ncols); + SetLength(CellChi,Nrows,Ncols); + SetLength(RowLabels,Nrows+1); + SetLength(ColLabels,Ncols+1); + for i := 1 to Nrows + 1 do + for j := 1 to Ncols + 1 do Freq[i-1,j-1] := 0; + for i := 1 to Nrows do + begin + outline := format('Row %d',[i]); + cellstring := outline; + RowLabels[i-1] := cellstring; + end; + RowLabels[Nrows] := 'Total'; + for j := 1 to Ncols do + begin + outline := format('COL. %d',[j]); + cellstring := outline; + ColLabels[j-1] := cellstring; + end; + ColLabels[Ncols] := 'Total'; + + // get cell data + Ncases := 0; + if (InputGroup.ItemIndex = 0) then + begin // count number of cases in each row and column combination + for i := 1 to NoCases do + begin + if (NOT GoodRecord(i,NoSelected,ColNoSelected)) then continue; + Ncases := Ncases + 1; + Row := StrToInt(OS3MainFrm.DataGrid.Cells[RowNo,i]); + Col := StrToInt(OS3MainFrm.DataGrid.Cells[ColNo,i]); + Row := Row - MinRow + 1; + Col := Col - MinCol + 1; + Freq[Row-1,Col-1] := Freq[Row-1,Col-1] + 1; + end; + end; + + if (InputGroup.ItemIndex = 1) then // read frequencies data from grid + begin + for i := 1 to NoCases do + begin + if (NOT GoodRecord(i,NoSelected,ColNoSelected)) then continue; + Row := StrToInt(OS3MainFrm.DataGrid.Cells[RowNo,i]); + Col := StrToInt(OS3MainFrm.DataGrid.Cells[ColNo,i]); + Row := Row - MinRow + 1; + Col := Col - MinCol + 1; + FObs := StrToInt(OS3MainFrm.DataGrid.Cells[DepNo,i]); + Freq[Row-1,Col-1] := Freq[Row-1,Col-1] + FObs; + Ncases := Ncases + FObs; + end; + end; + if (InputGroup.ItemIndex = 2) then // get no. of cases and proportions for each cell + begin + Ncases := StrToInt(NCasesEdit.Text); + for i := 1 to NoCases do + begin + if (NOT GoodRecord(i,NoSelected,ColNoSelected)) then continue; + Row := StrToInt(OS3MainFrm.DataGrid.Cells[RowNo,i]); + Col := StrToInt(OS3MainFrm.DataGrid.Cells[ColNo,i]); + Row := Row - MinRow + 1; + Col := Col - MinCol + 1; + PObs := StrToInt(OS3MainFrm.DataGrid.Cells[DepNo,i]); + Frq := round(PObs * Ncases); + Fval := PObs * Ncases; + if (Fval - Frq < 0.5) then Frq := round(Fval) + else Frq := ceil(Fval); + Freq[Row-1,Col-1] := Freq[Row-1,Col-1] + Frq; + end; + end; + Freq[Nrows,Ncols] := Ncases; + + // Now, calculate expected values + // Get row totals first + for i := 1 to Nrows do + begin + for j := 1 to Ncols do + begin + Freq[i-1,Ncols] := Freq[i-1,Ncols] + Freq[i-1,j-1]; + end; + end; + // Get col totals next + for j := 1 to Ncols do + begin + for i := 1 to Nrows do + begin + Freq[Nrows,j-1] := Freq[Nrows,j-1] + Freq[i-1,j-1]; + end; + end; + // Then get expected values and cell chi-squares + ChiSquare := 0.0; + Adjchisqr := 0.0; + if ((YatesChk.Checked) and (Nrows = 2) and (Ncols = 2)) then yates := true; + for i := 1 to Nrows do + begin + for j := 1 to Ncols do + begin + Expected[i-1,j-1] := Freq[Nrows,j-1] * Freq[i-1,Ncols] / Ncases; + if (Expected[i-1,j-1] > 0.0) then + CellChi[i-1,j-1] := sqr(Freq[i-1,j-1] - Expected[i-1,j-1]) + / Expected[i-1,j-1] + else + begin + ShowMessage('ERROR! Zero expected value found.'); + CellChi[i-1,j-1] := 0.0; + end; + ChiSquare := ChiSquare + CellChi[i-1,j-1]; + end; + end; + df := (Nrows - 1) * (Ncols - 1); + if (yates = true) then // 2 x 2 corrected chi-square + begin + Adjchisqr := abs((Freq[0,0] * Freq[1,1]) - (Freq[0,1] * Freq[1,0])); + Adjchisqr := sqr(Adjchisqr - Ncases / 2.0) * Ncases; // numerator + Adjchisqr := Adjchisqr / (Freq[0,2] * Freq[1,2] * Freq[2,0] * Freq[2,1]); + Adjprobchi := 1.0 - chisquaredprob(Adjchisqr,df); + end; + ProbChi := 1.0 - chisquaredprob(ChiSquare,df); // prob. larger chi + + //Print results to output form + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Chi-square Analysis Results for ' + RaterAEdit.Text + ' and ' + RaterBEdit.Text); + outline := format('No. of Cases = %d',[Ncases]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + + // print tables requested by use + if (ObsChk.Checked) then + begin + IntArrayPrint(Freq, Nrows+1, Ncols+1,'Frequencies', + RowLabels, ColLabels,'OBSERVED FREQUENCIES'); + end; + + if (ExpChk.Checked) then + begin + outline := 'EXPECTED FREQUENCIES'; + MAT_PRINT(Expected, Nrows, Ncols, outline, RowLabels, ColLabels, + NoCases); + end; + + if (PropChk.Checked) then + begin + outline := 'ROW PROPORTIONS'; + for i := 1 to Nrows + 1 do + begin + for j := 1 to Ncols do + begin + if (Freq[i-1,Ncols] > 0.0) then + Prop[i-1,j-1] := Freq[i-1,j-1] / Freq[i-1,Ncols] + else Prop[i-1,j-1] := 0.0; + end; + if (Freq[i-1,Ncols] > 0.0) then Prop[i-1,Ncols] := 1.0 + else Prop[i-1][Ncols] := 0.0; + end; + MAT_PRINT(Prop, Nrows+1, Ncols+1, outline, RowLabels, ColLabels, + NoCases); + outline := 'COLUMN PROPORTIONS'; + for j := 1 to Ncols + 1 do + begin + for i := 1 to Nrows do + begin + if (Freq[Nrows,j-1] > 0.0) then + Prop[i-1,j-1] := Freq[i-1,j-1] / Freq[Nrows,j-1] + else Prop[i-1,j-1] := 0.0; + end; + if (Freq[Nrows,j-1] > 0.0) then Prop[Nrows][j-1] := 1.0 + else Prop[Nrows,j-1] := 0.0; + end; + MAT_PRINT(Prop, Nrows+1, Ncols+1, outline, RowLabels, ColLabels, + NoCases); + outline := 'PROPORTIONS OF TOTAL N'; + for i := 1 to Nrows + 1 do + for j := 1 to Ncols + 1 do Prop[i-1,j-1] := Freq[i-1,j-1] / Ncases; + Prop[Nrows,Ncols] := 1.0; + MAT_PRINT(Prop, Nrows+1, Ncols+1, outline, RowLabels, ColLabels, + NoCases); + end; + + if (ChiChk.Checked) then + begin + outline := 'CHI-SQUARED VALUE FOR CELLS'; + MAT_PRINT(CellChi, Nrows, Ncols, outline, RowLabels, ColLabels, + NoCases); + end; + + OutPutFrm.RichEdit.Lines.Add(''); + outline := format('Chi-square = %8.3f with D.F. = %d. Prob. > value = %8.3f', + [ChiSquare,df,ProbChi]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + if (yates = true) then + begin + outline := format('Chi-square using Yates correction = %8.3f and Prob > value = %8.3f', + [Adjchisqr,Adjprobchi]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + + liklihood := 0.0; + for i := 0 to Nrows - 1 do + for j := 0 to Ncols - 1 do + liklihood := Liklihood + Freq[i,j] * (ln(Expected[i,j] / Freq[i,j])); + liklihood := -2.0 * liklihood; + probliklihood := 1.0 - chisquaredprob(liklihood,df); + outline := format('Liklihood Ratio = %8.3f with prob. > value = %6.4f', + [liklihood,probliklihood]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + + phi := sqrt(ChiSquare / Ncases); + outline := format('phi correlation = %6.4f',[phi]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + + pearsonr := 0.0; + SumX := 0.0; + SumY := 0.0; + VarX := 0.0; + VarY := 0.0; + for i := 0 to Nrows - 1 do SumX := SumX + ( (i+1) * Freq[i,Ncols] ); + for j := 0 to Ncols - 1 do SumY := SumY + ( (j+1) * Freq[Nrows,j] ); + for i := 0 to Nrows - 1 do VarX := VarX + ( ((i+1)*(i+1)) * Freq[i,Ncols] ); + for j := 0 to Ncols - 1 do VarY := VarY + ( ((j+1)*(j+1)) * Freq[Nrows,j] ); + VarX := VarX - ((SumX * SumX) / Ncases); + VarY := VarY - ((SumY * SumY) / Ncases); + for i := 0 to Nrows - 1 do + for j := 0 to Ncols - 1 do + pearsonr := pearsonr + ((i+1)*(j+1) * Freq[i,j]); + pearsonr := pearsonr - (SumX * SumY / Ncases); + pearsonr := pearsonr / sqrt(VarX * VarY); + outline := format('Pearson Correlation r = %6.4f',[pearsonr]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + + MantelHaenszel := (Ncases-1) * (pearsonr * pearsonr); + MHprob := 1.0 - chisquaredprob(MantelHaenszel,1); + outline := format('Mantel-Haenszel Test of Linear Association = %8.3f with probability > value = %6.4f', + [MantelHaenszel, MHprob]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + + CoefCont := sqrt(ChiSquare / (ChiSquare + Ncases)); + outline := format('The coefficient of contingency = %8.3f',[CoefCont]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + + if (Nrows < Ncols) then CramerV := sqrt(ChiSquare / (Ncases * ((Nrows-1)))) + else CramerV := sqrt(ChiSquare / (Ncases * ((Ncols-1)))); + outline := format('Cramers V = %8.3f',[CramerV]); + OutPutFrm.RichEdit.Lines.Add(outline); + + // kappa + if (Nrows = Ncols) then + begin + obsdiag := 0.0; + expdiag := 0.0; + for i := 0 to Nrows - 1 do + begin + obsdiag := obsdiag + Freq[i,i]; + expdiag := expdiag + Expected[i,i]; + end; + expnondiag := Ncases - expdiag; + Kappa := (obsdiag - expdiag) / expnondiag; + OutPutFrm.RichEdit.Lines.Add(''); + outline := format('Unweighted Kappa = %8.4f',[Kappa]); + OutPutFrm.RichEdit.Lines.Add(outline); + // get linear weights + SetLength(weights,Nrows,Ncols); + SetLength(quadweights,Nrows,Ncols); + for i := 0 to Nrows - 1 do + begin + for j := 0 to Ncols - 1 do + begin + weights[i,j] := 0.0; + quadweights[i,j] := 0.0; + end; + end; + for i := 0 to Nrows - 1 do + begin + for j := 0 to Ncols - 1 do + begin + weights[i,j] := 1.0 - (abs((i-j)) / (Nrows-1)); + quadweights[i,j] := 1.0 - ( abs((i-j)*(i-j)) / ((Nrows-1)*(Nrows-1)) ); + end; + end; + outline := 'Observed Linear Weights'; + MAT_PRINT(weights, Nrows, Ncols, outline, RowLabels, ColLabels, NoCases); + outline := 'Observed Quadratic Weights'; + MAT_PRINT(quadweights, Nrows, Ncols, outline, RowLabels, ColLabels, NoCases); + OutPutFrm.RichEdit.Lines.Add(''); + for i := 0 to Nrows - 1 do + begin + for j := 0 to Ncols - 1 do + begin + pobserved := pobserved + (Freq[i][j] / Ncases) * weights[i,j]; + pexpected := pexpected + (Expected[i,j] / Ncases) * weights[i,j]; + end; + end; + Kappa := (pobserved - pexpected) / (1.0 - pexpected); + outline := format('Linear Weighted Kappa = %8.4f',[Kappa]); + OutPutFrm.RichEdit.Lines.Add(outline); + pobserved := 0.0; + pexpected := 0.0; + for i := 0 to Nrows - 1 do + begin + for j := 0 to Ncols - 1 do + begin + pobserved := pobserved + (Freq[i,j] / Ncases) * quadweights[i,j]; + pexpected := pexpected + (Expected[i,j] / Ncases) * quadweights[i,j]; + end; + end; + Kappa := (pobserved - pexpected) / (1.0 - pexpected); + outline := format('Quadratic Weighted Kappa = %8.4f',[Kappa]); + OutPutFrm.RichEdit.Lines.Add(outline); + quadweights := nil; + weights := nil; + end; + + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + + // save frequency data file if elected + if ((SaveChk.Checked) and (InputGroup.ItemIndex = 0)) then + begin + ClearGrid; + for i := 1 to 3 do DictionaryFrm.NewVar(i); + DictionaryFrm.DictGrid.Cells[1,1] := 'ROW'; + DictionaryFrm.DictGrid.Cells[1,2] := 'COL'; + DictionaryFrm.DictGrid.Cells[1,3] := 'FREQ.'; + OS3MainFrm.DataGrid.Cells[1,0] := 'ROW'; + OS3MainFrm.DataGrid.Cells[2,0] := 'COL'; + OS3MainFrm.DataGrid.Cells[3,0] := 'Freq.'; + k := 1; + for i := 1 to Nrows do + begin + for j := 1 to Ncols do + begin + OS3MainFrm.DataGrid.RowCount := k + 1; + OS3MainFrm.DataGrid.Cells[1,k] := IntToStr(i); + OS3MainFrm.DataGrid.Cells[2,k] := IntToStr(j); + OS3MainFrm.DataGrid.Cells[3,k] := IntToStr(Freq[i-1,j-1]); + k := k + 1; + end; + end; + for i := 1 to k - 1 do + begin + title := 'CASE ' + IntToStr(i); + OS3MainFrm.DataGrid.Cells[0,i] := title; + end; + title := InputBox('FILE:','File Name:','Frequencies.LAZ'); + OS3MainFrm.FileNameEdit.Text := title; + OS3MainFrm.NoVarsEdit.Text := IntToStr(3); + OS3MainFrm.NoCasesEdit.Text := IntToStr(k-1); + NoVariables := 3; + NoCases := k-1; + SaveOS2File; + end; + + //clean up + ColLabels := nil; + RowLabels := nil; + CellChi := nil; + Expected := nil; + Prop := nil; + Freq := nil; + ColNoSelected := nil; +end; + +procedure TWeightedKappaFrm.DepInClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + DepEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + DepIn.Visible := false; + DepOut.Visible := true; +end; + +procedure TWeightedKappaFrm.DepOutClick(Sender: TObject); +begin + VarList.Items.Add(DepEdit.Text); + DepEdit.Text := ''; + DepIn.Visible := true; + DepOut.Visible := false; +end; + +initialization + {$I kappaunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/kendalltauunit.lfm b/applications/lazstats/source_orig/kendalltauunit.lfm new file mode 100644 index 000000000..189763d52 --- /dev/null +++ b/applications/lazstats/source_orig/kendalltauunit.lfm @@ -0,0 +1,398 @@ +object KendallTauFrm: TKendallTauFrm + Left = 132 + Height = 348 + Top = 97 + Width = 352 + Caption = 'Kendall Rank Correlation Tau and Partial Tau' + ClientHeight = 348 + ClientWidth = 352 + OnShow = FormShow + LCLVersion = '0.9.26.2' + object Label1: TLabel + Left = 5 + Height = 14 + Top = 5 + Width = 90 + Caption = 'Variables Available' + ParentColor = False + end + object Label2: TLabel + Left = 214 + Height = 14 + Top = 25 + Width = 48 + Caption = 'X Variable' + ParentColor = False + end + object Label3: TLabel + Left = 217 + Height = 14 + Top = 105 + Width = 48 + Caption = 'Y Variable' + ParentColor = False + end + object Label4: TLabel + Left = 216 + Height = 14 + Top = 184 + Width = 48 + Caption = 'Z Variable' + ParentColor = False + end + object VarList: TListBox + Left = 6 + Height = 254 + Top = 21 + Width = 160 + TabOrder = 0 + end + object XIn: TBitBtn + Left = 176 + Height = 28 + Top = 22 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = XInClick + TabOrder = 1 + end + object XOut: TBitBtn + Left = 176 + Height = 28 + Top = 56 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = XOutClick + TabOrder = 2 + end + object YIn: TBitBtn + Left = 176 + Height = 28 + Top = 104 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = YInClick + TabOrder = 3 + end + object YOut: TBitBtn + Left = 175 + Height = 28 + Top = 136 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = YOutClick + TabOrder = 4 + end + object ZIn: TBitBtn + Left = 176 + Height = 28 + Top = 184 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = ZInClick + TabOrder = 5 + end + object ZOut: TBitBtn + Left = 176 + Height = 28 + Top = 216 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = ZOutClick + TabOrder = 6 + end + object XEdit: TEdit + Left = 213 + Height = 18 + Top = 39 + Width = 120 + TabOrder = 7 + Text = 'XEdit' + end + object YEdit: TEdit + Left = 217 + Height = 18 + Top = 120 + Width = 120 + TabOrder = 8 + Text = 'Edit1' + end + object ZEdit: TEdit + Left = 216 + Height = 18 + Top = 200 + Width = 120 + TabOrder = 9 + Text = 'Edit1' + end + object GroupBox1: TGroupBox + Left = 6 + Height = 46 + Top = 287 + Width = 161 + Caption = 'Options:' + ClientHeight = 28 + ClientWidth = 157 + TabOrder = 10 + object RanksChk: TCheckBox + Left = 8 + Height = 17 + Top = 3 + Width = 124 + Caption = 'Show Ranked Scores' + TabOrder = 0 + end + end + object ResetBtn: TButton + Left = 174 + Height = 26 + Top = 254 + Width = 65 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 11 + end + object CancelBtn: TButton + Left = 268 + Height = 26 + Top = 254 + Width = 65 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 12 + end + object ComputeBtn: TButton + Left = 176 + Height = 26 + Top = 307 + Width = 65 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 13 + end + object ReturnBtn: TButton + Left = 268 + Height = 26 + Top = 307 + Width = 65 + Caption = 'Return' + ModalResult = 1 + TabOrder = 14 + end +end diff --git a/applications/lazstats/source_orig/kendalltauunit.lrs b/applications/lazstats/source_orig/kendalltauunit.lrs new file mode 100644 index 000000000..56187060b --- /dev/null +++ b/applications/lazstats/source_orig/kendalltauunit.lrs @@ -0,0 +1,341 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TKendallTauFrm','FORMDATA',[ + 'TPF0'#14'TKendallTauFrm'#13'KendallTauFrm'#4'Left'#3#132#0#6'Height'#3'\'#1#3 + +'Top'#2'a'#5'Width'#3'`'#1#7'Caption'#6',Kendall Rank Correlation Tau and Pa' + +'rtial Tau'#12'ClientHeight'#3'\'#1#11'ClientWidth'#3'`'#1#6'OnShow'#7#8'For' + +'mShow'#10'LCLVersion'#6#8'0.9.26.2'#0#6'TLabel'#6'Label1'#4'Left'#2#5#6'Hei' + +'ght'#2#14#3'Top'#2#5#5'Width'#2'Z'#7'Caption'#6#19'Variables Available'#11 + +'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#214#0#6'Height'#2#14#3'Top' + +#2#25#5'Width'#2'0'#7'Caption'#6#10'X Variable'#11'ParentColor'#8#0#0#6'TLab' + +'el'#6'Label3'#4'Left'#3#217#0#6'Height'#2#14#3'Top'#2'i'#5'Width'#2'0'#7'Ca' + +'ption'#6#10'Y Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3 + +#216#0#6'Height'#2#14#3'Top'#3#184#0#5'Width'#2'0'#7'Caption'#6#10'Z Variabl' + +'e'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#6#6'Height'#3#254 + +#0#3'Top'#2#21#5'Width'#3#160#0#8'TabOrder'#2#0#0#0#7'TBitBtn'#3'XIn'#4'Left' + +#3#176#0#6'Height'#2#28#3'Top'#2#22#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0 + +'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0 + +#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S' + +#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';' + +#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255 + +#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211 + +#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130 + +#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$' + +#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171 + +#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204 + +#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J' + +#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255 + +'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161 + +'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#8'XInClick'#8'TabOrder'#2 + +#1#0#0#7'TBitBtn'#4'XOut'#4'Left'#3#176#0#6'Height'#2#28#3'Top'#2'8'#5'Width' + ,#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0 + +#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8' + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255 + +'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%' + +'i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200 + +#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139 + +#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v' + +#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201 + +''#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159 + +#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197 + +#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X' + +#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B' + +#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#9'X' + +'OutClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#3'YIn'#4'Left'#3#176#0#6'Height'#2 + +#28#3'Top'#2'h'#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0 + +#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0 + +#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V' + +#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y' + +#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0 + +'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157 + +#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195 + +#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0 + +#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255 + +#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144 + +#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201 + +#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190 + +'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255 + +'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#9'NumGlyphs'#2#0#7'OnClick'#7#8'YInClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#4 + +'YOut'#4'Left'#3#175#0#6'Height'#2#28#3'Top'#3#136#0#5'Width'#2' '#10'Glyph.' + +'Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16 + +#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255 + +'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$' + +#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156 + +#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255 + +#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255 + ,'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138 + +#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207 + +#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}' + +#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0 + +'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S' + +#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';' + +#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#9'YOutClick'#8'Ta' + +'bOrder'#2#4#0#0#7'TBitBtn'#3'ZIn'#4'Left'#3#176#0#6'Height'#2#28#3'Top'#3 + +#184#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0 + +'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0 + +#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G' + +#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^' + +#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195 + +'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144 + +#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255 + +'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255 + +#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212 + +#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133 + +#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255 + +#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255 + +']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145 + +'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp' + +'hs'#2#0#7'OnClick'#7#8'ZInClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'#4'ZOut'#4'L' + +'eft'#3#176#0#6'Height'#2#28#3'Top'#3#216#0#5'Width'#2' '#10'Glyph.Data'#10 + +':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0 + +' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A' + +#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255 + +#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213 + +#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135 + +#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r' + +#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255 + +#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154 + +#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194 + +#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h' + +#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169 + +'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255 + +'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h' + +#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199 + +'t'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#9'ZOutClick'#8'TabOrd' + ,'er'#2#6#0#0#5'TEdit'#5'XEdit'#4'Left'#3#213#0#6'Height'#2#18#3'Top'#2''''#5 + +'Width'#2'x'#8'TabOrder'#2#7#4'Text'#6#5'XEdit'#0#0#5'TEdit'#5'YEdit'#4'Left' + +#3#217#0#6'Height'#2#18#3'Top'#2'x'#5'Width'#2'x'#8'TabOrder'#2#8#4'Text'#6#5 + +'Edit1'#0#0#5'TEdit'#5'ZEdit'#4'Left'#3#216#0#6'Height'#2#18#3'Top'#3#200#0#5 + +'Width'#2'x'#8'TabOrder'#2#9#4'Text'#6#5'Edit1'#0#0#9'TGroupBox'#9'GroupBox1' + +#4'Left'#2#6#6'Height'#2'.'#3'Top'#3#31#1#5'Width'#3#161#0#7'Caption'#6#8'Op' + +'tions:'#12'ClientHeight'#2#28#11'ClientWidth'#3#157#0#8'TabOrder'#2#10#0#9 + +'TCheckBox'#8'RanksChk'#4'Left'#2#8#6'Height'#2#17#3'Top'#2#3#5'Width'#2'|'#7 + +'Caption'#6#18'Show Ranked Scores'#8'TabOrder'#2#0#0#0#0#7'TButton'#8'ResetB' + +'tn'#4'Left'#3#174#0#6'Height'#2#26#3'Top'#3#254#0#5'Width'#2'A'#7'Caption'#6 + +#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#11#0#0#7'TButton'#9'C' + +'ancelBtn'#4'Left'#3#12#1#6'Height'#2#26#3'Top'#3#254#0#5'Width'#2'A'#7'Capt' + +'ion'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#12#0#0#7'TButton'#10'Com' + +'puteBtn'#4'Left'#3#176#0#6'Height'#2#26#3'Top'#3'3'#1#5'Width'#2'A'#7'Capti' + +'on'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#13#0#0#7'TB' + +'utton'#9'ReturnBtn'#4'Left'#3#12#1#6'Height'#2#26#3'Top'#3'3'#1#5'Width'#2 + +'A'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#14#0#0#0 +]); diff --git a/applications/lazstats/source_orig/kendalltauunit.pas b/applications/lazstats/source_orig/kendalltauunit.pas new file mode 100644 index 000000000..0f33d0464 --- /dev/null +++ b/applications/lazstats/source_orig/kendalltauunit.pas @@ -0,0 +1,554 @@ +unit KendallTauUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, MainUnit, OutPutUnit, FunctionsLib, Globals, + DataProcs, Math, MatrixLib; + +type + + { TKendallTauFrm } + + TKendallTauFrm = class(TForm) + ResetBtn: TButton; + CancelBtn: TButton; + ComputeBtn: TButton; + ReturnBtn: TButton; + RanksChk: TCheckBox; + GroupBox1: TGroupBox; + XEdit: TEdit; + YEdit: TEdit; + ZEdit: TEdit; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + XIn: TBitBtn; + XOut: TBitBtn; + YIn: TBitBtn; + YOut: TBitBtn; + ZIn: TBitBtn; + ZOut: TBitBtn; + Label1: TLabel; + VarList: TListBox; + procedure ComputeBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + procedure XInClick(Sender: TObject); + procedure XOutClick(Sender: TObject); + procedure YInClick(Sender: TObject); + procedure YOutClick(Sender: TObject); + procedure ZInClick(Sender: TObject); + procedure ZOutClick(Sender: TObject); + private + { private declarations } + public + { public declarations } + end; + +var + KendallTauFrm: TKendallTauFrm; + +implementation + +{ TKendallTauFrm } + +procedure TKendallTauFrm.ResetBtnClick(Sender: TObject); +VAR i : integer; +begin + XEdit.Text := ''; + YEdit.Text := ''; + ZEdit.Text := ''; + Xin.Visible := true; + Xout.Visible := false; + Yin.Visible := true; + Yout.Visible := false; + Zin.Visible := true; + Zout.Visible := false; + RanksChk.Checked := false; + VarList.Items.Clear; + for i := 1 to NoVariables do + VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); +end; + +procedure TKendallTauFrm.XInClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + XEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + Xin.Visible := false; + Xout.Visible := true; +end; + +procedure TKendallTauFrm.XOutClick(Sender: TObject); +begin + VarList.Items.Add(XEdit.Text); + XEdit.Text := ''; + Xin.Visible := true; + Xout.Visible := false; +end; + +procedure TKendallTauFrm.YInClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + YEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + Yin.Visible := false; + Yout.Visible := true; +end; + +procedure TKendallTauFrm.YOutClick(Sender: TObject); +begin + VarList.Items.Add(YEdit.Text); + YEdit.Text := ''; + Yin.Visible := true; + Yout.Visible := false; +end; + +procedure TKendallTauFrm.ZInClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + ZEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + Zin.Visible := false; + Zout.Visible := true; +end; + +procedure TKendallTauFrm.ZOutClick(Sender: TObject); +begin + VarList.Items.Add(YEdit.Text); + ZEdit.Text := ''; + Zin.Visible := true; + Zout.Visible := false; +end; + +procedure TKendallTauFrm.FormShow(Sender: TObject); +begin + ResetBtnClick(self); +end; + +procedure TKendallTauFrm.ComputeBtnClick(Sender: TObject); +label Check1, Check2, Check3; +var + i, j, k, itemp, NoTies, NoTieGroups, NoSelected : integer; + col1, col2, col3, NCases : integer; + index : IntDyneMat; + Probability, Temp, TieSum, Avg, t, SumT, r : double; + z, denominator, df, stddev : double; + Ranks, X : DblDyneMat; + cellstring, outline : string; + ColNoSelected : IntdyneVec; + ColLabels : StrDyneVec; + RowLabels : StrDyneVec; + TauXY, TauXZ, TauYZ : double; + TiesX, TiesY, TiesZ : integer; + Tx, Ty, Tz : double; + Term1, Term2 : double; + PartialTau : double; + title : string; +begin + // Allocate memory + SetLength(index,NoCases,3); + SetLength(Ranks,NoCases,3); + SetLength(X,NoCases,3); + SetLength(ColLabels,3); + SetLength(RowLabels,NoCases); + SetLength(ColNoSelected,NoVariables); + Tx := 0.0; + Ty := 0.0; + Tz := 0.0; + + // Get column numbers and labels of variables selected + NoSelected := 0; + for j := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[j,0]; + if cellstring = Xedit.Text then + begin + ColNoSelected[0] := j; + ColLabels[0] := cellstring; + NoSelected := NoSelected + 1; + end; + if cellstring = Yedit.Text then + begin + ColNoSelected[1] := j; + ColLabels[1] := cellstring; + NoSelected := NoSelected + 1; + end; + if cellstring = Zedit.Text then + begin + ColNoSelected[2] := j; + ColLabels[2] := cellstring; + NoSelected := NoSelected + 1; + end; + end; + + // Get scores + NCases := 0; + for i := 1 to NoCases do + begin + if ( not GoodRecord(i,NoSelected,ColNoSelected)) then continue; + NCases := NCases + 1; + col1 := ColNoSelected[0]; + col2 := ColNoSelected[1]; + if NoSelected = 3 then col3 := ColNoSelected[2]; + X[NCases-1,0] := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[col1,i])); + Ranks[NCases-1,0] := X[NCases-1,0]; + X[NCases-1,1] := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[col2,i])); + Ranks[NCases-1,1] := X[NCases-1,1]; + if NoSelected = 3 then + begin + X[NCases-1,2] := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[col3,i])); + Ranks[NCases-1,2] := X[NCases-1,2]; + end; + index[NCases-1,0] := NCases; + index[NCases-1,1] := NCases; + if NoSelected = 3 then index[NCases-1,2] := NCases; + end; + + for i := 0 to NCases - 1 do RowLabels[i] := IntToStr(i+1); + // Rank the first variable (X) + for i := 0 to NCases - 2 do + begin + for j := i + 1 to NCases-1 do + begin + if (Ranks[i,0] > Ranks[j,0]) then // swap + begin + Temp := Ranks[i,0]; + Ranks[i,0] := Ranks[j,0]; + Ranks[j,0] := Temp; + itemp := index[i,0]; + index[i,0] := index[j,0]; + index[j,0] := itemp; + end; + end; + end; + + // Assign ranks + for i := 0 to NCases-1 do Ranks[i,0] := i+1; + + // Check for ties in each + i := 1; + while (i < NCases) do + begin + j := i+1; + TieSum := 0.0; + NoTies := 0; + while (j <= NCases) do + begin + if (X[j-1,0] > X[i-1,0]) then goto Check1; + if (X[j-1,0] = X[i-1,0]) then + begin + TieSum := TieSum + Ranks[j-1,0]; + NoTies := NoTies + 1; + end; + j := j + 1; + end; +Check1: + if (NoTies > 0) then // at least one tie found + begin + TieSum := TieSum + Ranks[i-1,0]; + NoTies := NoTies + 1; + Avg := TieSum / NoTies; + for j := i to i + NoTies - 1 do Ranks[j-1,0] := Avg; + i := i + (NoTies-1); + Tx := Tx + NoTies *(NoTies-1); + end; + i := i + 1; + end; + Tx := Tx / 2.0; + + // Repeat sort for second variable Y + for i := 0 to NCases - 2 do + begin + for j := i + 1 to NCases-1 do + begin + if (Ranks[i,1] > Ranks[j,1]) then // swap + begin + Temp := Ranks[i,1]; + Ranks[i,1] := Ranks[j,1]; + Ranks[j,1] := Temp; + itemp := index[i,1]; + index[i,1] := index[j,1]; + index[j,1] := itemp; + end; + end; + end; + + // Assign ranks + for i := 0 to NCases-1 do Ranks[i,1] := i+1; + + // Check for ties in each + i := 1; + while (i < NCases) do + begin + j := i+1; + TieSum := 0.0; + NoTies := 0; + while (j <= NoCases) do + begin + if (X[j-1,1] > X[i-1,1]) then goto Check2; + if (X[j-1,1] = X[i-1,1]) then + begin + TieSum := TieSum + Ranks[j-1,1]; + NoTies := NoTies + 1; + end; + j := j + 1; + end; +Check2: + if (NoTies > 0) then // at least one tie found + begin + TieSum := TieSum + Ranks[i-1,1]; + NoTies := NoTies + 1; + Avg := TieSum / NoTies; + for j := i to i + NoTies - 1 do Ranks[j-1,1] := Avg; + i := i + (NoTies-1); + Ty := Ty + NoTies * (NoTies - 1); + end; + i := i + 1; + end; + Ty := Ty / 2.0; + + // Repeat for z variable + if NoSelected > 2 then // z was entered + begin + for i := 0 to NCases - 2 do + begin + for j := i + 1 to NCases-1 do + begin + if (Ranks[i,2] > Ranks[j,2]) then // swap + begin + Temp := Ranks[i,2]; + Ranks[i,2] := Ranks[j,2]; + Ranks[j,2] := Temp; + itemp := index[i,2]; + index[i,2] := index[j,2]; + index[j,2] := itemp; + end; + end; + end; + + // Assign ranks + for i := 0 to NCases-1 do Ranks[i,2] := i+1; + + // Check for ties in each + i := 1; + while (i < NCases) do + begin + j := i+1; + TieSum := 0.0; + NoTies := 0; + while (j <= NoCases) do + begin + if (X[j-1,2] > X[i-1,2]) then goto Check3; + if (X[j-1,2] = X[i-1,2]) then + begin + TieSum := TieSum + Ranks[j-1,2]; + NoTies := NoTies + 1; + end; + j := j + 1; + end; +Check3: + if (NoTies > 0) then // at least one tie found + begin + TieSum := TieSum + Ranks[i-1,2]; + NoTies := NoTies + 1; + Avg := TieSum / NoTies; + for j := i to i + NoTies - 1 do Ranks[j-1,2] := Avg; + i := i + (NoTies-1); + Tz := Tz + NoTies * (NoTies - 1); + end; + i := i + 1; + end; + Tz := Tz / 2.0; + end; + + // Rearrange ranks into original score order + for k := 1 to 3 do + begin + for i := 1 to NCases - 1 do + begin + for j := i + 1 to NCases do + begin + if (index[i-1,k-1] > index[j-1,k-1]) then // swap + begin + itemp := index[i-1,k-1]; + index[i-1,k-1] := index[j-1,k-1]; + index[j-1,k-1] := itemp; + Temp := Ranks[i-1,k-1]; + Ranks[i-1,k-1] := Ranks[j-1,k-1]; + Ranks[j-1,k-1] := Temp; + end; + end; + end; + end; + + // print data matrix if option is elected + if RanksChk.Checked then + begin + title := 'Ranks'; + if NoSelected = 2 then + MAT_PRINT(Ranks,NCases,2,title,RowLabels,ColLabels,NCases) + else + MAT_PRINT(Ranks,NCases,3,title,RowLabels,ColLabels,NCases); + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + end; + + // compute Tau for X and Y + // sort on X and obtain SumT for Y ranks + SumT := 0.0; + for i := 0 to NCases - 2 do + begin + for j := i + 1 to NCases-1 do + begin + if (Ranks[i,0] > Ranks[j,0]) then // swap + begin + Temp := Ranks[i,0]; + Ranks[i,0] := Ranks[j,0]; + Ranks[j,0] := Temp; + Temp := Ranks[i,1]; + Ranks[i,1] := Ranks[j,1]; + Ranks[j,1] := Temp; + if NoSelected = 3 then + begin + Temp := Ranks[i,2]; + Ranks[i,2] := Ranks[j,2]; + Ranks[j,2] := Temp; + end; + itemp := index[i,0]; + index[i,0] := index[j,0]; + index[j,0] := itemp; + end; + end; + end; + for i := 0 to NCases - 2 do + for j := i + 1 to NCases - 1 do + if Ranks[i,1] < Ranks[j,1] then SumT := SumT + 1.0 + else if Ranks[i,1] > Ranks[j,1] then SumT := SumT - 1.0; + Term1 := sqrt((NCases * (NCases-1)) / 2.0 - Tx); + Term2 := sqrt((NCases * (Ncases-1)) / 2.0 - Ty); + denominator := Term1 * Term2; + TauXY := SumT / denominator; + + if NoSelected > 2 then // get tau values for partial + begin + // Get TauXZ + SumT := 0.0; + for i := 0 to NCases - 2 do + for j := i + 1 to NCases - 1 do + if Ranks[i,2] < Ranks[j,2] then SumT := SumT + 1.0 + else if Ranks[i,2] > Ranks[j,2] then SumT := SumT - 1.0; + Term1 := sqrt((NCases * (NCases-1)) / 2.0 - Tx); + Term2 := sqrt((NCases * (Ncases-1)) / 2.0 - Tz); + denominator := Term1 * Term2; + TauXZ := SumT / denominator; + + // get back to original order then sort on Y + for i := 0 to NCases - 2 do + begin + for j := i + 1 to NCases - 1 do + begin + if index[i,0] > index[j,0] then // swap + begin + Temp := Ranks[i,0]; + Ranks[i,0] := Ranks[j,0]; + Ranks[j,0] := temp; + Temp := Ranks[i,1]; + Ranks[i,1] := Ranks[j,1]; + Ranks[j,1] := Temp; + Temp := Ranks[i,2]; + Ranks[i,2] := Ranks[j,2]; + Ranks[j,2] := Temp; + itemp := index[i,0]; + index[i,0] := index[j,0]; + index[j,0] := itemp; + end; + end; + end; + + // Get TauYZ + for i := 0 to NCases - 2 do // sort on Y variable + begin + for j := i + 1 to NCases-1 do + begin + if (Ranks[i,1] > Ranks[j,1]) then // swap + begin + Temp := Ranks[i,1]; + Ranks[i,1] := Ranks[j,1]; + Ranks[j,1] := Temp; + Temp := Ranks[i,2]; + Ranks[i,2] := Ranks[j,2]; + Ranks[j,2] := Temp; + itemp := index[i,1]; + index[i,1] := index[j,1]; + index[j,1] := itemp; + end; + end; + end; + + SumT := 0.0; + for i := 0 to NCases - 2 do + for j := i + 1 to NCases - 1 do + if Ranks[i,2] < Ranks[j,2] then SumT := SumT + 1.0 + else if Ranks[i,2] > Ranks[j,2] then SumT := SumT - 1.0; + Term1 := sqrt((NCases * (NCases-1)) / 2.0 - Ty); + Term2 := sqrt((NCases * (Ncases-1)) / 2.0 - Tz); + denominator := Term1 * Term2; + TauYZ := SumT / denominator; + PartialTau := (TauXY - TauXZ * TauYZ) / + (sqrt(1.0 - sqr(TauXZ)) * sqrt(1.0 - sqr(TauYZ))); + end; + + // do significance tests + stddev := sqrt( (2.0 * ( 2.0 * NCases + 5)) / (9.0 * NCases * (NCases - 1.0))); + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Kendall Tau for File: ' + OS3MainFrm.FileNameEdit.Text); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Kendall Tau for variables ' + ColLabels[0] + ' and ' + ColLabels[1]); + z := abs(TauXY / stddev); + probability := 1.0 - probz(z); + outline := format('Tau = %8.4f z = %8.3f probability > |z| = %4.3f',[TauXY,z,probability]); + OutPutFrm.RichEdit.Lines.Add(outline); + if NoSelected > 2 then + begin + OutPutFrm.RichEdit.Lines.Add(''); + z := abs(TauXZ / stddev); + probability := 1.0 - probz(z); + OutPutFrm.RichEdit.Lines.Add('Kendall Tau for variables ' + ColLabels[0] + ' and ' + ColLabels[2]); + outline := format('Tau = %8.4f z = %8.3f probability > |z| = %4.3f',[TauXZ,z,probability]); + OutPutFrm.RichEdit.Lines.Add(outline); + z := abs(TauYZ / stddev); + probability := 1.0 - probz(z); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Kendall Tau for variables ' + ColLabels[1] + ' and ' + ColLabels[2]); + outline := format('Tau = %8.4f z = %8.3f probability > |z| = %4.3f',[TauYZ,z,probability]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + outline := format('Partial Tau = %8.4f',[PartialTau]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('NOTE: Probabilities are for large N (>10)'); + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + + ColNoSelected := nil; + RowLabels := nil; + ColLabels := nil; + X := nil; + Ranks := nil; + index := nil; +end; + +initialization + {$I kendalltauunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/kmeansunit.lfm b/applications/lazstats/source_orig/kmeansunit.lfm new file mode 100644 index 000000000..d3b49a77f --- /dev/null +++ b/applications/lazstats/source_orig/kmeansunit.lfm @@ -0,0 +1,253 @@ +object kmeansfrm: Tkmeansfrm + Left = 157 + Height = 398 + Top = 115 + Width = 443 + Caption = 'k Means Clustering ' + ClientHeight = 398 + ClientWidth = 443 + OnShow = FormShow + LCLVersion = '0.9.28.2' + object Label1: TLabel + Left = 9 + Height = 14 + Top = 8 + Width = 112 + Caption = 'No. of Desired Clusters' + ParentColor = False + end + object Label2: TLabel + Left = 9 + Height = 14 + Top = 40 + Width = 81 + Caption = 'No. of Iterations' + ParentColor = False + end + object Label3: TLabel + Left = 9 + Height = 14 + Top = 112 + Width = 90 + Caption = 'Available Variables' + ParentColor = False + end + object Label4: TLabel + Left = 249 + Height = 14 + Top = 112 + Width = 88 + Caption = 'Selected Variables' + ParentColor = False + end + object NoClustersEdit: TEdit + Left = 130 + Height = 21 + Top = 1 + Width = 54 + TabOrder = 0 + Text = 'NoClustersEdit' + end + object ItersEdit: TEdit + Left = 129 + Height = 21 + Top = 33 + Width = 55 + TabOrder = 1 + Text = 'ItersEdit' + end + object GroupBox1: TGroupBox + Left = 262 + Height = 101 + Top = 1 + Width = 160 + Caption = 'Analysis Optons' + ClientHeight = 83 + ClientWidth = 156 + TabOrder = 2 + object StdChkBox: TCheckBox + Left = 7 + Height = 17 + Top = 5 + Width = 123 + Caption = 'Standardize Variables' + TabOrder = 0 + end + object RepChkBox: TCheckBox + Left = 25 + Height = 17 + Top = 31 + Width = 114 + Caption = 'Replace Grid Values' + TabOrder = 1 + end + object DescChkBox: TCheckBox + Left = 10 + Height = 17 + Top = 57 + Width = 119 + Caption = 'Descriptive Statistics' + TabOrder = 2 + end + end + object VarList: TListBox + Left = 7 + Height = 208 + Top = 128 + Width = 176 + ItemHeight = 0 + MultiSelect = True + TabOrder = 3 + end + object VarInBtn: TBitBtn + Left = 192 + Height = 34 + Top = 128 + Width = 45 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + OnClick = VarInBtnClick + TabOrder = 4 + end + object VarOutBtn: TBitBtn + Left = 192 + Height = 34 + Top = 168 + Width = 45 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + OnClick = VarOutBtnClick + TabOrder = 5 + end + object AllBtn: TBitBtn + Left = 192 + Height = 34 + Top = 224 + Width = 45 + Caption = 'ALL' + OnClick = AllBtnClick + TabOrder = 6 + end + object ListBox1: TListBox + Left = 248 + Height = 208 + Top = 128 + Width = 174 + ItemHeight = 0 + TabOrder = 7 + end + object ResetBtn: TButton + Left = 96 + Height = 28 + Top = 352 + Width = 75 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 8 + end + object CancelBtn: TButton + Left = 184 + Height = 28 + Top = 352 + Width = 75 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 9 + end + object ComputeBtn: TButton + Left = 264 + Height = 28 + Top = 352 + Width = 75 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 10 + end + object ReturnBtn: TButton + Left = 347 + Height = 28 + Top = 352 + Width = 75 + Caption = 'Return' + ModalResult = 1 + TabOrder = 11 + end + object HelpBtn: TButton + Tag = 129 + Left = 9 + Height = 28 + Top = 352 + Width = 81 + Caption = 'Help' + OnClick = HelpBtnClick + TabOrder = 12 + end +end diff --git a/applications/lazstats/source_orig/kmeansunit.lrs b/applications/lazstats/source_orig/kmeansunit.lrs new file mode 100644 index 000000000..6b1e4344b --- /dev/null +++ b/applications/lazstats/source_orig/kmeansunit.lrs @@ -0,0 +1,144 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('Tkmeansfrm','FORMDATA',[ + 'TPF0'#10'Tkmeansfrm'#9'kmeansfrm'#4'Left'#3#157#0#6'Height'#3#142#1#3'Top'#2 + +'s'#5'Width'#3#187#1#7'Caption'#6#19'k Means Clustering '#12'ClientHeight'#3 + +#142#1#11'ClientWidth'#3#187#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.' + +'9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#14#3'Top'#2#8#5'Width' + +#2'p'#7'Caption'#6#23'No. of Desired Clusters'#11'ParentColor'#8#0#0#6'TLabe' + +'l'#6'Label2'#4'Left'#2#9#6'Height'#2#14#3'Top'#2'('#5'Width'#2'Q'#7'Caption' + +#6#17'No. of Iterations'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2 + +#9#6'Height'#2#14#3'Top'#2'p'#5'Width'#2'Z'#7'Caption'#6#19'Available Variab' + +'les'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#249#0#6'Height'#2 + +#14#3'Top'#2'p'#5'Width'#2'X'#7'Caption'#6#18'Selected Variables'#11'ParentC' + +'olor'#8#0#0#5'TEdit'#14'NoClustersEdit'#4'Left'#3#130#0#6'Height'#2#21#3'To' + +'p'#2#1#5'Width'#2'6'#8'TabOrder'#2#0#4'Text'#6#14'NoClustersEdit'#0#0#5'TEd' + +'it'#9'ItersEdit'#4'Left'#3#129#0#6'Height'#2#21#3'Top'#2'!'#5'Width'#2'7'#8 + +'TabOrder'#2#1#4'Text'#6#9'ItersEdit'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3 + +#6#1#6'Height'#2'e'#3'Top'#2#1#5'Width'#3#160#0#7'Caption'#6#15'Analysis Opt' + +'ons'#12'ClientHeight'#2'S'#11'ClientWidth'#3#156#0#8'TabOrder'#2#2#0#9'TChe' + +'ckBox'#9'StdChkBox'#4'Left'#2#7#6'Height'#2#17#3'Top'#2#5#5'Width'#2'{'#7'C' + +'aption'#6#21'Standardize Variables'#8'TabOrder'#2#0#0#0#9'TCheckBox'#9'RepC' + +'hkBox'#4'Left'#2#25#6'Height'#2#17#3'Top'#2#31#5'Width'#2'r'#7'Caption'#6#19 + +'Replace Grid Values'#8'TabOrder'#2#1#0#0#9'TCheckBox'#10'DescChkBox'#4'Left' + +#2#10#6'Height'#2#17#3'Top'#2'9'#5'Width'#2'w'#7'Caption'#6#22'Descriptive S' + +'tatistics'#8'TabOrder'#2#2#0#0#0#8'TListBox'#7'VarList'#4'Left'#2#7#6'Heigh' + +'t'#3#208#0#3'Top'#3#128#0#5'Width'#3#176#0#10'ItemHeight'#2#0#11'MultiSelec' + +'t'#9#8'TabOrder'#2#3#0#0#7'TBitBtn'#8'VarInBtn'#4'Left'#3#192#0#6'Height'#2 + +'"'#3'Top'#3#128#0#5'Width'#2'-'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0 + +#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0 + +#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161 + +'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255 + +'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255 + +#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157 + +#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195 + +#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0 + +#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255 + +#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144 + +#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201 + +#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190 + +'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255 + +'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#7'OnClick'#7#13'VarInBtnClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#9'VarOutBtn'#4 + +'Left'#3#192#0#6'Height'#2'"'#3'Top'#3#168#0#5'Width'#2'-'#10'Glyph.Data'#10 + +':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0 + +' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A' + +#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255 + +#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213 + +#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135 + +#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r' + +#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138 + +#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207 + +#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}' + +#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0 + +'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S' + +#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';' + +#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#7'OnClick'#7#14'VarOutBtnClick'#8'TabOrder'#2#5 + +#0#0#7'TBitBtn'#6'AllBtn'#4'Left'#3#192#0#6'Height'#2'"'#3'Top'#3#224#0#5'Wi' + +'dth'#2'-'#7'Caption'#6#3'ALL'#7'OnClick'#7#11'AllBtnClick'#8'TabOrder'#2#6#0 + ,#0#8'TListBox'#8'ListBox1'#4'Left'#3#248#0#6'Height'#3#208#0#3'Top'#3#128#0#5 + +'Width'#3#174#0#10'ItemHeight'#2#0#8'TabOrder'#2#7#0#0#7'TButton'#8'ResetBtn' + +#4'Left'#2'`'#6'Height'#2#28#3'Top'#3'`'#1#5'Width'#2'K'#7'Caption'#6#5'Rese' + +'t'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#8#0#0#7'TButton'#9'CancelBt' + +'n'#4'Left'#3#184#0#6'Height'#2#28#3'Top'#3'`'#1#5'Width'#2'K'#7'Caption'#6#6 + +'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#9#0#0#7'TButton'#10'ComputeBtn'#4 + +'Left'#3#8#1#6'Height'#2#28#3'Top'#3'`'#1#5'Width'#2'K'#7'Caption'#6#7'Compu' + +'te'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#10#0#0#7'TButton'#9'Retu' + +'rnBtn'#4'Left'#3'['#1#6'Height'#2#28#3'Top'#3'`'#1#5'Width'#2'K'#7'Caption' + +#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#11#0#0#7'TButton'#7'HelpBtn'#3 + +'Tag'#3#129#0#4'Left'#2#9#6'Height'#2#28#3'Top'#3'`'#1#5'Width'#2'Q'#7'Capti' + +'on'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#12#0#0#0 +]); diff --git a/applications/lazstats/source_orig/kmeansunit.pas b/applications/lazstats/source_orig/kmeansunit.pas new file mode 100644 index 000000000..e9f5a97bc --- /dev/null +++ b/applications/lazstats/source_orig/kmeansunit.pas @@ -0,0 +1,867 @@ +unit kmeansunit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, MainUnit, functionslib, Globals, matrixlib, dataprocs, + outputunit, contexthelpunit; + +type + + { Tkmeansfrm } + + Tkmeansfrm = class(TForm) + DescChkBox: TCheckBox; + HelpBtn: TButton; + VarInBtn: TBitBtn; + VarOutBtn: TBitBtn; + AllBtn: TBitBtn; + ResetBtn: TButton; + CancelBtn: TButton; + ComputeBtn: TButton; + ReturnBtn: TButton; + StdChkBox: TCheckBox; + RepChkBox: TCheckBox; + GroupBox1: TGroupBox; + ItersEdit: TEdit; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + ListBox1: TListBox; + VarList: TListBox; + NoClustersEdit: TEdit; + Label1: TLabel; + procedure AllBtnClick(Sender: TObject); + procedure ComputeBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure HelpBtnClick(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + procedure VarInBtnClick(Sender: TObject); + procedure VarOutBtnClick(Sender: TObject); + private + { private declarations } + procedure KMNS(VAR A : DblDyneMat; M, N : integer; + VAR C : DblDyneMat; K : integer; VAR IC1 : IntDyneVec; + VAR IC2 : IntDyneVec; VAR NC : IntDyneVec; + VAR AN1 : DblDyneVec; VAR AN2 : DblDyneVec; + VAR NCP : IntDyneVec; VAR D : DblDyneVec; + VAR ITRAN : IntDyneVec; VAR LIVE : IntDyneVec; + ITER : integer; VAR WSS : DblDyneVec; IFAULT : integer); + procedure OPTRA(VAR A : DblDyneMat; M, N : integer; + VAR C : DblDyneMat; K : integer; + VAR IC1 : IntDyneVec; VAR IC2 : IntDyneVec; + VAR NC : IntDyneVec; VAR AN1 : DblDyneVec; + VAR AN2 : DblDyneVec; VAR NCP : IntDyneVec; + VAR D : DblDyneVec; VAR ITRAN : IntDyneVec; + VAR LIVE : IntDyneVec; INDX : integer); + procedure QTRAN(VAR A : DblDyneMat; M, N : integer; + VAR C : DblDyneMat; K : integer; + VAR IC1 : IntDyneVec; VAR IC2 : IntDyneVec; + VAR NC : IntDyneVec; VAR AN1 : DblDyneVec; + VAR AN2 : DblDyneVec; VAR NCP : IntDyneVec; + VAR D : DblDyneVec; VAR ITRAN : IntDyneVec; + INDX : integer); + + public + { public declarations } + end; + +var + kmeansfrm: Tkmeansfrm; + +implementation + +{ Tkmeansfrm } + +procedure Tkmeansfrm.ResetBtnClick(Sender: TObject); +VAR cellstring : string; + i : integer; +begin + VarList.Clear; + ListBox1.Clear; + for i := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[i,0]; + VarList.Items.Add(cellstring); + end; + RepChkBox.Checked := false; + StdChkBox.Checked := true; + VarOutBtn.Enabled := false; + DescChkBox.Checked := false; + NoClustersEdit.Text := ''; + ItersEdit.Text := '100'; +end; + +procedure Tkmeansfrm.VarInBtnClick(Sender: TObject); +VAR + index, count, i : integer; + cellstring : string; +begin + count := 0; + index := ListBox1.Items.Count; + for i := 0 to index - 1 do + begin + if (VarList.Selected[i]) then + begin + cellstring := VarList.Items.strings[i]; + ListBox1.Items.Add(cellstring); + count := count + 1; + end; + end; + + while (count > 0) do + begin + for i := 0 to VarList.Items.Count - 1 do + begin + if (VarList.Selected[i]) then + begin + VarList.Items.Delete(i); + count := count - 1; + end; + end; + end; + VarOutBtn.Enabled := true; +end; + +procedure Tkmeansfrm.VarOutBtnClick(Sender: TObject); +VAR index : integer; + cellstring : string; +begin + index := ListBox1.ItemIndex; + cellstring := ListBox1.Items.Strings[index]; + VarList.Items.Add(cellstring); + ListBox1.Items.Delete(index); +end; + +procedure Tkmeansfrm.FormShow(Sender: TObject); +begin + ResetBtnClick(self); +end; + +procedure Tkmeansfrm.HelpBtnClick(Sender: TObject); +begin + ContextHelpForm.HelpMessage((Sender as TButton).tag); +end; + +procedure Tkmeansfrm.AllBtnClick(Sender: TObject); +VAR + index, noitems : integer; + cellstring : string; +begin + noitems := VarList.Items.Count; + for index := 0 to noitems - 1 do + begin + cellstring := VarList.Items.Strings[index]; + ListBox1.Items.Add(cellstring); + end; + VarList.Clear; + VarOutBtn.Enabled := true; +end; + +procedure Tkmeansfrm.ComputeBtnClick(Sender: TObject); +VAR + i, j, L, Ncols, N, M, K,IFAULT, ITER, result, intvalue, col : integer; + center, itemp : integer; + IC1, IC2, NC, NCP, ITRAN, LIVE, ColSelected : IntDyneVec; + A, C : DblDyneMat; + D, AN1, AN2, WSS, DT : DblDyneVec; + cellstring, strvalue : string; + outline : string; + strval : string; + varlabels, rowlabels : StrDyneVec; + dblvalue, Mean, stddev : double; +label cleanup; + +begin + Ncols := ListBox1.Items.Count; + if (Ncols <= 0) then + begin + ShowMessage('ERROR! No variables selected to cluster.'); + exit; + end; + + N := Ncols; + M := NoCases; + K := StrToInt(NoClustersEdit.Text); + IFAULT := 0; + ITER := StrToInt(ItersEdit.Text); + + SetLength(varlabels,Ncols); + SetLength(rowlabels,NoCases); + SetLength(ColSelected,Ncols); + SetLength(A,M+1,N+1); + SetLength(C,K+1,N+1); + SetLength(D,M+1); + SetLength(AN1,K+1); + SetLength(AN2,K+1); + SetLength(WSS,K+1); + SetLength(DT,3); + SetLength(IC1,M+1); + SetLength(IC2,M+1); + SetLength(NC,K+1); + SetLength(NCP,K+1); + SetLength(ITRAN,K+1); + SetLength(LIVE,K+1); + + if (K <= 0) then + begin + ShowMessage('ERROR! You must enter the desired number of clusters.'); + goto cleanup; + end; + + // initialize arrays + for i := 1 to K do + begin + AN1[i] := 0.0; + AN2[i] := 0.0; + WSS[i] := 0.0; + NC[i] := 0; + NCP[i] := 0; + ITRAN[i] := 0; + LIVE[i] := 0; + for j := 1 to N do C[i,j] := 0.0; + end; + for i := 1 to M do + begin + IC1[i] := 0; + IC2[i] := 0; + D[i] := 0.0; + end; + + //Get labels and columns of selected variables + for i := 0 to Ncols - 1 do + begin + cellstring := ListBox1.Items.Strings[i]; + for j := 0 to NoVariables - 1 do + begin + if (cellstring = OS3MainFrm.DataGrid.Cells[j+1,0]) then + begin + varlabels[i] := cellstring; + ColSelected[i] := j+1; + end; + end; + end; + + // Get labels of rows + for i := 0 to NoCases - 1 do rowlabels[i] := OS3MainFrm.DataGrid.Cells[0,i+1]; + + // read the data + for i := 1 to M do + begin + if (NOT GoodRecord(i,N,ColSelected)) then continue; + for j := 1 to N do + begin + col := ColSelected[j-1]; + A[i,j] := StrToFloat(OS3MainFrm.DataGrid.Cells[col,i]); + end; + end; + + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('K-Means Clustering. Adapted from AS 136 APPL. STATIST. (1979) VOL.28, NO.1'); + OutPutFrm.RichEdit.Lines.Add(''); + outline := format('File := %s',[OS3MainFrm.FileNameEdit.Text]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('No. Cases := %d, No. Variables := %d, No. Clusters := %d',[M,N,K]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + + // transform to z scores if needed + if (StdChkBox.Checked = true) then + begin + for j := 1 to N do + begin + Mean := 0.0; + stddev := 0.0; + for i := 1 to M do + begin + Mean := Mean + A[i,j]; + stddev := stddev + (A[i,j] * A[i,j]); + end; + stddev := stddev - Mean * Mean / M; + stddev := stddev / (M - 1); + Mean := Mean / M; + if (DescChkBox.Checked) then + begin + outline := format('Mean := %8.3f, Std.Dev. := %8.3f for %s',[Mean,stddev,varlabels[j-1]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + for i := 1 to M do + begin + A[i,j] := (A[i,j] - Mean) / stddev; + if (RepChkBox.Checked = true) then + begin + col := ColSelected[j-1]; + outline := format('%8.5f',[A[i,j]]); + OS3MainFrm.DataGrid.Cells[col,i] := outline; + end; + end; + end; + end; + + // Now enter initial points + for L := 1 to K do + begin + center := 1 + (L-1) * (M div K); // initial cluster center + for j := 1 to N do C[L,j] := A[center,j]; + end; + + // do analysis + KMNS(A,M,N,C,K,IC1,IC2,NC,AN1,AN2,NCP,D,ITRAN,LIVE,ITER,WSS,IFAULT); + + // show results + + // sort subjects by cluster + for i := 1 to M do IC2[i] := i; // store ids in here + for i := 1 to M - 1 do + begin + for j := i+1 to M do + begin + if (IC1[i] > IC1[j]) then // swap these clusters and ids + begin + itemp := IC1[i]; + IC1[i] := IC1[j]; + IC1[j] := itemp; + itemp := IC2[i]; + IC2[i] := IC2[j]; + IC2[j] := itemp; + end; + end; + end; + + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('NUMBER OF SUBJECTS IN EACH CLUSTER'); + for i := 1 to K do + begin + outline := format('Cluster := %d with %d cases.',[i,NC[i]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('PLACEMENT OF SUBJECTS IN CLUSTERS'); + OutPutFrm.RichEdit.Lines.Add('CLUSTER SUBJECT'); + for i := 1 to M do + begin + outline := format(' %3d %3d',[IC1[i],IC2[i]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('AVERAGE VARIABLE VALUES BY CLUSTER'); + outline := ' VARIABLES'; + OutPutFrm.RichEdit.Lines.Add(outline); + outline := 'CLUSTER'; + for j := 1 to N do + begin + strval := format(' %3d ',[j]); + outline := outline + strval; + end; + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(' '); + for i := 1 to K do + begin + outline := format(' %3d ',[i]); + for j := 1 to N do + begin + strval := format('%5.2f ',[C[i,j]]); + outline := outline + strval; + end; + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('WITHIN CLUSTER SUMS OF SQUARES'); + for i := 1 to K do + begin + outline := format('Cluster %d := %6.3f',[i,WSS[i]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + + OutPutFrm.ShowModal; + + // cleanup +cleanup: + LIVE := nil; + ITRAN := nil; + NCP := nil; + NC := nil; + IC2 := nil; + IC1 := nil; + DT := nil; + WSS := nil; + AN2 := nil; + AN1 := nil; + D := nil; + C := nil; + A := nil; + ColSelected := nil; + rowlabels := nil; + varlabels := nil; +end; + +procedure Tkmeansfrm.KMNS(VAR A : DblDyneMat; M, N : integer; + VAR C : DblDyneMat; K : integer; VAR IC1 : IntDyneVec; + VAR IC2 : IntDyneVec; VAR NC : IntDyneVec; + VAR AN1 : DblDyneVec; VAR AN2 : DblDyneVec; + VAR NCP : IntDyneVec; VAR D : DblDyneVec; + VAR ITRAN : IntDyneVec; VAR LIVE : IntDyneVec; + ITER : integer; VAR WSS : DblDyneVec; IFAULT : integer); +VAR + DT : array[0..2] of double; + BIG : double; + ZERO : double; + ONE : double; + DA, DB, DC, TEMP, AA : double; + L, II, INDX, I, J, IL, IJ : integer; +label cont50, cont40, cont150; + +begin + // SUBROUTINE KMNS(A, M, N, C, K, IC1, IC2, NC, AN1, AN2, NCP, D, + // * ITRAN, LIVE, ITER, WSS, IFAULT) + // + // ALGORITHM AS 136 APPL. STATIST. (1979) VOL.28, NO.1 + // Divide M points in N-dimensional space into K clusters so that + // the within cluster sum of squares is minimized. + // + // INTEGER IC1(M), IC2(M), NC(K), NCP(K), ITRAN(K), LIVE(K) + // REAL A(M,N), D(M), C(K,N), AN1(K), AN2(K), WSS(K), DT(2) + // REAL ZERO, ONE + // + // Define BIG to be a very large positive number + // + // DATA BIG /1.E30/, ZERO /0.0/, ONE /1.0/ + // + BIG := 1.0e30; + ZERO := 0.0; + ONE := 1.0; + IFAULT := 3; + if ((K <= 1) or (K >= M)) then + begin + ShowMessage('The no. of clusters must be less than the no. of variables.'); + exit; + end; + + // For each point I, find its two closest centres, IC1(I) and + // IC2(I). Assign it to IC1(I). + // + for I := 1 to M do + begin + IC1[I] := 1; + IC2[I] := 2; + for IL := 1 to 2 do + begin + DT[IL] := ZERO; + for J := 1 to N do + begin + DA := A[I,J] - C[IL,J]; + DT[IL] := DT[IL] + (DA * DA); //(squared difference for this comparison) + end; // 10 CONTINUE + end; // 10 CONTINUE + if (DT[1] > DT[2]) then // THEN swap + begin + IC1[I] := 2; + IC2[I] := 1; + TEMP := DT[1]; + DT[1] := DT[2]; + DT[2] := TEMP; + end; // END IF + for L := 3 to K do // (remaining clusters) + begin + DB := ZERO; + for J := 1 to N do // (variables) + begin + DC := A[I,J] - C[L,J]; + DB := DB + DC * DC; + if (DB >= DT[2]) then goto cont50; + end; + if (DB < DT[1]) then goto cont40; + DT[2] := DB; + IC2[I] := L; + goto cont50; +cont40: DT[2] := DT[1]; + IC2[I] := IC1[I]; + DT[1] := DB; + IC1[I] := L; +cont50: end; + end; // 50 CONTINUE (next case) + + // Update cluster centres to be the average of points contained + // within them. + // + for L := 1 to K do // (clusters) + begin + NC[L] := 0; + for J := 1 to N do C[L,J] := ZERO; //(initialize clusters) + end; + for I := 1 to M do // (subjects) + begin + L := IC1[I]; // which cluster the Ith case is in + NC[L] := NC[L] + 1; // no. in the cluster L + for J := 1 to N do C[L,J] := C[L,J] + A[I,J]; // sum of var. values in the cluster L + end; + + // Check to see if there is any empty cluster at this stage + // + for L := 1 to K do + begin + if (NC[L] = 0) then + begin + IFAULT := 1; + exit; + end; + AA := NC[L]; + for J := 1 to N do C[L,J] := C[L,J] / AA; // average the values in the cluster + + // Initialize AN1, AN2, ITRAN & NCP + // AN1(L) := NC(L) / (NC(L) - 1) + // AN2(L) := NC(L) / (NC(L) + 1) + // ITRAN(L) := 1 if cluster L is updated in the quick-transfer stage, + // := 0 otherwise + // In the optimal-transfer stage, NCP(L) stores the step at which + // cluster L is last updated. + // In the quick-transfer stage, NCP(L) stores the step at which + // cluster L is last updated plus M. + // + AN2[L] := AA / (AA + ONE); + AN1[L] := BIG; + if (AA > ONE) then AN1[L] := AA / (AA - ONE); + ITRAN[L] := 1; + NCP[L] := -1; + end; + INDX := 0; + for IJ := 1 to ITER do + begin + // + // In this stage, there is only one pass through the data. Each + // point is re-allocated, if necessary, to the cluster that will + // induce the maximum reduction in within-cluster sum of squares. + // + OPTRA(A, M, N, C, K, IC1, IC2, NC, AN1, AN2, NCP, D, ITRAN, LIVE, INDX); + // + // Stop if no transfer took place in the last M optimal transfer + // steps. + // + if (INDX = M) then goto cont150; + // + // Each point is tested in turn to see if it should be re-allocated + // to the cluster to which it is most likely to be transferred, + // IC2(I), from its present cluster, IC1(I). Loop through the + // data until no further change is to take place. + // + QTRAN(A, M, N, C, K, IC1, IC2, NC, AN1, AN2, NCP, D, ITRAN, INDX); + // + // If there are only two clusters, there is no need to re-enter the + // optimal transfer stage. + // + if (K = 2) then goto cont150; + // + // NCP has to be set to 0 before entering OPTRA. + // + for L := 1 to K do NCP[L] := 0; + end; + // + // Since the specified number of iterations has been exceeded, set + // IFAULT := 2. This may indicate unforeseen looping. + // + IFAULT := 2; + // + // Compute within-cluster sum of squares for each cluster. + // +cont150: + for L := 1 to K do + begin + WSS[L] := ZERO; + for J := 1 to N do C[L,J] := ZERO; + end; + for I := 1 to M do + begin + II := IC1[I]; + for J := 1 to N do C[II,J] := C[II,J] + A[I,J]; + end; + for J := 1 to N do + begin + for L := 1 to K do C[L,J] := C[L,J] / (NC[L]); + for I := 1 to M do + begin + II := IC1[I]; + DA := A[I,J] - C[II,J]; + WSS[II] := WSS[II] + DA * DA; + end; + end; // 190 CONTINUE +end; + + +procedure Tkmeansfrm.OPTRA(VAR A : DblDyneMat; M, N : integer; + VAR C : DblDyneMat; K : integer; + VAR IC1 : IntDyneVec; VAR IC2 : IntDyneVec; + VAR NC : IntDyneVec; VAR AN1 : DblDyneVec; + VAR AN2 : DblDyneVec; VAR NCP : IntDyneVec; + VAR D : DblDyneVec; VAR ITRAN : IntDyneVec; + VAR LIVE : IntDyneVec; INDX : integer); +VAR + ZERO, ONE, BIG,DE, DF, DD, DC, DB, DA, R2, RR, AL1, AL2, ALT, ALW : double; + I, J, L, L1, L2, LL : integer; +label cont30, cont60, cont70, cont90; + +begin + // SUBROUTINE OPTRA(A, M, N, C, K, IC1, IC2, NC, AN1, AN2, NCP, D, + // * ITRAN, LIVE, INDX) + // + // ALGORITHM AS 136.1 APPL. STATIST. (1979) VOL.28, NO.1 + // + // This is the optimal transfer stage. + // + // Each point is re-allocated, if necessary, to the cluster that + // will induce a maximum reduction in the within-cluster sum of + // squares. + // + // INTEGER IC1(M), IC2(M), NC(K), NCP(K), ITRAN(K), LIVE(K) + // REAL A(M,N), D(M), C(K,N), AN1(K), AN2(K), ZERO, ONE + // + // Define BIG to be a very large positive number. + // + // DATA BIG /1.0E30/, ZERO /0.0/, ONE/1.0/ + // + // If cluster L is updated in the last quick-transfer stage, it + // belongs to the live set throughout this stage. Otherwise, at + // each step, it is not in the live set if it has not been updated + // in the last M optimal transfer steps. + // + + ZERO := 0.0; + ONE := 1.0; + BIG := 1.0e30; + + for L := 1 to K do + begin + if (ITRAN[L] = 1) then LIVE[L] := M + 1; + end; // 10 CONTINUE + + for I := 1 to M do + begin + INDX := INDX + 1; + L1 := IC1[I]; + L2 := IC2[I]; + LL := L2; + // + // If point I is the only member of cluster L1, no transfer. + // + if (NC[L1] = 1) then goto cont90; // GO TO 90 + // + // If L1 has not yet been updated in this stage, no need to + // re-compute D(I). + // + if (NCP[L1] = 0) then goto cont30; // GO TO 30 + DE := ZERO; + for J := 1 to N do + begin + DF := A[I,J] - C[L1,J]; + DE := DE + DF * DF; + end; + D[I] := DE * AN1[L1]; + // + // Find the cluster with minimum R2. + // +cont30: + DA := ZERO; + for J := 1 to N do + begin + DB := A[I,J] - C[L2,J]; + DA := DA + DB * DB; + end; + R2 := DA * AN2[L2]; + for L := 1 to K do + begin + // + // If I >:= LIVE(L1), then L1 is not in the live set. If this is + // true, we only need to consider clusters that are in the live set + // for possible transfer of point I. Otherwise, we need to consider + // all possible clusters. + // + if ((I >= LIVE[L1]) and (I >= LIVE[L]) or (L = L1) or (L = LL)) then goto cont60; + RR := R2 / AN2[L]; + DC := ZERO; + for J := 1 to N do + begin + DD := A[I,J] - C[L,J]; + DC := DC + DD * DD; + if (DC >= RR) then goto cont60; + end; + R2 := DC * AN2[L]; + L2 := L; +cont60: + end; // 60 CONTINUE + if (R2 < D[I]) then goto cont70; + // + // If no transfer is necessary, L2 is the new IC2(I). + // + IC2[I] := L2; + goto cont90; // GO TO 90 + // + // Update cluster centres, LIVE, NCP, AN1 & AN2 for clusters L1 and + // L2, and update IC1(I) & IC2(I). + // +cont70: + INDX := 0; + LIVE[L1] := M + I; + LIVE[L2] := M + I; + NCP[L1] := I; + NCP[L2] := I; + AL1 := NC[L1]; + ALW := AL1 - ONE; + AL2 := NC[L2]; + ALT := AL2 + ONE; + for J := 1 to N do + begin + C[L1,J] := (C[L1,J] * AL1 - A[I,J]) / ALW; + C[L2,J] := (C[L2,J] * AL2 + A[I,J]) / ALT; + end; + NC[L1] := NC[L1] - 1; + NC[L2] := NC[L2] + 1; + AN2[L1] := ALW / AL1; + AN1[L1] := BIG; + if (ALW > ONE) then AN1[L1] := ALW / (ALW - ONE); + AN1[L2] := ALT / AL2; + AN2[L2] := ALT / (ALT + ONE); + IC1[I] := L2; + IC2[I] := L1; +cont90: + // 90 CONTINUE + if (INDX = M) then exit; + end; // 100 CONTINUE + for L := 1 to K do + begin + // + // ITRAN(L) := 0 before entering QTRAN. Also, LIVE(L) has to be + // decreased by M before re-entering OPTRA. + // + ITRAN[L] := 0; + LIVE[L] := LIVE[L] - M; + end; // 110 CONTINUE +end; + +procedure Tkmeansfrm.QTRAN(VAR A : DblDyneMat; M, N : integer; + VAR C : DblDyneMat; K : integer; + VAR IC1 : IntDyneVec; VAR IC2 : IntDyneVec; + VAR NC : IntDyneVec; VAR AN1 : DblDyneVec; + VAR AN2 : DblDyneVec; VAR NCP : IntDyneVec; + VAR D : DblDyneVec; VAR ITRAN : IntDyneVec; + INDX : integer); +VAR + BIG, ZERO, ONE, DA, DB, DE, DD, R2, AL1, ALW, AL2, ALT : double; + I, J, L, ICOUN, ISTEP, L1, L2 : integer; +label cont10, cont30, cont60; + +begin + // SUBROUTINE QTRAN(A, M, N, C, K, IC1, IC2, NC, AN1, AN2, NCP, D, + // * ITRAN, INDX) + // + // ALGORITHM AS 136.2 APPL. STATIST. (1979) VOL.28, NO.1 + // + // This is the quick transfer stage. + // IC1(I) is the cluster which point I belongs to. + // IC2(I) is the cluster which point I is most likely to be + // transferred to. + // For each point I, IC1(I) & IC2(I) are switched, if necessary, to + // reduce within-cluster sum of squares. The cluster centres are + // updated after each step. + // + // INTEGER IC1(M), IC2(M), NC(K), NCP(K), ITRAN(K) + // REAL A(M,N), D(M), C(K,N), AN1(K), AN2(K), ZERO, ONE + // + // Define BIG to be a very large positive number + // + // DATA BIG /1.0E30/, ZERO /0.0/, ONE /1.0/ + // + // In the optimal transfer stage, NCP(L) indicates the step at which + // cluster L is last updated. In the quick transfer stage, NCP(L) + // is equal to the step at which cluster L is last updated plus M. + // + BIG := 1.0e30; + ZERO := 0.0; + ONE := 1.0; + ICOUN := 0; + ISTEP := 0; +cont10: + for I := 1 to M do + begin + ICOUN := ICOUN + 1; + ISTEP := ISTEP + 1; + L1 := IC1[I]; + L2 := IC2[I]; + // + // If point I is the only member of cluster L1, no transfer. + // + if (NC[L1] = 1) then goto cont60; + // + // If ISTEP > NCP(L1), no need to re-compute distance from point I to + // cluster L1. Note that if cluster L1 is last updated exactly M + // steps ago, we still need to compute the distance from point I to + // cluster L1. + // + if (ISTEP > NCP[L1]) then goto cont30; + DA := ZERO; + for J := 1 to N do + begin + DB := A[I,J] - C[L1,J]; + DA := DA + DB * DB; + end; + D[I] := DA * AN1[L1]; + // + // If ISTEP >:= both NCP(L1) & NCP(L2) there will be no transfer of + // point I at this step. + // +cont30: + if ((ISTEP >= NCP[L1]) and (ISTEP >= NCP[L2])) then goto cont60; + R2 := D[I] / AN2[L2]; + DD := ZERO; + for J := 1 to N do + begin + DE := A[I,J] - C[L2,J]; + DD := DD + DE * DE; + if (DD >= R2) then goto cont60; + end; // 40 CONTINUE + // + // Update cluster centres, NCP, NC, ITRAN, AN1 & AN2 for clusters + // L1 & L2. Also update IC1(I) & IC2(I). Note that if any + // updating occurs in this stage, INDX is set back to 0. + // + ICOUN := 0; + INDX := 0; + ITRAN[L1] := 1; + ITRAN[L2] := 1; + NCP[L1] := ISTEP + M; + NCP[L2] := ISTEP + M; + AL1 := NC[L1]; + ALW := AL1 - ONE; + AL2 := NC[L2]; + ALT := AL2 + ONE; + for J := 1 to N do + begin + C[L1,J] := (C[L1,J] * AL1 - A[I,J]) / ALW; + C[L2,J] := (C[L2,J] * AL2 + A[I,J]) / ALT; + end; // 50 CONTINUE + NC[L1] := NC[L1] - 1; + NC[L2] := NC[L2] + 1; + AN2[L1] := ALW / AL1; + AN1[L1] := BIG; + if (ALW > ONE) then AN1[L1] := ALW / (ALW - ONE); + AN1[L2] := ALT / AL2; + AN2[L2] := ALT / (ALT + ONE); + IC1[I] := L2; + IC2[I] := L1; + // + // If no re-allocation took place in the last M steps, return. + // +cont60: + if (ICOUN = M) then exit; + end; // 70 CONTINUE + goto cont10; +end; + +initialization + {$I kmeansunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/kr21unit.lfm b/applications/lazstats/source_orig/kr21unit.lfm new file mode 100644 index 000000000..973090c2e --- /dev/null +++ b/applications/lazstats/source_orig/kr21unit.lfm @@ -0,0 +1,111 @@ +object KR21Frm: TKR21Frm + Left = 151 + Height = 227 + Top = 98 + Width = 204 + Caption = 'Kuder-Richarson #21' + ClientHeight = 227 + ClientWidth = 204 + OnShow = FormShow + LCLVersion = '0.9.26.2' + object Label1: TLabel + Left = 7 + Height = 14 + Top = 16 + Width = 120 + Caption = 'Maximum Score Possible:' + ParentColor = False + end + object Label2: TLabel + Left = 7 + Height = 14 + Top = 46 + Width = 118 + Caption = 'Mean of he Test Scores:' + ParentColor = False + end + object Label3: TLabel + Left = 7 + Height = 14 + Top = 80 + Width = 123 + Caption = 'Std. Dev. of Test Scores:' + ParentColor = False + end + object Label4: TLabel + Left = 6 + Height = 14 + Top = 112 + Width = 130 + Caption = 'KR#21 Reliability Estimate:' + ParentColor = False + end + object NoItemsEdit: TEdit + Left = 143 + Height = 22 + Top = 8 + Width = 49 + TabOrder = 0 + Text = 'NoItemsEdit' + end + object MeanEdit: TEdit + Left = 143 + Height = 22 + Top = 38 + Width = 49 + TabOrder = 1 + Text = 'Edit1' + end + object StdDevEdit: TEdit + Left = 143 + Height = 22 + Top = 72 + Width = 49 + TabOrder = 2 + Text = 'Edit1' + end + object RelEdit: TEdit + Left = 143 + Height = 22 + Top = 104 + Width = 49 + TabOrder = 3 + Text = 'Edit1' + end + object ResetBtn: TButton + Left = 6 + Height = 32 + Top = 137 + Width = 69 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 4 + end + object CancelBtn: TButton + Left = 123 + Height = 32 + Top = 137 + Width = 69 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 5 + end + object ComputeBtn: TButton + Left = 8 + Height = 32 + Top = 184 + Width = 69 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 6 + end + object ReturnBtn: TButton + Left = 123 + Height = 32 + Top = 184 + Width = 69 + Caption = 'Return' + ModalResult = 1 + TabOrder = 7 + end +end diff --git a/applications/lazstats/source_orig/kr21unit.lrs b/applications/lazstats/source_orig/kr21unit.lrs new file mode 100644 index 000000000..4bb96633a --- /dev/null +++ b/applications/lazstats/source_orig/kr21unit.lrs @@ -0,0 +1,29 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TKR21Frm','FORMDATA',[ + 'TPF0'#8'TKR21Frm'#7'KR21Frm'#4'Left'#3#151#0#6'Height'#3#227#0#3'Top'#2'b'#5 + +'Width'#3#204#0#7'Caption'#6#19'Kuder-Richarson #21'#12'ClientHeight'#3#227#0 + +#11'ClientWidth'#3#204#0#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.26.2' + +#0#6'TLabel'#6'Label1'#4'Left'#2#7#6'Height'#2#14#3'Top'#2#16#5'Width'#2'x'#7 + +'Caption'#6#23'Maximum Score Possible:'#11'ParentColor'#8#0#0#6'TLabel'#6'La' + +'bel2'#4'Left'#2#7#6'Height'#2#14#3'Top'#2'.'#5'Width'#2'v'#7'Caption'#6#23 + +'Mean of he Test Scores:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2 + +#7#6'Height'#2#14#3'Top'#2'P'#5'Width'#2'{'#7'Caption'#6#25'Std. Dev. of Tes' + +'t Scores:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2#6#6'Height'#2 + +#14#3'Top'#2'p'#5'Width'#3#130#0#7'Caption'#6#27'KR#21 Reliability Estimate:' + +#11'ParentColor'#8#0#0#5'TEdit'#11'NoItemsEdit'#4'Left'#3#143#0#6'Height'#2 + +#22#3'Top'#2#8#5'Width'#2'1'#8'TabOrder'#2#0#4'Text'#6#11'NoItemsEdit'#0#0#5 + +'TEdit'#8'MeanEdit'#4'Left'#3#143#0#6'Height'#2#22#3'Top'#2'&'#5'Width'#2'1' + +#8'TabOrder'#2#1#4'Text'#6#5'Edit1'#0#0#5'TEdit'#10'StdDevEdit'#4'Left'#3#143 + +#0#6'Height'#2#22#3'Top'#2'H'#5'Width'#2'1'#8'TabOrder'#2#2#4'Text'#6#5'Edit' + +'1'#0#0#5'TEdit'#7'RelEdit'#4'Left'#3#143#0#6'Height'#2#22#3'Top'#2'h'#5'Wid' + +'th'#2'1'#8'TabOrder'#2#3#4'Text'#6#5'Edit1'#0#0#7'TButton'#8'ResetBtn'#4'Le' + +'ft'#2#6#6'Height'#2' '#3'Top'#3#137#0#5'Width'#2'E'#7'Caption'#6#5'Reset'#7 + +'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#4#0#0#7'TButton'#9'CancelBtn'#4 + +'Left'#2'{'#6'Height'#2' '#3'Top'#3#137#0#5'Width'#2'E'#7'Caption'#6#6'Cance' + +'l'#11'ModalResult'#2#2#8'TabOrder'#2#5#0#0#7'TButton'#10'ComputeBtn'#4'Left' + +#2#8#6'Height'#2' '#3'Top'#3#184#0#5'Width'#2'E'#7'Caption'#6#7'Compute'#7'O' + +'nClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#6#0#0#7'TButton'#9'ReturnBtn'#4 + +'Left'#2'{'#6'Height'#2' '#3'Top'#3#184#0#5'Width'#2'E'#7'Caption'#6#6'Retur' + +'n'#11'ModalResult'#2#1#8'TabOrder'#2#7#0#0#0 +]); diff --git a/applications/lazstats/source_orig/kr21unit.pas b/applications/lazstats/source_orig/kr21unit.pas new file mode 100644 index 000000000..d3ad96711 --- /dev/null +++ b/applications/lazstats/source_orig/kr21unit.pas @@ -0,0 +1,73 @@ +unit KR21Unit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls; + +type + + { TKR21Frm } + + TKR21Frm = class(TForm) + ResetBtn: TButton; + CancelBtn: TButton; + ComputeBtn: TButton; + ReturnBtn: TButton; + NoItemsEdit: TEdit; + MeanEdit: TEdit; + StdDevEdit: TEdit; + RelEdit: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + procedure ComputeBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + private + { private declarations } + public + { public declarations } + end; + +var + KR21Frm: TKR21Frm; + +implementation + +{ TKR21Frm } + +procedure TKR21Frm.ResetBtnClick(Sender: TObject); +begin + NoItemsEdit.Text := ''; + MeanEdit.Text := ''; + StdDevEdit.Text := ''; + RelEdit.Text := ''; +end; + +procedure TKR21Frm.FormShow(Sender: TObject); +begin + ResetBtnClick(self); +end; + +procedure TKR21Frm.ComputeBtnClick(Sender: TObject); +var + items, mean, stddev, rel : double; +begin + items := StrToFloat(NoItemsEdit.Text); + mean := StrToFloat(MeanEdit.Text); + stddev := StrToFloat(StdDevEdit.Text); + rel := (items / (items - 1.0)) * (1.0 - (mean * (items - mean))/ + (items * sqr(stddev))); + RelEdit.Text := FloatToStr(rel); +end; + +initialization + {$I kr21unit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/kwanovaunit.lfm b/applications/lazstats/source_orig/kwanovaunit.lfm new file mode 100644 index 000000000..dee1341fb --- /dev/null +++ b/applications/lazstats/source_orig/kwanovaunit.lfm @@ -0,0 +1,307 @@ +object KWAnovaFrm: TKWAnovaFrm + Left = 154 + Height = 357 + Top = 128 + Width = 339 + Caption = 'Kruskal-Wallis One Way ANOVA on Ranks' + ClientHeight = 357 + ClientWidth = 339 + OnShow = FormShow + LCLVersion = '0.9.30.4' + object Label1: TLabel + Left = 5 + Height = 16 + Top = 4 + Width = 99 + Caption = 'Variables Available' + ParentColor = False + end + object Label2: TLabel + Left = 193 + Height = 16 + Top = 24 + Width = 79 + Caption = 'Group Variable' + ParentColor = False + end + object Label3: TLabel + Left = 193 + Height = 16 + Top = 113 + Width = 104 + Caption = 'Dependent Variable' + ParentColor = False + end + object VarList: TListBox + Left = 6 + Height = 265 + Top = 20 + Width = 140 + ItemHeight = 0 + TabOrder = 0 + end + object GrpIn: TBitBtn + Left = 153 + Height = 31 + Top = 23 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = GrpInClick + TabOrder = 1 + end + object GrpOut: TBitBtn + Left = 152 + Height = 31 + Top = 56 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = GrpOutClick + TabOrder = 2 + end + object DepIn: TBitBtn + Left = 153 + Height = 31 + Top = 112 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = DepInClick + TabOrder = 3 + end + object DepOut: TBitBtn + Left = 153 + Height = 31 + Top = 144 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = DepOutClick + TabOrder = 4 + end + object GrpEdit: TEdit + Left = 191 + Height = 23 + Top = 39 + Width = 120 + TabOrder = 5 + Text = 'GrpEdit' + end + object DepEdit: TEdit + Left = 193 + Height = 23 + Top = 136 + Width = 120 + TabOrder = 6 + Text = 'Edit1' + end + object ResetBtn: TButton + Left = 153 + Height = 32 + Top = 248 + Width = 63 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 7 + end + object CancelBtn: TButton + Left = 248 + Height = 32 + Top = 248 + Width = 63 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 8 + end + object ComputeBtn: TButton + Left = 153 + Height = 32 + Top = 304 + Width = 63 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 9 + end + object ReturnBtn: TButton + Left = 248 + Height = 32 + Top = 304 + Width = 63 + Caption = 'Return' + ModalResult = 1 + TabOrder = 10 + end + object MWUChk: TCheckBox + Left = 161 + Height = 19 + Top = 206 + Width = 141 + Caption = 'Mann-Whitney U Tests' + TabOrder = 11 + end + object Label4: TLabel + Left = 162 + Height = 16 + Top = 185 + Width = 162 + Caption = 'Post Hoc Comparisons Option' + ParentColor = False + end + object Label5: TLabel + Left = 9 + Height = 16 + Top = 312 + Width = 46 + Caption = 'Alpha = ' + ParentColor = False + end + object AlphaEdit: TEdit + Left = 57 + Height = 23 + Top = 303 + Width = 41 + TabOrder = 12 + Text = 'AlphaEdit' + end +end diff --git a/applications/lazstats/source_orig/kwanovaunit.lrs b/applications/lazstats/source_orig/kwanovaunit.lrs new file mode 100644 index 000000000..3de8006d3 --- /dev/null +++ b/applications/lazstats/source_orig/kwanovaunit.lrs @@ -0,0 +1,239 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TKWAnovaFrm','FORMDATA',[ + 'TPF0'#11'TKWAnovaFrm'#10'KWAnovaFrm'#4'Left'#3#154#0#6'Height'#3'e'#1#3'Top' + +#3#128#0#5'Width'#3'S'#1#7'Caption'#6'%Kruskal-Wallis One Way ANOVA on Ranks' + +#12'ClientHeight'#3'e'#1#11'ClientWidth'#3'S'#1#6'OnShow'#7#8'FormShow'#10'L' + +'CLVersion'#6#8'0.9.30.4'#0#6'TLabel'#6'Label1'#4'Left'#2#5#6'Height'#2#16#3 + +'Top'#2#4#5'Width'#2'c'#7'Caption'#6#19'Variables Available'#11'ParentColor' + +#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#193#0#6'Height'#2#16#3'Top'#2#24#5'Widt' + +'h'#2'O'#7'Caption'#6#14'Group Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'L' + +'abel3'#4'Left'#3#193#0#6'Height'#2#16#3'Top'#2'q'#5'Width'#2'h'#7'Caption'#6 + +#18'Dependent Variable'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left' + +#2#6#6'Height'#3#9#1#3'Top'#2#20#5'Width'#3#140#0#10'ItemHeight'#2#0#8'TabOr' + +'der'#2#0#0#0#7'TBitBtn'#5'GrpIn'#4'Left'#3#153#0#6'Height'#2#31#3'Top'#2#23 + +#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0 + +#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0 + +#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)' + +#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190 + +'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255 + +'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139 + +'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160 + +#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255 + +#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128 + +#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199 + +'t'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150 + +#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255 + +#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255 + +#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255 + +'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163 + +'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247 + +';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187 + +'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnCl' + +'ick'#7#10'GrpInClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'#6'GrpOut'#4'Left'#3#152 + +#0#6'Height'#2#31#3'Top'#2'8'#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0 + +#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0 + ,#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207 + +'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';' + +#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255 + +#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211 + +#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130 + +#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$' + +#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171 + +#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204 + +#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x' + +#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209 + +#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M' + +#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255 + +'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'GrpOutClick'#8'TabOrde' + +'r'#2#2#0#0#7'TBitBtn'#5'DepIn'#4'Left'#3#153#0#6'Height'#2#31#3'Top'#2'p'#5 + +'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0 + +'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0 + +#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)' + +#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190 + +'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255 + +'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139 + +'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160 + +#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255 + +#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128 + +#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199 + +'t'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150 + +#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255 + +#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255 + +#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255 + +'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163 + +'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247 + +';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187 + +'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnCl' + +'ick'#7#10'DepInClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#6'DepOut'#4'Left'#3#153 + +#0#6'Height'#2#31#3'Top'#3#144#0#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6' + +#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0 + +#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207 + +'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';' + +#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255 + +#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211 + +#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130 + +#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$' + +#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171 + ,#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204 + +#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x' + +#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209 + +#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M' + +#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255 + +'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'DepOutClick'#8'TabOrde' + +'r'#2#4#0#0#5'TEdit'#7'GrpEdit'#4'Left'#3#191#0#6'Height'#2#23#3'Top'#2''''#5 + +'Width'#2'x'#8'TabOrder'#2#5#4'Text'#6#7'GrpEdit'#0#0#5'TEdit'#7'DepEdit'#4 + +'Left'#3#193#0#6'Height'#2#23#3'Top'#3#136#0#5'Width'#2'x'#8'TabOrder'#2#6#4 + +'Text'#6#5'Edit1'#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#153#0#6'Height'#2' '#3 + +'Top'#3#248#0#5'Width'#2'?'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnCl' + +'ick'#8'TabOrder'#2#7#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#248#0#6'Height'#2 + +' '#3'Top'#3#248#0#5'Width'#2'?'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8 + +'TabOrder'#2#8#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#153#0#6'Height'#2' '#3 + +'Top'#3'0'#1#5'Width'#2'?'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBt' + +'nClick'#8'TabOrder'#2#9#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#248#0#6'Heigh' + +'t'#2' '#3'Top'#3'0'#1#5'Width'#2'?'#7'Caption'#6#6'Return'#11'ModalResult'#2 + +#1#8'TabOrder'#2#10#0#0#9'TCheckBox'#6'MWUChk'#4'Left'#3#161#0#6'Height'#2#19 + +#3'Top'#3#206#0#5'Width'#3#141#0#7'Caption'#6#20'Mann-Whitney U Tests'#8'Tab' + +'Order'#2#11#0#0#6'TLabel'#6'Label4'#4'Left'#3#162#0#6'Height'#2#16#3'Top'#3 + +#185#0#5'Width'#3#162#0#7'Caption'#6#27'Post Hoc Comparisons Option'#11'Pare' + +'ntColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#9#6'Height'#2#16#3'Top'#3'8'#1 + +#5'Width'#2'.'#7'Caption'#6#8'Alpha = '#11'ParentColor'#8#0#0#5'TEdit'#9'Alp' + +'haEdit'#4'Left'#2'9'#6'Height'#2#23#3'Top'#3'/'#1#5'Width'#2')'#8'TabOrder' + +#2#12#4'Text'#6#9'AlphaEdit'#0#0#0 +]); diff --git a/applications/lazstats/source_orig/kwanovaunit.pas b/applications/lazstats/source_orig/kwanovaunit.pas new file mode 100644 index 000000000..85980e118 --- /dev/null +++ b/applications/lazstats/source_orig/kwanovaunit.pas @@ -0,0 +1,488 @@ +unit KWANOVAUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, MainUnit, OutPutUnit, FunctionsLib, + Globals, DataProcs, Math; + +type + + { TKWAnovaFrm } + + TKWAnovaFrm = class(TForm) + AlphaEdit: TEdit; + Label4: TLabel; + Label5: TLabel; + MWUChk: TCheckBox; + ResetBtn: TButton; + CancelBtn: TButton; + ComputeBtn: TButton; + ReturnBtn: TButton; + GrpEdit: TEdit; + DepEdit: TEdit; + GrpIn: TBitBtn; + GrpOut: TBitBtn; + DepIn: TBitBtn; + DepOut: TBitBtn; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + VarList: TListBox; + procedure ComputeBtnClick(Sender: TObject); + procedure DepInClick(Sender: TObject); + procedure DepOutClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure GrpInClick(Sender: TObject); + procedure GrpOutClick(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + private + { private declarations } + public + { public declarations } + end; + +var + KWAnovaFrm: TKWAnovaFrm; + +implementation + +{ TKWAnovaFrm } + +procedure TKWAnovaFrm.ResetBtnClick(Sender: TObject); +VAR i : integer; +begin + GrpEdit.Text := ''; + DepEdit.Text := ''; + AlphaEdit.Text := '0.05'; + GrpIn.Visible := true; + GrpOut.Visible := false; + DepIn.Visible := true; + DepOut.Visible := false; + MWUChk.Checked := false; + VarList.Items.Clear; + for i := 1 to NoVariables do + VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); +end; + +procedure TKWAnovaFrm.FormShow(Sender: TObject); +begin + ResetBtnClick(self); +end; + +procedure TKWAnovaFrm.DepInClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + DepEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + DepIn.Visible := false; + DepOut.Visible := true; +end; + +procedure TKWAnovaFrm.ComputeBtnClick(Sender: TObject); +label cleanup, Check1, Check2; +var + i, j, k, m, ind_var, dep_var, min_grp, max_grp, group, total_n : integer; + NoTies, NoTieGroups, nogroups, NoSelected, npairs, n1, n2 : integer; + largestn : integer; + ColNoSelected : IntdyneVec; + group_count : IntDyneVec; + score, t, SumT, Avg, Probchi, H, CorrectedH, value : double; + Correction, Temp, TieSum, alpha, U, U2, SD, z, prob : double; + Ranks, X : DblDyneMat; + RankSums : DblDyneVec; + cellstring, outline : string; +begin + // Check for data + if (NoVariables < 1) then + begin + ShowMessage('ERROR! You must have grid data!'); + exit; + end; + + // allocate space + SetLength(ColNoSelected,NoVariables); + SetLength(Ranks,NoCases,2); + SetLength(X,NoCases,2); + + // Get column numbers of the independent and dependent variables + ind_var := 0; + dep_var := 0; + for i := 1 to NoVariables do + begin + cellstring := GrpEdit.Text; + if (cellstring = OS3MainFrm.DataGrid.Cells[i,0]) then ind_var := i; + cellstring := DepEdit.Text; + if (cellstring = OS3MainFrm.DataGrid.Cells[i,0]) then dep_var := i; + end; + ColNoSelected[0] := ind_var; + ColNoSelected[1] := dep_var; + + //get minimum and maximum group codes + total_n := 0; + NoSelected := 2; + min_grp := 10000; //atoi(MainForm.Grid.Cells[ind_var,1].c_str); + max_grp := -10000; + for i := 1 to NoCases do + begin + if (not GoodRecord(i,NoSelected,ColNoSelected)) then continue; + group := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[ind_var,i]))); + if (group < min_grp) then min_grp := group; + if (group > max_grp) then max_grp := group; + total_n := total_n + 1; + end; + nogroups := max_grp - min_grp + 1; + NoTieGroups := 0; + SumT := 0.0; + H := 0.0; + + // Initialize arrays + SetLength(RankSums,nogroups); + SetLength(group_count,nogroups); + for i := 0 to nogroups-1 do + begin + group_count[i] := 0; + RankSums[i] := 0.0; + end; + + // Setup for printer output + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Kruskal - Wallis One-Way Analysis of Variance'); + OutPutFrm.RichEdit.Lines.Add('See pages 184-194 in S. Siegel: Nonparametric Statistics for the Behavioral Sciences'); + OutPutFrm.RichEdit.Lines.Add(''); + + // Get data + for i := 1 to NoCases do + begin + if (not GoodRecord(i,NoSelected,ColNoSelected)) then continue; + score := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[dep_var,i])); + group := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[ind_var,i]))); + group := group - min_grp + 1; + if (group > nogroups) then + begin + ShowMessage('ERROR! Group codes must be sequential like 1 and 2!'); + goto cleanup; + end; + group_count[group-1] := group_count[group-1] + 1; + X[i-1,0] := score; + X[i-1,1] := group; + end; + + //Sort all scores in ascending order + for i := 1 to total_n - 1 do + begin + for j := i + 1 to total_n do + begin + if (X[i-1,0] > X[j-1,0]) then + begin + Temp := X[i-1,0]; + X[i-1,0] := X[j-1,0]; + X[j-1,0] := Temp; + Temp := X[i-1,1]; + X[i-1,1] := X[j-1,1]; + X[j-1,1] := Temp; + end; + end; + end; + + // Store ranks + for i := 0 to total_n-1 do + begin + Ranks[i,0] := i+1; + Ranks[i,1] := X[i,1]; + end; + + //Check for ties in ranks - replace with average rank and calculate + //T for each tie and sum of the T's + i := 1; + while i < total_n do + begin + j := i + 1; + TieSum := 0; + NoTies := 0; + while (j < total_n) do + begin + if (X[j-1,0] > X[i-1,0]) then goto Check1; + if (X[j-1,0] = X[i-1,0]) then // match + begin + TieSum := TieSum + round(Ranks[j-1,0]); + NoTies := NoTies + 1; + end; + j := j + 1; + end; +Check1: + if (NoTies > 0) then //At least one tie found + begin + TieSum := TieSum + Ranks[i-1,0]; + NoTies := NoTies + 1; + Avg := TieSum / NoTies; + for j := i to i + NoTies - 1 do Ranks[j-1,0] := Avg; + t := Power(NoTies,3) - NoTies; + SumT := SumT + t; + NoTieGroups := NoTieGroups + 1; + i := i + (NoTies - 1); + end; + i := i + 1; + end; // next i + + // Calculate sum of ranks in each group + for i := 1 to total_n do + begin + group := round(Ranks[i-1,1]); + RankSums[group-1] := RankSums[group-1] + Ranks[i-1,0]; + end; + + // Calculate statistics + for j := 0 to nogroups-1 do H := H + (RankSums[j] * RankSums[j] / (group_count[j])); + H := H * (12.0 / ( total_n * (total_n + 1)) ); + H := H - (3.0 * (total_n + 1)); + Correction := 1.0 - ( SumT / (Power(total_n,3) - total_n) ); + CorrectedH := H / Correction; + k := max_grp - min_grp; + Probchi := 1.0 - chisquaredprob(H, k); + + // Report results + OutPutFrm.RichEdit.Lines.Add(' Score Rank Group'); + OutPutFrm.RichEdit.Lines.Add(''); + for i := 1 to total_n do + begin + outline := format('%10.2f %10.2f %10.0f', + [X[i-1,0], Ranks[i-1,0], Ranks[i-1,1]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Sum of Ranks in each Group'); + OutPutFrm.RichEdit.Lines.Add('Group Sum No. in Group'); + for i := 1 to nogroups do + begin + outline := format('%3d %10.2f %5d', [i+min_grp-1, RankSums[i-1],group_count[i-1]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.RichEdit.Lines.Add(''); + outline := format('No. of tied rank groups = %3d',[NoTieGroups]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('Statistic H uncorrected for ties = %8.4f',[H]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('Correction for Ties = %6.4f',[Correction]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('Statistic H corrected for ties = %8.4f',[CorrectedH]); + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('Corrected H is approx. chi-square with %3d D.F. and probability = %6.4f',[k,Probchi]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + + if not MWUChk.Checked then goto cleanup; + // do Mann-Whitney U tests on group pairs + alpha := StrToFloat(AlphaEdit.Text); + npairs := nogroups * (nogroups - 1) div 2; + alpha := alpha / npairs; + outline := format('New alpha for %d paired comparisons = %5.3f',[npairs, alpha]); + ShowMessage(outline); + for i := 1 to nogroups - 1 do + begin + for j := i + 1 to nogroups do + begin + // Setup for printer output + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Mann-Whitney U Test'); + OutPutFrm.RichEdit.Lines.Add('See pages 116-127 in S. Siegel: Nonparametric Statistics for the Behavioral Sciences'); + OutPutFrm.RichEdit.Lines.Add(''); + outline := format('Comparison of group %d with group %d',[i,j]); + OutPutFrm.RichEdit.Lines.Add(outline); + group_count[0] := 0; + group_count[1] := 0; + RankSums[0] := 0; + RankSums[1] := 0; + total_n := 0; + for k := 1 to NoCases do + begin + if (not GoodRecord(k,NoSelected,ColNoSelected)) then continue; + score := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[dep_var,k])); + value := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[ind_var,k])); + if round(value) = i then + begin + X[total_n,0] := score; + X[total_n,1] := value; + group_count[0] := group_count[0] + 1; + total_n := total_n + 1; + end; + if round(value) = j then + begin + X[total_n,0] := score; + X[total_n,1] := value; + group_count[1] := group_count[1] + 1; + total_n := total_n + 1; + end; + end; // next case k + + //Sort all scores in ascending order + for k := 1 to total_n - 1 do + begin + for m := k + 1 to total_n do + begin + if (X[k-1,0] > X[m-1,0]) then + begin + Temp := X[k-1,0]; + X[k-1,0] := X[m-1,0]; + X[m-1,0] := Temp; + Temp := X[k-1,1]; + X[k-1,1] := X[m-1,1]; + X[m-1,1] := Temp; + end; + end; + end; + + // get ranks for these two groups + for k := 1 to total_n do + begin + Ranks[k-1,0] := k; + Ranks[k-1,1] := X[k-1,1]; + end; + + //Check for ties in ranks - replace with average rank and calculate + //T for each tie and sum of the T's + NoTieGroups := 0; + k := 1; + while k < total_n do + begin + m := k + 1; + TieSum := 0; + NoTies := 0; + while (m < total_n) do + begin + if (X[m-1,0] > X[k-1,0]) then goto Check2; + if (X[m-1,0] = X[k-1,0]) then // match + begin + TieSum := TieSum + round(Ranks[m-1,0]); + NoTies := NoTies + 1; + end; + m := m + 1; + end; + Check2: + if (NoTies > 0) then //At least one tie found + begin + TieSum := TieSum + Ranks[k-1,0]; + NoTies := NoTies + 1; + Avg := TieSum / NoTies; + for m := k to k + NoTies - 1 do Ranks[m-1,0] := Avg; + t := Power(NoTies,3) - NoTies; + SumT := SumT + t; + NoTieGroups := NoTieGroups + 1; + k := k + (NoTies - 1); + end; + k := k + 1; + end; // next k + + // Calculate sum of ranks in each group + for k := 1 to total_n do + begin + group := round(Ranks[k-1,1]); + RankSums[group-1] := RankSums[group-1] + Ranks[k-1,0]; + end; + + //Calculate U for larger and smaller groups + n1 := group_count[0]; + n2 := group_count[1]; + if (n1 > n2) then + begin + group := i-1; + U := (n1 * n2) + ((n1 * (n1 + 1)) / 2.0) - RankSums[group]; + end + else + begin + group := j - 1; + U := (n1 * n2) + ((n2 * (n2 + 1)) / 2.0) - RankSums[group]; + end; + U2 := (n1 * n2) - U; + SD := (n1 * n2 * (n1 + n2 + 1)) / 12.0; + SD := sqrt(SD); + if (U2 > U) then z := (U2 - (n1 * n2 / 2)) / SD + else z := (U - (n1 * n2 / 2)) / SD; + prob := 1.0 - probz(z); + + //Report results + OutPutFrm.RichEdit.Lines.Add(' Score Rank Group'); + OutPutFrm.RichEdit.Lines.Add(''); + for k := 1 to total_n do + begin + outline := format('%10.2f %10.2f %10.0f', + [X[k-1,0], Ranks[k-1,0], Ranks[k-1,1]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Sum of Ranks in each Group'); + OutPutFrm.RichEdit.Lines.Add('Group Sum No. in Group'); + group := i - 1; + outline := format('%3d %10.3f %5d', [i, RankSums[group],group_count[0]]); + OutPutFrm.RichEdit.Lines.Add(outline); + group := j - 1; + outline := format('%3d %10.3f %5d', [j, RankSums[group],group_count[1]]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + outline := format('No. of tied rank groups = %3d',[NoTieGroups]); + OutPutFrm.RichEdit.Lines.Add(outline); + if (n1 > n2) then largestn := n1 + else largestn := n2; + if (largestn < 20) then + outline := format('Statistic U = %8.4f',[U]) + else + begin + if (U > U2) then outline := format('Statistic U = %8.4f',[U]) + else outline := format('Statistic U = %8.4f',[U2]); + end; + OutPutFrm.RichEdit.Lines.Add(outline); + outline := format('z Statistic (corrected for ties) = %8.4f, Prob. > z = %6.4f', + [z, prob]); + OutPutFrm.RichEdit.Lines.Add(outline); + if (n2 < 20) then + begin + OutPutFrm.RichEdit.Lines.Add('z test is approximate. Use tables of exact probabilities in Siegel.'); + OutPutFrm.RichEdit.Lines.Add('(Table J or K, pages 271-277)'); + end; + OutPutFrm.ShowModal; + end; // next group j + end; // next group i +cleanup: + group_count := nil; + RankSums := nil; + X := nil; + Ranks := nil; + ColNoSelected := nil; +end; + +procedure TKWAnovaFrm.DepOutClick(Sender: TObject); +begin + VarList.Items.Add(DepEdit.Text); + DepEdit.Text := ''; + DepIn.Visible := true; + DepOut.Visible := false; +end; + +procedure TKWAnovaFrm.GrpInClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + GrpEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + GrpIn.Visible := false; + GrpOut.Visible := true; +end; + +procedure TKWAnovaFrm.GrpOutClick(Sender: TObject); +begin + VarList.Items.Add(GrpEdit.Text); + GrpEdit.Text := ''; + GrpIn.Visible := true; + GrpOut.Visible := false; +end; + +initialization + {$I kwanovaunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/latinspecsunit.lfm b/applications/lazstats/source_orig/latinspecsunit.lfm new file mode 100644 index 000000000..f52c0e9f8 --- /dev/null +++ b/applications/lazstats/source_orig/latinspecsunit.lfm @@ -0,0 +1,706 @@ +object LatinSpecsFrm: TLatinSpecsFrm + Left = 163 + Height = 566 + Top = 51 + Width = 493 + Caption = 'Latin Squares Analysis Specification Form' + ClientHeight = 566 + ClientWidth = 493 + OnShow = FormShow + LCLVersion = '0.9.26.2' + object Label1: TLabel + Left = 9 + Height = 14 + Top = 7 + Width = 63 + Caption = 'File Variables' + ParentColor = False + end + object Label2: TLabel + Left = 280 + Height = 14 + Top = 26 + Width = 111 + Caption = 'Factor A Code Variable' + ParentColor = False + end + object Label3: TLabel + Left = 279 + Height = 14 + Top = 105 + Width = 110 + Caption = 'Factor B Code Variable' + ParentColor = False + end + object Label4: TLabel + Left = 280 + Height = 14 + Top = 183 + Width = 111 + Caption = 'Factor C Code Variable' + ParentColor = False + end + object Label5: TLabel + Left = 281 + Height = 14 + Top = 265 + Width = 111 + Caption = 'Factor D Code Variable' + ParentColor = False + end + object Label6: TLabel + Left = 281 + Height = 14 + Top = 352 + Width = 99 + Caption = 'Group Code Variable' + ParentColor = False + end + object Label7: TLabel + Left = 280 + Height = 14 + Top = 431 + Width = 95 + Caption = 'Dependent Variable' + ParentColor = False + end + object Label8: TLabel + Left = 231 + Height = 14 + Top = 504 + Width = 62 + Caption = 'No. per cell: ' + ParentColor = False + end + object VarList: TListBox + Left = 8 + Height = 504 + Top = 29 + Width = 210 + TabOrder = 0 + end + object AInBtn: TBitBtn + Left = 232 + Height = 28 + Top = 25 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = AInBtnClick + TabOrder = 1 + end + object AOutBtn: TBitBtn + Left = 232 + Height = 28 + Top = 56 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = AOutBtnClick + TabOrder = 2 + end + object BInBtn: TBitBtn + Left = 232 + Height = 28 + Top = 104 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = BInBtnClick + TabOrder = 3 + end + object BOutBtn: TBitBtn + Left = 232 + Height = 28 + Top = 136 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = BOutBtnClick + TabOrder = 4 + end + object CInBtn: TBitBtn + Left = 232 + Height = 28 + Top = 184 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = CInBtnClick + TabOrder = 5 + end + object COutBtn: TBitBtn + Left = 232 + Height = 28 + Top = 216 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = COutBtnClick + TabOrder = 6 + end + object DInBtn: TBitBtn + Left = 232 + Height = 28 + Top = 264 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = DInBtnClick + TabOrder = 7 + end + object DOutBtn: TBitBtn + Left = 232 + Height = 28 + Top = 296 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = DOutBtnClick + TabOrder = 8 + end + object GrpInBtn: TBitBtn + Left = 232 + Height = 28 + Top = 352 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = GrpInBtnClick + TabOrder = 9 + end + object GrpOutBtn: TBitBtn + Left = 232 + Height = 28 + Top = 384 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = GrpOutBtnClick + TabOrder = 10 + end + object DataInBtn: TBitBtn + Left = 232 + Height = 28 + Top = 432 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = DataInBtnClick + TabOrder = 11 + end + object DataOutBtn: TBitBtn + Left = 232 + Height = 28 + Top = 464 + Width = 33 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = DataOutBtnClick + TabOrder = 12 + end + object ACodeEdit: TEdit + Left = 278 + Height = 20 + Top = 42 + Width = 155 + TabOrder = 13 + Text = 'ACodeEdit' + end + object BCodeEdit: TEdit + Left = 280 + Height = 20 + Top = 120 + Width = 155 + TabOrder = 14 + Text = 'Edit1' + end + object CCodeEdit: TEdit + Left = 278 + Height = 20 + Top = 200 + Width = 155 + TabOrder = 15 + Text = 'Edit1' + end + object DCodeEdit: TEdit + Left = 278 + Height = 20 + Top = 280 + Width = 155 + TabOrder = 16 + Text = 'Edit1' + end + object GrpCodeEdit: TEdit + Left = 280 + Height = 20 + Top = 368 + Width = 155 + TabOrder = 17 + Text = 'Edit1' + end + object DepVarEdit: TEdit + Left = 278 + Height = 20 + Top = 448 + Width = 155 + TabOrder = 18 + Text = 'Edit1' + end + object ResetBtn: TButton + Left = 232 + Height = 30 + Top = 528 + Width = 74 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 19 + end + object CancelBtn: TButton + Left = 315 + Height = 30 + Top = 528 + Width = 74 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 20 + end + object OKBtn: TButton + Left = 400 + Height = 30 + Top = 528 + Width = 74 + Caption = 'OK' + ModalResult = 1 + OnClick = OKBtnClick + TabOrder = 21 + end + object nPerCellEdit: TEdit + Left = 296 + Height = 19 + Top = 495 + Width = 48 + TabOrder = 22 + Text = 'nPerCellEdit' + end +end diff --git a/applications/lazstats/source_orig/latinspecsunit.lrs b/applications/lazstats/source_orig/latinspecsunit.lrs new file mode 100644 index 000000000..549f4e342 --- /dev/null +++ b/applications/lazstats/source_orig/latinspecsunit.lrs @@ -0,0 +1,658 @@ +LazarusResources.Add('TLatinSpecsFrm','FORMDATA',[ + 'TPF0'#14'TLatinSpecsFrm'#13'LatinSpecsFrm'#4'Left'#3#163#0#6'Height'#3'6'#2#3 + +'Top'#2'3'#5'Width'#3#237#1#7'Caption'#6')Latin Squares Analysis Specificati' + +'on Form'#12'ClientHeight'#3'6'#2#11'ClientWidth'#3#237#1#6'OnShow'#7#8'Form' + +'Show'#10'LCLVersion'#6#8'0.9.26.2'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Heig' + +'ht'#2#14#3'Top'#2#7#5'Width'#2'?'#7'Caption'#6#14'File Variables'#11'Parent' + +'Color'#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#24#1#6'Height'#2#14#3'Top'#2#26#5 + +'Width'#2'o'#7'Caption'#6#22'Factor A Code Variable'#11'ParentColor'#8#0#0#6 + +'TLabel'#6'Label3'#4'Left'#3#23#1#6'Height'#2#14#3'Top'#2'i'#5'Width'#2'n'#7 + +'Caption'#6#22'Factor B Code Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Lab' + +'el4'#4'Left'#3#24#1#6'Height'#2#14#3'Top'#3#183#0#5'Width'#2'o'#7'Caption'#6 + +#22'Factor C Code Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left' + +#3#25#1#6'Height'#2#14#3'Top'#3#9#1#5'Width'#2'o'#7'Caption'#6#22'Factor D C' + +'ode Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Left'#3#25#1#6'He' + +'ight'#2#14#3'Top'#3'`'#1#5'Width'#2'c'#7'Caption'#6#19'Group Code Variable' + +#11'ParentColor'#8#0#0#6'TLabel'#6'Label7'#4'Left'#3#24#1#6'Height'#2#14#3'T' + +'op'#3#175#1#5'Width'#2'_'#7'Caption'#6#18'Dependent Variable'#11'ParentColo' + +'r'#8#0#0#6'TLabel'#6'Label8'#4'Left'#3#231#0#6'Height'#2#14#3'Top'#3#248#1#5 + +'Width'#2'>'#7'Caption'#6#14'No. per cell: '#11'ParentColor'#8#0#0#8'TListBo' + +'x'#7'VarList'#4'Left'#2#8#6'Height'#3#248#1#3'Top'#2#29#5'Width'#3#210#0#8 + +'TabOrder'#2#0#0#0#7'TBitBtn'#6'AInBtn'#4'Left'#3#232#0#6'Height'#2#28#3'Top' + +#2#25#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6' + +#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0 + +#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%' + +'i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a' + +#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O' + +#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D' + +#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255 + +#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152 + +#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193 + +#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h' + +#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255 + +#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139 + +#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255 + +#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h' + +#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z' + +#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I' + +#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O' + +#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7 + +'OnClick'#7#11'AInBtnClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'#7'AOutBtn'#4'Left' + +#3#232#0#6'Height'#2#28#3'Top'#2'8'#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0 + +'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0 + +#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h' + +#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255 + +';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255 + +#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152 + +#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255 + +#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!' + +'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255#162#216#171 + +#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204 + +#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x' + +#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209 + +#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M' + +#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255 + +'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'AOutBtnClick'#8'TabOrd' + +'er'#2#2#0#0#7'TBitBtn'#6'BInBtn'#4'Left'#3#232#0#6'Height'#2#28#3'Top'#2'h' + +#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0 + +#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0 + +#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)' + +#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190 + +'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255 + +'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139 + +'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160 + +#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255 + +#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128 + +#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199 + +'t'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150 + +#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255 + +#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255 + +#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255 + +'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163 + +'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247 + +';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187 + +'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnCl' + +'ick'#7#11'BInBtnClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#7'BOutBtn'#4'Left'#3 + +#232#0#6'Height'#2#28#3'Top'#3#136#0#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0 + +'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0 + +#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h' + +#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255 + +';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255 + +#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152 + +#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255 + +#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!' + +'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255#162#216#171 + +#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204 + +#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x' + +#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209 + +#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M' + +#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255 + +'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'BOutBtnClick'#8'TabOrd' + +'er'#2#4#0#0#7'TBitBtn'#6'CInBtn'#4'Left'#3#232#0#6'Height'#2#28#3'Top'#3#184 + +#0#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0 + +#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0 + +#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%' + +'i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a' + +#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O' + +#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D' + +#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255 + +#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152 + +#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193 + +#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h' + +#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255 + +#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139 + +#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255 + +#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h' + ,#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z' + +#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I' + +#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O' + +#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7 + +'OnClick'#7#11'CInBtnClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'#7'COutBtn'#4'Left' + +#3#232#0#6'Height'#2#28#3'Top'#3#216#0#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0 + +#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0 + +#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h' + +#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255 + +';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255 + +#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152 + +#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255 + +#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!' + +'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255#162#216#171 + +#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204 + +#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x' + +#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209 + +#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M' + +#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255 + +'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'COutBtnClick'#8'TabOrd' + +'er'#2#6#0#0#7'TBitBtn'#6'DInBtn'#4'Left'#3#232#0#6'Height'#2#28#3'Top'#3#8#1 + +#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0 + +#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0 + +#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)' + +#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190 + +'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255 + +'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139 + +'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160 + +#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255 + +#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128 + +#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199 + +'t'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150 + +#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255 + +#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255 + +#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255 + +'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163 + +'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247 + +';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187 + +'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnCl' + +'ick'#7#11'DInBtnClick'#8'TabOrder'#2#7#0#0#7'TBitBtn'#7'DOutBtn'#4'Left'#3 + +#232#0#6'Height'#2#28#3'Top'#3'('#1#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0 + +'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0 + +#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h' + +#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255 + +';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255 + +#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152 + +#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255 + +#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!' + +'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255#162#216#171 + +#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204 + +#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x' + +#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209 + +#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M' + +#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255 + +'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'DOutBtnClick'#8'TabOrd' + +'er'#2#8#0#0#7'TBitBtn'#8'GrpInBtn'#4'Left'#3#232#0#6'Height'#2#28#3'Top'#3 + +'`'#1#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6' + +#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0 + +#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%' + +'i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a' + +#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O' + +#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D' + +#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255 + +#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152 + +#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193 + +#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h' + +#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255 + +#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139 + +#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255 + +#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h' + +#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z' + +#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I' + +#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O' + +#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7 + +'OnClick'#7#13'GrpInBtnClick'#8'TabOrder'#2#9#0#0#7'TBitBtn'#9'GrpOutBtn'#4 + +'Left'#3#232#0#6'Height'#2#28#3'Top'#3#128#1#5'Width'#2'!'#10'Glyph.Data'#10 + +':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0 + +' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A' + +#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255 + +#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213 + +#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135 + +#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r' + +#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255 + +#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154 + +#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194 + ,#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h' + +#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169 + +'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255 + +'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h' + +#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199 + +'t'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'GrpOutBtnClick'#8 + +'TabOrder'#2#10#0#0#7'TBitBtn'#9'DataInBtn'#4'Left'#3#232#0#6'Height'#2#28#3 + +'Top'#3#176#1#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0 + +#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0 + +'d'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V' + +#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y' + +#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0 + +'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157 + +#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195 + +#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0 + +#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255 + +#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144 + +#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201 + +#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190 + +'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255 + +'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#9'NumGlyphs'#2#0#7'OnClick'#7#14'DataInBtnClick'#8'TabOrder'#2#11#0#0#7'TBi' + +'tBtn'#10'DataOutBtn'#4'Left'#3#232#0#6'Height'#2#28#3'Top'#3#208#1#5'Width' + +#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0 + +#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8' + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255 + +'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%' + +'i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200 + +#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139 + +#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v' + +#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201 + +''#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159 + +#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197 + +#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X' + +#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B' + +#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#15 + +'DataOutBtnClick'#8'TabOrder'#2#12#0#0#5'TEdit'#9'ACodeEdit'#4'Left'#3#22#1#6 + +'Height'#2#20#3'Top'#2'*'#5'Width'#3#155#0#8'TabOrder'#2#13#4'Text'#6#9'ACod' + +'eEdit'#0#0#5'TEdit'#9'BCodeEdit'#4'Left'#3#24#1#6'Height'#2#20#3'Top'#2'x'#5 + ,'Width'#3#155#0#8'TabOrder'#2#14#4'Text'#6#5'Edit1'#0#0#5'TEdit'#9'CCodeEdit' + +#4'Left'#3#22#1#6'Height'#2#20#3'Top'#3#200#0#5'Width'#3#155#0#8'TabOrder'#2 + +#15#4'Text'#6#5'Edit1'#0#0#5'TEdit'#9'DCodeEdit'#4'Left'#3#22#1#6'Height'#2 + +#20#3'Top'#3#24#1#5'Width'#3#155#0#8'TabOrder'#2#16#4'Text'#6#5'Edit1'#0#0#5 + +'TEdit'#11'GrpCodeEdit'#4'Left'#3#24#1#6'Height'#2#20#3'Top'#3'p'#1#5'Width' + +#3#155#0#8'TabOrder'#2#17#4'Text'#6#5'Edit1'#0#0#5'TEdit'#10'DepVarEdit'#4'L' + +'eft'#3#22#1#6'Height'#2#20#3'Top'#3#192#1#5'Width'#3#155#0#8'TabOrder'#2#18 + +#4'Text'#6#5'Edit1'#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#232#0#6'Height'#2#30 + +#3'Top'#3#16#2#5'Width'#2'J'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnC' + +'lick'#8'TabOrder'#2#19#0#0#7'TButton'#9'CancelBtn'#4'Left'#3';'#1#6'Height' + +#2#30#3'Top'#3#16#2#5'Width'#2'J'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2 + +#8'TabOrder'#2#20#0#0#7'TButton'#5'OKBtn'#4'Left'#3#144#1#6'Height'#2#30#3'T' + +'op'#3#16#2#5'Width'#2'J'#7'Caption'#6#2'OK'#11'ModalResult'#2#1#7'OnClick'#7 + +#10'OKBtnClick'#8'TabOrder'#2#21#0#0#5'TEdit'#12'nPerCellEdit'#4'Left'#3'('#1 + +#6'Height'#2#19#3'Top'#3#239#1#5'Width'#2'0'#8'TabOrder'#2#22#4'Text'#6#12'n' + +'PerCellEdit'#0#0#0 +]); diff --git a/applications/lazstats/source_orig/latinspecsunit.pas b/applications/lazstats/source_orig/latinspecsunit.pas new file mode 100644 index 000000000..629dceeb9 --- /dev/null +++ b/applications/lazstats/source_orig/latinspecsunit.pas @@ -0,0 +1,208 @@ +unit LatinSpecsUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, MainUnit, Globals; + +type + + { TLatinSpecsFrm } + + TLatinSpecsFrm = class(TForm) + AInBtn: TBitBtn; + nPerCellEdit: TEdit; + GrpOutBtn: TBitBtn; + DataInBtn: TBitBtn; + DataOutBtn: TBitBtn; + AOutBtn: TBitBtn; + BInBtn: TBitBtn; + BOutBtn: TBitBtn; + CInBtn: TBitBtn; + COutBtn: TBitBtn; + DInBtn: TBitBtn; + DOutBtn: TBitBtn; + GrpInBtn: TBitBtn; + Label8: TLabel; + ResetBtn: TButton; + CancelBtn: TButton; + OKBtn: TButton; + ACodeEdit: TEdit; + BCodeEdit: TEdit; + CCodeEdit: TEdit; + DCodeEdit: TEdit; + GrpCodeEdit: TEdit; + DepVarEdit: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + Label5: TLabel; + Label6: TLabel; + Label7: TLabel; + VarList: TListBox; + procedure AInBtnClick(Sender: TObject); + procedure AOutBtnClick(Sender: TObject); + procedure BInBtnClick(Sender: TObject); + procedure BOutBtnClick(Sender: TObject); + procedure CInBtnClick(Sender: TObject); + procedure COutBtnClick(Sender: TObject); + procedure DataInBtnClick(Sender: TObject); + procedure DataOutBtnClick(Sender: TObject); + procedure DInBtnClick(Sender: TObject); + procedure DOutBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure GrpInBtnClick(Sender: TObject); + procedure GrpOutBtnClick(Sender: TObject); + procedure OKBtnClick(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + private + { private declarations } + public + { public declarations } + end; + +var + LatinSpecsFrm: TLatinSpecsFrm; + +implementation +uses LatinSqrsUnit; + + +{ TLatinSpecsFrm } + +procedure TLatinSpecsFrm.ResetBtnClick(Sender: TObject); +VAR i : integer; +begin + VarList.Clear; + for i := 1 to NoVariables do + VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); +end; + +procedure TLatinSpecsFrm.FormShow(Sender: TObject); +begin + ResetBtnClick(Self); +end; + +procedure TLatinSpecsFrm.GrpInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + GrpCodeEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + GrpInBtn.Visible := false; + GrpOutBtn.Visible := true; +end; + +procedure TLatinSpecsFrm.GrpOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(GrpCodeEdit.Text); + GrpCodeEdit.Text := ''; + GrpInBtn.Visible := true; + GrpOutBtn.Visible := false; +end; + +procedure TLatinSpecsFrm.AInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + ACodeEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + AinBtn.Visible := false; + AOutBtn.Visible := true; +end; + +procedure TLatinSpecsFrm.AOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(ACodeEdit.Text); + ACodeEdit.Text := ''; + AinBtn.Visible := true; + AOutBtn.Visible := false; +end; + +procedure TLatinSpecsFrm.BInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + BCodeEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + BinBtn.Visible := false; + BOutBtn.Visible := true; +end; + +procedure TLatinSpecsFrm.BOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(BCodeEdit.Text); + BCodeEdit.Text := ''; + BinBtn.Visible := true; + BOutBtn.Visible := false; +end; + +procedure TLatinSpecsFrm.CInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + CCodeEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + CinBtn.Visible := false; + COutBtn.Visible := true; +end; + +procedure TLatinSpecsFrm.COutBtnClick(Sender: TObject); +begin + VarList.Items.Add(CCodeEdit.Text); + CCodeEdit.Text := ''; + CinBtn.Visible := true; + COutBtn.Visible := false; +end; + +procedure TLatinSpecsFrm.DataInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + DepVarEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + DataInBtn.Visible := false; + DataOutBtn.Visible := true; +end; + +procedure TLatinSpecsFrm.DataOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(DepVarEdit.Text); + DepVarEdit.Text := ''; + DataInBtn.Visible := true; + DataOutBtn.Visible := false; +end; + +procedure TLatinSpecsFrm.DInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + DCodeEdit.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + DinBtn.Visible := false; + DOutBtn.Visible := true; +end; + +procedure TLatinSpecsFrm.DOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(DCodeEdit.Text); + DCodeEdit.Text := ''; + DinBtn.Visible := true; + DOutBtn.Visible := false; +end; + +procedure TLatinSpecsFrm.OKBtnClick(Sender: TObject); +begin + LatinSpecsFrm.Hide; + ModalResult := mrOK; +end; + +initialization + {$I latinspecsunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/latinsqrsunit.lfm b/applications/lazstats/source_orig/latinsqrsunit.lfm new file mode 100644 index 000000000..543d9e9d6 --- /dev/null +++ b/applications/lazstats/source_orig/latinsqrsunit.lfm @@ -0,0 +1,69 @@ +object LatinSqrsFrm: TLatinSqrsFrm + Left = 199 + Height = 313 + Top = 108 + Width = 514 + Caption = 'Latin and Greco-Latin Squares Analyses' + ClientHeight = 313 + ClientWidth = 514 + LCLVersion = '0.9.28.2' + object CancelBtn: TButton + Left = 208 + Height = 28 + Top = 272 + Width = 74 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 0 + end + object OKBtn: TButton + Left = 424 + Height = 28 + Top = 272 + Width = 74 + Caption = 'OK' + ModalResult = 1 + OnClick = OKBtnClick + TabOrder = 1 + end + object Plan: TRadioGroup + Left = 8 + Height = 246 + Top = 8 + Width = 493 + AutoFill = True + Caption = 'Winer''s Plans:' + ChildSizing.LeftRightSpacing = 6 + ChildSizing.TopBottomSpacing = 6 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.EnlargeVertical = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsScaleChilds + ChildSizing.ShrinkVertical = crsScaleChilds + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + ClientHeight = 228 + ClientWidth = 489 + Items.Strings = ( + 'Plan 1. Three Factors (A,B,C) with no interactions.' + 'Plan 2. Four Factors (A,B,C,D) with partial interactions.' + 'Plan 3. Like Plan 2 but different assumptions (Partial confounding of interaction ABC.)' + 'The Greco-Latin with no interactions assumed.' + 'Plan 5. Repeated measures Latin Square (random assignment of groups to rows.)' + 'Plan 6. Fractional replication of a three factor factorial experiment in incomplete blocks.' + 'Plan 7. Plan 5 with superimposing of an orthogonal Latin square.' + 'Plan 9. AxBxC (same square used for all levels of Factor C.)' + ) + OnClick = PlanClick + TabOrder = 2 + end + object HelpBtn: TButton + Tag = 130 + Left = 8 + Height = 28 + Top = 272 + Width = 81 + Caption = 'Help' + OnClick = HelpBtnClick + TabOrder = 3 + end +end diff --git a/applications/lazstats/source_orig/latinsqrsunit.lrs b/applications/lazstats/source_orig/latinsqrsunit.lrs new file mode 100644 index 000000000..10ee25cec --- /dev/null +++ b/applications/lazstats/source_orig/latinsqrsunit.lrs @@ -0,0 +1,30 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TLatinSqrsFrm','FORMDATA',[ + 'TPF0'#13'TLatinSqrsFrm'#12'LatinSqrsFrm'#4'Left'#3#199#0#6'Height'#3'9'#1#3 + +'Top'#2'l'#5'Width'#3#2#2#7'Caption'#6'&Latin and Greco-Latin Squares Analys' + +'es'#12'ClientHeight'#3'9'#1#11'ClientWidth'#3#2#2#10'LCLVersion'#6#8'0.9.28' + +'.2'#0#7'TButton'#9'CancelBtn'#4'Left'#3#208#0#6'Height'#2#28#3'Top'#3#16#1#5 + +'Width'#2'J'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#0#0#0#7 + +'TButton'#5'OKBtn'#4'Left'#3#168#1#6'Height'#2#28#3'Top'#3#16#1#5'Width'#2'J' + +#7'Caption'#6#2'OK'#11'ModalResult'#2#1#7'OnClick'#7#10'OKBtnClick'#8'TabOrd' + +'er'#2#1#0#0#11'TRadioGroup'#4'Plan'#4'Left'#2#8#6'Height'#3#246#0#3'Top'#2#8 + +#5'Width'#3#237#1#8'AutoFill'#9#7'Caption'#6#14'Winer''s Plans:'#28'ChildSiz' + +'ing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizi' + +'ng.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.Enlarge' + +'Vertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7 + +#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'C' + +'hildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.Contr' + +'olsPerLine'#2#1#12'ClientHeight'#3#228#0#11'ClientWidth'#3#233#1#13'Items.S' + +'trings'#1#6'5Plan 1. Three Factors (A,B,C) with no interactions.'#6';Plan' + +' 2. Four Factors (A,B,C,D) with partial interactions.'#6'YPlan 3. Like ' + +'Plan 2 but different assumptions (Partial confounding of interaction ABC.)' + +#6'-The Greco-Latin with no interactions assumed.'#6'OPlan 5. Repeated mea' + +'sures Latin Square (random assignment of groups to rows.)'#6']Plan 6. Fra' + +'ctional replication of a three factor factorial experiment in incomplete bl' + +'ocks.'#6'BPlan 7. Plan 5 with superimposing of an orthogonal Latin square' + +'.'#6'>Plan 9. AxBxC (same square used for all levels of Factor C.)'#0#7'O' + +'nClick'#7#9'PlanClick'#8'TabOrder'#2#2#0#0#7'TButton'#7'HelpBtn'#3'Tag'#3 + +#130#0#4'Left'#2#8#6'Height'#2#28#3'Top'#3#16#1#5'Width'#2'Q'#7'Caption'#6#4 + +'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#3#0#0#0 +]); diff --git a/applications/lazstats/source_orig/latinsqrsunit.pas b/applications/lazstats/source_orig/latinsqrsunit.pas new file mode 100644 index 000000000..e4f683805 --- /dev/null +++ b/applications/lazstats/source_orig/latinsqrsunit.pas @@ -0,0 +1,4491 @@ +unit LatinSqrsUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, LatinSpecsUnit, MainUnit, Globals, FunctionsLib, + OutPutUnit, GraphLib, DataProcs, MatrixLib, ExtCtrls, contexthelpunit; + +type + + { TLatinSqrsFrm } + + TLatinSqrsFrm = class(TForm) + CancelBtn: TButton; + HelpBtn: TButton; + OKBtn: TButton; + Plan: TRadioGroup; + procedure HelpBtnClick(Sender: TObject); + procedure OKBtnClick(Sender: TObject); + procedure PlanClick(Sender: TObject); + private + { private declarations } + Btn : integer; + procedure Plan1(Sender: TObject); + procedure Plan2(Sender: TObject); + procedure Plan3(Sender: TObject); + procedure Plan4(Sender: TObject); + procedure Plan5(Sender: TObject); + procedure Plan6(Sender: TObject); + procedure Plan7(Sender: TObject); +// procedure Plan8(Sender: TObject); + procedure Plan9(Sender: TObject); + + public + { public declarations } + end; + +var + LatinSqrsFrm: TLatinSqrsFrm; + +implementation + +{ TLatinSqrsFrm } + +procedure TLatinSqrsFrm.OKBtnClick(Sender: TObject); +begin + case Btn of + 1 : begin + Plan1(Self); + end; + 2 : begin + Plan2(Self); + end; + 3 : begin + Plan3(Self); + end; + 4 : begin + Plan4(Self); + end; + 5 : begin + Plan5(Self); + end; + 6 : begin + Plan6(Self); + end; + 7 : begin + Plan7(Self); + end; + 8 : begin + Plan9(Self); + end; + end; + LatinSqrsFrm.Hide; +end; + +procedure TLatinSqrsFrm.HelpBtnClick(Sender: TObject); +begin + ContextHelpForm.HelpMessage((Sender as TButton).tag); +end; + +procedure TLatinSqrsFrm.PlanClick(Sender: TObject); +begin + Btn := Plan.ItemIndex + 1; +end; + +procedure TLatinSqrsFrm.Plan1(Sender: TObject); +label cleanup; +var + NoFactors : integer; + n : integer; // no. of subjects per cell + Acol, Bcol, Ccol, DataCol : integer; // variable columns in grid + FactorA : string; + FactorB : string; + FactorC : string; + DataVar : string; + cellstring : string; + i, j, minA, minB, minC, maxA, maxB, maxC, rangeA, rangeB, rangeC : integer; + value : integer; + cellcnts : IntDyneMat; + celltotals : DblDyneMat; + Ctotals : DblDyneVec; + design : StrDyneMat; + G, term1, term2, term3, term4, term5, term6, sumxsqr : double; + sumAsqr, sumBsqr, sumCsqr, sumABCsqr, SSA, SSB, SSC : double; + SSbetween, SSwithin, SSres, SStotal : double; + MSa, MSb, MSc, MSres, MSwithin : double; + data, GrandMean : double; + p, row, col, slice : integer; + dfa, dfb, dfc, dfres, dfwithin, dftotal, fa, fb, fc, fpartial : double; + proba, probb, probc, probpartial : double; + +begin + NoFactors := 3; + LatinSpecsFrm.AinBtn.Visible := true; + LatinSpecsFrm.AoutBtn.Visible := false; + LatinSpecsFrm.BinBtn.Visible := true; + LatinSpecsFrm.BoutBtn.Visible := false; + LatinSpecsFrm.CinBtn.Visible := true; + LatinSpecsFrm.CoutBtn.Visible := false; + LatinSpecsFrm.Label5.Visible := false; + LatinSpecsFrm.Label6.Visible := false; + LatinSpecsFrm.DinBtn.Visible := false; + LatinSpecsFrm.DoutBtn.Visible := false; + LatinSpecsFrm.ACodeEdit.Text := ''; + LatinSpecsFrm.BCodeEdit.Text := ''; + LatinSpecsFrm.CCodeEdit.Text := ''; + LatinSpecsFrm.DCodeEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Text := ''; + LatinSpecsFrm.DepVarEdit.Text := ''; + LatinSpecsFrm.nPerCellEdit.Text := ''; + LatinSpecsFrm.DCodeEdit.Visible := false; + LatinSpecsFrm.GrpInBtn.Visible := false; + LatinSpecsFrm.GrpOutBtn.Visible := false; + LatinSpecsFrm.GrpCodeEdit.Visible := false; + LatinSpecsFrm.DataInBtn.Visible := true; + LatinSpecsFrm.DataOutBtn.Visible := false; + LatinSpecsFrm.ShowModal; + if LatinSpecsFrm.ModalResult = mrCancel then exit; + n := StrToInt(LatinSpecsFrm.nPerCellEdit.Text); + if n <= 0 then + begin + ShowMessage('Please specify the number of cases per cell.'); + exit; + end; + FactorA := LatinSpecsFrm.ACodeEdit.Text; + FactorB := LatinSpecsFrm.BCodeEdit.Text; + FactorC := LatinSpecsFrm.CCodeEdit.Text; + DataVar := LatinSpecsFrm.DepVarEdit.Text; + for i := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[i,0]; + if (cellstring = FactorA) then ACol := i; + if (cellstring = FactorB) then BCol := i; + if (cellstring = FactorC) then Ccol := i; + if (cellstring = DataVar) then DataCol := i; + end; + // determine no. of levels in A, B and C + minA := 1000; + minB := 1000; + minC := 1000; + maxA := -1000; + maxB := -1000; + maxC := -1000; + for i := 1 to NoCases do + begin + value := StrToInt(OS3MainFrm.DataGrid.Cells[ACol,i]); + if value < minA then minA := value; + if value > maxA then maxA := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[BCol,i]); + if value < minB then minB := value; + if value > maxB then maxB := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + if value < minC then minC := value; + if value > maxC then maxC := value; + end; + rangeA := maxA - minA + 1; + rangeB := maxB - minB + 1; + rangeC := maxC - minC + 1; + + // check for squareness + if ( (rangeA <> rangeB) or (rangeA <> rangeC) or (rangeB <> rangeC)) then + begin + ShowMessage('ERROR! In a Latin square the range of values should all be equal!'); + exit; + end; + p := rangeA; + + // set up an array for cell counts and for cell sums and marginal sums + SetLength(cellcnts,rangeA+1,rangeB+1); + SetLength(celltotals,rangeA+1,rangeB+1); + SetLength(Ctotals,rangeC+1); + SetLength(Design,rangeA,rangeB); + + // initialize arrays and values + for i := 0 to rangeA do + begin + for j := 0 to rangeB do + begin + cellcnts[i,j] := 0; + celltotals[i,j] := 0.0; + end; + end; + for i := 0 to rangeC-1 do Ctotals[i] := 0; + G := 0.0; + sumxsqr := 0.0; + sumAsqr := 0.0; + sumBsqr := 0.0; + sumCsqr := 0.0; + sumABCsqr := 0.0; + term1 := 0.0; + term2 := 0.0; + term3 := 0.0; + term4 := 0.0; + term5 := 0.0; + term6 := 0.0; + GrandMean := 0.0; + + // Read in the data + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + data := StrToFloat(OS3MainFrm.DataGrid.Cells[DataCol,i]); + cellcnts[row-1,col-1] := cellcnts[row-1,col-1] + 1; + celltotals[row-1,col-1] := celltotals[row-1,col-1] + data; + Ctotals[slice-1] := Ctotals[slice-1] + data; + sumxsqr := sumxsqr + (data * data); + GrandMean := GrandMean + data; + end; + + // check for equal cell counts + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + if cellcnts[i,j] <> n then + begin + ShowMessage('cell sizes are not equal!'); + goto cleanup; + end; + end; + end; + + // calculate values + for i := 0 to p - 1 do // get row and column sums + begin + for j := 0 to p-1 do + begin + celltotals[i,p] := celltotals[i,p] + celltotals[i,j]; + celltotals[p,j] := celltotals[p,j] + celltotals[i,j]; + sumABCsqr := sumABCsqr + (celltotals[i,j] * celltotals[i,j]); + end; + end; + for i := 0 to p-1 do G := G + Ctotals[i]; + term1 := (G * G) / (n * p * p); + term2 := sumxsqr; + for i := 0 to p-1 do // sum of squared A's + sumAsqr := sumAsqr + (celltotals[i,p] * celltotals[i,p]); + for i := 0 to p-1 do // sum of squared B's + sumBsqr := sumBsqr + (celltotals[p,i] * celltotals[p,i]); + for i := 0 to p-1 do // sum of squared C's + sumCsqr := sumCsqr + (Ctotals[i] * Ctotals[i]); + term3 := sumAsqr / (n * p); + term4 := sumBsqr / (n * p); + term5 := sumCsqr / (n * p); + term6 := sumABCsqr / n; + SSA := term3 - term1; + SSB := term4 - term1; + SSC := term5 - term1; + SSbetween := term6 - term1; + SSwithin := term2 - term6; + SSres := term6 - term3 - term4 - term5 + 2 * term1; + SStotal := SSA + SSB + SSC + SSres + SSwithin; + dfa := p-1; + dfb := p-1; + dfc := p-1; + dfres := (p-1) * (p-2); + dfwithin := (p * p) * (n - 1); + dftotal := n * p * p - 1; + MSa := SSA / dfa; + MSb := SSB / dfb; + MSc := SSC / dfc; + MSres := SSres / dfres; + MSwithin := SSwithin / dfwithin; + fa := MSa / MSwithin; + fb := MSb / MSwithin; + fc := MSc / MSwithin; + fpartial := MSres / MSwithin; + proba := probf(fa,dfa,dfwithin); + probb := probf(fb,dfb,dfwithin); + probc := probf(fc,dfc,dfwithin); + probpartial := probf(fpartial,dfres,dfwithin); + + // show ANOVA table results + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Latin Square Analysis Plan 1 Results'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + OutPutFrm.RichEdit.Lines.Add('Source SS DF MS F Prob.>F'); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + cellstring := 'Factor A '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSA,dfa,MSa,fa,proba]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Factor B '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSB,dfb,MSb,fb,probb]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Factor C '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSC,dfc,MSc,fc,probc]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Residual '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSres,dfres,MSres,fpartial,probpartial]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Within '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSwithin, dfwithin, MSwithin]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Total '; + cellstring := cellstring + format('%9.3f %9.0f',[SStotal, dftotal]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + + // show design + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Experimental Design'); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + Design[row-1,col-1] := 'C' + IntToStr(slice); + end; + for i := 0 to p - 1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + begin + cellstring := cellstring + format('%5s',[Design[i,j]]); + end; + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // show table cell means + for i := 0 to p-1 do + for j := 0 to p-1 do + celltotals[i,j] := celltotals[i,j] / n; + for i := 0 to p-1 do + begin + celltotals[i,p] := celltotals[i,p] / (p * n); + celltotals[p,i] := celltotals[p,i] / (p * n); + end; + GrandMean := GrandMean / (p * p * n); + for i := 0 to p-1 do Ctotals[i] := Ctotals[i] / (p * n); + + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Cell means and totals'); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 0 to p-1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[celltotals[i,j]]); + end; + cellstring := cellstring + format(' %8.3f ',[celltotals[i,p]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := 'Total '; + for j := 0 to p-1 do + cellstring := cellstring + format(' %8.3f ',[celltotals[p,j]]); + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // show category means + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorC]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Ctotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.ShowModal; + +cleanup: + Design := nil; + Ctotals := nil; + celltotals := nil; + cellcnts := nil; +end; + +procedure TLatinSqrsFrm.Plan2(Sender: TObject); +label cleanup; +var + NoFactors : integer; + n : integer; // no. of subjects per cell + Acol, Bcol, Ccol, Dcol, DataCol : integer; // variable columns in grid + FactorA : string; + FactorB : string; + FactorC : string; + FactorD : string; + DataVar : string; + cellstring : string; + i, j, k, minA, minB, minC, maxA, maxB, maxC : integer; + minD, maxD, rangeD, rangeA, rangeB, rangeC : integer; + value : integer; + cellcnts : IntDyneCube; + celltotals : DblDyneCube; + Ctotals : DblDyneVec; + design : StrDyneMat; + G, term1, term2, term3, term4, term5, term6, term7, term8 : double; + term9, sumxsqr : double; + sumAsqr, sumBsqr, sumCsqr, sumDsqr, SSA, SSB, SSC, SSD : double; + sumADsqr, sumBDsqr, sumCDsqr : double; + ADmat, BDmat, CDmat : DblDyneMat; + SSAD, SSBD, SSCD, SSbetween, SSwithin, SSres, SStotal : double; + MSa, MSb, MSc, MSd, MSAD, MSBD, MSCD, MSres, MSwithin : double; + data, GrandMean : double; + p, row, col, slice, block : integer; + dfa, dfb, dfc, dfres, dfwithin, dftotal, fa, fb, fc, fpartial : double; + dfd, fd, fad, fbd, fcd, fabc, dfad, dfbd, dfcd : double; + proba, probb, probc, probd, probpartial : double; + probad, probbd, probcd, probabc : double; + +begin + NoFactors := 4; + LatinSpecsFrm.AinBtn.Visible := true; + LatinSpecsFrm.AoutBtn.Visible := false; + LatinSpecsFrm.BinBtn.Visible := true; + LatinSpecsFrm.BoutBtn.Visible := false; + LatinSpecsFrm.CinBtn.Visible := true; + LatinSpecsFrm.CoutBtn.Visible := false; + LatinSpecsFrm.DCodeEdit.Visible := true; + LatinSpecsFrm.ACodeEdit.Text := ''; + LatinSpecsFrm.BCodeEdit.Text := ''; + LatinSpecsFrm.CCodeEdit.Text := ''; + LatinSpecsFrm.DCodeEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Text := ''; + LatinSpecsFrm.DepVarEdit.Text := ''; + LatinSpecsFrm.nPerCellEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Visible := false; + LatinSpecsFrm.Label5.Visible := true; + LatinSpecsFrm.Label6.Visible := false; + LatinSpecsFrm.DinBtn.Visible := true; + LatinSpecsFrm.DoutBtn.Visible := false; + LatinSpecsFrm.GrpInBtn.Visible := false; + LatinSpecsFrm.GrpOutBtn.Visible := false; + LatinSpecsFrm.DataInBtn.Visible := true; + LatinSpecsFrm.DataOutBtn.Visible := false; + LatinSpecsFrm.ShowModal; + if LatinSpecsFrm.ModalResult = mrCancel then exit; + n := StrToInt(LatinSpecsFrm.nPerCellEdit.Text); + if n <= 0 then + begin + ShowMessage('Please specify the number of cases per cell.'); + exit; + end; + FactorA := LatinSpecsFrm.ACodeEdit.Text; + FactorB := LatinSpecsFrm.BCodeEdit.Text; + FactorC := LatinSpecsFrm.CCodeEdit.Text; + FactorD := LatinSpecsFrm.DCodeEdit.Text; + DataVar := LatinSpecsFrm.DepVarEdit.Text; + for i := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[i,0]; + if (cellstring = FactorA) then ACol := i; + if (cellstring = FactorB) then BCol := i; + if (cellstring = FactorC) then Ccol := i; + if (cellstring = FactorD) then Dcol := i; + if (cellstring = DataVar) then DataCol := i; + end; + // determine no. of levels in A, B and C + minA := 1000; + minB := 1000; + minC := 1000; + minD := 1000; + maxA := -1000; + maxB := -1000; + maxC := -1000; + maxD := -1000; + for i := 1 to NoCases do + begin + value := StrToInt(OS3MainFrm.DataGrid.Cells[ACol,i]); + if value < minA then minA := value; + if value > maxA then maxA := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[BCol,i]); + if value < minB then minB := value; + if value > maxB then maxB := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + if value < minC then minC := value; + if value > maxC then maxC := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Dcol,i]); + if value < minD then minD := value; + if value > maxD then maxD := value; + end; + rangeA := maxA - minA + 1; + rangeB := maxB - minB + 1; + rangeC := maxC - minC + 1; + rangeD := maxD - minD + 1; + + // check for squareness + if ( (rangeA <> rangeB) or (rangeA <> rangeC) or (rangeB <> rangeC)) then + begin + ShowMessage('ERROR! In a Latin square the range of values should all be equal!'); + exit; + end; + p := rangeA; + + // set up an array for cell counts and for cell sums and marginal sums + SetLength(cellcnts,rangeA+1,rangeB+1,rangeD+1); + SetLength(celltotals,rangeA+1,rangeB+1,rangeD+1); + SetLength(ADmat,rangeA+1,rangeD+1); + SetLength(BDmat,rangeB+1,rangeD+1); + SetLength(CDmat,rangeC+1,rangeD+1); + SetLength(Ctotals,rangeC+1); + SetLength(Design,rangeA,rangeB); + + // initialize arrays and values + for i := 0 to rangeA do + begin + for j := 0 to rangeB do + begin + for k := 0 to rangeD do + begin + cellcnts[i,j,k] := 0; + celltotals[i,j,k] := 0.0; + end; + end; + end; + for i := 0 to rangeA do + for j := 0 to rangeD do + ADmat[i,j] := 0.0; + for i := 0 to rangeB do + for j := 0 to rangeD do + BDmat[i,j] := 0.0; + for i := 0 to rangeC do + for j := 0 to rangeD do + CDmat[i,j] := 0.0; + for i := 0 to rangeC-1 do Ctotals[i] := 0; + G := 0.0; + sumxsqr := 0.0; + sumAsqr := 0.0; + sumBsqr := 0.0; + sumCsqr := 0.0; + sumDsqr := 0.0; + sumADsqr := 0.0; + sumBDsqr := 0.0; + sumCDsqr := 0.0; + term1 := 0.0; + term2 := 0.0; + term3 := 0.0; + term4 := 0.0; + term5 := 0.0; + term6 := 0.0; + term7 := 0.0; + term8 := 0.0; + term9 := 0.0; + GrandMean := 0.0; + SSwithin := 0.0; + + // Read in the data + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + block := StrToInt(OS3MainFrm.DataGrid.Cells[Dcol,i]); + data := StrToFloat(OS3MainFrm.DataGrid.Cells[DataCol,i]); + cellcnts[row-1,col-1,block-1] := cellcnts[row-1,col-1,block-1] + 1; + celltotals[row-1,col-1,block-1] := celltotals[row-1,col-1,block-1] + data; + ADmat[row-1,block-1] := ADmat[row-1,block-1] + data; + BDmat[col-1,block-1] := BDmat[col-1,block-1] + data; + CDmat[slice-1,block-1] := CDmat[slice-1,block-1] + data; + Ctotals[slice-1] := Ctotals[slice-1] + data; + sumxsqr := sumxsqr + (data * data); + GrandMean := GrandMean + data; + end; + + // check for equal cell counts + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + for k := 0 to rangeD - 1 do + begin + if cellcnts[i,j,k] <> n then + begin + ShowMessage('cell sizes are not equal!'); + goto cleanup; + end; + end; + end; + end; + + // calculate values + for i := 0 to p - 1 do // get row, column and block sums + begin + for j := 0 to p-1 do + begin + for k := 0 to rangeD - 1 do + begin + celltotals[i,p,k] := celltotals[i,p,k] + celltotals[i,j,k]; + celltotals[p,j,k] := celltotals[p,j,k] + celltotals[i,j,k]; + celltotals[i,j,rangeD] :=celltotals[i,j,rangeD] + celltotals[i,j,k]; + end; + end; + end; + // get interaction AD + for i := 0 to rangeA-1 do + begin + for j := 0 to rangeD-1 do + begin + sumADsqr := sumADsqr + (ADmat[i,j] * ADmat[i,j]); + ADmat[i,rangeD] := ADmat[i,rangeD] + ADmat[i,j]; + ADmat[rangeA,j] := ADmat[rangeA,j] + ADmat[i,j]; + end; + end; + for i := 0 to rangeA-1 do + sumAsqr := sumAsqr + (ADmat[i,rangeD] * ADmat[i,rangeD]); + for i := 0 to rangeD-1 do + sumDsqr := sumDsqr + (ADmat[rangeA,i] * ADmat[rangeA,i]); + + // get interaction BD + for i := 0 to rangeB-1 do + begin + for j := 0 to rangeD-1 do + begin + sumBDsqr := sumBDsqr + (BDmat[i,j] * BDmat[i,j]); + BDmat[i,rangeD] := BDmat[i,rangeD] + BDmat[i,j]; + BDmat[rangeB,j] := BDmat[rangeB,j] + BDmat[i,j]; + end; + end; + for i := 0 to rangeB-1 do + sumBsqr := sumBsqr + (BDmat[i,rangeD] * BDmat[i,rangeD]); + + // get interaction CD + for i := 0 to rangeC-1 do + begin + for j := 0 to rangeD-1 do + begin + sumCDsqr := sumCDsqr + (CDmat[i,j] * CDmat[i,j]); + CDmat[i,rangeD] := CDmat[i,rangeD] + CDmat[i,j]; + CDmat[rangeC,j] := CDmat[rangeC,j] + CDmat[i,j]; + end; + end; + for i := 0 to rangeC-1 do + sumCsqr := sumCsqr + (CDmat[i,rangeD] * CDmat[i,rangeD]); + + G := GrandMean; + term1 := (G * G) / (n * p * p * rangeD); + term2 := sumxsqr; + term3 := sumAsqr / (n * p * rangeD); + term4 := sumBsqr / (n * p * rangeD); + term5 := sumCsqr / (n * p * rangeD); + term6 := sumADsqr / (n * p); + term7 := SumBDsqr / (n * p); + term8 := SumCDsqr / (n * p); + term9 := sumDsqr / (n * p * p); + SSA := term3 - term1; + SSD := term9 - term1; + SSAD := term6 - term3 - term9 + term1; + SSB := term4 - term1; + SSBD := term7 - term4 - term9 + term1; + SSC := term5 - term1; + SSCD := term8 - term5 - term9 + term1; + + // get ss within + for i := 0 to rangeA - 1 do + for j := 0 to rangeB - 1 do + for k := 0 to rangeD - 1 do + SSwithin := SSwithin + (celltotals[i,j,k] * celltotals[i,j,k]); + SSwithin := sumXsqr - (SSwithin / n); + + // get SS residual + SStotal := sumXsqr - term1; + SSres := SStotal - SSA - SSB - SSC - SSD - SSAD - SSBD - SSCD - SSwithin; + dfa := p-1; + dfb := p-1; + dfc := p-1; + dfd := rangeD - 1; + dfad := (p-1) * (rangeD - 1); + dfbd := dfad; + dfcd := dfad; + dfres := rangeD * (p-1) * (p-2); + dfwithin := (p * p) * rangeD * (n - 1); + dftotal := n * p * p * rangeD - 1; + MSa := SSA / dfa; + MSb := SSB / dfb; + MSc := SSC / dfc; + MSd := SSD / dfd; + MSad := SSAD / dfad; + MSbd := SSBD / dfbd; + MScd := SSCD / dfcd; + MSres := SSres / dfres; + MSwithin := SSwithin / dfwithin; + fa := MSa / MSwithin; + fb := MSb / MSwithin; + fc := MSc / MSwithin; + fd := MSd / MSwithin; + fad := MSad / MSwithin; + fbd := MSbd / MSwithin; + fcd := MScd / MSwithin; + fpartial := MSres / MSwithin; + proba := probf(fa,dfa,dfwithin); + probb := probf(fb,dfb,dfwithin); + probc := probf(fc,dfc,dfwithin); + probd := probf(fd,dfd,dfwithin); + probad := probf(fad,dfad,dfwithin); + probbd := probf(fbd,dfbd,dfwithin); + probcd := probf(fcd,dfcd,dfwithin); + probpartial := probf(fpartial,dfres,dfwithin); + + // show ANOVA table results + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Latin Square Analysis Plan 2 Results'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + OutPutFrm.RichEdit.Lines.Add('Source SS DF MS F Prob.>F'); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + cellstring := 'Factor A '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSA,dfa,MSa,fa,proba]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Factor B '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSB,dfb,MSb,fb,probb]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Factor C '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSC,dfc,MSc,fc,probc]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Factor D '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSD,dfd,MSd,fd,probd]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'A x D '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSAD,dfad,MSad,fad,probad]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'B x D '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSBD,dfbd,MSbd,fbd,probbd]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'C x D '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSCD,dfcd,MScd,fcd,probcd]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Residual '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSres,dfres,MSres,fpartial,probpartial]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Within '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSwithin, dfwithin, MSwithin]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Total '; + cellstring := cellstring + format('%9.3f %9.0f',[SStotal, dftotal]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + + // show design for each block + for k := 0 to rangeD - 1 do + begin + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Experimental Design for block ' + format('%d',[k+1]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + block := StrToInt(OS3MainFrm.DataGrid.Cells[Dcol,i]); + if block = minD + k then + Design[row-1,col-1] := 'C' + IntToStr(slice); + end; + for i := 0 to p - 1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + begin + cellstring := cellstring + format('%5s',[Design[i,j]]); + end; + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + + // get cell means + for i := 0 to p-1 do + for j := 0 to p-1 do + for k := 0 to rangeD - 1 do + celltotals[i,j,k] := celltotals[i,j,k] / n; + for i := 0 to p-1 do + begin + for k := 0 to rangeD - 1 do + begin + celltotals[i,p,k] := celltotals[i,p,k] / (p * n); + celltotals[p,i,k] := celltotals[p,i,k] / (p * n); + end; + end; + GrandMean := GrandMean / (p * p * n * rangeD); + for i := 0 to p-1 do Ctotals[i] := Ctotals[i] / (p * n * rangeD); + + // show table of means for each block + for k := 0 to rangeD-1 do + begin + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := format('BLOCK %d',[k+1]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Cell means and totals'); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 0 to p-1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[celltotals[i,j,k]]); + end; + cellstring := cellstring + format(' %8.3f ',[celltotals[i,p,k]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := 'Total '; + for j := 0 to p-1 do + cellstring := cellstring + format(' %8.3f ',[celltotals[p,j,k]]); + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + + // show category means + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorC]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Ctotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.ShowModal; + +cleanup: + Design := nil; + Ctotals := nil; + CDmat := nil; + BDmat := nil; + ADmat := nil; + celltotals := nil; + cellcnts := nil; +end; + +procedure TLatinSqrsFrm.Plan3(Sender: TObject); +label cleanup; +var + NoFactors : integer; + n : integer; // no. of subjects per cell + Acol, Bcol, Ccol, Dcol, DataCol : integer; // variable columns in grid + FactorA : string; + FactorB : string; + FactorC : string; + FactorD : string; + DataVar : string; + cellstring : string; + i, j, k, m, minA, minB, minC, maxA, maxB, maxC : integer; + minD, maxD, rangeA, rangeB, rangeC, rangeD : integer; + value : integer; + cellcnts : IntDyneCube; + celltotals : DblDyneQuad; + ABmat, ACmat, BCmat : DblDyneMat; + ABCmat : DblDyneCube; + Atotals : DblDyneVec; + Btotals : DblDyneVec; + Ctotals : DblDyneVec; + Dtotals : DblDyneVec; + design : StrDyneMat; + G, term1, term2, term3, term4, term5, term6, term7, term8 : double; + term9, term10, sumxsqr : double; + sumAsqr, sumBsqr, sumCsqr, sumDsqr, SSA, SSB, SSC, SSD : double; + sumABsqr, sumACsqr, sumBCsqr, sumABCsqr : double; + SSAB, SSAC, SSBC, SSABC, SSbetween, SSwithin, SSres, SStotal : double; + MSa, MSb, MSc, MSd, MSAB, MSAC, MSBC, MSABC, MSres, MSwithin : double; + data, GrandMean : double; + p, row, col, slice, block : integer; + dfa, dfb, dfc, dfres, dfwithin, dftotal, fa, fb, fc, fpartial : double; + dfd, fd, fab, fac, fbc, fabc, dfab, dfac, dfbc, dfabc : double; + proba, probb, probc, probd, probpartial : double; + probab, probac, probbc, probabc : double; + +begin + NoFactors := 4; + LatinSpecsFrm.AinBtn.Visible := true; + LatinSpecsFrm.AoutBtn.Visible := false; + LatinSpecsFrm.BinBtn.Visible := true; + LatinSpecsFrm.BoutBtn.Visible := false; + LatinSpecsFrm.CinBtn.Visible := true; + LatinSpecsFrm.CoutBtn.Visible := false; + LatinSpecsFrm.DCodeEdit.Visible := true; + LatinSpecsFrm.ACodeEdit.Text := ''; + LatinSpecsFrm.BCodeEdit.Text := ''; + LatinSpecsFrm.CCodeEdit.Text := ''; + LatinSpecsFrm.DCodeEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Text := ''; + LatinSpecsFrm.DepVarEdit.Text := ''; + LatinSpecsFrm.nPerCellEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Visible := false; + LatinSpecsFrm.Label5.Visible := true; + LatinSpecsFrm.Label6.Visible := false; + LatinSpecsFrm.DinBtn.Visible := true; + LatinSpecsFrm.DoutBtn.Visible := false; + LatinSpecsFrm.GrpInBtn.Visible := false; + LatinSpecsFrm.GrpOutBtn.Visible := false; + LatinSpecsFrm.DataInBtn.Visible := true; + LatinSpecsFrm.DataOutBtn.Visible := false; + LatinSpecsFrm.ShowModal; + if LatinSpecsFrm.ModalResult = mrCancel then exit; + n := StrToInt(LatinSpecsFrm.nPerCellEdit.Text); + if n <= 0 then + begin + ShowMessage('Please specify the number of cases per cell.'); + exit; + end; + FactorA := LatinSpecsFrm.ACodeEdit.Text; + FactorB := LatinSpecsFrm.BCodeEdit.Text; + FactorC := LatinSpecsFrm.CCodeEdit.Text; + FactorD := LatinSpecsFrm.DCodeEdit.Text; + DataVar := LatinSpecsFrm.DepVarEdit.Text; + for i := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[i,0]; + if (cellstring = FactorA) then ACol := i; + if (cellstring = FactorB) then BCol := i; + if (cellstring = FactorC) then Ccol := i; + if (cellstring = FactorD) then Dcol := i; + if (cellstring = DataVar) then DataCol := i; + end; + // determine no. of levels in A, B and C + minA := 1000; + minB := 1000; + minC := 1000; + minD := 1000; + maxA := -1000; + maxB := -1000; + maxC := -1000; + maxD := -1000; + for i := 1 to NoCases do + begin + value := StrToInt(OS3MainFrm.DataGrid.Cells[ACol,i]); + if value < minA then minA := value; + if value > maxA then maxA := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[BCol,i]); + if value < minB then minB := value; + if value > maxB then maxB := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + if value < minC then minC := value; + if value > maxC then maxC := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Dcol,i]); + if value < minD then minD := value; + if value > maxD then maxD := value; + end; + rangeA := maxA - minA + 1; + rangeB := maxB - minB + 1; + rangeC := maxC - minC + 1; + rangeD := maxD - minD + 1; + + // check for squareness + if ( (rangeA <> rangeB) or (rangeA <> rangeC) or (rangeB <> rangeC) or (rangeA <> rangeD) ) then + begin + ShowMessage('ERROR! In a Latin square the range of values should all be equal!'); + exit; + end; + p := rangeA; + + // set up an array for cell counts and for cell sums and marginal sums + SetLength(cellcnts,p+1,p+1,p+1); + SetLength(celltotals,p+1,p+1,p+1,p+1); + SetLength(ABmat,p+1,p+1); + SetLength(ACmat,p+1,p+1); + SetLength(BCmat,p+1,p+1); + SetLength(ABCmat,p+1,p+1,p+1); + SetLength(Atotals,p); + SetLength(Btotals,p); + SetLength(Ctotals,p); + SetLength(Dtotals,p); + SetLength(Design,p,p); + + // initialize arrays and values + for i := 0 to p do + for j := 0 to p do + for k := 0 to p do + for m := 0 to p do + celltotals[i,j,k,m] := 0.0; + for i := 0 to p do + begin + for j := 0 to p do + begin + ABmat[i,j] := 0.0; + ACmat[i,j] := 0.0; + BCmat[i,j] := 0.0; + end; + end; + for i := 0 to p do + begin + for j := 0 to p do + begin + for k := 0 to p do + begin + ABCmat[i,j,k] := 0.0; + cellcnts[i,j,k] := 0; + end; + end; + end; + for i := 0 to p-1 do + begin + Atotals[i] := 0.0; + Btotals[i] := 0.0; + Ctotals[i] := 0.0; + Dtotals[i] := 0.0; + end; + G := 0.0; + sumxsqr := 0.0; + sumAsqr := 0.0; + sumBsqr := 0.0; + sumCsqr := 0.0; + sumDsqr := 0.0; + sumABsqr := 0.0; + sumACsqr := 0.0; + sumBCsqr := 0.0; + sumABCsqr := 0.0; + term1 := 0.0; + term2 := 0.0; + term3 := 0.0; + term4 := 0.0; + term5 := 0.0; + term6 := 0.0; + term7 := 0.0; + term8 := 0.0; + term9 := 0.0; + term10 := 0.0; + GrandMean := 0.0; + SSwithin := 0.0; + + // Read in the data + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + block := StrToInt(OS3MainFrm.DataGrid.Cells[Dcol,i]); + data := StrToFloat(OS3MainFrm.DataGrid.Cells[DataCol,i]); + cellcnts[row-1,col-1,slice-1] := cellcnts[row-1,col-1,slice-1] + 1; + celltotals[row-1,col-1,slice-1,block-1] := celltotals[row-1,col-1,slice-1,block-1] + data; + ABmat[row-1,col-1] := ABmat[row-1,col-1] + data; + ACmat[row-1,slice-1] := ACmat[row-1,slice-1] + data; + BCmat[col-1,slice-1] := BCmat[col-1,slice-1] + data; + ABCmat[row-1,col-1,slice-1] := ABCmat[row-1,col-1,slice-1] + data; + Atotals[row-1] := Atotals[row-1] + data; + Btotals[col-1] := Btotals[col-1] + data; + Ctotals[slice-1] := Ctotals[slice-1] + data; + Dtotals[block-1] := Dtotals[block-1] + data; + sumxsqr := sumxsqr + (data * data); + GrandMean := GrandMean + data; + end; + + // check for equal cell counts in ABCmat + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + for k := 0 to p - 1 do + begin + if cellcnts[i,j,k] <> n then + begin + ShowMessage('cell sizes are not equal!'); + goto cleanup; + end; + end; + end; + end; + + // calculate values + for i := 0 to p - 1 do // get row, column, slice and block sums + begin + for j := 0 to p-1 do + begin + for k := 0 to p - 1 do + begin + for m := 0 to p - 1 do + begin + celltotals[p,j,k,m] := celltotals[p,j,k,m] + celltotals[i,j,k,m]; + celltotals[i,p,k,m] := celltotals[i,p,k,m] + celltotals[i,j,k,m]; + celltotals[i,j,p,m] := celltotals[i,j,p,m] + celltotals[i,j,k,m]; + celltotals[i,j,k,p] := celltotals[i,j,k,p] + celltotals[i,j,k,m]; + end; + end; + end; + end; + for i := 0 to p - 1 do // get row, column and slice sums in ABC matrix + begin + for j := 0 to p-1 do + begin + for k := 0 to p-1 do + begin + ABCmat[p,j,k] := ABCmat[p,j,k] + ABCmat[i,j,k]; + ABCmat[i,p,k] := ABCmat[i,p,k] + ABCmat[i,j,k]; + ABCmat[i,j,p] := ABCmat[i,j,p] + ABCmat[i,j,k]; + end; + end; + end; + + // get 2-way interactions + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + sumABsqr := sumABsqr + (ABmat[i,j] * ABmat[i,j]); + sumACsqr := sumACsqr + (ACmat[i,j] * ACmat[i,j]); + sumBCsqr := SumBCsqr + (BCmat[i,j] * BCmat[i,j]); + ABmat[i,p] := ABmat[i,p] + ABmat[i,j]; + ABmat[p,j] := ABmat[p,j] + ABmat[i,j]; + ACmat[i,p] := ACmat[i,p] + ACmat[i,j]; + ACmat[p,j] := ACmat[p,j] + ACmat[i,j]; + BCmat[i,p] := BCmat[i,p] + BCmat[i,j]; + BCmat[p,j] := BCmat[p,j] + BCmat[i,j]; + for k := 0 to p-1 do + sumABCsqr := sumABCsqr + (ABCmat[i,j,k] * ABCmat[i,j,k]); + end; + end; + for i := 0 to p-1 do + begin + sumAsqr := sumAsqr + (Atotals[i] * Atotals[i]); + sumBsqr := sumBsqr + (Btotals[i] * Btotals[i]); + SumCsqr := sumCsqr + (Ctotals[i] * Ctotals[i]); + sumDsqr := sumDsqr + (Dtotals[i] * Dtotals[i]); + end; + + G := GrandMean; + term1 := (G * G) / (n * p * p * p); + term2 := sumxsqr; + term3 := sumAsqr / (n * p * p); + term4 := sumBsqr / (n * p * p); + term5 := sumCsqr / (n * p * p); + term9 := sumDsqr / (n * p * p); + term6 := sumABsqr / (n * p); + term7 := SumACsqr / (n * p); + term8 := SumBCsqr / (n * p); + term10 := sumABCsqr / n; + SSA := term3 - term1; + SSB := term4 - term1; + SSC := term5 - term1; + SSD := term9 - term1; + SSAB := term6 - term3 - term4 + term1; + SSAC := term7 - term3 - term5 + term1; + SSBC := term8 - term4 - term5 + term1; + SSABC := term10 - term6 - term7 - term8 + term3 + term4 + term5 - term1; + SSABC := SSABC - (term9 - term1); + + // get ss within + for i := 0 to p - 1 do + for j := 0 to p - 1 do + for k := 0 to p - 1 do + for m := 0 to p - 1 do + SSwithin := SSwithin + (celltotals[i,j,k,m] * celltotals[i,j,k,m]); + SSwithin := sumXsqr - (SSwithin / n); + + // get SS residual + SStotal := sumXsqr - term1; + dfa := p-1; + dfb := p-1; + dfc := p-1; + dfd := p-1; + dfab := (p - 1) * (p - 1); + dfac := dfab; + dfbc := dfab; + dfabc := ( (p-1) * (p-1) * (p-1) ) - (p-1); + dfwithin := p * p * p * (n - 1); + dftotal := n * p * p * p - 1; + MSa := SSA / dfa; + MSb := SSB / dfb; + MSc := SSC / dfc; + MSd := SSD / dfd; + MSab := SSAB / dfab; + MSac := SSAC / dfac; + MSbc := SSBC / dfbc; + MSabc := SSABC / dfabc; +// MSres := SSres / dfres; + MSwithin := SSwithin / dfwithin; + fa := MSa / MSwithin; + fb := MSb / MSwithin; + fc := MSc / MSwithin; + fd := MSd / MSwithin; + fab := MSab / MSwithin; + fac := MSac / MSwithin; + fbc := MSbc / MSwithin; + fabc := MSabc / MSwithin; + proba := probf(fa,dfa,dfwithin); + probb := probf(fb,dfb,dfwithin); + probc := probf(fc,dfc,dfwithin); + probd := probf(fd,dfd,dfwithin); + probab := probf(fab,dfab,dfwithin); + probac := probf(fac,dfac,dfwithin); + probbc := probf(fbc,dfbc,dfwithin); + probabc := probf(fabc,dfabc,dfwithin); + + // show ANOVA table results + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Latin Square Analysis Plan 3 Results'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + OutPutFrm.RichEdit.Lines.Add('Source SS DF MS F Prob.>F'); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + cellstring := 'Factor A '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSA,dfa,MSa,fa,proba]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Factor B '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSB,dfb,MSb,fb,probb]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Factor C '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSC,dfc,MSc,fc,probc]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Factor D '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSD,dfd,MSd,fd,probd]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'A x B '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSAB,dfab,MSab,fab,probab]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'A x C '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSAC,dfac,MSac,fac,probac]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'B x C '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSBC,dfbc,MSbc,fbc,probbc]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'A x B x C '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSABC,dfabc,MSabc,fabc,probabc]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Within '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSwithin, dfwithin, MSwithin]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Total '; + cellstring := cellstring + format('%9.3f %9.0f',[SStotal, dftotal]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + + // show design for each block + for k := 0 to rangeD - 1 do + begin + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Experimental Design for block ' + format('%d',[k+1]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + block := StrToInt(OS3MainFrm.DataGrid.Cells[Dcol,i]); + if block = minD + k then + Design[row-1,col-1] := 'C' + IntToStr(slice); + end; + for i := 0 to p - 1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + begin + cellstring := cellstring + format('%5s',[Design[i,j]]); + end; + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + + // get cell means + for i := 0 to p-1 do + for j := 0 to p-1 do + for k := 0 to p - 1 do + for m := 0 to p - 1 do + celltotals[i,j,k,m] := celltotals[i,j,k,m] / n; + for i := 0 to p-1 do + begin + for j := 0 to p - 1 do + begin + for k := 0 to p - 1 do + begin + for m := 0 to p - 1 do + begin + celltotals[p,j,k,m] := celltotals[p,j,k,m] / (p * n); + celltotals[i,p,k,m] := celltotals[i,p,k,m] / (p * n); + celltotals[i,j,p,m] := celltotals[i,j,p,m] / (p * n); + celltotals[i,j,k,p] := celltotals[i,j,k,p] / (p * n); + end; + end; + end; + end; + for i := 0 to p-1 do + for j := 0 to p-1 do + for k := 0 to p-1 do + ABCmat[i,j,k] := ABCmat[i,j,k] / n; + for j := 0 to p-1 do + for k := 0 to p-1 do + ABCmat[p,j,k] := ABCmat[p,j,k] / (p * n); + for i := 0 to p-1 do + for k := 0 to p-1 do + ABCmat[i,p,k] := ABCmat[i,p,k] / (p * n); + for i := 0 to p - 1 do + for j := 0 to p - 1 do + ABCmat[i,j,p] := ABCmat[i,j,p] / (p * n); + + GrandMean := GrandMean / (p * p * p * n ); + for i := 0 to p-1 do + begin + Atotals[i] := Atotals[i] / (p * p * n); + Btotals[i] := Btotals[i] / (p * p * n); + Ctotals[i] := Ctotals[i] / (p * p * n); + Dtotals[i] := Dtotals[i] / (p * p * n); + end; + + // show table of means for each block + for k := 0 to p-1 do + begin + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := format('BLOCK %d',[k+1]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Cell means and totals'); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 0 to p-1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[ABCmat[i,j,k]]); + end; + cellstring := cellstring + format(' %8.3f ',[ABCmat[i,p,k]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := 'Total '; + for j := 0 to p-1 do + cellstring := cellstring + format(' %8.3f ',[ABCmat[p,j,k]]); + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + + // show category means + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Means for each variable'); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Atotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Btotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorC]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Ctotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorD]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Dtotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.ShowModal; + +cleanup: + Design := nil; + Dtotals := nil; + Ctotals := nil; + Btotals := nil; + Atotals := nil; + ABmat := nil; + ACmat := nil; + BCmat := nil; + ABCmat := nil; + celltotals := nil; + cellcnts := nil; +end; + +procedure TLatinSqrsFrm.Plan4(Sender: TObject); +label cleanup; +var + NoFactors : integer; + n : integer; // no. of subjects per cell + Acol, Bcol, Ccol, Dcol, DataCol : integer; // variable columns in grid + FactorA : string; + FactorB : string; + FactorC : string; + FactorD : string; + DataVar : string; + cellstring : string; + i, j, k, m, minA, minB, minC, maxA, maxB, maxC : integer; + minD, maxD, rangeA, rangeB, rangeC, rangeD : integer; + value : integer; + cellcnts : IntDyneMat; + ABmat : DblDyneMat; + ABCmat : DblDyneCube; + Atotals : DblDyneVec; + Btotals : DblDyneVec; + Ctotals : DblDyneVec; + Dtotals : DblDyneVec; + design : StrDyneMat; + G, term1, term2, term3, term4, term5, term6, term7 : double; + sumxsqr : double; + sumAsqr, sumBsqr, sumCsqr, sumDsqr, SSA, SSB, SSC, SSD : double; + SSbetween, SSwithin, SSres, SStotal : double; + MSa, MSb, MSc, MSd, MSres, MSwithin : double; + data, GrandMean : double; + p, row, col, slice, block : integer; + dfa, dfb, dfc, dfres, dfwithin, dftotal, fa, fb, fc : double; + dfd, fd, fres : double; + proba, probb, probc, probd, probres : double; + +begin + NoFactors := 4; + LatinSpecsFrm.AinBtn.Visible := true; + LatinSpecsFrm.AoutBtn.Visible := false; + LatinSpecsFrm.BinBtn.Visible := true; + LatinSpecsFrm.BoutBtn.Visible := false; + LatinSpecsFrm.CinBtn.Visible := true; + LatinSpecsFrm.CoutBtn.Visible := false; + LatinSpecsFrm.DCodeEdit.Visible := true; + LatinSpecsFrm.ACodeEdit.Text := ''; + LatinSpecsFrm.BCodeEdit.Text := ''; + LatinSpecsFrm.CCodeEdit.Text := ''; + LatinSpecsFrm.DCodeEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Text := ''; + LatinSpecsFrm.DepVarEdit.Text := ''; + LatinSpecsFrm.nPerCellEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Visible := false; + LatinSpecsFrm.Label5.Visible := true; + LatinSpecsFrm.Label6.Visible := false; + LatinSpecsFrm.DinBtn.Visible := true; + LatinSpecsFrm.DoutBtn.Visible := false; + LatinSpecsFrm.GrpInBtn.Visible := false; + LatinSpecsFrm.GrpOutBtn.Visible := false; + LatinSpecsFrm.DataInBtn.Visible := true; + LatinSpecsFrm.DataOutBtn.Visible := false; + LatinSpecsFrm.ShowModal; + if LatinSpecsFrm.ModalResult = mrCancel then exit; + n := StrToInt(LatinSpecsFrm.nPerCellEdit.Text); + if n <= 0 then + begin + ShowMessage('Please specify the number of cases per cell.'); + exit; + end; + FactorA := LatinSpecsFrm.ACodeEdit.Text; + FactorB := LatinSpecsFrm.BCodeEdit.Text; + FactorC := LatinSpecsFrm.CCodeEdit.Text; + FactorD := LatinSpecsFrm.DCodeEdit.Text; + DataVar := LatinSpecsFrm.DepVarEdit.Text; + for i := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[i,0]; + if (cellstring = FactorA) then ACol := i; + if (cellstring = FactorB) then BCol := i; + if (cellstring = FactorC) then Ccol := i; + if (cellstring = FactorD) then Dcol := i; + if (cellstring = DataVar) then DataCol := i; + end; + + // determine no. of levels in A, B and C + minA := 1000; + minB := 1000; + minC := 1000; + minD := 1000; + maxA := -1000; + maxB := -1000; + maxC := -1000; + maxD := -1000; + for i := 1 to NoCases do + begin + value := StrToInt(OS3MainFrm.DataGrid.Cells[ACol,i]); + if value < minA then minA := value; + if value > maxA then maxA := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[BCol,i]); + if value < minB then minB := value; + if value > maxB then maxB := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + if value < minC then minC := value; + if value > maxC then maxC := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Dcol,i]); + if value < minD then minD := value; + if value > maxD then maxD := value; + end; + rangeA := maxA - minA + 1; + rangeB := maxB - minB + 1; + rangeC := maxC - minC + 1; + rangeD := maxD - minD + 1; + + // check for squareness + if ( (rangeA <> rangeB) or (rangeA <> rangeC) or (rangeB <> rangeC) ) then + begin + ShowMessage('ERROR! In a Latin square the range of values should be equal for A,B and C!'); + exit; + end; + p := rangeA; + + // set up an array for cell counts and for cell sums and marginal sums + SetLength(ABmat,p+1,p+1); + SetLength(ABCmat,p+1,p+1,p+1); + SetLength(cellcnts,p+1,p+1); + SetLength(Atotals,p); + SetLength(Btotals,p); + SetLength(Ctotals,p); + SetLength(Dtotals,p); + SetLength(Design,p,p); + + for i := 0 to p do + for j := 0 to p do + for k := 0 to p do + ABCmat[i,j,k] := 0.0; + + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + cellcnts[i,j] := 0; + ABmat[i,j] := 0.0; + end; + end; + + for i := 0 to p-1 do + begin + Atotals[i] := 0.0; + Btotals[i] := 0.0; + Ctotals[i] := 0.0; + Dtotals[i] := 0.0; + end; + + G := 0.0; + sumxsqr := 0.0; + sumAsqr := 0.0; + sumBsqr := 0.0; + sumCsqr := 0.0; + sumDsqr := 0.0; + SSwithin := 0.0; + term1 := 0.0; + term2 := 0.0; + term3 := 0.0; + term4 := 0.0; + term5 := 0.0; + term6 := 0.0; + term7 := 0.0; + GrandMean := 0.0; + + // Read in the data + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + block := StrToInt(OS3MainFrm.DataGrid.Cells[Dcol,i]); + data := StrToFloat(OS3MainFrm.DataGrid.Cells[DataCol,i]); + cellcnts[row-1,col-1] := cellcnts[row-1,col-1] + 1; + ABCmat[row-1,col-1,slice-1] := ABCmat[row-1,col-1,slice-1] + data; + Atotals[row-1] := Atotals[row-1] + data; + Btotals[col-1] := Btotals[col-1] + data; + Ctotals[slice-1] := Ctotals[slice-1] + data; + Dtotals[block-1] := Dtotals[block-1] + data; + sumxsqr := sumxsqr + (data * data); + GrandMean := GrandMean + data; + end; + + // collapse c's into a x b + for k := 0 to p-1 do + for i := 0 to p-1 do + for j := 0 to p-1 do + ABmat[i,j] := ABmat[i,j] + ABCmat[i,j,k]; + + // get sum of squared cells + for i := 0 to p - 1 do + for j := 0 to p - 1 do + SSwithin := SSwithin + (ABmat[i,j] * ABmat[i,j]); + + // check for equal cell counts + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + if cellcnts[i,j] <> n then + begin + ShowMessage('cell sizes are not equal!'); + goto cleanup; + end; + end; + end; + + for i := 0 to p-1 do + begin + sumAsqr := sumAsqr + (Atotals[i] * Atotals[i]); + sumBsqr := sumBsqr + (Btotals[i] * Btotals[i]); + sumCsqr := sumCsqr + (Ctotals[i] * Ctotals[i]); + sumDsqr := sumDsqr + (Dtotals[i] * Dtotals[i]); + end; + + G := GrandMean; + term1 := (G * G) / (n * p * p); + term2 := sumxsqr; + term3 := sumAsqr / (n * p); + term4 := sumBsqr / (n * p); + term5 := sumCsqr / (n * p); + term6 := sumDsqr / (n * p); + term7 := SSwithin / n; + SSA := term3 - term1; + SSB := term4 - term1; + SSC := term5 - term1; + SSD := term6 - term1; + SSres := term7 - term3 - term4 - term5 - term6 + (3 * term1); + SSwithin := term2 - term7; + SStotal := term2 - term1; + + dfa := p-1; + dfb := p-1; + dfc := p-1; + dfd := p-1; + dfres := (p-1) * (p-3); + dfwithin := p * p * (n - 1); + dftotal := n * p * p - 1; + MSa := SSA / dfa; + MSb := SSB / dfb; + MSc := SSC / dfc; + MSd := SSD / dfd; + if dfres > 0 then MSres := SSres / dfres; + MSwithin := SSwithin / dfwithin; + fa := MSa / MSwithin; + fb := MSb / MSwithin; + fc := MSc / MSwithin; + fd := MSd / MSwithin; + if dfres > 0 then fres := MSres / MSwithin; + proba := probf(fa,dfa,dfwithin); + probb := probf(fb,dfb,dfwithin); + probc := probf(fc,dfc,dfwithin); + probd := probf(fd,dfd,dfwithin); + if dfres > 0 then probres := probf(fres,dfres,dfwithin); + + // show ANOVA table results + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Greco-Latin Square Analysis (No Interactions)'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + OutPutFrm.RichEdit.Lines.Add('Source SS DF MS F Prob.>F'); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + cellstring := 'Factor A '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSA,dfa,MSa,fa,proba]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Factor B '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSB,dfb,MSb,fb,probb]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Latin Sqr.'; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSC,dfc,MSc,fc,probc]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Greek Sqr.'; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSD,dfd,MSd,fd,probd]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Residual '; + if dfres > 0 then + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSres,dfres,MSres,fres,probres]) + else cellstring := cellstring + ' - - - - -'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Within '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSwithin, dfwithin, MSwithin]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Total '; + cellstring := cellstring + format('%9.3f %9.0f',[SStotal, dftotal]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + + // show design for Latin Square + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Experimental Design for Latin Square '; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + Design[row-1,col-1] := 'C' + IntToStr(slice); + end; + for i := 0 to p - 1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + cellstring := cellstring + format('%5s',[Design[i,j]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // show design for Greek Square + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Experimental Design for Greek Square '; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + block := StrToInt(OS3MainFrm.DataGrid.Cells[Dcol,i]); + Design[row-1,col-1] := 'C' + IntToStr(block); + end; + for i := 0 to p - 1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + cellstring := cellstring + format('%5s',[Design[i,j]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + for i := 0 to p-1 do + begin + for j := 0 to p - 1 do + begin + ABmat[i,p] := ABmat[i,p] + ABmat[i,j]; + ABmat[p,j] := ABmat[p,j] + ABmat[i,j]; + end; + end; + + for i := 0 to p-1 do + for j := 0 to p-1 do + ABmat[i,j] := ABmat[i,j] / n; + for i := 0 to p-1 do + ABmat[i,p] := ABmat[i,p] / (n * p); + for j := 0 to p-1 do + ABmat[p,j] := ABmat[p,j] / (n * p); + + GrandMean := GrandMean / (p * p * n ); + for i := 0 to p-1 do + begin + Atotals[i] := Atotals[i] / (p * n); + Btotals[i] := Btotals[i] / (p * n); + Ctotals[i] := Ctotals[i] / (p * n); + Dtotals[i] := Dtotals[i] / (p * n); + end; + + // show table of means for ABmat + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Cell means and totals'); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 0 to p-1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + cellstring := cellstring + format(' %8.3f ',[ABmat[i,j]]); + cellstring := cellstring + format(' %8.3f ',[ABmat[i,p]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := 'Total '; + for j := 0 to p-1 do + cellstring := cellstring + format(' %8.3f ',[ABmat[p,j]]); + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // show category means + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Means for each variable'); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Atotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Btotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorC]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Ctotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to rangeD + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorD]); + for i := 1 to rangeD do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to rangeD + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to rangeD - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Dtotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to rangeD + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.ShowModal; + +cleanup: + Design := nil; + Dtotals := nil; + Ctotals := nil; + Btotals := nil; + Atotals := nil; + cellcnts := nil; + ABCmat := nil; + ABmat := nil; +end; + +procedure TLatinSqrsFrm.Plan5(Sender: TObject); +label cleanup; +var + NoFactors : integer; + n : integer; // no. of subjects per cell + Acol, Bcol, SbjCol, Grpcol, DataCol : integer; // variable columns in grid + FactorA : string; + FactorB : string; + SubjectFactor : string; + GroupFactor : string; + DataVar : string; + cellstring : string; + i, j, k, m, minA, minB, minGrp, maxA, maxB, maxGrp : integer; + rangeA, rangeB, rangeGrp : integer; + value : integer; + cellcnts : IntDyneMat; + ABmat : DblDyneMat; + ABCmat : DblDyneCube; + GBmat : DblDyneMat; + Atotals : DblDyneVec; + Btotals : DblDyneVec; + Grptotals : DblDyneVec; + Subjtotals : DblDyneMat; + design : StrDyneMat; + G, term1, term2, term3, term4, term5, term6, term7 : double; + sumxsqr : double; + SSbetsubj, SSgroups, SSsubwGrps, SSwithinsubj, SSa, SSb, SSab : double; + SSerrwithin, SStotal, MSgroups, MSsubwGrps, MSa, MSb, MSab : double; + MSerrwithin, DFbetsubj, DFgroups, DFsubwGrps, DFwithinsubj : double; + DFa, DFb, DFab, DFerrwithin, DFtotal : double; + data, GrandMean : double; + p, row, col, subject, group : integer; + proba, probb, probab, probgrps : double; + fa, fb, fab, fgroups : double; + RowLabels, ColLabels : StrDyneVec; + Title : string; + +begin + NoFactors := 3; + LatinSpecsFrm.AinBtn.Visible := true; + LatinSpecsFrm.AoutBtn.Visible := false; + LatinSpecsFrm.BinBtn.Visible := true; + LatinSpecsFrm.BoutBtn.Visible := false; + LatinSpecsFrm.CinBtn.Visible := true; + LatinSpecsFrm.CoutBtn.Visible := false; + LatinSpecsFrm.DCodeEdit.Visible := false; + LatinSpecsFrm.ACodeEdit.Text := ''; + LatinSpecsFrm.BCodeEdit.Text := ''; + LatinSpecsFrm.CCodeEdit.Text := ''; + LatinSpecsFrm.DCodeEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Text := ''; + LatinSpecsFrm.DepVarEdit.Text := ''; + LatinSpecsFrm.nPerCellEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Visible := true; + LatinSpecsFrm.Label5.Visible := false; + LatinSpecsFrm.Label6.Visible := true; + LatinSpecsFrm.DinBtn.Visible := false; + LatinSpecsFrm.DoutBtn.Visible := false; + LatinSpecsFrm.GrpInBtn.Visible := true; + LatinSpecsFrm.GrpOutBtn.Visible := false; + LatinSpecsFrm.DataInBtn.Visible := true; + LatinSpecsFrm.DataOutBtn.Visible := false; + LatinSpecsFrm.ShowModal; + if LatinSpecsFrm.ModalResult = mrCancel then exit; + n := StrToInt(LatinSpecsFrm.nPerCellEdit.Text); + if n <= 0 then + begin + ShowMessage('Please specify the number of cases per cell.'); + exit; + end; + FactorA := LatinSpecsFrm.ACodeEdit.Text; + FactorB := LatinSpecsFrm.BCodeEdit.Text; + SubjectFactor := LatinSpecsFrm.CCodeEdit.Text; + GroupFactor := LatinSpecsFrm.GrpCodeEdit.Text; + DataVar := LatinSpecsFrm.DepVarEdit.Text; + for i := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[i,0]; + if (cellstring = FactorA) then ACol := i; + if (cellstring = FactorB) then BCol := i; + if (cellstring = GroupFactor) then Grpcol := i; + if (cellstring = SubjectFactor) then Sbjcol := i; + if (cellstring = DataVar) then DataCol := i; + end; + + // determine no. of levels in A, B and Group + minA := 1000; + minB := 1000; + minGrp := 1000; + maxA := -1000; + maxB := -1000; + maxGrp := -1000; + for i := 1 to NoCases do + begin + value := StrToInt(OS3MainFrm.DataGrid.Cells[ACol,i]); + if value < minA then minA := value; + if value > maxA then maxA := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[BCol,i]); + if value < minB then minB := value; + if value > maxB then maxB := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); + if value < minGrp then minGrp := value; + if value > maxGrp then maxGrp := value; + end; + rangeA := maxA - minA + 1; + rangeB := maxB - minB + 1; + rangeGrp := maxGrp - minGrp + 1; + + // check for squareness + if (rangeA <> rangeGrp) then + begin + ShowMessage('ERROR! In a Latin square the range of values should be equal for A,B and C!'); + exit; + end; + p := rangeA; + + // set up an array for cell counts and for cell sums and marginal sums + SetLength(ABmat,p+1,p+1); + SetLength(ABCmat,p+1,p+1,n+1); + SetLength(cellcnts,p+1,p+1); + SetLength(Atotals,p+1); + SetLength(Btotals,p+1); + SetLength(Grptotals,p+1); + SetLength(Design,p,p); + SetLength(Subjtotals,p+1,n+1); + SetLength(RowLabels,p+1); + SetLength(ColLabels,n+1); + SetLength(GBmat,p+1,p+1); + + for i := 0 to p-1 do + begin + RowLabels[i] := IntToStr(i+1); + ColLabels[i] := RowLabels[i]; + end; + RowLabels[p] := 'Total'; + ColLabels[p] := 'Total'; + + for i := 0 to p do + for j := 0 to p do + for k := 0 to n do + ABCmat[i,j,k] := 0.0; + + for i := 0 to p do + begin + for j := 0 to p do + begin + cellcnts[i,j] := 0; + ABmat[i,j] := 0.0; + GBmat[i,j] := 0.0; + end; + end; + + for i := 0 to p do + begin + Atotals[i] := 0.0; + Btotals[i] := 0.0; + Grptotals[i] := 0.0; + end; + + for i := 0 to p do + for j := 0 to n do + Subjtotals[i,j] := 0.0; + + G := 0.0; + sumxsqr := 0.0; + term1 := 0.0; + term2 := 0.0; + term3 := 0.0; + term4 := 0.0; + term5 := 0.0; + term6 := 0.0; + term7 := 0.0; + GrandMean := 0.0; + + // Read in the data + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + group := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); + subject := StrToInt(OS3MainFrm.DataGrid.Cells[Sbjcol,i]); + data := StrToFloat(OS3MainFrm.DataGrid.Cells[DataCol,i]); + cellcnts[group-1,row-1] := cellcnts[group-1,row-1] + 1; + ABCmat[group-1,row-1,subject-1] := ABCmat[group-1,row-1,subject-1] + data; + Subjtotals[group-1,subject-1] := Subjtotals[group-1,subject-1] + data; + GBmat[group-1,col-1] := GBmat[group-1,col-1] + data; + Atotals[col-1] := Atotals[col-1] + data; + Btotals[group-1] := Btotals[group-1] + data; + Grptotals[group-1] := Grptotals[group-1] + data; + sumxsqr := sumxsqr + (data * data); + GrandMean := GrandMean + data; + end; + + // check for equal cell counts + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + if cellcnts[i,j] <> n then + begin + ShowMessage('cell sizes are not equal!'); + goto cleanup; + end; + end; + end; + + // collapse subjects's into group x a matrix + for i := 0 to p-1 do // group + for j := 0 to p-1 do // factor a + for k := 0 to n-1 do // subject + ABmat[i,j] := ABmat[i,j] + ABCmat[i,j,k]; + + // get marginal totals for ABmat and GBmat + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + ABmat[p,j] := ABmat[p,j] + ABmat[i,j]; + ABmat[i,p] := ABmat[i,p] + ABmat[i,j]; + GBmat[p,j] := GBmat[p,j] + GBmat[i,j]; + GBmat[i,p] := GBmat[i,p] + GBmat[i,j]; + end; + end; + + // get grand total for ABmat and GBmat + for i := 0 to p-1 do + begin + ABmat[p,p] := ABmat[p,p] + ABmat[p,i]; + GBmat[p,p] := GBmat[p,p] + GBmat[p,i]; + end; + + // Get marginal totals for Subjtotals + for i := 0 to p-1 do + begin + for j := 0 to n-1 do + begin + Subjtotals[p,j] := Subjtotals[p,j] + Subjtotals[i,j]; + Subjtotals[i,n] := Subjtotals[i,n] + Subjtotals[i,j]; + end; + end; + for i := 0 to p-1 do Subjtotals[p,n] := Subjtotals[p,n] + Subjtotals[i,n]; + // test block + OutPutFrm.RichEdit.Lines.Add('Sums for ANOVA Analysis'); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Group (rows) times A Factor (columns) sums'; + MAT_PRINT(ABmat,p+1,p+1,cellstring,RowLabels,ColLabels,(n*p*p)); + cellstring := 'Group (rows) times B (cells Factor) sums'; + MAT_PRINT(GBmat,p+1,p+1,cellstring,RowLabels,ColLabels,(n*p*p)); + Title := 'Groups (rows) times Subjects (columns) matrix'; + for i := 0 to n-1 do ColLabels[i] := IntToStr(i+1); + ColLabels[n] := 'Total'; + Mat_Print(Subjtotals,p+1,n+1,Title,RowLabels,ColLabels,(n*p*p)); + OutPutFrm.ShowModal; + + // get squared sum of subject's totals in each group + for i := 0 to p-1 do // group + term7 := term7 + (Subjtotals[i,n] * Subjtotals[i,n]); + term7 := term7 / (n*p); // Sum G^2 sub k + + // now square each person score in each group and get sum for group + for i := 0 to p-1 do + for j := 0 to n-1 do + Subjtotals[i,j] := Subjtotals[i,j] * Subjtotals[i,j]; + for i := 0 to p-1 do Subjtotals[i,n] := 0.0; + for i := 0 to p-1 do + for j := 0 to n-1 do + Subjtotals[i,n] := Subjtotals[i,n] + Subjtotals[i,j]; + for i := 0 to p-1 do term6 := term6 + Subjtotals[i,n]; + SSsubwgrps := term6 / p - term7; + + // get correction term + term1 := (GrandMean * GrandMean) / (n * p * p); + + term2 := sumxsqr; + + // get sum of squared a's for term3 + for j := 0 to p-1 do + term3 := term3 + (ABmat[p,j] * ABmat[p,j]); + term3 := term3 / (n * p); + + // get sum of squared groups for term4 + for i := 0 to p-1 do + term4 := term4 + (ABmat[i,p] * ABmat[i,p]); + term4 := term4 / (n * p); + + // get squared sum of b's (across groups) for term5 + for j := 0 to p-1 do + term5 := term5 + (GBmat[p,j] * GBmat[p,j]); + term5 := term5 / (n * p); + + SSgroups := term4 - term1; + SSbetsubj := SSgroups + SSsubwgrps; + SStotal := sumxsqr - term1; + SSwithinsubj := SStotal - SSbetsubj; + SSa := term3 - term1; + SSb := term5 - term1; + + // get sum of squared AB cells for term6 + term6 := 0.0; + for i := 0 to p-1 do + for j := 0 to p-1 do + term6 := term6 + (ABmat[i,j] * ABmat[i,j]); + term6 := term6 / n; + SSab := term6 - term3 - term5 + term1; + SSab := SSab - SSgroups; + SSerrwithin := ( sumxsqr - term6) - SSsubwgrps; + + // record degrees of freedom for sources + dfbetsubj := n * p - 1; + dfsubwgrps := p * (n-1); + dfgroups := p - 1; + dftotal := n * p * p - 1; + dfwithinsubj := n * p * (p-1); + dfa := p - 1; + dfb := p - 1; + dfab := (p - 1) * (p - 2); + dferrwithin := p * (n - 1) * (p - 1); + + MSsubwgrps := SSsubwgrps / dfsubwgrps; + MSgroups := SSgroups / dfgroups; + MSa := SSa / dfa; + MSb := SSb / dfb; + MSab := SSab / dfab; + MSerrwithin := SSerrwithin / dferrwithin; + fgroups := MSgroups / MSsubwgrps; + fa := MSa / MSerrwithin; + fb := MSb / MSerrwithin; + fab := MSab / MSerrwithin; + probgrps := probf(fgroups,dfgroups,dfsubwgrps); + proba := probf(fa,dfa,dferrwithin); + probb := probf(fb,dfb,dferrwithin); + probab := probf(fab,dfab,dferrwithin); + + // show ANOVA table results + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Latin Squares Repeated Analysis Plan 5 (Partial Interactions)'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + OutPutFrm.RichEdit.Lines.Add('Source SS DF MS F Prob.>F'); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + cellstring := 'Betw.Subj.'; + cellstring := cellstring + format('%9.3f %9.0f',[SSbetsubj,dfbetsubj]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Groups '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSgroups,dfgroups,MSgroups,fgroups,probgrps]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Subj.w.g.'; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSsubwgrps,dfsubwgrps,MSsubwgrps]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Within Sub'; + cellstring := cellstring + format('%9.3f %9.0f',[SSwithinsubj,dfwithinsubj]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor A '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSa,dfa,MSa,fa,proba]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor B '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSb,dfb,MSb,fb,probb]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor AB'; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSab,dfab,MSab,fab,probab]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Error w. '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSerrwithin,dferrwithin,MSerrwithin]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Total '; + cellstring := cellstring + format('%9.3f %9.0f',[SStotal, dftotal]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + + // show design for Square + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Experimental Design for Latin Square '; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[GroupFactor]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); // A (column) effect + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); // B (cell) effect + group := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); // group (row) + Design[group-1,row-1] := 'B' + IntToStr(col); + end; + for i := 0 to p - 1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + cellstring := cellstring + format('%5s',[Design[i,j]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + for i := 0 to p-1 do + for j := 0 to p-1 do + ABmat[i,j] := ABmat[i,j] / n; + for i := 0 to p-1 do + ABmat[i,p] := ABmat[i,p] / (n * p); + for j := 0 to p-1 do + ABmat[p,j] := ABmat[p,j] / (n * p); + + GrandMean := GrandMean / (p * p * n ); + for i := 0 to p-1 do + begin + Atotals[i] := Atotals[i] / (p * n); + Btotals[i] := Btotals[i] / (p * n); + Grptotals[i] := Grptotals[i] / (p * n); +// Dtotals[i] := Dtotals[i] / (p * n); + end; + + // show table of means for ABmat + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Cell means and totals'); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[GroupFactor]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 0 to p-1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + cellstring := cellstring + format(' %8.3f ',[ABmat[i,j]]); + cellstring := cellstring + format(' %8.3f ',[ABmat[i,p]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := 'Total '; + for j := 0 to p-1 do + cellstring := cellstring + format(' %8.3f ',[ABmat[p,j]]); + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // show category means + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Means for each variable'); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Atotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Btotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[GroupFactor]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Grptotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.ShowModal; + +cleanup: + GBmat := nil; + ColLabels := nil; + RowLabels := nil; + Subjtotals := nil; + Design := nil; + Grptotals := nil; + Btotals := nil; + Atotals := nil; + cellcnts := nil; + ABCmat := nil; + ABmat := nil; +end; + +procedure TLatinSqrsFrm.Plan6(Sender: TObject); +label cleanup; +var + NoFactors : integer; + n : integer; // no. of subjects per cell + Acol, Bcol, SbjCol, Grpcol, DataCol : integer; // variable columns in grid + FactorA : string; + FactorB : string; + SubjectFactor : string; + GroupFactor : string; + DataVar : string; + cellstring : string; + i, j, k, m, minA, minB, minGrp, maxA, maxB, maxGrp : integer; + rangeA, rangeB, rangeGrp : integer; + value : integer; + cellcnts : IntDyneMat; + ABmat : DblDyneMat; + ABCmat : DblDyneCube; + GBmat : DblDyneMat; + Atotals : DblDyneVec; + Btotals : DblDyneVec; + Grptotals : DblDyneVec; + Subjtotals : DblDyneMat; + design : StrDyneMat; + G, term1, term2, term3, term4, term5, term6, term7 : double; + sumxsqr : double; + SSbetsubj, SSgroups, SSsubwGrps, SSwithinsubj, SSa, SSb, SSab : double; + SSerrwithin, SStotal, MSgroups, MSsubwGrps, MSa, MSb, MSab : double; + MSerrwithin, DFbetsubj, DFgroups, DFsubwGrps, DFwithinsubj : double; + DFa, DFb, DFab, DFerrwithin, DFtotal : double; + data, GrandMean : double; + p, row, col, subject, group : integer; + proba, probb, probab, probgrps : double; + fa, fb, fab, fgroups : double; + RowLabels, ColLabels : StrDyneVec; + Title : string; + +begin + NoFactors := 3; + LatinSpecsFrm.AinBtn.Visible := true; + LatinSpecsFrm.AoutBtn.Visible := false; + LatinSpecsFrm.BinBtn.Visible := true; + LatinSpecsFrm.BoutBtn.Visible := false; + LatinSpecsFrm.CinBtn.Visible := true; + LatinSpecsFrm.CoutBtn.Visible := false; + LatinSpecsFrm.DCodeEdit.Visible := false; + LatinSpecsFrm.ACodeEdit.Text := ''; + LatinSpecsFrm.BCodeEdit.Text := ''; + LatinSpecsFrm.CCodeEdit.Text := ''; + LatinSpecsFrm.DCodeEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Text := ''; + LatinSpecsFrm.DepVarEdit.Text := ''; + LatinSpecsFrm.nPerCellEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Visible := true; + LatinSpecsFrm.Label5.Visible := false; + LatinSpecsFrm.Label6.Visible := true; + LatinSpecsFrm.DinBtn.Visible := false; + LatinSpecsFrm.DoutBtn.Visible := false; + LatinSpecsFrm.GrpInBtn.Visible := true; + LatinSpecsFrm.GrpOutBtn.Visible := false; + LatinSpecsFrm.DataInBtn.Visible := true; + LatinSpecsFrm.DataOutBtn.Visible := false; + LatinSpecsFrm.ShowModal; + if LatinSpecsFrm.ModalResult = mrCancel then exit; + n := StrToInt(LatinSpecsFrm.nPerCellEdit.Text); + if n <= 0 then + begin + ShowMessage('Please specify the number of cases per cell.'); + exit; + end; + FactorA := LatinSpecsFrm.ACodeEdit.Text; + FactorB := LatinSpecsFrm.BCodeEdit.Text; + SubjectFactor := LatinSpecsFrm.CCodeEdit.Text; + GroupFactor := LatinSpecsFrm.GrpCodeEdit.Text; + DataVar := LatinSpecsFrm.DepVarEdit.Text; + for i := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[i,0]; + if (cellstring = FactorA) then ACol := i; + if (cellstring = FactorB) then BCol := i; + if (cellstring = GroupFactor) then Grpcol := i; + if (cellstring = SubjectFactor) then Sbjcol := i; + if (cellstring = DataVar) then DataCol := i; + end; + + // determine no. of levels in A, B and Group + minA := 1000; + minB := 1000; + minGrp := 1000; + maxA := -1000; + maxB := -1000; + maxGrp := -1000; + for i := 1 to NoCases do + begin + value := StrToInt(OS3MainFrm.DataGrid.Cells[ACol,i]); + if value < minA then minA := value; + if value > maxA then maxA := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[BCol,i]); + if value < minB then minB := value; + if value > maxB then maxB := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); + if value < minGrp then minGrp := value; + if value > maxGrp then maxGrp := value; + end; + rangeA := maxA - minA + 1; + rangeB := maxB - minB + 1; + rangeGrp := maxGrp - minGrp + 1; + + // check for squareness + if (rangeA <> rangeGrp) then + begin + ShowMessage('ERROR! In a Latin square the range of values should be equal for A,B and C!'); + exit; + end; + p := rangeA; + + // set up an array for cell counts and for cell sums and marginal sums + SetLength(ABmat,p+1,p+1); + SetLength(ABCmat,p+1,p+1,n+1); + SetLength(cellcnts,p+1,p+1); + SetLength(Atotals,p+1); + SetLength(Btotals,p+1); + SetLength(Grptotals,p+1); + SetLength(Design,p,p); + SetLength(Subjtotals,p+1,n+1); + SetLength(RowLabels,p+1); + SetLength(ColLabels,n+1); + SetLength(GBmat,p+1,p+1); + + for i := 0 to p-1 do + begin + RowLabels[i] := IntToStr(i+1); + ColLabels[i] := RowLabels[i]; + end; + RowLabels[p] := 'Total'; + ColLabels[p] := 'Total'; + + for i := 0 to p do + for j := 0 to p do + for k := 0 to n do + ABCmat[i,j,k] := 0.0; + + for i := 0 to p do + begin + for j := 0 to p do + begin + cellcnts[i,j] := 0; + ABmat[i,j] := 0.0; + GBmat[i,j] := 0.0; + end; + end; + + for i := 0 to p do + begin + Atotals[i] := 0.0; + Btotals[i] := 0.0; + Grptotals[i] := 0.0; + end; + + for i := 0 to p do + for j := 0 to n do + Subjtotals[i,j] := 0.0; + + G := 0.0; + sumxsqr := 0.0; + term1 := 0.0; + term2 := 0.0; + term3 := 0.0; + term4 := 0.0; + term5 := 0.0; + term6 := 0.0; + term7 := 0.0; + GrandMean := 0.0; + + // Read in the data + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + group := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); + subject := StrToInt(OS3MainFrm.DataGrid.Cells[Sbjcol,i]); + data := StrToFloat(OS3MainFrm.DataGrid.Cells[DataCol,i]); + cellcnts[group-1,row-1] := cellcnts[group-1,row-1] + 1; + ABCmat[group-1,row-1,subject-1] := ABCmat[group-1,row-1,subject-1] + data; + Subjtotals[group-1,subject-1] := Subjtotals[group-1,subject-1] + data; + GBmat[group-1,col-1] := GBmat[group-1,col-1] + data; + Atotals[col-1] := Atotals[col-1] + data; + Btotals[group-1] := Btotals[group-1] + data; + Grptotals[group-1] := Grptotals[group-1] + data; + sumxsqr := sumxsqr + (data * data); + GrandMean := GrandMean + data; + end; + + // check for equal cell counts + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + if cellcnts[i,j] <> n then + begin + ShowMessage('cell sizes are not equal!'); + goto cleanup; + end; + end; + end; + + // collapse subjects's into group x a matrix + for i := 0 to p-1 do // group + for j := 0 to p-1 do // factor a + for k := 0 to n-1 do // subject + ABmat[i,j] := ABmat[i,j] + ABCmat[i,j,k]; + + // get marginal totals for ABmat and GBmat + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + ABmat[p,j] := ABmat[p,j] + ABmat[i,j]; + ABmat[i,p] := ABmat[i,p] + ABmat[i,j]; + GBmat[p,j] := GBmat[p,j] + GBmat[i,j]; + GBmat[i,p] := GBmat[i,p] + GBmat[i,j]; + end; + end; + + // get grand total for ABmat and GBmat + for i := 0 to p-1 do + begin + ABmat[p,p] := ABmat[p,p] + ABmat[p,i]; + GBmat[p,p] := GBmat[p,p] + GBmat[p,i]; + end; + + // Get marginal totals for Subjtotals + for i := 0 to p-1 do + begin + for j := 0 to n-1 do + begin + Subjtotals[p,j] := Subjtotals[p,j] + Subjtotals[i,j]; + Subjtotals[i,n] := Subjtotals[i,n] + Subjtotals[i,j]; + end; + end; + for i := 0 to p-1 do Subjtotals[p,n] := Subjtotals[p,n] + Subjtotals[i,n]; + + // test block + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Latin Squares Repeated Analysis Plan 6'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Sums for ANOVA Analysis'); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Group - C (rows) times A Factor (columns) sums'; + MAT_PRINT(ABmat,p+1,p+1,cellstring,RowLabels,ColLabels,(n*p*p)); + cellstring := 'Group - C (rows) times B (cells Factor) sums'; + MAT_PRINT(GBmat,p+1,p+1,cellstring,RowLabels,ColLabels,(n*p*p)); + Title := 'Group - C (rows) times Subjects (columns) matrix'; + for i := 0 to n-1 do ColLabels[i] := IntToStr(i+1); + ColLabels[n] := 'Total'; + Mat_Print(Subjtotals,p+1,n+1,Title,RowLabels,ColLabels,(n*p*p)); + OutPutFrm.ShowModal; + + // get squared sum of subject's totals in each group + for i := 0 to p-1 do // group + term7 := term7 + (Subjtotals[i,n] * Subjtotals[i,n]); + term7 := term7 / (n*p); // Sum G^2 sub k + + // now square each person score in each group and get sum for group + for i := 0 to p-1 do + for j := 0 to n-1 do + Subjtotals[i,j] := Subjtotals[i,j] * Subjtotals[i,j]; + for i := 0 to p-1 do Subjtotals[i,n] := 0.0; + for i := 0 to p-1 do + for j := 0 to n-1 do + Subjtotals[i,n] := Subjtotals[i,n] + Subjtotals[i,j]; + for i := 0 to p-1 do term6 := term6 + Subjtotals[i,n]; + SSsubwgrps := term6 / p - term7; + + // get correction term + term1 := (GrandMean * GrandMean) / (n * p * p); + + term2 := sumxsqr; + + // get sum of squared a's for term3 + for j := 0 to p-1 do + term3 := term3 + (ABmat[p,j] * ABmat[p,j]); + term3 := term3 / (n * p); + + // get sum of squared groups for term4 + for i := 0 to p-1 do + term4 := term4 + (ABmat[i,p] * ABmat[i,p]); + term4 := term4 / (n * p); + + // get squared sum of b's (across groups) for term5 + for j := 0 to p-1 do + term5 := term5 + (GBmat[p,j] * GBmat[p,j]); + term5 := term5 / (n * p); + + SSgroups := term4 - term1; + SSbetsubj := SSgroups + SSsubwgrps; + SStotal := sumxsqr - term1; + SSwithinsubj := SStotal - SSbetsubj; + SSa := term3 - term1; + SSb := term5 - term1; + + // get sum of squared AB cells for term6 + term6 := 0.0; + for i := 0 to p-1 do + for j := 0 to p-1 do + term6 := term6 + (ABmat[i,j] * ABmat[i,j]); + term6 := term6 / n; + SSab := term6 - term3 - term5 + term1; + SSab := SSab - SSgroups; + SSerrwithin := ( sumxsqr - term6) - SSsubwgrps; + + // record degrees of freedom for sources + dfbetsubj := n * p - 1; + dfsubwgrps := p * (n-1); + dfgroups := p - 1; + dftotal := n * p * p - 1; + dfwithinsubj := n * p * (p-1); + dfa := p - 1; + dfb := p - 1; + dfab := (p - 1) * (p - 2); + dferrwithin := p * (n - 1) * (p - 1); + + MSsubwgrps := SSsubwgrps / dfsubwgrps; + MSgroups := SSgroups / dfgroups; + MSa := SSa / dfa; + MSb := SSb / dfb; + MSab := SSab / dfab; + MSerrwithin := SSerrwithin / dferrwithin; + fgroups := MSgroups / MSsubwgrps; + fa := MSa / MSerrwithin; + fb := MSb / MSerrwithin; + fab := MSab / MSerrwithin; + probgrps := probf(fgroups,dfgroups,dfsubwgrps); + proba := probf(fa,dfa,dferrwithin); + probb := probf(fb,dfb,dferrwithin); + probab := probf(fab,dfab,dferrwithin); + + // show ANOVA table results + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Latin Squares Repeated Analysis Plan 6'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + OutPutFrm.RichEdit.Lines.Add('Source SS DF MS F Prob.>F'); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + cellstring := 'Betw.Subj.'; + cellstring := cellstring + format('%9.3f %9.0f',[SSbetsubj,dfbetsubj]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor C '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSgroups,dfgroups,MSgroups,fgroups,probgrps]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Subj.w.g.'; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSsubwgrps,dfsubwgrps,MSsubwgrps]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Within Sub'; + cellstring := cellstring + format('%9.3f %9.0f',[SSwithinsubj,dfwithinsubj]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor A '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSa,dfa,MSa,fa,proba]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor B '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSb,dfb,MSb,fb,probb]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Residual '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSab,dfab,MSab,fab,probab]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Error w. '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSerrwithin,dferrwithin,MSerrwithin]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Total '; + cellstring := cellstring + format('%9.3f %9.0f',[SStotal, dftotal]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + + // show design for Square + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Experimental Design for Latin Square '; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' G C '; + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); // A (column) effect + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); // B (cell) effect + group := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); // group (row) + Design[group-1,row-1] := 'B' + IntToStr(col); + end; + for i := 0 to p - 1 do + begin + cellstring := format('%3d %3d ',[i+1,i+1]); + for j := 0 to p - 1 do + cellstring := cellstring + format('%5s',[Design[i,j]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + for i := 0 to p-1 do + for j := 0 to p-1 do + ABmat[i,j] := ABmat[i,j] / n; + for i := 0 to p-1 do + ABmat[i,p] := ABmat[i,p] / (n * p); + for j := 0 to p-1 do + ABmat[p,j] := ABmat[p,j] / (n * p); + + GrandMean := GrandMean / (p * p * n ); + for i := 0 to p-1 do + begin + Atotals[i] := Atotals[i] / (p * n); + Btotals[i] := Btotals[i] / (p * n); + Grptotals[i] := Grptotals[i] / (p * n); + end; + + // show table of means for ABmat + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Cell means and totals'); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[GroupFactor]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 0 to p-1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + cellstring := cellstring + format(' %8.3f ',[ABmat[i,j]]); + cellstring := cellstring + format(' %8.3f ',[ABmat[i,p]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := 'Total '; + for j := 0 to p-1 do + cellstring := cellstring + format(' %8.3f ',[ABmat[p,j]]); + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // show category means + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Means for each variable'); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Atotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Btotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[GroupFactor]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Grptotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.ShowModal; + +cleanup: + GBmat := nil; + ColLabels := nil; + RowLabels := nil; + Subjtotals := nil; + Design := nil; + Grptotals := nil; + Btotals := nil; + Atotals := nil; + cellcnts := nil; + ABCmat := nil; + ABmat := nil; +end; + +procedure TLatinSqrsFrm.Plan7(Sender: TObject); +label cleanup; +var + NoFactors : integer; + n : integer; // no. of subjects per cell + Acol, Bcol, Ccol, SbjCol, Grpcol, DataCol : integer; // variable columns in grid + FactorA : string; + FactorB : string; + SubjectFactor : string; + FactorC : string; + GroupFactor : string; + DataVar : string; + cellstring : string; + i, j, k, m, minA, minB, minC, minGrp, maxA, maxB, maxC, maxGrp : integer; + rangeA, rangeB, rangeC, rangeGrp : integer; + value : integer; + cellcnts : IntDyneMat; + ABmat : DblDyneMat; + ABCmat : DblDyneCube; + GBmat : DblDyneMat; + GCmat : DblDyneMat; + Atotals : DblDyneVec; + Btotals : DblDyneVec; + Ctotals : DblDyneVec; + Grptotals : DblDyneVec; + Subjtotals : DblDyneMat; + design : StrDyneMat; + G, term1, term2, term3, term4, term5, term6, term7, term8, term9 : double; + sumxsqr : double; + SSbetsubj, SSgroups, SSsubwGrps, SSwithinsubj, SSa, SSb, SSc, SSab : double; + SSerrwithin, SStotal, MSgroups, MSsubwGrps, MSa, MSb, MSc, MSab : double; + MSerrwithin, DFbetsubj, DFgroups, DFsubwGrps, DFwithinsubj : double; + DFa, DFb, DFc, DFab, DFerrwithin, DFtotal : double; + data, GrandMean : double; + p, row, col, slice, subject, group : integer; + proba, probb, probc, probab, probgrps : double; + fa, fb, fc, fab, fgroups : double; + RowLabels, ColLabels : StrDyneVec; + Title : string; + +begin + NoFactors := 4; + LatinSpecsFrm.AinBtn.Visible := true; + LatinSpecsFrm.AoutBtn.Visible := false; + LatinSpecsFrm.BinBtn.Visible := true; + LatinSpecsFrm.BoutBtn.Visible := false; + LatinSpecsFrm.CinBtn.Visible := true; + LatinSpecsFrm.CoutBtn.Visible := false; + LatinSpecsFrm.DCodeEdit.Visible := true; + LatinSpecsFrm.ACodeEdit.Text := ''; + LatinSpecsFrm.BCodeEdit.Text := ''; + LatinSpecsFrm.CCodeEdit.Text := ''; + LatinSpecsFrm.DCodeEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Text := ''; + LatinSpecsFrm.DepVarEdit.Text := ''; + LatinSpecsFrm.nPerCellEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Visible := true; + LatinSpecsFrm.Label5.Visible := true; + LatinSpecsFrm.Label6.Visible := true; + LatinSpecsFrm.DinBtn.Visible := true; + LatinSpecsFrm.DoutBtn.Visible := false; + LatinSpecsFrm.GrpInBtn.Visible := true; + LatinSpecsFrm.GrpOutBtn.Visible := false; + LatinSpecsFrm.DataInBtn.Visible := true; + LatinSpecsFrm.DataOutBtn.Visible := false; + LatinSpecsFrm.ShowModal; + if LatinSpecsFrm.ModalResult = mrCancel then exit; + n := StrToInt(LatinSpecsFrm.nPerCellEdit.Text); + if n <= 0 then + begin + ShowMessage('Please specify the number of cases per cell.'); + exit; + end; + FactorA := LatinSpecsFrm.ACodeEdit.Text; + FactorB := LatinSpecsFrm.BCodeEdit.Text; + FactorC := LatinSpecsFrm.CCodeEdit.Text; + SubjectFactor := LatinSpecsFrm.DCodeEdit.Text; + GroupFactor := LatinSpecsFrm.GrpCodeEdit.Text; + DataVar := LatinSpecsFrm.DepVarEdit.Text; + for i := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[i,0]; + if (cellstring = FactorA) then Acol := i; + if (cellstring = FactorB) then Bcol := i; + if (cellstring = FactorC) then Ccol := i; + if (cellstring = GroupFactor) then Grpcol := i; + if (cellstring = SubjectFactor) then Sbjcol := i; + if (cellstring = DataVar) then DataCol := i; + end; + + // determine no. of levels in A, B, C and Group + minA := 1000; + minB := 1000; + minGrp := 1000; + maxA := -1000; + maxB := -1000; + minC := 1000; + maxC := -1000; + maxGrp := -1000; + for i := 1 to NoCases do + begin + value := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + if value < minA then minA := value; + if value > maxA then maxA := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + if value < minB then minB := value; + if value > maxB then maxB := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + if value < minC then minC := value; + if value > maxC then maxC := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); + if value < minGrp then minGrp := value; + if value > maxGrp then maxGrp := value; + end; + rangeA := maxA - minA + 1; + rangeB := maxB - minB + 1; + rangeC := maxC - minC + 1; + rangeGrp := maxGrp - minGrp + 1; + + // check for squareness + if ((rangeA <> rangeB) or (rangeA <> rangeC) or (rangeA <> rangeGrp)) then + begin + ShowMessage('ERROR! In a Latin square the range of values should be equal for A,B and C!'); + exit; + end; + p := rangeA; + + // set up an array for cell counts and for cell sums and marginal sums + SetLength(ABmat,p+1,p+1); + SetLength(ABCmat,p+1,p+1,n+1); + SetLength(cellcnts,p+1,p+1); + SetLength(Atotals,p+1); + SetLength(Btotals,p+1); + SetLength(Ctotals,p+1); + SetLength(Grptotals,p+1); + SetLength(Design,p,p); + SetLength(Subjtotals,p+1,n+1); + SetLength(RowLabels,p+1); + SetLength(ColLabels,n+1); + SetLength(GBmat,p+1,p+1); + SetLength(GCmat,p+1,p+1); + + for i := 0 to p-1 do + begin + RowLabels[i] := IntToStr(i+1); + ColLabels[i] := RowLabels[i]; + end; + RowLabels[p] := 'Total'; + ColLabels[p] := 'Total'; + + for i := 0 to p do + for j := 0 to p do + for k := 0 to n do + ABCmat[i,j,k] := 0.0; + + for i := 0 to p do + begin + for j := 0 to p do + begin + cellcnts[i,j] := 0; + ABmat[i,j] := 0.0; + GBmat[i,j] := 0.0; + GCmat[i,j] := 0.0; + end; + end; + + for i := 0 to p do + begin + Atotals[i] := 0.0; + Btotals[i] := 0.0; + Ctotals[i] := 0.0; + Grptotals[i] := 0.0; + end; + + for i := 0 to p do + for j := 0 to n do + Subjtotals[i,j] := 0.0; + + G := 0.0; + sumxsqr := 0.0; + term1 := 0.0; + term2 := 0.0; + term3 := 0.0; + term4 := 0.0; + term5 := 0.0; + term6 := 0.0; + term7 := 0.0; + term8 := 0.0; + term9 := 0.0; + GrandMean := 0.0; + + // Read in the data + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + group := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); + subject := StrToInt(OS3MainFrm.DataGrid.Cells[Sbjcol,i]); + data := StrToFloat(OS3MainFrm.DataGrid.Cells[DataCol,i]); + cellcnts[group-1,row-1] := cellcnts[group-1,row-1] + 1; + ABCmat[group-1,row-1,slice-1] := ABCmat[group-1,row-1,slice-1] + data; + Subjtotals[group-1,subject-1] := Subjtotals[group-1,subject-1] + data; + GBmat[group-1,col-1] := GBmat[group-1,col-1] + data; + GCmat[group-1,slice-1] := GCmat[group-1,slice-1] + data; + Atotals[row-1] := Atotals[row-1] + data; + Btotals[col-1] := Btotals[col-1] + data; + Ctotals[slice-1] := Ctotals[slice-1] + data; + Grptotals[group-1] := Grptotals[group-1] + data; + sumxsqr := sumxsqr + (data * data); + GrandMean := GrandMean + data; + end; + + // check for equal cell counts + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + if cellcnts[i,j] <> n then + begin + ShowMessage('cell sizes are not equal!'); + goto cleanup; + end; + end; + end; + + // collapse slices into group x a matrix + // result is the group times A matrix with BC cells containing n cases each + for i := 0 to p-1 do // group + for j := 0 to p-1 do // factor a + for k := 0 to n-1 do // factor c + ABmat[i,j] := ABmat[i,j] + ABCmat[i,j,k]; + + // get marginal totals for ABmat, GBmat and GCmat + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + ABmat[p,j] := ABmat[p,j] + ABmat[i,j]; + ABmat[i,p] := ABmat[i,p] + ABmat[i,j]; + GBmat[p,j] := GBmat[p,j] + GBmat[i,j]; + GBmat[i,p] := GBmat[i,p] + GBmat[i,j]; + GCmat[p,j] := GCmat[p,j] + GCmat[i,j]; + GCmat[i,p] := GCmat[i,p] + GCmat[i,j]; + end; + end; + + // get grand total for ABmat, GBmat and GCmat + for i := 0 to p-1 do + begin + ABmat[p,p] := ABmat[p,p] + ABmat[p,i]; + GBmat[p,p] := GBmat[p,p] + GBmat[p,i]; + GCmat[p,p] := GCmat[p,p] + GCmat[p,i]; + end; + + // Get marginal totals for Subjtotals + for i := 0 to p-1 do // groups 1-p + begin + for j := 0 to n-1 do // subjects 1-n + begin + Subjtotals[p,j] := Subjtotals[p,j] + Subjtotals[i,j]; + Subjtotals[i,n] := Subjtotals[i,n] + Subjtotals[i,j]; + end; + end; + for i := 0 to p-1 do Subjtotals[p,n] := Subjtotals[p,n] + Subjtotals[i,n]; + + // test block + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Latin Squares Repeated Analysis Plan 7 (superimposed squares)'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Sums for ANOVA Analysis'); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Group (rows) times A Factor (columns) sums'; + MAT_PRINT(ABmat,p+1,p+1,cellstring,RowLabels,ColLabels,(n*p*p)); + cellstring := 'Group (rows) times B (cells Factor) sums'; + MAT_PRINT(GBmat,p+1,p+1,cellstring,RowLabels,ColLabels,(n*p*p)); + cellstring := 'Group (rows) times C (cells Factor) sums'; + MAT_PRINT(GCmat,p+1,p+1,cellstring,RowLabels,ColLabels,(n*p*p)); + for i := 0 to n-1 do ColLabels[i] := IntToStr(i+1); + ColLabels[n] := 'Total'; + Title := 'Group (rows) times Subjects (columns) sums'; + Mat_Print(Subjtotals,p+1,n+1,Title,RowLabels,ColLabels,(n*p*p)); + OutPutFrm.ShowModal; + + // get squared sum of subject's totals in each group + for i := 0 to p-1 do // group + term7 := term7 + (Subjtotals[i,n] * Subjtotals[i,n]); + term7 := term7 / (n*p); // Sum G^2 sub k + + // now square each person score in each group and get sum for group + for i := 0 to p-1 do // groups + for j := 0 to n-1 do // subjects + Subjtotals[i,j] := Subjtotals[i,j] * Subjtotals[i,j]; + for i := 0 to p-1 do Subjtotals[i,n] := 0.0; // clear group totals + + // get sum of squared person scores in each group + for i := 0 to p-1 do // groups + for j := 0 to n-1 do // subjects + Subjtotals[i,n] := Subjtotals[i,n] + Subjtotals[i,j]; + + // get sum of squares for subjects within groups + for i := 0 to p-1 do term6 := term6 + Subjtotals[i,n]; + SSsubwgrps := (term6 / p) - term7; + + // get correction term and term for total sum of squares + term1 := (GrandMean * GrandMean) / (n * p * p); + term2 := sumxsqr; + + // get sum of squared groups for term4 of sum of squares for groups + for i := 0 to p-1 do + term4 := term4 + (Grptotals[i] * Grptotals[i]); + term4 := term4 / (n * p); + + // get sum of squared a's for term3 + for j := 0 to p-1 do // levels of a + term3 := term3 + (Atotals[j] * Atotals[j]); + term3 := term3 / (n * p); + + // get squared sum of b's (across groups) for term5 of sum of squares b + for j := 0 to p-1 do + term5 := term5 + (Btotals[j] * Btotals[j]); + term5 := term5 / (n * p); + + // get squared sum of c's (across groups) for term8 of SS for c + for j := 0 to p-1 do + term8 := term8 + (Ctotals[j] * Ctotals[j]); + term8 := term8 / (n * p); + + SSgroups := term4 - term1; + SSbetsubj := SSgroups + SSsubwgrps; + SStotal := term2 - term1; + SSwithinsubj := SStotal - SSbetsubj; + SSa := term3 - term1; + SSb := term5 - term1; + SSc := term8 - term1; + + // get sum of squared AB cells for term6 + term6 := 0.0; + for i := 0 to p-1 do + for j := 0 to p-1 do + term6 := term6 + (ABmat[i,j] * ABmat[i,j]); + term9 := term6 / n - term1; + term6 := sumxsqr - (term6 / n); // SS within cells from sum squared x's + SSerrwithin := term6 - SSsubwgrps; + SSab := term9 - (SSa + SSb + SSc + SSgroups); // residual + + // record degrees of freedom for sources + dfbetsubj := n * p - 1; + dfsubwgrps := p * (n-1); + dfgroups := p - 1; + dftotal := n * p * p - 1; + dfwithinsubj := n * p * (p-1); + dfa := p - 1; + dfb := p - 1; + dfc := p - 1; + dfab := (p - 1) * (p - 3); + dferrwithin := p * (n - 1) * (p - 1); + + MSsubwgrps := SSsubwgrps / dfsubwgrps; + MSgroups := SSgroups / dfgroups; + MSa := SSa / dfa; + MSb := SSb / dfb; + MSc := SSc / dfc; + if dfab > 0 then MSab := SSab / dfab; + MSerrwithin := SSerrwithin / dferrwithin; + fgroups := MSgroups / MSsubwgrps; + fa := MSa / MSerrwithin; + fb := MSb / MSerrwithin; + fc := MSc / MSerrwithin; + if dfab > 0 then fab := MSab / MSerrwithin; + probgrps := probf(fgroups,dfgroups,dfsubwgrps); + proba := probf(fa,dfa,dferrwithin); + probb := probf(fb,dfb,dferrwithin); + probc := probf(fc,dfc,dferrwithin); + probab := probf(fab,dfab,dferrwithin); + + // show ANOVA table results + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Latin Squares Repeated Analysis Plan 7 (superimposed squares)'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + OutPutFrm.RichEdit.Lines.Add('Source SS DF MS F Prob.>F'); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + cellstring := 'Betw.Subj.'; + cellstring := cellstring + format('%9.3f %9.0f',[SSbetsubj,dfbetsubj]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Groups '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSgroups,dfgroups,MSgroups,fgroups,probgrps]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Subj.w.g.'; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSsubwgrps,dfsubwgrps,MSsubwgrps]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Within Sub'; + cellstring := cellstring + format('%9.3f %9.0f',[SSwithinsubj,dfwithinsubj]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor A '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSa,dfa,MSa,fa,proba]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor B '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSb,dfb,MSb,fb,probb]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor C '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSc,dfc,MSc,fc,probc]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' residual '; + if dfab > 0 then + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSab,dfab,MSab,fab,probab]) + else + cellstring := cellstring + format(' - %9.0f -',[dfab]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Error w. '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSerrwithin,dferrwithin,MSerrwithin]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Total '; + cellstring := cellstring + format('%9.3f %9.0f',[SStotal, dftotal]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + + // show design for Square + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Experimental Design for Latin Square '; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[GroupFactor]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); // A (column) effect + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); // B (cell) effect + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); // C (cell) effect + group := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); // group (row) + Design[group-1,row-1] := 'BC' + IntToStr(col) + IntToStr(slice); + end; + for i := 0 to p - 1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + cellstring := cellstring + format('%5s',[Design[i,j]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // get means + for i := 0 to p-1 do + for j := 0 to p-1 do + ABmat[i,j] := ABmat[i,j] / n; + for i := 0 to p-1 do + ABmat[i,p] := ABmat[i,p] / (n * p); + for j := 0 to p-1 do + ABmat[p,j] := ABmat[p,j] / (n * p); + + GrandMean := GrandMean / (p * p * n ); + for i := 0 to p-1 do + begin + Atotals[i] := Atotals[i] / (p * n); + Btotals[i] := Btotals[i] / (p * n); + Ctotals[i] := Ctotals[i] / (p * n); + Grptotals[i] := Grptotals[i] / (p * n); + end; + + // show table of means for ABmat + // means for Groups by A matrix + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Cell means and totals'); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[GroupFactor]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 0 to p-1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + cellstring := cellstring + format(' %8.3f ',[ABmat[i,j]]); + cellstring := cellstring + format(' %8.3f ',[ABmat[i,p]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := 'Total '; + for j := 0 to p-1 do + cellstring := cellstring + format(' %8.3f ',[ABmat[p,j]]); + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // show category means + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Means for each variable'); + OutPutFrm.RichEdit.Lines.Add(''); + + // factor A means + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Atotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // means for B + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorB]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Btotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // C means + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorC]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Ctotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + + // Group means + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[GroupFactor]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + cellstring := cellstring + ' Total'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p - 1 do + begin + cellstring := cellstring + format(' %8.3f ',[Grptotals[j]]); + end; + cellstring := cellstring + format(' %8.3f ',[GrandMean]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '----------'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.ShowModal; + +cleanup: + GCmat := nil; + GBmat := nil; + ColLabels := nil; + RowLabels := nil; + Subjtotals := nil; + Design := nil; + Grptotals := nil; + Ctotals := nil; + Btotals := nil; + Atotals := nil; + cellcnts := nil; + ABCmat := nil; + ABmat := nil; +end; + +procedure TLatinSqrsFrm.Plan9(Sender: TObject); +label cleanup; +var + NoFactors, row, col, slice, group, index : integer; + Acol, Bcol, Ccol, SbjCol, Grpcol, DataCol : integer; // variable columns in grid + FactorA : string; + FactorB : string; + FactorC : string; + SubjectFactor : string; + GroupFactor : string; + DataVar : string; + cellstring : string; + i, j, k, m, minA, minB, minC, minGrp, maxA, maxB, maxC, maxGrp : integer; + n, subject, nosubjects, rangeA, rangeB, rangeC, rangeGrp : integer; + p, q, rows, value : integer; + ABC, AGC : DblDyneCube; + AB, AC, BC, RC : DblDyneMat; + A, B, C, Persons, Gm, R : DblDyneVec; + cellcnts : IntDyneVec; + Design : StrDyneMat; + RowLabels : StrDyneVec; + ColLabels : StrDyneVec; + G, sumxsqr, sumAsqr, sumBsqr, sumCsqr, sumABsqr, sumACsqr : double; + sumBCsqr, sumABCsqr, sumPsqr, sumGmsqr, sumRsqr : double; + SSbetsubj, SSc, SSrows, SScxrow, SSsubwgrps, SSwsubj, SSa : double; + SSwithinsubj, SSerrwithin : double; + SSb, SSac, SSbc, SSabprime, SSABCprime, SSerrorwithin, SStotal : double; + term1, term2, term3, term4, term5, term6, term7, term8, term9, term10 : double; + term11, term12 : double; + dfc, dfrows, dfcxrow, dfsubwgrps, dfwithinsubj, dfa, dfb,dfac : double; + dfbc, dfabprime, dfabcprime,dferrwithin, dftotal, dfbetsubj : double; + MSbetweensubj, MSc, MSrows, MScxrow, MSsubwgrps, MSwsubj, MSa : double; + MSb, MSac, MSbc, MSabprime, MSabcprime, MSerrwithin, MStotal : double; + fc, frows, fcxrow, fsubwgrps, fa, fb, fac, fbc, fabprime, fabcprime : double; + probc, probrows, probcxrow, probsubwgrps, proba, probb : double; + probac, probbc, probabprime, probabcprime : double; + data : double; + +begin + NoFactors := 4; + cellstring := LatinSpecsFrm.Label5.Caption; // get current label + LatinSpecsFrm.Label5.Caption := 'Subject No.'; // set new label + LatinSpecsFrm.AinBtn.Visible := true; + LatinSpecsFrm.AoutBtn.Visible := false; + LatinSpecsFrm.BinBtn.Visible := true; + LatinSpecsFrm.BoutBtn.Visible := false; + LatinSpecsFrm.CinBtn.Visible := true; + LatinSpecsFrm.CoutBtn.Visible := false; + LatinSpecsFrm.DCodeEdit.Visible := true; + LatinSpecsFrm.ACodeEdit.Text := ''; + LatinSpecsFrm.BCodeEdit.Text := ''; + LatinSpecsFrm.CCodeEdit.Text := ''; + LatinSpecsFrm.DCodeEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Text := ''; + LatinSpecsFrm.DepVarEdit.Text := ''; + LatinSpecsFrm.nPerCellEdit.Text := ''; + LatinSpecsFrm.GrpCodeEdit.Visible := true; + LatinSpecsFrm.Label5.Visible := true; + LatinSpecsFrm.Label6.Visible := true; + LatinSpecsFrm.DinBtn.Visible := true; + LatinSpecsFrm.DoutBtn.Visible := false; + LatinSpecsFrm.GrpInBtn.Visible := true; + LatinSpecsFrm.GrpOutBtn.Visible := false; + LatinSpecsFrm.DataInBtn.Visible := true; + LatinSpecsFrm.DataOutBtn.Visible := false; + LatinSpecsFrm.ShowModal; + if LatinSpecsFrm.ModalResult = mrCancel then exit; + LatinSpecsFrm.Label5.Caption := cellstring; // restore label + n := StrToInt(LatinSpecsFrm.nPerCellEdit.Text); // no. persons per cell + if n <= 0 then + begin + ShowMessage('Please specify the number of subjects per group.'); + exit; + end; + FactorA := LatinSpecsFrm.ACodeEdit.Text; + FactorB := LatinSpecsFrm.BCodeEdit.Text; + FactorC := LatinSpecsFrm.CCodeEdit.Text; + SubjectFactor := LatinSpecsFrm.DCodeEdit.Text; + GroupFactor := LatinSpecsFrm.GrpCodeEdit.Text; + DataVar := LatinSpecsFrm.DepVarEdit.Text; + for i := 1 to NoVariables do + begin + cellstring := OS3MainFrm.DataGrid.Cells[i,0]; + if (cellstring = FactorA) then Acol := i; + if (cellstring = FactorB) then Bcol := i; + if (cellstring = FactorC) then Ccol := i; + if (cellstring = GroupFactor) then Grpcol := i; + if (cellstring = SubjectFactor) then Sbjcol := i; + if (cellstring = DataVar) then DataCol := i; + end; + + // determine no. of levels in A, B, C and Group + minA := 1000; + minB := 1000; + minGrp := 1000; + maxA := -1000; + maxB := -1000; + minC := 1000; + maxC := -1000; + maxGrp := -1000; + nosubjects := 0; + for i := 1 to NoCases do + begin + value := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); + if value < minA then minA := value; + if value > maxA then maxA := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); + if value < minB then minB := value; + if value > maxB then maxB := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); + if value < minC then minC := value; + if value > maxC then maxC := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[sbjcol,i]); + if value > nosubjects then nosubjects := value; + value := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); + if value < minGrp then minGrp := value; + if value > maxGrp then maxGrp := value; + end; + rangeA := maxA - minA + 1; + rangeB := maxB - minB + 1; + rangeC := maxC - minC + 1; + rangeGrp := maxGrp - minGrp + 1; + + // check for squareness + if (rangeA <> rangeB) then + begin + ShowMessage('ERROR! In a Latin square the range of values should be equal for A,B and C!'); + exit; + end; + p := rangeA; + q := rangeC; + + // set up an array for cell counts and for cell sums and marginal sums + SetLength(ABC,p+1,p+1,q+1); + SetLength(AGC,p+1,rangegrp+1,q+1); + SetLength(AB,p+1,p+1); + SetLength(AC,p+1,q+1); + SetLength(BC,p+1,q+1); + SetLength(RC,(rangegrp div q)+1,q+1); + SetLength(A,p+1); + SetLength(B,p+1); + SetLength(C,q+1); + SetLength(Persons,nosubjects+1); + SetLength(Gm,rangegrp+1); + SetLength(R,p+1); + SetLength(cellcnts,p+1); + SetLength(Design,rangegrp,p); + SetLength(RowLabels,100); + SetLength(ColLabels,100); + + // initialize arrays + for i := 0 to p-1 do + begin + RowLabels[i] := IntToStr(i+1); + ColLabels[i] := RowLabels[i]; + end; + RowLabels[p] := 'Total'; + ColLabels[p] := 'Total'; + + for i := 0 to p do + for j := 0 to p do + for k := 0 to q do + ABC[i,j,k] := 0.0; + + for i := 0 to p do + for j := 0 to rangegrp do + for k := 0 to q do + AGC[i,j,k] := 0.0; + + for i := 0 to p do + for j := 0 to p do + AB[i,j] := 0.0; + + for i := 0 to p do + for j := 0 to q do + AC[i,j] := 0.0; + + for i := 0 to p do + for j := 0 to q do + BC[i,j] := 0.0; + + for i := 0 to p do + for j := 0 to q do + RC[i,j] := 0.0; + + for i := 0 to p do A[i] := 0.0; + for i := 0 to p do B[i] := 0.0; + for i := 0 to q do C[i] := 0.0; + for i := 0 to nosubjects do Persons[i] := 0.0; + for i := 0 to rangegrp do Gm[i] := 0.0; + for i := 0 to p do R[i] := 0.0; + for i := 0 to p do cellcnts[i] := 0; + + // initialize single values + G := 0.0; + sumxsqr := 0.0; + sumAsqr := 0.0; + sumBsqr := 0.0; + sumABsqr := 0.0; + sumACsqr := 0.0; + sumBCsqr := 0.0; + sumABCsqr := 0.0; + sumRsqr := 0.0; + sumGmsqr := 0.0; + sumRsqr := 0.0; + sumPsqr := 0.0; + term2 := 0.0; + term3 := 0.0; + term4 := 0.0; + term5 := 0.0; + term6 := 0.0; + term7 := 0.0; + term8 := 0.0; + term9 := 0.0; + term10 := 0.0; + term11 := 0.0; + term12 := 0.0; + + // Read in the data + for index := 1 to NoCases do + begin + i := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,index]); + j := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,index]); + k := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,index]); + m := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,index]); + subject := StrToInt(OS3MainFrm.DataGrid.Cells[Sbjcol,index]); + data := StrToFloat(OS3MainFrm.DataGrid.Cells[DataCol,index]); + cellcnts[j-1] := cellcnts[j-1] + 1; + ABC[i-1,j-1,k-1] := ABC[i-1,j-1,k-1] + data; + AGC[i-1,m-1,k-1] := AGC[i-1,m-1,k-1] + data; + AB[i-1,j-1] := AB[i-1,j-1] + data; + AC[i-1,k-1] := AC[i-1,k-1] + data; + BC[j-1,k-1] := BC[j-1,k-1] + data; + A[i-1] := A[i-1] + data; + B[j-1] := B[j-1] + data; + C[k-1] := C[k-1] + data; + Gm[m-1] := Gm[m-1] + data; + Persons[subject-1] := Persons[subject-1] + data; + sumxsqr := sumxsqr + (data * data); + G := G + data; + end; + + // check for equal cell counts in b treatments + for i := 1 to p-1 do + begin + if cellcnts[i-1] <> cellcnts[i] then + begin + ShowMessage('cell sizes are not equal!'); + goto cleanup; + end; + end; + + // get sums in the RC matrix + rows := rangegrp div q; + for i := 0 to rows - 1 do + begin + for j := 0 to q-1 do + begin +// k := (i * q) + j; + k := i + q * j; + RC[i,j] := Gm[k]; + end; + end; + + // get marginal totals for RC array + for i := 0 to rows -1 do + begin + for j := 0 to q-1 do + begin + RC[i,q] := RC[i,q] + RC[i,j]; + RC[rows,j] := RC[rows,j] + RC[i,j]; + end; + end; + + // get marginal totals for arrays ABC and AGC + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + for k := 0 to q-1 do + begin + ABC[i,j,q] := ABC[i,j,q] + ABC[i,j,k]; + ABC[i,p,k] := ABC[i,p,k] + ABC[i,j,k]; + ABC[p,j,k] := ABC[p,j,k] + ABC[i,j,k]; + end; + end; + end; + + for i := 0 to p-1 do + begin + for j := 0 to rangegrp - 1 do + begin + for k := 0 to q-1 do + begin + AGC[i,j,q] := AGC[i,j,q] + AGC[i,j,k]; + AGC[i,rangegrp,k] := AGC[i,rangegrp,k] + AGC[i,j,k]; + AGC[p,j,k] := AGC[p,j,k] + AGC[i,j,k]; + end; + end; + end; + + for i := 0 to p-1 do + begin + for j := 0 to q-1 do + begin + AC[p,j] := AC[p,j] + AC[i,j]; + AC[i,q] := AC[i,q] + AC[i,j]; + BC[p,j] := BC[p,j] + BC[i,j]; + BC[i,q] := BC[i,q] + BC[i,j]; + end; + end; + + // get grand total for AC, BC and RC + for i := 0 to q-1 do + begin + AC[p,q] := AC[p,q] + AC[p,i]; + BC[p,q] := BC[p,q] + BC[p,i]; + RC[p,q] := RC[p,q] + RC[p,i]; + end; + + // get margins and totals in AB matrix + for i := 0 to p-1 do + begin + for j := 0 to p-1 do + begin + AB[p,j] := AB[p,j] + AB[i,j]; + AB[i,p] := AB[i,p] + AB[i,j]; + end; + end; + for i := 0 to p-1 do AB[p,p] := AB[p,p] + AB[i,p]; + + // get total for groups + for m := 0 to rangegrp - 1 do Gm[rangegrp] := Gm[rangegrp] + Gm[m]; + + // test block + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Latin Squares Repeated Analysis Plan 9'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Sums for ANOVA Analysis'); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'ABC matrix'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add(''); + for k := 0 to q-1 do + begin + cellstring := format('C level %d',[k+1]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p-1 do cellstring := cellstring + format(' %3d ',[j+1]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 0 to p-1 do // row + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p-1 do + begin + cellstring := cellstring + format('%9.3f ',[ABC[i,j,k]]); + end; + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add(''); + end; + cellstring := 'AB sums'; + MAT_PRINT(AB,p+1,p+1,cellstring,RowLabels,ColLabels,(n*p*q)); + cellstring := 'AC sums'; + MAT_PRINT(AC,p+1,q+1,cellstring,RowLabels,ColLabels,(n*p*q)); + cellstring := 'BC sums'; + MAT_PRINT(BC,p+1,q+1,cellstring,RowLabels,ColLabels,(n*p*q)); + cellstring := 'RC sums'; + MAT_PRINT(RC,rows+1,q+1,cellstring,RowLabels,ColLabels,(n*p*q)); + cellstring := 'Group totals'; + for i := 0 to rangegrp-1 do ColLabels[i] := IntToStr(i+1); + ColLabels[rangegrp] := 'Total'; + DynVectorPrint(Gm,rangegrp+1,cellstring,ColLabels,(n*p*q)); + for i := 0 to nosubjects-1 do ColLabels[i] := IntToStr(i+1); + ColLabels[nosubjects] := 'Total'; + cellstring := 'Subjects sums'; + DynVectorPrint(Persons,nosubjects+1,cellstring,ColLabels,(n*p*q)); + OutPutFrm.ShowModal; + + term1 := (G * G) / (n * p * p * q); + term2 := sumXsqr; + for i := 0 to p-1 do term3 := term3 + (A[i] * A[i]); + term3 := term3 / (n * p * q); + for i := 0 to p-1 do term4 := term4 + (B[i] * B[i]); + term4 := term4 / (n * p * q); + for i := 0 to q-1 do term5 := term5 + (C[i] * C[i]); + term5 := term5 / (n * p * p); + for i := 0 to p-1 do + for j := 0 to p-1 do + term6 := term6 + (AB[i,j] * AB[i,j]); + term6 := term6 / (n * q); + for i := 0 to p-1 do + for j := 0 to q-1 do + term7 := term7 + (AC[i,j] * AC[i,j]); + term7 := term7 / (n * p); + for i := 0 to p-1 do + for j := 0 to q-1 do + term8 := term8 + (BC[i,j] * BC[i,j]); + term8 := term8 / (n * p); + for i := 0 to p-1 do + for j := 0 to p-1 do + for k := 0 to q-1 do + term9 := term9 + (ABC[i,j,k] * ABC[i,j,k]); + term9 := term9 / n; + for i := 0 to nosubjects-1 do term10 := term10 + (persons[i] * persons[i]); + term10 := term10 / p; + for i := 0 to rangegrp-1 do term11 := term11 + (Gm[i] * Gm[i]); + term11 := term11 / (n * p); + for i := 0 to rows-1 do term12 := term12 + (RC[i,q] * RC[i,q]); + term12 := term12 / (n * p * q); + + // term check + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Computation Terms'); + cellstring := format('Term1 = %9.3f',[term1]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term2 = %9.3f',[term2]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term3 = %9.3f',[term3]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term4 = %9.3f',[term4]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term5 = %9.3f',[term5]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term6 = %9.3f',[term6]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term7 = %9.3f',[term7]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term8 = %9.3f',[term8]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term9 = %9.3f',[term9]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term10 = %9.3f',[term10]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term11 = %9.3f',[term11]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('term12 = %9.3f',[term12]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + + // now get sums of squares + SSbetsubj := term10 - term1; + SSc := term5 - term1; + SSrows := term12 - term1; + SScxrow := term11 - term5 - term12 + term1; + SSsubwgrps := term10 - term11; + SSwithinsubj := term2 - term10; + SSa := term3 - term1; + SSb := term4 - term1; + SSac := term7 - term3 - term5 + term1; + SSbc := term8 - term4 - term5 + term1; + SSabprime := (term6 - term3 - term4 + term1) - (term12 - term1); + SSabcprime := (term9 - term6 - term7 - term8 + term3 + term4 + term5 - term1) + - (term11 - term5 - term12 + term1); + SSerrwithin := term2 - term10 - term9 + term11; + SStotal := term2 - term1; + + // record degrees of freedom for sources + dfbetsubj := n * p * q - 1; + dfc := q - 1; + dfrows := p - 1; + dfcxrow := (p-1) * (q-1); + dfsubwgrps := p * q * (n-1); + dfwithinsubj := n * p * q * (p-1); + dfa := p - 1; + dfb := p - 1; + dfac := (p - 1) * (q - 1); + dfbc := (p - 1) * (q - 1); + dfabprime := (p - 1) * (p - 2); + dfabcprime := (p - 1) * (p - 2) * (q - 1); + dferrwithin := p * q * (n - 1) * (p - 1); + dftotal := n * p * p * q - 1; + + MSc := SSc / dfc; + MSrows := SSrows / dfrows; + MScxrow := SScxrow / dfcxrow; + MSsubwgrps := SSsubwgrps / dfsubwgrps; + MSa := SSa / dfa; + MSb := SSb / dfb; + MSac := SSac / dfac; + MSbc := SSbc / dfbc; + MSabprime := SSabprime / dfabprime; + MSabcprime := SSabcprime / dfabcprime; + MSerrwithin := SSerrwithin / dferrwithin; + + fc := MSc / MSsubwgrps; + frows := MSrows / MSsubwgrps; + fcxrow := MScxrow / MSsubwgrps; + fsubwgrps := MSsubwgrps / MSerrwithin; + fa := MSa / MSerrwithin; + fb := MSb / MSerrwithin; + fac := MSac / MSerrwithin; + fbc := MSbc / MSerrwithin; + fabprime := MSabprime / MSerrwithin; + fabcprime := MSabcprime / MSerrwithin; + + probc := probf(fc,dfc,dfsubwgrps); + probrows := probf(frows,dfrows,dfsubwgrps); + probcxrow := probf(fcxrow,dfcxrow,dfsubwgrps); + probsubwgrps := probf(fsubwgrps,dfsubwgrps,dferrwithin); + proba := probf(fa,dfa,dferrwithin); + probb := probf(fb,dfb,dferrwithin); + probac := probf(fac,dfac,dferrwithin); + probbc := probf(fbc,dfbc,dferrwithin); + probabprime := probf(fabprime,dfabprime,dferrwithin); + probabcprime := probf(fabcprime,dfabcprime,dferrwithin); + + // show ANOVA table results + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Latin Squares Repeated Analysis Plan 9'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + OutPutFrm.RichEdit.Lines.Add('Source SS DF MS F Prob.>F'); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + cellstring := 'Betw.Subj.'; + cellstring := cellstring + format('%9.3f %9.0f',[SSbetsubj,dfbetsubj]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor C '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSc,dfc,MSc,fc,probc]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Rows '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSrows,dfrows,MSrows,frows,probrows]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' C x row '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SScxrow,dfcxrow,MScxrow,fcxrow,probcxrow]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Subj.w.g.'; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSsubwgrps,dfsubwgrps,MSsubwgrps]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Within Sub'; + cellstring := cellstring + format('%9.3f %9.0f',[SSwithinsubj,dfwithinsubj]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor A '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSa,dfa,MSa,fa,proba]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor B '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSb,dfb,MSb,fb,probb]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor AC'; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSac,dfac,MSac,fac,probac]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Factor BC'; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSbc,dfbc,MSbc,fbc,probbc]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' AB prime '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSabprime,dfabprime,MSabprime,fabprime,probabprime]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' ABC prime'; + cellstring := cellstring + format('%9.3f %9.0f %9.3f %9.3f %9.3f',[SSabcprime,dfabcprime,MSabcprime,fabcprime,probabcprime]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' Error w. '; + cellstring := cellstring + format('%9.3f %9.0f %9.3f',[SSerrwithin,dferrwithin,MSerrwithin]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := 'Total '; + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := cellstring + format('%9.3f %9.0f',[SStotal, dftotal]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add('-----------------------------------------------------------'); + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + + // show design for Squares c1, c2, etc. + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'Experimental Design for Latin Square '; + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[FactorA]); + for i := 1 to p do cellstring := cellstring + format(' %3d ',[i]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := format('%10s',[GroupFactor]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 1 to NoCases do + begin + row := StrToInt(OS3MainFrm.DataGrid.Cells[Acol,i]); // A (column) effect + col := StrToInt(OS3MainFrm.DataGrid.Cells[Bcol,i]); // B (cell) effect + slice := StrToInt(OS3MainFrm.DataGrid.Cells[Ccol,i]); // C (cell) effect + group := StrToInt(OS3MainFrm.DataGrid.Cells[Grpcol,i]); // group (row) + Design[group-1,row-1] := 'B' + IntToStr(col); + end; + for i := 0 to rangegrp - 1 do + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p - 1 do + cellstring := cellstring + format('%5s',[Design[i,j]]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + cellstring := '----------'; + for i := 1 to p + 1 do cellstring := cellstring + '-----'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + + // get means + G := G / (p * p * q * n ); + for i := 0 to p-1 do + for j := 0 to p-1 do + for k := 0 to q-1 do + ABC[i,j,k] := ABC[i,j,k] / n; + + for i := 0 to p-1 do + for j := 0 to p-1 do + AB[i,j] := AB[i,j] / (n * p); + for i := 0 to p-1 do AB[i,p] := AB[i,p] / (n * p * p); + for j := 0 to p-1 do AB[p,j] := AB[p,j] / (n * p * p); + AB[p,p] := G; + + for i := 0 to p-1 do + for j := 0 to q-1 do + AC[i,j] := AC[i,j] / (n * p); + for i := 0 to p-1 do AC[i,q] := AC[i,q] / (n * p * p); + for j := 0 to q-1 do AC[p,j] := AC[p,j] / (n * p * p); + AC[p,q] := G; + + for i := 0 to p-1 do + for j := 0 to q-1 do + BC[i,j] := BC[i,j] / (n * p); + for i := 0 to p-1 do BC[i,q] := BC[i,q] / (n * p * p); + for j := 0 to q-1 do BC[p,j] := BC[p,j] / (n * p * p); + BC[p,q] := G; + + for i := 0 to rows-1 do + for j := 0 to q-1 do + RC[i,j] := RC[i,j] / (p * n); + for i := 0 to rows-1 do RC[i,q] := RC[i,q] / (p * q * n); + for j := 0 to q-1 do RC[p,j] := RC[p,j] / (q * p * n); + RC[p,q] := G; + + for i := 0 to p-1 do + begin + A[i] := A[i] / (p * n * q); + B[i] := B[i] / (p * n * q); + end; + A[p] := G; + B[p] := G; + + for i := 0 to q-1 do C[i] := C[i] / (p * q * n); + C[q] := G; + + for i := 0 to rangegrp-1 do Gm[i] := Gm[i] / (p * n); + Gm[rangegrp] := G; + + for i := 0 to nosubjects-1 do Persons[i] := Persons[i] / n; + Persons[nosubjects] := G; + + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Latin Squares Repeated Analysis Plan 9'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Means for ANOVA Analysis'); + OutPutFrm.RichEdit.Lines.Add(''); + cellstring := 'ABC matrix'; + OutPutFrm.RichEdit.Lines.Add(cellstring); + OutPutFrm.RichEdit.Lines.Add(''); + for k := 0 to q-1 do + begin + cellstring := format('C level %d',[k+1]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + cellstring := ' '; + for j := 0 to p-1 do cellstring := cellstring + format(' %3d ',[j+1]); + OutPutFrm.RichEdit.Lines.Add(cellstring); + for i := 0 to p-1 do // row + begin + cellstring := format(' %3d ',[i+1]); + for j := 0 to p-1 do + begin + cellstring := cellstring + format('%9.3f ',[ABC[i,j,k]]); + end; + OutPutFrm.RichEdit.Lines.Add(cellstring); + end; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add(''); + end; + cellstring := 'AB Means'; + MAT_PRINT(AB,p+1,p+1,cellstring,RowLabels,ColLabels,(n*p*p*q)); + cellstring := 'AC Means'; + MAT_PRINT(AC,p+1,q+1,cellstring,RowLabels,ColLabels,(n*p*p*q)); + cellstring := 'BC Means'; + MAT_PRINT(BC,p+1,q+1,cellstring,RowLabels,ColLabels,(n*p*p*q)); + cellstring := 'RC Means'; + MAT_PRINT(RC,rows+1,q+1,cellstring,RowLabels,ColLabels,(n*p*p*q)); + cellstring := 'Group Means'; + for i := 0 to rangegrp-1 do ColLabels[i] := IntToStr(i+1); + ColLabels[rangegrp] := 'Total'; + DynVectorPrint(Gm,rangegrp+1,cellstring,ColLabels,(n*p*p*q)); + for i := 0 to nosubjects-1 do ColLabels[i] := IntToStr(i+1); + ColLabels[nosubjects] := 'Total'; + cellstring := 'Subjects Means'; + DynVectorPrint(Persons,nosubjects+1,cellstring,ColLabels,(n*p*p*q)); + OutPutFrm.ShowModal; + +cleanup: + ColLabels := nil; + RowLabels := nil; + Design := nil; + cellcnts := nil; + R := nil; + Gm := nil; + Persons := nil; + C := nil; + B := nil; + A := nil; + RC := nil; + BC := nil; + AC := nil; + AB := nil; + AGC := nil; + ABC := nil; +end; + +initialization + {$I latinsqrsunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/licenseunit.lfm b/applications/lazstats/source_orig/licenseunit.lfm new file mode 100644 index 000000000..857d80f55 --- /dev/null +++ b/applications/lazstats/source_orig/licenseunit.lfm @@ -0,0 +1,78 @@ +object LicenseFrm: TLicenseFrm + Left = 138 + Height = 347 + Top = 105 + Width = 637 + Caption = 'License For Use' + ClientHeight = 347 + ClientWidth = 637 + LCLVersion = '0.9.28.2' + object Memo1: TMemo + Left = 0 + Height = 307 + Top = 0 + Width = 637 + Align = alClient + Font.CharSet = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -13 + Font.Name = 'Courier' + Font.Pitch = fpFixed + Font.Quality = fqDraft + Lines.Strings = ( + ' ***************************************************************************' + ' * *' + ' * This source is free software; you can redistribute it and/or modify *' + ' * it under the terms of the GNU General Public License as published by *' + ' * the Free Software Foundation; either version 2 of the License, or *' + ' * (at your option) any later version. *' + ' * *' + ' * This code is distributed in the hope that it will be useful, but *' + ' * WITHOUT ANY WARRANTY; without even the implied warranty of *' + ' * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *' + ' * General Public License for more details. *' + ' * *' + ' * A copy of the GNU General Public License is available on the World *' + ' * Wide Web at . You can also *' + ' * obtain it by writing to the Free Software Foundation, *' + ' * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *' + ' * *' + ' ***************************************************************************' + '' + 'Use at your own risk. Compare results to other statistics programs' + 'or text book examples for each procedure.' + 'Click on Accept or Reject below.' + ) + ParentFont = False + TabOrder = 0 + end + object Panel1: TPanel + Left = 0 + Height = 40 + Top = 307 + Width = 637 + Align = alBottom + ClientHeight = 40 + ClientWidth = 637 + TabOrder = 1 + object AcceptBtn: TButton + Left = 48 + Height = 22 + Top = 9 + Width = 67 + Caption = 'Accept' + ModalResult = 1 + OnClick = AcceptBtnClick + TabOrder = 0 + end + object RejectBtn: TButton + Left = 216 + Height = 20 + Top = 10 + Width = 72 + Caption = 'Reject' + OnClick = RejectBtnClick + TabOrder = 1 + end + end +end diff --git a/applications/lazstats/source_orig/licenseunit.lrs b/applications/lazstats/source_orig/licenseunit.lrs new file mode 100644 index 000000000..73f96ddbb --- /dev/null +++ b/applications/lazstats/source_orig/licenseunit.lrs @@ -0,0 +1,40 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TLicenseFrm','FORMDATA',[ + 'TPF0'#11'TLicenseFrm'#10'LicenseFrm'#4'Left'#3#138#0#6'Height'#3'['#1#3'Top' + +#2'i'#5'Width'#3'}'#2#7'Caption'#6#15'License For Use'#12'ClientHeight'#3'[' + +#1#11'ClientWidth'#3'}'#2#10'LCLVersion'#6#8'0.9.28.2'#0#5'TMemo'#5'Memo1'#4 + +'Left'#2#0#6'Height'#3'3'#1#3'Top'#2#0#5'Width'#3'}'#2#5'Align'#7#8'alClient' + +#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'Font.Hei' + +'ght'#2#243#9'Font.Name'#6#7'Courier'#10'Font.Pitch'#7#7'fpFixed'#12'Font.Qu' + +'ality'#7#7'fqDraft'#13'Lines.Strings'#1#6'L *******************************' + +'********************************************'#6'L * ' + +' *'#6'L * This source is ' + +'free software; you can redistribute it and/or modify *'#6'L * it under ' + +'the terms of the GNU General Public License as published by *'#6'L * the' + +' Free Software Foundation; either version 2 of the License, or *'#6'L *' + +' (at your option) any later version. *' + +#6'L * ' + +' *'#6'L * This code is distributed in the hope that it will be useful, ' + +'but *'#6'L * WITHOUT ANY WARRANTY; without even the implied warranty' + +' of *'#6'L * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPO' + +'SE. See the GNU *'#6'L * General Public License for more details. ' + +' *'#6'L * ' + +' *'#6'L * A copy of the GNU General Publi' + +'c License is available on the World *'#6'L * Wide Web at . You can also *'#6'L * obtain it by writin' + +'g to the Free Software Foundation, *'#6'L * Inc., 59 Temp' + +'le Place - Suite 330, Boston, MA 02111-1307, USA. *'#6'L * ' + +' *'#6'L *****' + +'**********************************************************************'#6#0 + +#6'CUse at your own risk. Compare results to other statistics programs'#6')' + +'or text book examples for each procedure.'#6' Click on Accept or Reject bel' + +'ow.'#0#10'ParentFont'#8#8'TabOrder'#2#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0 + +#6'Height'#2'('#3'Top'#3'3'#1#5'Width'#3'}'#2#5'Align'#7#8'alBottom'#12'Clie' + +'ntHeight'#2'('#11'ClientWidth'#3'}'#2#8'TabOrder'#2#1#0#7'TButton'#9'Accept' + +'Btn'#4'Left'#2'0'#6'Height'#2#22#3'Top'#2#9#5'Width'#2'C'#7'Caption'#6#6'Ac' + +'cept'#11'ModalResult'#2#1#7'OnClick'#7#14'AcceptBtnClick'#8'TabOrder'#2#0#0 + +#0#7'TButton'#9'RejectBtn'#4'Left'#3#216#0#6'Height'#2#20#3'Top'#2#10#5'Widt' + +'h'#2'H'#7'Caption'#6#6'Reject'#7'OnClick'#7#14'RejectBtnClick'#8'TabOrder'#2 + +#1#0#0#0#0 +]); diff --git a/applications/lazstats/source_orig/licenseunit.pas b/applications/lazstats/source_orig/licenseunit.pas new file mode 100644 index 000000000..dbd5e3c98 --- /dev/null +++ b/applications/lazstats/source_orig/licenseunit.pas @@ -0,0 +1,49 @@ +unit LicenseUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, ExtCtrls; + +type + + { TLicenseFrm } + + TLicenseFrm = class(TForm) + AcceptBtn: TButton; + RejectBtn: TButton; + Memo1: TMemo; + Panel1: TPanel; + procedure AcceptBtnClick(Sender: TObject); + procedure RejectBtnClick(Sender: TObject); + private + { private declarations } + public + { public declarations } + end; + +var + LicenseFrm: TLicenseFrm; + +implementation + +{ TLicenseFrm } + +procedure TLicenseFrm.AcceptBtnClick(Sender: TObject); +begin + LicenseFrm.Hide; +end; + +procedure TLicenseFrm.RejectBtnClick(Sender: TObject); +begin + close; +end; + +initialization + {$I licenseunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/lifetableunit.lfm b/applications/lazstats/source_orig/lifetableunit.lfm new file mode 100644 index 000000000..bbfd89835 --- /dev/null +++ b/applications/lazstats/source_orig/lifetableunit.lfm @@ -0,0 +1,644 @@ +object LifeTableForm: TLifeTableForm + Left = 117 + Height = 549 + Top = 157 + Width = 1195 + Caption = 'LIFE TABLE' + ClientHeight = 549 + ClientWidth = 1195 + OnShow = FormShow + LCLVersion = '0.9.30.4' + object Label1: TLabel + Left = 7 + Height = 16 + Top = 11 + Width = 51 + Caption = 'Variables:' + ParentColor = False + end + object VarList: TListBox + Left = 8 + Height = 496 + Top = 32 + Width = 168 + ItemHeight = 0 + TabOrder = 0 + end + object Memo1: TMemo + Left = 320 + Height = 112 + Top = 8 + Width = 440 + Lines.Strings = ( + 'Directions: Your input grid data should consist of five integer column vaiables:' + '1. The beginning of each observation period (typically 0 for the first observation.' + '2. The ending of each observation period.' + '3. The number alive in the observation period.' + '4. The number that died during the observation period.' + '5. The number last seen alive during the period that are lost (censored)' + 'See the example file LIFETABLE.LAZ.' + ) + TabOrder = 1 + end + object CancelBtn: TButton + Left = 766 + Height = 37 + Top = 8 + Width = 81 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 2 + end + object ResetBtn: TButton + Left = 768 + Height = 37 + Top = 56 + Width = 81 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 3 + end + object ComputeBtn: TButton + Left = 872 + Height = 37 + Top = 8 + Width = 81 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 4 + end + object ReturnBtn: TButton + Left = 872 + Height = 37 + Top = 56 + Width = 81 + Caption = 'Return' + ModalResult = 1 + TabOrder = 5 + end + object ObsStartInBtn: TBitBtn + Left = 184 + Height = 29 + Top = 72 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = ObsStartInBtnClick + TabOrder = 6 + end + object ObsStartOutBtn: TBitBtn + Left = 232 + Height = 29 + Top = 72 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = ObsStartOutBtnClick + TabOrder = 7 + end + object Label2: TLabel + Left = 185 + Height = 16 + Top = 31 + Width = 92 + Caption = 'Observation Start' + ParentColor = False + end + object ObsStartEdit: TEdit + Left = 186 + Height = 23 + Top = 46 + Width = 125 + TabOrder = 8 + Text = 'ObsStartEdit' + end + object Label3: TLabel + Left = 184 + Height = 16 + Top = 114 + Width = 91 + Caption = 'Observation End:' + ParentColor = False + end + object ObsEndEdit: TEdit + Left = 186 + Height = 23 + Top = 131 + Width = 127 + TabOrder = 9 + Text = 'ObsEndEdit' + end + object ObsEndInBtn: TBitBtn + Left = 186 + Height = 29 + Top = 160 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = ObsEndInBtnClick + TabOrder = 10 + end + object ObsEndOutBtn: TBitBtn + Left = 234 + Height = 29 + Top = 160 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = ObsEndOutBtnClick + TabOrder = 11 + end + object Label4: TLabel + Left = 184 + Height = 16 + Top = 207 + Width = 77 + Caption = 'Number Alive:' + ParentColor = False + end + object NoAliveEdit: TEdit + Left = 184 + Height = 23 + Top = 226 + Width = 128 + TabOrder = 12 + Text = 'NoAliveEdit' + end + object AliveInBtn: TBitBtn + Left = 185 + Height = 29 + Top = 256 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = AliveInBtnClick + TabOrder = 13 + end + object AliveOutBtn: TBitBtn + Left = 233 + Height = 29 + Top = 256 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = AliveOutBtnClick + TabOrder = 14 + end + object Label5: TLabel + Left = 186 + Height = 16 + Top = 313 + Width = 75 + Caption = 'Number Died:' + ParentColor = False + end + object NoDiedEdit: TEdit + Left = 185 + Height = 23 + Top = 330 + Width = 126 + TabOrder = 15 + Text = 'NoDiedEdit' + end + object NoDiedInBtn: TBitBtn + Left = 184 + Height = 29 + Top = 360 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = NoDiedInBtnClick + TabOrder = 16 + end + object NoDiedOutBtn: TBitBtn + Left = 232 + Height = 29 + Top = 360 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = NoDiedOutBtnClick + TabOrder = 17 + end + object Label6: TLabel + Left = 184 + Height = 16 + Top = 414 + Width = 101 + Caption = 'Number Censored:' + ParentColor = False + end + object NoCensoredEdit: TEdit + Left = 184 + Height = 23 + Top = 433 + Width = 130 + TabOrder = 18 + Text = 'NoCensoredEdit' + end + object NoCensoredInBtn: TBitBtn + Left = 185 + Height = 29 + Top = 464 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = NoCensoredInBtnClick + TabOrder = 19 + end + object NoCensoredOutBtn: TBitBtn + Left = 234 + Height = 29 + Top = 464 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = NoCensoredOutBtnClick + TabOrder = 20 + end + object Grid: TStringGrid + Left = 321 + Height = 353 + Top = 129 + Width = 861 + ColCount = 13 + RowCount = 2 + ScrollBars = ssVertical + TabOrder = 21 + end + object Label7: TLabel + Left = 432 + Height = 16 + Top = 504 + Width = 189 + Caption = 'Confidence Level for Number Alive:' + ParentColor = False + end + object CIEdit: TEdit + Left = 626 + Height = 23 + Top = 499 + Width = 38 + TabOrder = 22 + Text = '0.95' + end + object HelpBtn: TButton + Left = 999 + Height = 38 + Top = 33 + Width = 78 + Caption = 'HELP' + OnClick = HelpBtnClick + TabOrder = 23 + end +end diff --git a/applications/lazstats/source_orig/lifetableunit.lrs b/applications/lazstats/source_orig/lifetableunit.lrs new file mode 100644 index 000000000..91e49a15b --- /dev/null +++ b/applications/lazstats/source_orig/lifetableunit.lrs @@ -0,0 +1,569 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TLifeTableForm','FORMDATA',[ + 'TPF0'#14'TLifeTableForm'#13'LifeTableForm'#4'Left'#2'u'#6'Height'#3'%'#2#3'T' + +'op'#3#157#0#5'Width'#3#171#4#7'Caption'#6#10'LIFE TABLE'#12'ClientHeight'#3 + +'%'#2#11'ClientWidth'#3#171#4#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9' + +'.30.4'#0#6'TLabel'#6'Label1'#4'Left'#2#7#6'Height'#2#16#3'Top'#2#11#5'Width' + +#2'3'#7'Caption'#6#10'Variables:'#11'ParentColor'#8#0#0#8'TListBox'#7'VarLis' + +'t'#4'Left'#2#8#6'Height'#3#240#1#3'Top'#2' '#5'Width'#3#168#0#10'ItemHeight' + +#2#0#8'TabOrder'#2#0#0#0#5'TMemo'#5'Memo1'#4'Left'#3'@'#1#6'Height'#2'p'#3'T' + +'op'#2#8#5'Width'#3#184#1#13'Lines.Strings'#1#6'QDirections: Your input gri' + +'d data should consist of five integer column vaiables:'#6'U1. The beginni' + +'ng of each observation period (typically 0 for the first observation.'#6'+2' + +'. The ending of each observation period.'#6'03. The number alive in the' + +' observation period.'#6'84. The number that died during the observation p' + +'eriod.'#6'J5. The number last seen alive during the period that are lost ' + +'(censored)'#6'#See the example file LIFETABLE.LAZ.'#0#8'TabOrder'#2#1#0#0#7 + +'TButton'#9'CancelBtn'#4'Left'#3#254#2#6'Height'#2'%'#3'Top'#2#8#5'Width'#2 + +'Q'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#2#0#0#7'TButton' + +#8'ResetBtn'#4'Left'#3#0#3#6'Height'#2'%'#3'Top'#2'8'#5'Width'#2'Q'#7'Captio' + +'n'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#3#0#0#7'TButton' + +#10'ComputeBtn'#4'Left'#3'h'#3#6'Height'#2'%'#3'Top'#2#8#5'Width'#2'Q'#7'Cap' + +'tion'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#4#0#0#7'T' + +'Button'#9'ReturnBtn'#4'Left'#3'h'#3#6'Height'#2'%'#3'Top'#2'8'#5'Width'#2'Q' + +#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#5#0#0#7'TBitBtn'#13 + +'ObsStartInBtn'#4'Left'#3#184#0#6'Height'#2#29#3'Top'#2'H'#5'Width'#2' '#10 + +'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0 + +#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184 + +'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255 + +';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$' + +#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255 + +#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147 + +#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|' + +#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218 + +#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147 + +#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255 + +'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't' + +#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S' + +#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\' + +#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#18'ObsStart' + +'InBtnClick'#8'TabOrder'#2#6#0#0#7'TBitBtn'#14'ObsStartOutBtn'#4'Left'#3#232 + +#0#6'Height'#2#29#3'Top'#2'H'#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0 + +#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0 + +#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207 + +'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';' + +#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255 + +#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211 + +#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130 + +#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$' + +#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171 + +#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204 + +#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x' + +#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209 + +#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M' + +#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255 + +'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#19'ObsStartOutBtnClick'#8 + +'TabOrder'#2#7#0#0#6'TLabel'#6'Label2'#4'Left'#3#185#0#6'Height'#2#16#3'Top' + +#2#31#5'Width'#2'\'#7'Caption'#6#17'Observation Start'#11'ParentColor'#8#0#0 + +#5'TEdit'#12'ObsStartEdit'#4'Left'#3#186#0#6'Height'#2#23#3'Top'#2'.'#5'Widt' + ,'h'#2'}'#8'TabOrder'#2#8#4'Text'#6#12'ObsStartEdit'#0#0#6'TLabel'#6'Label3'#4 + +'Left'#3#184#0#6'Height'#2#16#3'Top'#2'r'#5'Width'#2'['#7'Caption'#6#16'Obse' + +'rvation End:'#11'ParentColor'#8#0#0#5'TEdit'#10'ObsEndEdit'#4'Left'#3#186#0 + +#6'Height'#2#23#3'Top'#3#131#0#5'Width'#2#127#8'TabOrder'#2#9#4'Text'#6#10'O' + +'bsEndEdit'#0#0#7'TBitBtn'#11'ObsEndInBtn'#4'Left'#3#186#0#6'Height'#2#29#3 + +'Top'#3#160#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0 + +#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0 + +'d'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V' + +#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y' + +#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0 + +'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157 + +#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195 + +#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0 + +#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255 + +#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144 + +#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201 + +#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190 + +'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255 + +'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#9'NumGlyphs'#2#0#7'OnClick'#7#16'ObsEndInBtnClick'#8'TabOrder'#2#10#0#0#7'T' + +'BitBtn'#12'ObsEndOutBtn'#4'Left'#3#234#0#6'Height'#2#29#3'Top'#3#160#0#5'Wi' + +'dth'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'(' + +#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0 + +#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247 + +'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'[' + +#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255 + +'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q' + +#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206 + +#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z' + +#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0 + +'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212#163 + +#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199 + +#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0 + +#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']' + +#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I' + +#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7 + +'OnClick'#7#17'ObsEndOutBtnClick'#8'TabOrder'#2#11#0#0#6'TLabel'#6'Label4'#4 + +'Left'#3#184#0#6'Height'#2#16#3'Top'#3#207#0#5'Width'#2'M'#7'Caption'#6#13'N' + +'umber Alive:'#11'ParentColor'#8#0#0#5'TEdit'#11'NoAliveEdit'#4'Left'#3#184#0 + +#6'Height'#2#23#3'Top'#3#226#0#5'Width'#3#128#0#8'TabOrder'#2#12#4'Text'#6#11 + +'NoAliveEdit'#0#0#7'TBitBtn'#10'AliveInBtn'#4'Left'#3#185#0#6'Height'#2#29#3 + +'Top'#3#0#1#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0 + +#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd' + +#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G' + +#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^' + +#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195 + +'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144 + +#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255 + +'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255 + +#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212 + +#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133 + +#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255 + +#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255 + +']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145 + +'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp' + +'hs'#2#0#7'OnClick'#7#15'AliveInBtnClick'#8'TabOrder'#2#13#0#0#7'TBitBtn'#11 + +'AliveOutBtn'#4'Left'#3#233#0#6'Height'#2#29#3'Top'#3#0#1#5'Width'#2' '#10'G' + +'lyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0 + +#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G' + +#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)' + +#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134 + +#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203 + +#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190 + +'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127 + +#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255 + +#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135 + ,#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255 + +#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177 + +'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255 + +'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#16 + +'AliveOutBtnClick'#8'TabOrder'#2#14#0#0#6'TLabel'#6'Label5'#4'Left'#3#186#0#6 + +'Height'#2#16#3'Top'#3'9'#1#5'Width'#2'K'#7'Caption'#6#12'Number Died:'#11'P' + +'arentColor'#8#0#0#5'TEdit'#10'NoDiedEdit'#4'Left'#3#185#0#6'Height'#2#23#3 + +'Top'#3'J'#1#5'Width'#2'~'#8'TabOrder'#2#15#4'Text'#6#10'NoDiedEdit'#0#0#7'T' + +'BitBtn'#11'NoDiedInBtn'#4'Left'#3#184#0#6'Height'#2#29#3'Top'#3'h'#1#5'Widt' + +'h'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0 + +#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0 + +#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247 + +'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm' + +#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A' + +#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I' + +#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215 + +#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139 + +#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v' + +#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255 + +#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159 + +#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197 + +#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h' + +#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b' + +#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U' + +#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B' + +#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I' + ,#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#16 + +'NoDiedInBtnClick'#8'TabOrder'#2#16#0#0#7'TBitBtn'#12'NoDiedOutBtn'#4'Left'#3 + +#232#0#6'Height'#2#29#3'Top'#3'h'#1#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0 + +'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0 + +#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h' + +#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255 + +';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255 + +#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152 + +#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255 + +#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!' + +'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216 + +#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142 + +#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255 + +'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255 + +'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5' + +#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199 + +'t'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't' + +#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#17'NoDiedOutBtnClick'#8'T' + +'abOrder'#2#17#0#0#6'TLabel'#6'Label6'#4'Left'#3#184#0#6'Height'#2#16#3'Top' + +#3#158#1#5'Width'#2'e'#7'Caption'#6#16'Number Censored:'#11'ParentColor'#8#0 + +#0#5'TEdit'#14'NoCensoredEdit'#4'Left'#3#184#0#6'Height'#2#23#3'Top'#3#177#1 + +#5'Width'#3#130#0#8'TabOrder'#2#18#4'Text'#6#14'NoCensoredEdit'#0#0#7'TBitBt' + +'n'#15'NoCensoredInBtn'#4'Left'#3#185#0#6'Height'#2#29#3'Top'#3#208#1#5'Widt' + +'h'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0 + +#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0 + +#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247 + +'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm' + +#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A' + +#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I' + +#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215 + +#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139 + +#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v' + +#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255 + +#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159 + +#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197 + +#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h' + +#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b' + +#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U' + +#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B' + +#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I' + +#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#20 + +'NoCensoredInBtnClick'#8'TabOrder'#2#19#0#0#7'TBitBtn'#16'NoCensoredOutBtn'#4 + +'Left'#3#234#0#6'Height'#2#29#3'Top'#3#208#1#5'Width'#2' '#10'Glyph.Data'#10 + +':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0 + +' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A' + +#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255 + +#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213 + +#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135 + +#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r' + +#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138 + +#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207 + +#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}' + +#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0 + +'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S' + +#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';' + +#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#21'NoCensoredOutB' + +'tnClick'#8'TabOrder'#2#20#0#0#11'TStringGrid'#4'Grid'#4'Left'#3'A'#1#6'Heig' + +'ht'#3'a'#1#3'Top'#3#129#0#5'Width'#3']'#3#8'ColCount'#2#13#8'RowCount'#2#2 + +#10'ScrollBars'#7#10'ssVertical'#8'TabOrder'#2#21#0#0#6'TLabel'#6'Label7'#4 + +'Left'#3#176#1#6'Height'#2#16#3'Top'#3#248#1#5'Width'#3#189#0#7'Caption'#6'"' + +'Confidence Level for Number Alive:'#11'ParentColor'#8#0#0#5'TEdit'#6'CIEdit' + +#4'Left'#3'r'#2#6'Height'#2#23#3'Top'#3#243#1#5'Width'#2'&'#8'TabOrder'#2#22 + +#4'Text'#6#4'0.95'#0#0#7'TButton'#7'HelpBtn'#4'Left'#3#231#3#6'Height'#2'&'#3 + +'Top'#2'!'#5'Width'#2'N'#7'Caption'#6#4'HELP'#7'OnClick'#7#12'HelpBtnClick'#8 + +'TabOrder'#2#23#0#0#0 +]); diff --git a/applications/lazstats/source_orig/lifetableunit.pas b/applications/lazstats/source_orig/lifetableunit.pas new file mode 100644 index 000000000..b535da834 --- /dev/null +++ b/applications/lazstats/source_orig/lifetableunit.pas @@ -0,0 +1,311 @@ +unit LifeTableUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, ExtCtrls, Grids, MainUnit, Globals, FunctionsLib, + OutPutUnit, DictionaryUnit, DataProcs, GraphLib, contexthelpunit; + +type + + { TLifeTableForm } + + TLifeTableForm = class(TForm) + HelpBtn: TButton; + CancelBtn: TButton; + CIEdit: TEdit; + Label7: TLabel; + NoCensoredEdit: TEdit; + Label6: TLabel; + NoDiedEdit: TEdit; + Label5: TLabel; + NoAliveEdit: TEdit; + Label4: TLabel; + ObsEndEdit: TEdit; + Label3: TLabel; + ObsStartEdit: TEdit; + Label2: TLabel; + ObsStartInBtn: TBitBtn; + ObsEndInBtn: TBitBtn; + AliveInBtn: TBitBtn; + NoDiedInBtn: TBitBtn; + NoCensoredInBtn: TBitBtn; + ObsStartOutBtn: TBitBtn; + ObsEndOutBtn: TBitBtn; + AliveOutBtn: TBitBtn; + NoDiedOutBtn: TBitBtn; + NoCensoredOutBtn: TBitBtn; + ResetBtn: TButton; + ComputeBtn: TButton; + ReturnBtn: TButton; + Label1: TLabel; + Memo1: TMemo; + Grid: TStringGrid; + VarList: TListBox; + procedure AliveInBtnClick(Sender: TObject); + procedure AliveOutBtnClick(Sender: TObject); + procedure ComputeBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure HelpBtnClick(Sender: TObject); + procedure NoCensoredInBtnClick(Sender: TObject); + procedure NoCensoredOutBtnClick(Sender: TObject); + procedure NoDiedInBtnClick(Sender: TObject); + procedure NoDiedOutBtnClick(Sender: TObject); + procedure ObsEndInBtnClick(Sender: TObject); + procedure ObsEndOutBtnClick(Sender: TObject); + procedure ObsStartInBtnClick(Sender: TObject); + procedure ObsStartOutBtnClick(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + private + { private declarations } +// NoCases : integer; + + public + { public declarations } + end; + +var + LifeTableForm: TLifeTableForm; + +implementation + +{ TLifeTableForm } + +procedure TLifeTableForm.FormShow(Sender: TObject); + +begin + ResetBtnClick(self); +end; + +procedure TLifeTableForm.HelpBtnClick(Sender: TObject); +begin + ContextHelpForm.HelpMessage((Sender as TButton).tag); +end; + +procedure TLifeTableForm.NoCensoredInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + NoCensoredEdit.Text := VarList.Items.Strings[index]; + NoCensoredInBtn.Visible := false; + NoCensoredOutBtn.Visible := true; + VarList.Items.Delete(index); +end; + +procedure TLifeTableForm.NoCensoredOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(NoCensoredEdit.Text); + NoCensoredEdit.Text := ''; + NoCensoredOutBtn.Visible := false; + NoCensoredInBtn.Visible := true; +end; + +procedure TLifeTableForm.NoDiedInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + NoDiedEdit.Text := VarList.Items.Strings[index]; + NoDiedInBtn.Visible := false; + NoDiedOutBtn.Visible := true; + VarList.Items.Delete(index); +end; + +procedure TLifeTableForm.NoDiedOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(NoDiedEdit.Text); + NoDiedEdit.Text := ''; + NoDiedOutBtn.Visible := false; + NoDiedInBtn.Visible := true; +end; + +procedure TLifeTableForm.AliveInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + NoAliveEdit.Text := VarList.Items.Strings[index]; + AliveInBtn.Visible := false; + AliveOutBtn.Visible := true; + VarList.Items.Delete(index); +end; + +procedure TLifeTableForm.AliveOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(NoAliveEdit.Text); + NoAliveEdit.Text := ''; + AliveInBtn.Visible := true; + AliveOutBtn.Visible := false; +end; + +procedure TLifeTableForm.ComputeBtnClick(Sender: TObject); +VAR + i : integer; + varcols : IntDyneVec; + AtRisk, ProbDie, CumProbLive, StdErr, Up95, Low95 : double; + N, P, Q, mu, CI, z : double; + outline : string; +begin + CI := StrToFloat(CIEdit.Text); + z := inversez(CI); + SetLength(varcols,5); + for i := 1 to 5 do + begin + if (OS3MainFrm.DataGrid.Cells[i,0] = ObsStartEdit.Text) then varcols[0] := i; + if (OS3MainFrm.DataGrid.Cells[i,0] = ObsEndEdit.Text) then varcols[1] := i; + if (OS3MainFrm.DataGrid.Cells[i,0] = NoAliveEdit.Text) then varcols[2] := i; + if (OS3MainFrm.DataGrid.Cells[i,0] = NoDiedEdit.Text) then varcols[3] := i; + if (OS3MainFrm.DataGrid.Cells[i,0] = NoCensoredEdit.Text) then varcols[4] := i; + end; + + for i := 1 to NoCases do + begin + Grid.Cells[0,i] := 'CASE ' + IntToStr(i); + Grid.Cells[1,i] := Trim(OS3MainFrm.DataGrid.Cells[varcols[0],i]); + Grid.Cells[2,i] := Trim(OS3MainFrm.DataGrid.Cells[varcols[1],i]); + Grid.Cells[3,i] := Trim(OS3MainFrm.DataGrid.Cells[varcols[2],i]); + Grid.Cells[4,i] := Trim(OS3MainFrm.DataGrid.Cells[varcols[3],i]); + Grid.Cells[5,i] := Trim(OS3MainFrm.DataGrid.Cells[varcols[4],i]); + end; + for i := 1 to NoCases do + begin + AtRisk := StrToFloat(Grid.Cells[3,i]); + AtRisk := AtRisk - (StrToFloat(Grid.Cells[5,i]) / 2.0); + outline := format('%8.4f',[AtRisk]); + Grid.Cells[6,i] := outline; + ProbDie := StrToFloat(Grid.Cells[4,i]) / AtRisk; + outline := format('%8.4f',[ProbDie]); + Grid.Cells[7,i] := outline; + outline := format('%8.4f',[1.0-ProbDie]); + Grid.Cells[8,i] := outline; + end; + N := StrToFloat(Grid.Cells[3,1]); + Grid.Cells[9,1] := Grid.Cells[8,1]; + P := StrToFloat(Grid.Cells[9,1]); + Q := 1.0 - P; + StdErr := sqrt(N * P * Q); + outline := format('%8.4f',[StdErr]); + Grid.Cells[10,1] := outline; + mu := N * P; + outline := format('%8.4f',[StdErr]); + Grid.Cells[10,1] := outline; + Up95 := mu + (z * StdErr); + Low95 := mu - (z * StdErr); + outline := format('%8.4f',[Low95]); + Grid.Cells[11,1] := outline; + outline := format('%8.3f',[Up95]); + Grid.Cells[12,1] := outline; + + for i := 2 to NoCases do + begin + CumProbLive := StrToFloat(Grid.Cells[9,i-1]) * + StrToFloat(Grid.Cells[8,i]); + outline := format('%8.4f',[CumProbLive]); + Grid.Cells[9,i] := outline; + P := CumProbLive; + Q := 1.0 - P; + StdErr := sqrt(N * P * Q); + mu := N * P; + outline := format('%8.4f',[StdErr]); + Grid.Cells[10,i] := outline; + Up95 := mu + (z * StdErr); + Low95 := mu - (z * StdErr); + outline := format('%8.4f',[Low95]); + Grid.Cells[11,i] := outline; + outline := format('%8.3f',[Up95]); + Grid.Cells[12,i] := outline; + end; + varcols := nil; +end; + +procedure TLifeTableForm.ObsEndInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + ObsEndEdit.Text := VarList.Items.Strings[index]; + ObsEndInBtn.Visible := false; + ObsEndOutBtn.Visible := true; + VarList.Items.Delete(index); +end; + +procedure TLifeTableForm.ObsEndOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(ObsEndEdit.Text); + ObsEndEdit.Text := ''; + ObsEndInBtn.Visible := true; + ObsEndOutBtn.Visible := false; +end; + +procedure TLifeTableForm.ObsStartInBtnClick(Sender: TObject); + VAR index : integer; + begin + index := VarList.ItemIndex; + ObsStartEdit.Text := VarList.Items.Strings[index]; + ObsStartInBtn.Visible := false; + ObsStartOutBtn.Visible := true; + VarList.Items.Delete(index); +end; + +procedure TLifeTableForm.ObsStartOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(ObsStartEdit.Text); + ObsStartEdit.Text := ''; + ObsStartInBtn.Visible := true; + ObsStartOutBtn.Visible := false; +end; + +procedure TLifeTableForm.ResetBtnClick(Sender: TObject); + +VAR i : integer; + j : integer; + outline : string; +begin +// outline := format('NoCases = %d',[NoCases]); +// ShowMessage(outline); +// outline := format('No.Variables = %d',[NoVariables]); +// ShowMessage(outline); + VarList.Clear; + ObsStartEdit.Text := ''; + ObsEndEdit.Text := ''; + NoAliveEdit.Text := ''; + NoDiedEdit.Text := ''; + NoCensoredEdit.Text := ''; + ObsStartInBtn.Visible := true; + ObsStartOutBtn.Visible := false; + ObsEndInBtn.Visible := true; + ObsEndOutBtn.Visible := false; + AliveInBtn.Visible := true; + AliveOutBtn.Visible := false; + NoDiedInBtn.Visible := true; + NoDiedOutBtn.Visible := false; + NoCensoredInBtn.Visible := true; + NoCensoredOutBtn.Visible := false; + Grid.RowCount := NoCases+1; + Grid.ColCount := 13; + Grid.Cells[1,0] := 'Obs.Start'; + Grid.Cells[2,0] := 'Obs.End'; + Grid.Cells[3,0] := 'Alive'; + Grid.Cells[4,0] := 'Died'; + Grid.Cells[5,0] := 'Censored'; + Grid.Cells[6,0] := 'At Risk'; + Grid.Cells[7,0] := 'Prob.Die'; + Grid.Cells[8,0] := 'Prob.Alive'; + Grid.Cells[9,0] := 'Cum.P.Alive'; + Grid.Cells[10,0] := 'S.E. Alive'; + Grid.Cells[11,0] := 'Low 95%'; + Grid.Cells[12,0] := 'Hi 95%'; + for i := 0 to 12 do + begin + for j := 1 to NoCases do Grid.Cells[i,j] := ''; + end; + for i := 1 to NoVariables do + VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); +end; + + +initialization + {$I lifetableunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/limitedunit.lfm b/applications/lazstats/source_orig/limitedunit.lfm new file mode 100644 index 000000000..7fe2bb5d4 --- /dev/null +++ b/applications/lazstats/source_orig/limitedunit.lfm @@ -0,0 +1,34 @@ +object LimitedForm: TLimitedForm + Left = 290 + Height = 192 + Top = 175 + Width = 400 + Caption = 'UNAVAILABLE IN THIS LIMITED VERSION' + ClientHeight = 192 + ClientWidth = 400 + LCLVersion = '0.9.28.2' + object Memo1: TMemo + Left = 6 + Height = 120 + Top = 8 + Width = 384 + Lines.Strings = ( + 'This procedure is not implimented in this limited' + 'version. The full version for Windows and Linux' + 'systems can be purchased at:' + 'http://www.statprograms4U.com' + 'If you have any questions, send an email to me' + 'at billmiller50322@gmail.com' + ) + TabOrder = 0 + end + object ReturnBtn: TButton + Left = 104 + Height = 35 + Top = 143 + Width = 146 + Caption = 'RETURN' + ModalResult = 1 + TabOrder = 1 + end +end diff --git a/applications/lazstats/source_orig/limitedunit.lrs b/applications/lazstats/source_orig/limitedunit.lrs new file mode 100644 index 000000000..ff59904d6 --- /dev/null +++ b/applications/lazstats/source_orig/limitedunit.lrs @@ -0,0 +1,15 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TLimitedForm','FORMDATA',[ + 'TPF0'#12'TLimitedForm'#11'LimitedForm'#4'Left'#3'"'#1#6'Height'#3#192#0#3'To' + +'p'#3#175#0#5'Width'#3#144#1#7'Caption'#6'#UNAVAILABLE IN THIS LIMITED VERSI' + +'ON'#12'ClientHeight'#3#192#0#11'ClientWidth'#3#144#1#10'LCLVersion'#6#8'0.9' + +'.28.2'#0#5'TMemo'#5'Memo1'#4'Left'#2#6#6'Height'#2'x'#3'Top'#2#8#5'Width'#3 + +#128#1#13'Lines.Strings'#1#6'1This procedure is not implimented in this limi' + +'ted'#6'0version. The full version for Windows and Linux'#6#28'systems can ' + +'be purchased at:'#6#29'http://www.statprograms4U.com'#6'.If you have any qu' + +'estions, send an email to me'#6#28'at billmiller50322@gmail.com'#0#8'TabOrd' + +'er'#2#0#0#0#7'TButton'#9'ReturnBtn'#4'Left'#2'h'#6'Height'#2'#'#3'Top'#3#143 + +#0#5'Width'#3#146#0#7'Caption'#6#6'RETURN'#11'ModalResult'#2#1#8'TabOrder'#2 + +#1#0#0#0 +]); diff --git a/applications/lazstats/source_orig/limitedunit.pas b/applications/lazstats/source_orig/limitedunit.pas new file mode 100644 index 000000000..3f43c7178 --- /dev/null +++ b/applications/lazstats/source_orig/limitedunit.pas @@ -0,0 +1,33 @@ +unit LimitedUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls; + +type + + { TLimitedForm } + + TLimitedForm = class(TForm) + ReturnBtn: TButton; + Memo1: TMemo; + private + { private declarations } + public + { public declarations } + end; + +var + LimitedForm: TLimitedForm; + +implementation + +initialization + {$I limitedunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/linprounit.lfm b/applications/lazstats/source_orig/linprounit.lfm new file mode 100644 index 000000000..8fd0d9986 --- /dev/null +++ b/applications/lazstats/source_orig/linprounit.lfm @@ -0,0 +1,308 @@ +object LinProFrm: TLinProFrm + Left = 106 + Height = 483 + Top = 92 + Width = 740 + Caption = 'Linear Programming Using Min/Max Algorithm' + ClientHeight = 483 + ClientWidth = 740 + OnShow = FormShow + LCLVersion = '0.9.26.2' + object Label1: TLabel + Left = 8 + Height = 14 + Top = 3 + Width = 26 + Caption = 'FILE:' + ParentColor = False + end + object Label2: TLabel + Left = 144 + Height = 14 + Top = 24 + Width = 47 + Caption = 'Objective' + ParentColor = False + end + object Label3: TLabel + Left = 72 + Height = 14 + Top = 61 + Width = 56 + Caption = 'Constraints' + ParentColor = False + end + object Label4: TLabel + Left = 7 + Height = 14 + Top = 30 + Width = 64 + Caption = 'No. Variables' + ParentColor = False + end + object Label5: TLabel + Left = 7 + Height = 14 + Top = 64 + Width = 58 + Caption = 'No.Max.(<)' + ParentColor = False + end + object Label6: TLabel + Left = 6 + Height = 14 + Top = 79 + Width = 54 + Caption = 'constraints' + ParentColor = False + end + object Label7: TLabel + Left = 7 + Height = 14 + Top = 183 + Width = 57 + Caption = 'No. Min.(>)' + ParentColor = False + end + object Label8: TLabel + Left = 5 + Height = 14 + Top = 201 + Width = 54 + Caption = 'constraints' + ParentColor = False + end + object Label9: TLabel + Left = 5 + Height = 14 + Top = 293 + Width = 66 + Caption = 'No. Equal (=)' + ParentColor = False + end + object Label10: TLabel + Left = 4 + Height = 14 + Top = 310 + Width = 54 + Caption = 'constraints' + ParentColor = False + end + object Label11: TLabel + Left = 120 + Height = 14 + Top = 409 + Width = 80 + Caption = 'General Results:' + ParentColor = False + end + object FileNameEdit: TEdit + Left = 37 + Height = 15 + Top = 1 + Width = 675 + TabOrder = 0 + Text = 'FileNameEdit' + end + object ObjectiveGrid: TStringGrid + Left = 143 + Height = 30 + Top = 42 + Width = 570 + ColCount = 1 + RowCount = 1 + TabOrder = 1 + end + object MaxGrid: TStringGrid + Left = 143 + Height = 98 + Top = 80 + Width = 571 + ColCount = 1 + RowCount = 1 + TabOrder = 2 + end + object MinGrid: TStringGrid + Left = 143 + Height = 100 + Top = 186 + Width = 570 + ColCount = 1 + RowCount = 1 + TabOrder = 3 + end + object EqualGrid: TStringGrid + Left = 143 + Height = 99 + Top = 295 + Width = 569 + ColCount = 1 + RowCount = 1 + TabOrder = 4 + end + object MaxConstraintsGrid: TStringGrid + Left = 72 + Height = 94 + Top = 82 + Width = 65 + ColCount = 1 + RowCount = 1 + ScrollBars = ssNone + TabOrder = 5 + end + object MinConstraintsGrid: TStringGrid + Left = 71 + Height = 98 + Top = 185 + Width = 66 + ColCount = 1 + RowCount = 1 + ScrollBars = ssNone + TabOrder = 6 + end + object EqualConstraintsGrid: TStringGrid + Left = 72 + Height = 98 + Top = 294 + Width = 64 + ColCount = 1 + RowCount = 1 + ScrollBars = ssNone + TabOrder = 7 + end + object NoVarsEdit: TEdit + Left = 71 + Height = 22 + Top = 21 + Width = 62 + OnExit = NoVarsEditExit + OnKeyPress = NoVarsEditKeyPress + TabOrder = 8 + Text = 'NoVarsEdit' + end + object NoMaxEdit: TEdit + Left = 4 + Height = 18 + Top = 97 + Width = 59 + OnExit = NoMaxEditExit + OnKeyPress = NoMaxEditKeyPress + TabOrder = 9 + Text = 'NoMaxEdit' + end + object NoMinEdit: TEdit + Left = 5 + Height = 19 + Top = 216 + Width = 59 + OnExit = NoMinEditExit + OnKeyPress = NoMinEditKeyPress + TabOrder = 10 + Text = 'NoMinEdit' + end + object NoEqualEdit: TEdit + Left = 4 + Height = 16 + Top = 327 + Width = 59 + OnExit = NoEqualEditExit + OnKeyPress = NoEqualEditKeyPress + TabOrder = 11 + Text = 'NoEqualEdit' + end + object MinMaxGrp: TRadioGroup + Left = 5 + Height = 65 + Top = 407 + Width = 95 + AutoFill = True + Caption = 'Min/Max' + ChildSizing.LeftRightSpacing = 6 + ChildSizing.TopBottomSpacing = 6 + ChildSizing.EnlargeHorizontal = crsHomogenousChildResize + ChildSizing.EnlargeVertical = crsHomogenousChildResize + ChildSizing.ShrinkHorizontal = crsScaleChilds + ChildSizing.ShrinkVertical = crsScaleChilds + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 1 + ClientHeight = 47 + ClientWidth = 91 + Items.Strings = ( + 'Maximize' + 'Minimize' + ) + TabOrder = 12 + end + object ResultsEdit: TEdit + Left = 202 + Height = 18 + Top = 405 + Width = 508 + TabOrder = 13 + Text = 'ResultsEdit' + end + object LoadBtn: TButton + Left = 184 + Height = 26 + Top = 439 + Width = 79 + Caption = 'Load File' + OnClick = LoadBtnClick + TabOrder = 14 + end + object SaveBtn: TButton + Left = 272 + Height = 26 + Top = 440 + Width = 79 + Caption = 'Save File' + OnClick = SaveBtnClick + TabOrder = 15 + end + object ResetBtn: TButton + Left = 368 + Height = 27 + Top = 440 + Width = 76 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 16 + end + object CancelBtn: TButton + Left = 456 + Height = 27 + Top = 440 + Width = 76 + Caption = 'Cancel' + ModalResult = 2 + OnClick = CancelBtnClick + TabOrder = 17 + end + object ComputeBtn: TButton + Left = 544 + Height = 27 + Top = 440 + Width = 76 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 18 + end + object ExitBtn: TButton + Left = 632 + Height = 27 + Top = 439 + Width = 76 + Caption = 'EXIT' + ModalResult = 1 + OnClick = ExitBtnClick + TabOrder = 19 + end + object OpenDialog1: TOpenDialog + left = 112 + top = 436 + end + object SaveDialog1: TSaveDialog + left = 144 + top = 435 + end +end diff --git a/applications/lazstats/source_orig/linprounit.lrs b/applications/lazstats/source_orig/linprounit.lrs new file mode 100644 index 000000000..aa4a53278 --- /dev/null +++ b/applications/lazstats/source_orig/linprounit.lrs @@ -0,0 +1,77 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TLinProFrm','FORMDATA',[ + 'TPF0'#10'TLinProFrm'#9'LinProFrm'#4'Left'#2'j'#6'Height'#3#227#1#3'Top'#2'\' + +#5'Width'#3#228#2#7'Caption'#6'*Linear Programming Using Min/Max Algorithm' + +#12'ClientHeight'#3#227#1#11'ClientWidth'#3#228#2#6'OnShow'#7#8'FormShow'#10 + +'LCLVersion'#6#8'0.9.26.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3 + +'Top'#2#3#5'Width'#2#26#7'Caption'#6#5'FILE:'#11'ParentColor'#8#0#0#6'TLabel' + +#6'Label2'#4'Left'#3#144#0#6'Height'#2#14#3'Top'#2#24#5'Width'#2'/'#7'Captio' + +'n'#6#9'Objective'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2'H'#6 + +'Height'#2#14#3'Top'#2'='#5'Width'#2'8'#7'Caption'#6#11'Constraints'#11'Pare' + +'ntColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2#7#6'Height'#2#14#3'Top'#2#30#5 + +'Width'#2'@'#7'Caption'#6#13'No. Variables'#11'ParentColor'#8#0#0#6'TLabel'#6 + +'Label5'#4'Left'#2#7#6'Height'#2#14#3'Top'#2'@'#5'Width'#2':'#7'Caption'#6#10 + +'No.Max.(<)'#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Left'#2#6#6'Height' + +#2#14#3'Top'#2'O'#5'Width'#2'6'#7'Caption'#6#11'constraints'#11'ParentColor' + +#8#0#0#6'TLabel'#6'Label7'#4'Left'#2#7#6'Height'#2#14#3'Top'#3#183#0#5'Width' + +#2'9'#7'Caption'#6#11'No. Min.(>)'#11'ParentColor'#8#0#0#6'TLabel'#6'Label8' + +#4'Left'#2#5#6'Height'#2#14#3'Top'#3#201#0#5'Width'#2'6'#7'Caption'#6#11'con' + +'straints'#11'ParentColor'#8#0#0#6'TLabel'#6'Label9'#4'Left'#2#5#6'Height'#2 + +#14#3'Top'#3'%'#1#5'Width'#2'B'#7'Caption'#6#13'No. Equal (=)'#11'ParentColo' + +'r'#8#0#0#6'TLabel'#7'Label10'#4'Left'#2#4#6'Height'#2#14#3'Top'#3'6'#1#5'Wi' + +'dth'#2'6'#7'Caption'#6#11'constraints'#11'ParentColor'#8#0#0#6'TLabel'#7'La' + +'bel11'#4'Left'#2'x'#6'Height'#2#14#3'Top'#3#153#1#5'Width'#2'P'#7'Caption'#6 + +#16'General Results:'#11'ParentColor'#8#0#0#5'TEdit'#12'FileNameEdit'#4'Left' + +#2'%'#6'Height'#2#15#3'Top'#2#1#5'Width'#3#163#2#8'TabOrder'#2#0#4'Text'#6#12 + +'FileNameEdit'#0#0#11'TStringGrid'#13'ObjectiveGrid'#4'Left'#3#143#0#6'Heigh' + +'t'#2#30#3'Top'#2'*'#5'Width'#3':'#2#8'ColCount'#2#1#8'RowCount'#2#1#8'TabOr' + +'der'#2#1#0#0#11'TStringGrid'#7'MaxGrid'#4'Left'#3#143#0#6'Height'#2'b'#3'To' + +'p'#2'P'#5'Width'#3';'#2#8'ColCount'#2#1#8'RowCount'#2#1#8'TabOrder'#2#2#0#0 + +#11'TStringGrid'#7'MinGrid'#4'Left'#3#143#0#6'Height'#2'd'#3'Top'#3#186#0#5 + +'Width'#3':'#2#8'ColCount'#2#1#8'RowCount'#2#1#8'TabOrder'#2#3#0#0#11'TStrin' + +'gGrid'#9'EqualGrid'#4'Left'#3#143#0#6'Height'#2'c'#3'Top'#3''''#1#5'Width'#3 + +'9'#2#8'ColCount'#2#1#8'RowCount'#2#1#8'TabOrder'#2#4#0#0#11'TStringGrid'#18 + +'MaxConstraintsGrid'#4'Left'#2'H'#6'Height'#2'^'#3'Top'#2'R'#5'Width'#2'A'#8 + +'ColCount'#2#1#8'RowCount'#2#1#10'ScrollBars'#7#6'ssNone'#8'TabOrder'#2#5#0#0 + +#11'TStringGrid'#18'MinConstraintsGrid'#4'Left'#2'G'#6'Height'#2'b'#3'Top'#3 + +#185#0#5'Width'#2'B'#8'ColCount'#2#1#8'RowCount'#2#1#10'ScrollBars'#7#6'ssNo' + +'ne'#8'TabOrder'#2#6#0#0#11'TStringGrid'#20'EqualConstraintsGrid'#4'Left'#2 + +'H'#6'Height'#2'b'#3'Top'#3'&'#1#5'Width'#2'@'#8'ColCount'#2#1#8'RowCount'#2 + +#1#10'ScrollBars'#7#6'ssNone'#8'TabOrder'#2#7#0#0#5'TEdit'#10'NoVarsEdit'#4 + +'Left'#2'G'#6'Height'#2#22#3'Top'#2#21#5'Width'#2'>'#6'OnExit'#7#14'NoVarsEd' + +'itExit'#10'OnKeyPress'#7#18'NoVarsEditKeyPress'#8'TabOrder'#2#8#4'Text'#6#10 + +'NoVarsEdit'#0#0#5'TEdit'#9'NoMaxEdit'#4'Left'#2#4#6'Height'#2#18#3'Top'#2'a' + +#5'Width'#2';'#6'OnExit'#7#13'NoMaxEditExit'#10'OnKeyPress'#7#17'NoMaxEditKe' + +'yPress'#8'TabOrder'#2#9#4'Text'#6#9'NoMaxEdit'#0#0#5'TEdit'#9'NoMinEdit'#4 + +'Left'#2#5#6'Height'#2#19#3'Top'#3#216#0#5'Width'#2';'#6'OnExit'#7#13'NoMinE' + +'ditExit'#10'OnKeyPress'#7#17'NoMinEditKeyPress'#8'TabOrder'#2#10#4'Text'#6#9 + +'NoMinEdit'#0#0#5'TEdit'#11'NoEqualEdit'#4'Left'#2#4#6'Height'#2#16#3'Top'#3 + +'G'#1#5'Width'#2';'#6'OnExit'#7#15'NoEqualEditExit'#10'OnKeyPress'#7#19'NoEq' + +'ualEditKeyPress'#8'TabOrder'#2#11#4'Text'#6#11'NoEqualEdit'#0#0#11'TRadioGr' + +'oup'#9'MinMaxGrp'#4'Left'#2#5#6'Height'#2'A'#3'Top'#3#151#1#5'Width'#2'_'#8 + +'AutoFill'#9#7'Caption'#6#7'Min/Max'#28'ChildSizing.LeftRightSpacing'#2#6#28 + +'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'cr' + +'sHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousC' + +'hildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildS' + +'izing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclL' + +'eftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHei' + +'ght'#2'/'#11'ClientWidth'#2'['#13'Items.Strings'#1#6#8'Maximize'#6#8'Minimi' + +'ze'#0#8'TabOrder'#2#12#0#0#5'TEdit'#11'ResultsEdit'#4'Left'#3#202#0#6'Heigh' + +'t'#2#18#3'Top'#3#149#1#5'Width'#3#252#1#8'TabOrder'#2#13#4'Text'#6#11'Resul' + +'tsEdit'#0#0#7'TButton'#7'LoadBtn'#4'Left'#3#184#0#6'Height'#2#26#3'Top'#3 + +#183#1#5'Width'#2'O'#7'Caption'#6#9'Load File'#7'OnClick'#7#12'LoadBtnClick' + +#8'TabOrder'#2#14#0#0#7'TButton'#7'SaveBtn'#4'Left'#3#16#1#6'Height'#2#26#3 + +'Top'#3#184#1#5'Width'#2'O'#7'Caption'#6#9'Save File'#7'OnClick'#7#12'SaveBt' + +'nClick'#8'TabOrder'#2#15#0#0#7'TButton'#8'ResetBtn'#4'Left'#3'p'#1#6'Height' + +#2#27#3'Top'#3#184#1#5'Width'#2'L'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'Res' + ,'etBtnClick'#8'TabOrder'#2#16#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#200#1#6 + +'Height'#2#27#3'Top'#3#184#1#5'Width'#2'L'#7'Caption'#6#6'Cancel'#11'ModalRe' + +'sult'#2#2#7'OnClick'#7#14'CancelBtnClick'#8'TabOrder'#2#17#0#0#7'TButton'#10 + +'ComputeBtn'#4'Left'#3' '#2#6'Height'#2#27#3'Top'#3#184#1#5'Width'#2'L'#7'Ca' + +'ption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#18#0#0#7 + +'TButton'#7'ExitBtn'#4'Left'#3'x'#2#6'Height'#2#27#3'Top'#3#183#1#5'Width'#2 + +'L'#7'Caption'#6#4'EXIT'#11'ModalResult'#2#1#7'OnClick'#7#12'ExitBtnClick'#8 + +'TabOrder'#2#19#0#0#11'TOpenDialog'#11'OpenDialog1'#4'left'#2'p'#3'top'#3#180 + +#1#0#0#11'TSaveDialog'#11'SaveDialog1'#4'left'#3#144#0#3'top'#3#179#1#0#0#0 +]); diff --git a/applications/lazstats/source_orig/linprounit.pas b/applications/lazstats/source_orig/linprounit.pas new file mode 100644 index 000000000..cbf4f5038 --- /dev/null +++ b/applications/lazstats/source_orig/linprounit.pas @@ -0,0 +1,699 @@ +unit LinProUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, Grids, ExtCtrls, OutPutUnit, Globals; + +type + + { TLinProFrm } + + TLinProFrm = class(TForm) + ExitBtn: TButton; + ResetBtn: TButton; + CancelBtn: TButton; + ComputeBtn: TButton; + LoadBtn: TButton; + SaveBtn: TButton; + OpenDialog1: TOpenDialog; + ResultsEdit: TEdit; + Label11: TLabel; + NoEqualEdit: TEdit; + Label10: TLabel; + Label9: TLabel; + NoMinEdit: TEdit; + Label7: TLabel; + Label8: TLabel; + NoMaxEdit: TEdit; + Label5: TLabel; + Label6: TLabel; + NoVarsEdit: TEdit; + FileNameEdit: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + ObjectiveGrid: TStringGrid; + MaxGrid: TStringGrid; + MinGrid: TStringGrid; + EqualGrid: TStringGrid; + MaxConstraintsGrid: TStringGrid; + MinConstraintsGrid: TStringGrid; + EqualConstraintsGrid: TStringGrid; + MinMaxGrp: TRadioGroup; + SaveDialog1: TSaveDialog; + procedure CancelBtnClick(Sender: TObject); + procedure ComputeBtnClick(Sender: TObject); + procedure ExitBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure LoadBtnClick(Sender: TObject); + procedure NoEqualEditExit(Sender: TObject); + procedure NoEqualEditKeyPress(Sender: TObject; var Key: char); + procedure NoMaxEditExit(Sender: TObject); + procedure NoMaxEditKeyPress(Sender: TObject; var Key: char); + procedure NoMinEditExit(Sender: TObject); + procedure NoMinEditKeyPress(Sender: TObject; var Key: char); + procedure NoVarsEditExit(Sender: TObject); + procedure NoVarsEditKeyPress(Sender: TObject; var Key: char); + procedure ResetBtnClick(Sender: TObject); + procedure SaveBtnClick(Sender: TObject); + private + { private declarations } + NoVars, NoMax, NoMin, NoEql, MinMax, NoCoefs : integer; + Objective : DblDyneVec; + MaxConstraints : DblDyneVec; + MinConstraints : DblDyneVec; + EqlConstraints : DblDyneVec; + Coefficients : DblDyneMat; + + PROCEDURE simplx(VAR a: DblDyneMat; m,n,mp,np,m1,m2,m3: integer; + VAR icase: integer; VAR izrov: IntDyneVec; + VAR iposv: IntDyneVec); + PROCEDURE simp1(VAR a: DblDyneMat; mp,np,mm: integer; + ll: IntDyneVec; nll,iabf: integer; + VAR kp: integer; VAR bmax: double); + PROCEDURE simp2(VAR a: DblDyneMat; m,n,mp,np: integer; + l2: IntDyneVec; nl2: integer; VAR ip: integer; + kp: integer; VAR q1: double); + PROCEDURE simp3(VAR a: DblDyneMat; mp,np,i1,k1,ip,kp: integer); + procedure LoadArrayData(Sender: TObject); + + public + { public declarations } + end; + +var + LinProFrm: TLinProFrm; + +implementation + +{ TLinProFrm } + +procedure TLinProFrm.ResetBtnClick(Sender: TObject); +begin + NoVarsEdit.Text := '0'; + NoMaxEdit.Text := ''; + NoMinEdit.Text := ''; + NoEqualEdit.Text := ''; + MinMaxGrp.ItemIndex := 0; + FileNameEdit.Text := ''; + MaxConstraintsGrid.RowCount := 1; + MaxConstraintsGrid.ColCount := 1; + MaxConstraintsGrid.Cells[0,0] := ''; + MinConstraintsGrid.RowCount := 1; + MinConstraintsGrid.ColCount := 1; + MinConstraintsGrid.Cells[0,0] := ''; + EqualConstraintsGrid.RowCount := 1; + EqualConstraintsGrid.ColCount := 1; + EqualConstraintsGrid.Cells[0,0] := ''; + ObjectiveGrid.RowCount := 1; + ObjectiveGrid.ColCount := 1; + ObjectiveGrid.Cells[0,0] := ''; + MaxGrid.RowCount := 1; + MaxGrid.ColCount := 1; + MaxGrid.Cells[0,0] := ''; + MinGrid.RowCount := 1; + MinGrid.ColCount := 1; + MinGrid.Cells[0,0] := ''; + EqualGrid.RowCount := 1; + EqualGrid.ColCount := 1; + EqualGrid.Cells[0,0] := ''; + ResultsEdit.Text := ''; +end; + +procedure TLinProFrm.SaveBtnClick(Sender: TObject); +var + F : TextFile; + i, j : integer; + FName : string; +begin + LoadArrayData(Self); + SaveDialog1.DefaultExt := 'LPR'; + SaveDialog1.Filter := 'Linear Programming File (*.LPR)|*.LPR|All Files (*.*)|*.*'; + SaveDialog1.FilterIndex := 1; + if SaveDialog1.Execute then + begin + FName := SaveDialog1.FileName; + AssignFile(F,FName); + Rewrite(F); + writeln(F,NoVars); + writeln(F,NoMax); + writeln(F,NoMin); + writeln(F,NoEql); + writeln(F,MinMax); + NoCoefs := NoMax + NoMin + NoEql; + for i := 1 to NoVars do writeln(F,Objective[i]); + for i := 1 to NoMax do writeln(F,MaxConstraints[i]); + for i := 1 to NoMin do writeln(F,MinConstraints[i]); + for i := 1 to NoEql do writeln(F,EqlConstraints[i]); + for i := 1 to NoCoefs do + for j := 1 to NoVars do writeln(F,Coefficients[i,j]); + CloseFile(F); + end; +end; + +procedure TLinProFrm.FormShow(Sender: TObject); +begin + ResetBtnClick(Self); +end; + +procedure TLinProFrm.LoadBtnClick(Sender: TObject); +var + i, j : integer; + FName : string; + F : TextFile; +begin + // load values + OpenDialog1.DefaultExt := 'LPR'; + OpenDialog1.Filter := 'Linear Programming File (*.LPR)|*.LPR|All Files (*.*)|*.*'; + OpenDialog1.FilterIndex := 1; + if OpenDialog1.Execute then + begin + FName := OpenDialog1.FileName; + AssignFile(F,FName); + FileMode := 0; {Set file access to read only } + Reset(F); + readln(F,NoVars); + readln(F,NoMax); + readln(F,NoMin); + readln(F,NoEql); + readln(F,MinMax); + NoCoefs := NoMax + NoMin + NoEql; + + // allocate space + SetLength(Objective,NoVars + 1); + SetLength(MaxConstraints,NoMax + 1); + SetLength(MinConstraints,NoMin + 1); + SetLength(EqlConstraints,NoEql+1); + SetLength(Coefficients,NoCoefs+1,NoVars+1); + + for i := 1 to NoVars do readln(F,Objective[i]); + for i := 1 to NoMax do readln(F,MaxConstraints[i]); + for i := 1 to NoMin do readln(F,MinConstraints[i]); + for i := 1 to NoEql do readln(F,EqlConstraints[i]); + for i := 1 to NoCoefs do + for j := 1 to NoVars do readln(F,Coefficients[i,j]); + CloseFile(F); + end; + // GetFileData(FName); + FileNameEdit.Text := FName; + NoVarsEdit.Text := IntToStr(NoVars); + NoMaxEdit.Text := IntToStr(NoMax); + NoMinEdit.Text := IntToStr(NoMin); + NoEqualEdit.Text := IntToStr(NoEql); + MinMaxGrp.ItemIndex := MinMax; + MaxConstraintsGrid.RowCount := NoMax; + MinConstraintsGrid.RowCount := NoMin; + EqualConstraintsGrid.RowCount := NoEql; + ObjectiveGrid.ColCount := NoVars; + MaxGrid.RowCount := NoMax; + MaxGrid.ColCount := NoVars; + MinGrid.RowCount := NoMin; + MinGrid.ColCount := NoVars; + EqualGrid.RowCount := NoEql; + EqualGrid.ColCount := NoVars; + + // Place objectives in grid + for i := 1 to NoVars do + ObjectiveGrid.Cells[i-1,0] := FloatToStr(Objective[i]); + + // Place Maximum constraints in grid + for i := 1 to NoMax do + begin + MaxConstraintsGrid.Cells[0,i-1] := FloatToStr(MaxConstraints[i]); + for j := 1 to NoVars do MaxGrid.Cells[j-1,i-1] := FloatToStr(Coefficients[i,j]); + end; + + // Place Minimum constraints in grid + for i := 1 to NoMin do + begin + MinConstraintsGrid.Cells[0,i-1] := FloatToStr(MinConstraints[i]); + for j := 1 to NoVars do + MinGrid.Cells[j-1,i-1] := FloatToStr(Coefficients[NoMax+i,j]); + END; + + // Place Equal constraints in grid + for i := 1 to NoEql do + begin + EqualConstraintsGrid.Cells[0,i-1] := FloatToStr(EqlConstraints[i]); + for j := 1 to NoVars do + EqualGrid.Cells[j-1,i-1] := FloatToStr(Coefficients[NoMax+NoMin+i,j]); + end; + ComputeBtn.SetFocus; +end; + +procedure TLinProFrm.CancelBtnClick(Sender: TObject); +begin + LinProFrm.Coefficients := nil; + LinProFrm.EqlConstraints := nil; + LinProFrm.MinConstraints := nil; + LinProFrm.MaxConstraints := nil; + LinProFrm.Objective := nil; + Close; +end; + +procedure TLinProFrm.ComputeBtnClick(Sender: TObject); +var + m1, m2, m3, m, mp, n, np, nm1m2 : integer; + i,icase,j : integer; + izrov : IntDyneVec; + iposv : IntDyneVec; + a : DblDyneMat; + txt : StrDyneVec; + outline : string; + +begin + n := NoVars; + m1 := NoMax; + m2 := NoMin; + m3 := NoEql; + m := m1 + m2 + m3; + np := n+1; (* np >= n+1 *) + mp := m + 2; (* mp >= m+2 *) + nm1m2 := n + m1 + m2; (* nm1m2=n+m1+m2 *) + SetLength(izrov,n+1); + SetLength(iposv,m+1); + SetLength(a,mp+1,np+1); + SetLength(txt,nm1m2+1); + + // Initialize labels + for i := 1 to NoVars do txt[i] := 'X' + IntToStr(i); + for i := NoVars + 1 to nm1m2 do txt[i] := 'Y' + IntToStr(i-NoVars); + + // Fill array data from grid + LoadArrayData(Self); + for i := 1 to NoVars do a[1,i+1] := Objective[i]; + a[1,1] := 0.0; + for i := 1 to NoMax do + begin + a[i+1,1] := MaxConstraints[i]; + for j := 1 to NoVars do a[i+1,j+1] := coefficients[i,j]; + end; + for i := 1 to NoMin do + begin + a[i+1+NoMax,1] := MinConstraints[i]; + for j := 1 to NoVars do a[i+1+NoMax,j+1] := Coefficients[i+NoMax,j]; + end; + for i := 1 to NoEql do + begin + a[i+1+NoMax+NoMin,1] := EqlConstraints[i]; + for j := 1 to NoVars do + a[i+1+NoMax+NoMin,j+1] := coefficients[i+NoMax+NoMin,j]; + end; + if MinMaxGrp.ItemIndex = 1 then + begin + MinMax := 1; + for i := 1 to NoVars do a[1,i+1] := -1.0 * a[1,i+1]; + end; + + // Do analysis + simplx(a,m,n,mp,np,m1,m2,m3,icase,izrov,iposv); + if MinMax = 1 then a[1,1] := -a[1,1]; + + // Report results + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Linear Programming Results'); + OutPutFrm.RichEdit.Lines.Add(''); + + + outline := ''; + IF (icase = 1) THEN + BEGIN + ResultsEdit.Text := 'Unbounded objective function.'; + OutPutFrm.RichEdit.Lines.Add('Unbounded object function.') + END + ELSE IF (icase = -1) THEN + BEGIN + ResultsEdit.Text := 'No solutions satisfy constraints given.'; + OutPutFrm.RichEdit.Lines.Add('No solutions satisfy constraints given') + END ELSE + BEGIN + ResultsEdit.Text := 'Solution found.'; + outline := ' '; + FOR i := 1 to n DO + BEGIN + IF (izrov[i] <= nm1m2) THEN + BEGIN + outline := outline + format('%10s',[txt[izrov[i]]]); + END; + END; + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + outline := ''; + FOR i := 1 to m+1 DO + BEGIN + IF (i > 1) THEN + BEGIN + outline := outline + format('%3s',[txt[iposv[i-1]]]); + END + ELSE BEGIN + outline := outline + ' z'; + END; + FOR j := 1 to (n+1) DO + BEGIN + IF (j=1) THEN + outline := outline + format('%10.4f',[a[i,j]]); + IF (j>1) THEN + BEGIN + IF (izrov[j-1] <= nm1m2) THEN + outline := outline + format('%10.4f',[a[i,j]]); + END; + END; + OutPutFrm.RichEdit.Lines.Add(outline); + outline := ''; + END; + END; + OutPutFrm.ShowModal; + +// ShowOutPut(m1, m2, m3, m, n, icase, a, iposv, izrov, Self); + + // cleanup + txt := nil; + a := nil; + iposv := nil; + izrov := nil; +end; + +procedure TLinProFrm.ExitBtnClick(Sender: TObject); +begin + LinProFrm.Coefficients := nil; + LinProFrm.EqlConstraints := nil; + LinProFrm.MinConstraints := nil; + LinProFrm.MaxConstraints := nil; + LinProFrm.Objective := nil; + LinProFrm.Hide; +end; + +procedure TLinProFrm.NoEqualEditExit(Sender: TObject); +VAR value : integer; +begin + value := StrToInt(NoEqualEdit.Text); + if value = 0 then exit; + EqualConstraintsGrid.RowCount := value; + EqualGrid.RowCount := value; + NoEql := value; + SetLength(EqlConstraints,value + 1); + NoCoefs := NoMax + NoMin + NoEql; + SetLength(Coefficients,NoCoefs+1,NoVars+1); +end; + +procedure TLinProFrm.NoEqualEditKeyPress(Sender: TObject; var Key: char); +begin + if ord(Key) = 13 then ObjectiveGrid.SetFocus; +end; + +procedure TLinProFrm.NoMaxEditExit(Sender: TObject); +VAR value : integer; +begin + value := StrToInt(NoMaxEdit.Text); + if value = 0 then exit; + MaxConstraintsGrid.RowCount := value; + MaxGrid.RowCount := value; + NoMax := value; + SetLength(MaxConstraints,NoMax + 1); +end; + +procedure TLinProFrm.NoMaxEditKeyPress(Sender: TObject; var Key: char); +begin + if ord(Key) = 13 then NoMinEdit.SetFocus; +end; + +procedure TLinProFrm.NoMinEditExit(Sender: TObject); +VAR value : integer; +begin + value := StrToInt(NoMinEdit.Text); + if value = 0 then exit; + MinConstraintsGrid.RowCount := value; + MinGrid.RowCount := value; + NoMin := value; + SetLength(MinConstraints,NoMin + 1); +end; + +procedure TLinProFrm.NoMinEditKeyPress(Sender: TObject; var Key: char); +begin + if ord(Key) = 13 then NoEqualEdit.SetFocus; +end; + +procedure TLinProFrm.NoVarsEditExit(Sender: TObject); +var value : integer; +begin + value := StrToInt(NoVarsEdit.Text); + if value = 0 then exit; + ObjectiveGrid.ColCount := value; + MaxGrid.ColCount := value; + MinGrid.ColCount := value; + EqualGrid.ColCount := value; + NoVars := value; + SetLength(Objective,NoVars + 1); +end; + +procedure TLinProFrm.NoVarsEditKeyPress(Sender: TObject; var Key: char); +begin + if ord(Key) = 13 then NoMaxEdit.SetFocus; +end; + +PROCEDURE TLinProFrm.simplx(VAR a: DblDyneMat; m,n,mp,np,m1,m2,m3: integer; + VAR icase: integer; VAR izrov: IntDyneVec; + VAR iposv: IntDyneVec); +LABEL 1,2,10,20,30,99; +CONST eps=1.0e-6; +VAR + nl2,nl1,m12,kp,kh,k,is1,ir,ip,i: integer; + q1,bmax: double; + l1: IntDyneVec; + l2,l3: IntDyneVec; +BEGIN + setlength(l1,np+1); + setlength(l2,mp + 1); + setlength(l3,mp + 1); + IF (m <> (m1+m2+m3)) THEN BEGIN + writeln('pause in routine SIMPLX'); + writeln('bad input constraint counts'); readln + END; + nl1 := n; + FOR k := 1 TO n DO BEGIN + l1[k] := k; + izrov[k] := k + END; + nl2 := m; + FOR i := 1 TO m DO BEGIN + IF (a[i+1,1] < 0.0) THEN BEGIN + writeln('pause in routine SIMPLX'); + writeln('bad input tableau'); readln + END; + l2[i] := i; + iposv[i] := n+i + END; + FOR i := 1 TO m2 DO BEGIN + l3[i] := 1 + END; + ir := 0; + IF ((m2+m3) = 0) THEN GOTO 30; + ir := 1; + FOR k := 1 TO n+1 DO BEGIN + q1 := 0.0; + FOR i := m1+1 TO m DO BEGIN + q1 := q1+a[i+1,k] + END; + a[m+2,k] := -q1 + END; +10: simp1(a,mp,np,m+1,l1,nl1,0,kp,bmax); + IF ((bmax <= eps) AND (a[m+2,1] < -eps)) THEN BEGIN + icase := -1; GOTO 99 END + ELSE IF ((bmax <= eps) AND (a[m+2,1] <= eps)) THEN BEGIN + m12 := m1+m2+1; + IF (m12 <= m) THEN BEGIN + FOR ip := m12 TO m DO BEGIN + IF (iposv[ip] = (ip+n)) THEN BEGIN + simp1(a,mp,np,ip,l1,nl1,1,kp,bmax); + IF (bmax > 0.0) THEN GOTO 1 + END + END + END; + ir := 0; + m12 := m12-1; + IF ((m1+1) > m12) THEN GOTO 30; + FOR i := m1+1 TO m12 DO BEGIN + IF (l3[i-m1] = 1) THEN BEGIN + FOR k := 1 TO n+1 DO BEGIN + a[i+1,k] := -a[i+1,k] + END + END + END; + GOTO 30 + END; + simp2(a,m,n,mp,np,l2,nl2,ip,kp,q1); + IF (ip = 0) THEN BEGIN + icase := -1; GOTO 99 + END; +1: simp3(a,mp,np,m+1,n,ip,kp); + IF (iposv[ip] >= (n+m1+m2+1)) THEN BEGIN + FOR k := 1 TO nl1 DO BEGIN + IF (l1[k] = kp) THEN GOTO 2 + END; +2: nl1 := nl1-1; + FOR is1 := k TO nl1 DO BEGIN + l1[is1] := l1[is1+1] + END + END ELSE BEGIN + IF (iposv[ip] < (n+m1+1)) THEN GOTO 20; + kh := iposv[ip]-m1-n; + IF (l3[kh] = 0) THEN GOTO 20; + l3[kh] := 0 + END; + a[m+2,kp+1] := a[m+2,kp+1]+1.0; + FOR i := 1 TO m+2 DO BEGIN + a[i,kp+1] := -a[i,kp+1] + END; +20: is1 := izrov[kp]; + izrov[kp] := iposv[ip]; + iposv[ip] := is1; + IF (ir <> 0) THEN GOTO 10; +30: simp1(a,mp,np,0,l1,nl1,0,kp,bmax); + IF (bmax <= 0.0) THEN BEGIN + icase := 0; GOTO 99 + END; + simp2(a,m,n,mp,np,l2,nl2,ip,kp,q1); + IF (ip = 0) THEN BEGIN + icase := 1; GOTO 99 + END; + simp3(a,mp,np,m,n,ip,kp); + GOTO 20; +99: + l1 := nil; + l2 := nil; + l3 := nil; +END; + + +PROCEDURE TLinProFrm.simp1(VAR a: DblDyneMat; mp,np,mm: integer; + ll: IntDyneVec; nll,iabf: integer; + VAR kp: integer; VAR bmax: double); +LABEL 99; +VAR + k: integer; + test: real; +BEGIN + kp := ll[1]; + bmax := a[mm+1,kp+1]; + IF (nll < 2) THEN GOTO 99; + FOR k := 2 TO nll DO BEGIN + IF (iabf = 0) THEN BEGIN + test := a[mm+1,ll[k]+1]-bmax + END ELSE BEGIN + test := abs(a[mm+1,ll[k]+1])-abs(bmax) + END; + IF (test > 0.0) THEN BEGIN + bmax := a[mm+1,ll[k]+1]; + kp := ll[k] + END + END; +99: END; + + +PROCEDURE TLinProFrm.simp2(VAR a: DblDyneMat; m,n,mp,np: integer; + l2: IntDyneVec; nl2: integer; VAR ip: integer; + kp: integer; VAR q1: double); +LABEL 2,6,99; +VAR + k,ii,i: integer; + qp,q0,q: double; +BEGIN + ip := 0; + IF (nl2 < 1) THEN GOTO 99; + FOR i := 1 TO nl2 DO BEGIN + IF (a[l2[i]+1,kp+1] < 0.0) THEN GOTO 2 + END; + GOTO 99; +2: q1 := -a[l2[i]+1,1]/a[l2[i]+1,kp+1]; + ip := l2[i]; + IF ((i+1) > nl2) THEN GOTO 99; + FOR i := i+1 TO nl2 DO BEGIN + ii := l2[i]; + IF (a[ii+1,kp+1] < 0.0) THEN BEGIN + q := -a[ii+1,1]/a[ii+1,kp+1]; + IF (q < q1) THEN BEGIN + ip := ii; + q1 := q + END ELSE IF (q = q1) THEN BEGIN + FOR k := 1 TO n DO BEGIN + qp := -a[ip+1,k+1]/a[ip+1,kp+1]; + q0 := -a[ii+1,k+1]/a[ii+1,kp+1]; + IF (q0 <> qp) THEN GOTO 6 + END; +6: IF (q0 < qp) THEN ip := ii + END + END + END; +99: +end; + + +PROCEDURE TLinProFrm.simp3(VAR a: DblDyneMat; mp,np,i1,k1,ip,kp: integer); +(* Programs using routine SIMP3 must define the type +TYPE + glmpbynp = ARRAY [1..mp,1..np] OF real; +in the main routine. *) +VAR + kk,ii: integer; + piv: double; +BEGIN + piv := 1.0/a[ip+1,kp+1]; + IF (i1 >= 0) THEN BEGIN + FOR ii := 1 TO (i1+1) DO BEGIN + IF ((ii-1) <> ip) THEN BEGIN + a[ii,kp+1] := a[ii,kp+1]*piv; + FOR kk := 1 TO k1+1 DO BEGIN + IF ((kk-1) <> kp) THEN BEGIN + a[ii,kk] := a[ii,kk] + -a[ip+1,kk]*a[ii,kp+1] + END + END + END + END + END; + FOR kk := 1 TO k1+1 DO BEGIN + IF ((kk-1) <> kp) THEN a[ip+1,kk] := -a[ip+1,kk]*piv + END; + a[ip+1,kp+1] := piv +END; + + +procedure TLinProFrm.LoadArrayData(Sender: TObject); +var + i, j : integer; +begin + // load objectives + for i := 1 to NoVars do Objective[i] := StrToFloat(ObjectiveGrid.Cells[i-1,0]); + + // load constraints + for i := 1 to NoMax do + begin + MaxConstraints[i] := StrToFloat(MaxConstraintsGrid.Cells[0,i-1]); + for j := 1 to NoVars do coefficients[i,j] := StrToFloat(MaxGrid.Cells[j-1,i-1]); + end; + for i := 1 to NoMin do + begin + MinConstraints[i] := StrToFloat(MinConstraintsGrid.Cells[0,i-1]); + for j := 1 to NoVars do coefficients[i+NoMax,j] := StrToFloat(MinGrid.Cells[j-1,i-1]); + end; + for i := 1 to NoEql do + begin + EqlConstraints[i] := StrToFloat(EqualConstraintsGrid.Cells[0,i-1]); + for j := 1 to NoVars do coefficients[i+NoMax+NoMin,j] := StrToFloat(EqualGrid.Cells[j-1,i-1]); + end; + + // Set for minimization if requested + if MinMaxGrp.ItemIndex = 1 then MinMax := 1; +end; + + +initialization + {$I linprounit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/loanitunit.lfm b/applications/lazstats/source_orig/loanitunit.lfm new file mode 100644 index 000000000..264e15e82 --- /dev/null +++ b/applications/lazstats/source_orig/loanitunit.lfm @@ -0,0 +1,190 @@ +object LoanItFrm: TLoanItFrm + Left = 169 + Height = 247 + Top = 100 + Width = 400 + Caption = 'Loan Calculation and Amortization' + ClientHeight = 247 + ClientWidth = 400 + OnShow = FormShow + LCLVersion = '0.9.28.2' + object Label1: TLabel + Left = 14 + Height = 14 + Top = 88 + Width = 80 + Caption = 'Principal Amount' + ParentColor = False + end + object Label2: TLabel + Left = 162 + Height = 14 + Top = 87 + Width = 163 + Caption = 'Annual Percentage Rate (APR %)' + ParentColor = False + end + object Label3: TLabel + Left = 14 + Height = 14 + Top = 128 + Width = 81 + Caption = 'Number of years' + ParentColor = False + end + object Label4: TLabel + Left = 162 + Height = 14 + Top = 128 + Width = 145 + Caption = 'Number of Payments Per Year' + ParentColor = False + end + object Label5: TLabel + Left = 14 + Height = 14 + Top = 160 + Width = 61 + Caption = 'PAYMENT = ' + ParentColor = False + end + object Label6: TLabel + Left = 8 + Height = 14 + Top = 9 + Width = 60 + Caption = 'Your Name: ' + ParentColor = False + end + object Label7: TLabel + Left = 8 + Height = 14 + Top = 40 + Width = 91 + Caption = 'Current Month No.' + ParentColor = False + end + object Label8: TLabel + Left = 144 + Height = 14 + Top = 40 + Width = 70 + Caption = 'Day of Month:' + ParentColor = False + end + object Label9: TLabel + Left = 256 + Height = 14 + Top = 40 + Width = 63 + Caption = 'Current Year' + ParentColor = False + end + object AmountEdit: TEdit + Left = 105 + Height = 21 + Top = 80 + Width = 43 + TabOrder = 0 + Text = 'AmountEdit' + end + object InterestEdit: TEdit + Left = 329 + Height = 21 + Top = 80 + Width = 50 + TabOrder = 1 + Text = 'InterestEdit' + end + object YearsEdit: TEdit + Left = 105 + Height = 21 + Top = 120 + Width = 44 + TabOrder = 2 + Text = 'YearsEdit' + end + object PayPerYrEdit: TEdit + Left = 329 + Height = 21 + Top = 121 + Width = 51 + TabOrder = 3 + Text = 'PayPerYrEdit' + end + object RePayEdit: TEdit + Left = 96 + Height = 21 + Top = 153 + Width = 95 + TabOrder = 4 + Text = 'RePayEdit' + end + object ResetBtn: TButton + Left = 14 + Height = 27 + Top = 200 + Width = 71 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 5 + end + object AmortizeBtn: TButton + Left = 144 + Height = 27 + Top = 200 + Width = 80 + Caption = 'Compute' + OnClick = AmortizeBtnClick + TabOrder = 6 + end + object ReturnBtn: TButton + Left = 287 + Height = 27 + Top = 200 + Width = 90 + Caption = 'Return' + ModalResult = 1 + TabOrder = 7 + end + object NameEdit: TEdit + Left = 74 + Height = 21 + Top = 2 + Width = 137 + TabOrder = 8 + Text = 'NameEdit' + end + object MonthEdit: TEdit + Left = 102 + Height = 21 + Top = 32 + Width = 31 + TabOrder = 9 + Text = 'MonthEdit' + end + object DayEdit: TEdit + Left = 218 + Height = 21 + Top = 32 + Width = 29 + TabOrder = 10 + Text = 'DayEdit' + end + object YearEdit: TEdit + Left = 326 + Height = 21 + Top = 30 + Width = 52 + TabOrder = 11 + Text = 'YearEdit' + end + object PrintChk: TCheckBox + Left = 211 + Height = 17 + Top = 158 + Width = 170 + Caption = 'Print the Amortization Schedule' + TabOrder = 12 + end +end diff --git a/applications/lazstats/source_orig/loanitunit.lrs b/applications/lazstats/source_orig/loanitunit.lrs new file mode 100644 index 000000000..2c14dc53b --- /dev/null +++ b/applications/lazstats/source_orig/loanitunit.lrs @@ -0,0 +1,46 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TLoanItFrm','FORMDATA',[ + 'TPF0'#10'TLoanItFrm'#9'LoanItFrm'#4'Left'#3#169#0#6'Height'#3#247#0#3'Top'#2 + +'d'#5'Width'#3#144#1#7'Caption'#6'!Loan Calculation and Amortization'#12'Cli' + +'entHeight'#3#247#0#11'ClientWidth'#3#144#1#6'OnShow'#7#8'FormShow'#10'LCLVe' + +'rsion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#14#6'Height'#2#14#3'To' + +'p'#2'X'#5'Width'#2'P'#7'Caption'#6#16'Principal Amount'#11'ParentColor'#8#0 + +#0#6'TLabel'#6'Label2'#4'Left'#3#162#0#6'Height'#2#14#3'Top'#2'W'#5'Width'#3 + +#163#0#7'Caption'#6#30'Annual Percentage Rate (APR %)'#11'ParentColor'#8#0#0 + +#6'TLabel'#6'Label3'#4'Left'#2#14#6'Height'#2#14#3'Top'#3#128#0#5'Width'#2'Q' + +#7'Caption'#6#15'Number of years'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4 + +'Left'#3#162#0#6'Height'#2#14#3'Top'#3#128#0#5'Width'#3#145#0#7'Caption'#6#27 + +'Number of Payments Per Year'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Le' + +'ft'#2#14#6'Height'#2#14#3'Top'#3#160#0#5'Width'#2'='#7'Caption'#6#10'PAYMEN' + +'T = '#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Left'#2#8#6'Height'#2#14#3 + +'Top'#2#9#5'Width'#2'<'#7'Caption'#6#11'Your Name: '#11'ParentColor'#8#0#0#6 + +'TLabel'#6'Label7'#4'Left'#2#8#6'Height'#2#14#3'Top'#2'('#5'Width'#2'['#7'Ca' + +'ption'#6#17'Current Month No.'#11'ParentColor'#8#0#0#6'TLabel'#6'Label8'#4 + +'Left'#3#144#0#6'Height'#2#14#3'Top'#2'('#5'Width'#2'F'#7'Caption'#6#13'Day ' + +'of Month:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label9'#4'Left'#3#0#1#6'Height' + +#2#14#3'Top'#2'('#5'Width'#2'?'#7'Caption'#6#12'Current Year'#11'ParentColor' + +#8#0#0#5'TEdit'#10'AmountEdit'#4'Left'#2'i'#6'Height'#2#21#3'Top'#2'P'#5'Wid' + +'th'#2'+'#8'TabOrder'#2#0#4'Text'#6#10'AmountEdit'#0#0#5'TEdit'#12'InterestE' + +'dit'#4'Left'#3'I'#1#6'Height'#2#21#3'Top'#2'P'#5'Width'#2'2'#8'TabOrder'#2#1 + +#4'Text'#6#12'InterestEdit'#0#0#5'TEdit'#9'YearsEdit'#4'Left'#2'i'#6'Height' + +#2#21#3'Top'#2'x'#5'Width'#2','#8'TabOrder'#2#2#4'Text'#6#9'YearsEdit'#0#0#5 + +'TEdit'#12'PayPerYrEdit'#4'Left'#3'I'#1#6'Height'#2#21#3'Top'#2'y'#5'Width'#2 + +'3'#8'TabOrder'#2#3#4'Text'#6#12'PayPerYrEdit'#0#0#5'TEdit'#9'RePayEdit'#4'L' + +'eft'#2'`'#6'Height'#2#21#3'Top'#3#153#0#5'Width'#2'_'#8'TabOrder'#2#4#4'Tex' + +'t'#6#9'RePayEdit'#0#0#7'TButton'#8'ResetBtn'#4'Left'#2#14#6'Height'#2#27#3 + +'Top'#3#200#0#5'Width'#2'G'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnCl' + +'ick'#8'TabOrder'#2#5#0#0#7'TButton'#11'AmortizeBtn'#4'Left'#3#144#0#6'Heigh' + +'t'#2#27#3'Top'#3#200#0#5'Width'#2'P'#7'Caption'#6#7'Compute'#7'OnClick'#7#16 + +'AmortizeBtnClick'#8'TabOrder'#2#6#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#31#1 + +#6'Height'#2#27#3'Top'#3#200#0#5'Width'#2'Z'#7'Caption'#6#6'Return'#11'Modal' + +'Result'#2#1#8'TabOrder'#2#7#0#0#5'TEdit'#8'NameEdit'#4'Left'#2'J'#6'Height' + +#2#21#3'Top'#2#2#5'Width'#3#137#0#8'TabOrder'#2#8#4'Text'#6#8'NameEdit'#0#0#5 + +'TEdit'#9'MonthEdit'#4'Left'#2'f'#6'Height'#2#21#3'Top'#2' '#5'Width'#2#31#8 + +'TabOrder'#2#9#4'Text'#6#9'MonthEdit'#0#0#5'TEdit'#7'DayEdit'#4'Left'#3#218#0 + +#6'Height'#2#21#3'Top'#2' '#5'Width'#2#29#8'TabOrder'#2#10#4'Text'#6#7'DayEd' + +'it'#0#0#5'TEdit'#8'YearEdit'#4'Left'#3'F'#1#6'Height'#2#21#3'Top'#2#30#5'Wi' + +'dth'#2'4'#8'TabOrder'#2#11#4'Text'#6#8'YearEdit'#0#0#9'TCheckBox'#8'PrintCh' + +'k'#4'Left'#3#211#0#6'Height'#2#17#3'Top'#3#158#0#5'Width'#3#170#0#7'Caption' + +#6#31'Print the Amortization Schedule'#8'TabOrder'#2#12#0#0#0 +]); diff --git a/applications/lazstats/source_orig/loanitunit.pas b/applications/lazstats/source_orig/loanitunit.pas new file mode 100644 index 000000000..bfd0318cd --- /dev/null +++ b/applications/lazstats/source_orig/loanitunit.pas @@ -0,0 +1,154 @@ +unit LoanItUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, OutPutUnit, math; + +type + + { TLoanItFrm } + + TLoanItFrm = class(TForm) + PrintChk: TCheckBox; + DayEdit: TEdit; + YearEdit: TEdit; + MonthEdit: TEdit; + Label7: TLabel; + Label8: TLabel; + Label9: TLabel; + NameEdit: TEdit; + Label6: TLabel; + ResetBtn: TButton; + AmortizeBtn: TButton; + ReturnBtn: TButton; + AmountEdit: TEdit; + InterestEdit: TEdit; + YearsEdit: TEdit; + PayPerYrEdit: TEdit; + RePayEdit: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + Label5: TLabel; + procedure AmortizeBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + procedure Heading(Sender: TObject); + private + { private declarations } + public + { public declarations } + end; + +var + LoanItFrm: TLoanItFrm; + +implementation + +{ TLoanItFrm } + +procedure TLoanItFrm.ResetBtnClick(Sender: TObject); +begin + NameEdit.Text := ''; + MonthEdit.Text := ''; + DayEdit.Text := ''; + YearEdit.Text := ''; + YearsEdit.Text := '30'; + AmountEdit.Text := '10000'; + InterestEdit.Text := '6.5'; + PayPerYrEdit.Text := '12'; + RepayEdit.Text := ''; +end; + +procedure TLoanItFrm.FormShow(Sender: TObject); +begin + ResetBtnClick(self); +end; + +procedure TLoanItFrm.AmortizeBtnClick(Sender: TObject); +VAR + no_per_year, year_payed, month_payed, day, month, j, k : integer; + fraction, interest, numerator, denominator, payment, total_interest : double; + amount, interest_payment, total_payed, pcnt_interest, years, no_years : double; + aname, astring : string; + outline : string; +begin + aname := NameEdit.Text; + no_per_year := StrToInt(PayPerYrEdit.Text); + day := StrToInt(DayEdit.Text); + month := StrToInt(MonthEdit.Text); + years := StrToFloat(YearEdit.Text); + amount := StrToFloat(AmountEdit.Text); + no_years := StrToFloat(YearsEdit.Text); + pcnt_interest := StrToFloat(InterestEdit.Text); + + interest := pcnt_interest / 100.0; + numerator := interest * amount / no_per_year ; + denominator := 1.0 - (1.0 / power((interest / no_per_year + 1.0), + (no_per_year * no_years) ) ); + payment := numerator / denominator; + outline := format('%10.2f',[payment]); + repayEdit.Text := outline; + + if PrintChk.Checked = false then exit; + OutPutFrm.RichEdit.Clear; +// OutPutFrm.RichEdit.Lines.Add(outline); + if (no_per_year < 12) then + fraction := 12.0 / no_per_year else fraction := 1.0; + OutPutFrm.RichEdit.Lines.Add('Payment Schedule Program by W. G. Miller'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------------'); + OutPutFrm.RichEdit.Lines.Add(''); + astring := 'Name of Borrower : '; + astring := astring + aname; + OutPutFrm.RichEdit.Lines.Add(astring); + outline := format('Amount borrowed := $%12.2f at %5.2f percent over %2.1f years.', + [amount,pcnt_interest,no_years]); + total_interest := 0.0; + total_payed := 0.0; + for j := 1 to round(no_years) do + begin + Heading(self); + for k := 1 to no_per_year do + begin + year_payed := round(years) + j - 1 ; + month_payed := round(k * fraction + (month - fraction)); + if (month_payed > 12) then + begin + year_payed := year_payed + 1; + month_payed := month_payed - 12; + end; + interest_payment := amount * interest / no_per_year; + amount := amount - payment + interest_payment; + total_interest := total_interest + interest_payment; + total_payed := total_payed + payment; + outline := format(' %2d/%2d/%2d %12.2f %12.2f %12.2f %12.2f %12.2f', + [month_payed,day,year_payed,payment,interest_payment, + amount,total_interest,total_payed]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; // next k + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------------'); + end; // next j + OutPutFrm.ShowModal; +end; + +procedure TLoanItFrm.Heading(Sender: TObject); +begin + OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------------'); + OutPutFrm.RichEdit.Lines.Add('PAYMENT PAYMENT INTEREST BALANCE TOTAL TOTAL'); + OutPutFrm.RichEdit.Lines.Add('NUMBER AMOUNT PAYED REMAINING INTEREST PAID'); + OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------------'); +end; + +initialization + + {$I loanitunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/loglinscreenunit.lfm b/applications/lazstats/source_orig/loglinscreenunit.lfm new file mode 100644 index 000000000..00cf5fa07 --- /dev/null +++ b/applications/lazstats/source_orig/loglinscreenunit.lfm @@ -0,0 +1,335 @@ +object LogLinScreenFrm: TLogLinScreenFrm + Left = 144 + Height = 393 + Top = 105 + Width = 546 + Caption = 'Cross-Classification Log Linear Screen' + ClientHeight = 393 + ClientWidth = 546 + OnShow = FormShow + LCLVersion = '0.9.28.2' + object Label1: TLabel + Left = 9 + Height = 14 + Top = 40 + Width = 314 + Caption = '1, Select the variables of the Grid that define your classifications' + ParentColor = False + end + object Label2: TLabel + Left = 9 + Height = 14 + Top = 72 + Width = 90 + Caption = 'Available Variables' + ParentColor = False + end + object Label3: TLabel + Left = 192 + Height = 14 + Top = 72 + Width = 42 + Caption = 'Selected' + ParentColor = False + end + object CountVarChk: TCheckBox + Left = 6 + Height = 17 + Top = 8 + Width = 230 + Caption = 'Last Variable Selected is a Frequency Count' + TabOrder = 0 + end + object Step2Btn: TButton + Left = 304 + Height = 22 + Top = 8 + Width = 228 + Caption = '2. Click here when variables are selected' + OnClick = Step2BtnClick + TabOrder = 1 + end + object VarList: TListBox + Left = 7 + Height = 220 + Top = 88 + Width = 140 + ItemHeight = 0 + MultiSelect = True + TabOrder = 2 + end + object InBtn: TBitBtn + Left = 152 + Height = 28 + Top = 96 + Width = 31 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = InBtnClick + TabOrder = 3 + end + object OutBtn: TBitBtn + Left = 152 + Height = 28 + Top = 128 + Width = 31 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = OutBtnClick + TabOrder = 4 + end + object AllBtn: TBitBtn + Left = 152 + Height = 28 + Top = 192 + Width = 31 + Caption = 'ALL' + NumGlyphs = 0 + OnClick = AllBtnClick + TabOrder = 5 + end + object SelectList: TListBox + Left = 192 + Height = 219 + Top = 89 + Width = 142 + ItemHeight = 0 + TabOrder = 6 + end + object Panel1: TPanel + Left = 344 + Height = 152 + Top = 72 + Width = 184 + ClientHeight = 152 + ClientWidth = 184 + TabOrder = 7 + object Label4: TLabel + Left = 7 + Height = 14 + Top = 10 + Width = 165 + Caption = '3. For each variable complete the' + ParentColor = False + end + object Label5: TLabel + Left = 7 + Height = 14 + Top = 27 + Width = 151 + Caption = 'specifications below. Press the' + ParentColor = False + end + object Label6: TLabel + Left = 7 + Height = 14 + Top = 45 + Width = 151 + Caption = 'enter key following each entry.' + ParentColor = False + end + object Label7: TLabel + Left = 93 + Height = 14 + Top = 70 + Width = 43 + Caption = 'Variable:' + ParentColor = False + end + object Label8: TLabel + Left = 8 + Height = 14 + Top = 98 + Width = 74 + Caption = 'Minimum Value:' + ParentColor = False + end + object Label9: TLabel + Left = 7 + Height = 14 + Top = 128 + Width = 78 + Caption = 'Maximum Value:' + ParentColor = False + end + object ScrollBar1: TScrollBar + Left = 7 + Height = 17 + Top = 66 + Width = 76 + PageSize = 0 + TabOrder = 0 + OnChange = ScrollBar1Change + end + object VarNoEdit: TEdit + Left = 139 + Height = 21 + Top = 66 + Width = 36 + TabOrder = 1 + Text = 'VarNoEdit' + end + object MinEdit: TEdit + Left = 139 + Height = 21 + Top = 95 + Width = 33 + OnKeyPress = MinEditKeyPress + TabOrder = 2 + Text = 'MinEdit' + end + object MaxEdit: TEdit + Left = 138 + Height = 21 + Top = 123 + Width = 35 + OnKeyPress = MaxEditKeyPress + TabOrder = 3 + Text = 'MaxEdit' + end + end + object GroupBox1: TGroupBox + Left = 6 + Height = 64 + Top = 320 + Width = 328 + Caption = 'Options' + ClientHeight = 46 + ClientWidth = 324 + TabOrder = 8 + object MarginsChk: TCheckBox + Left = 6 + Height = 17 + Top = 2 + Width = 117 + Caption = 'Print Marginal Totals' + TabOrder = 0 + end + object GenlModelChk: TCheckBox + Left = 6 + Height = 17 + Top = 23 + Width = 194 + Caption = 'Print General Linear Modle Estimates' + TabOrder = 1 + end + end + object ResetBtn: TButton + Left = 456 + Height = 28 + Top = 240 + Width = 72 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 9 + end + object CancelBtn: TButton + Left = 344 + Height = 28 + Top = 280 + Width = 81 + Caption = 'Cancel' + ModalResult = 2 + OnClick = CancelBtnClick + TabOrder = 10 + end + object ComputeBtn: TButton + Left = 456 + Height = 28 + Top = 280 + Width = 72 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 11 + end + object ReturnBtn: TButton + Left = 408 + Height = 28 + Top = 320 + Width = 72 + Caption = 'Return' + ModalResult = 1 + OnClick = ReturnBtnClick + TabOrder = 12 + end + object HelpBtn: TButton + Tag = 131 + Left = 344 + Height = 28 + Top = 240 + Width = 81 + Caption = 'Help' + OnClick = HelpBtnClick + TabOrder = 13 + end +end diff --git a/applications/lazstats/source_orig/loglinscreenunit.lrs b/applications/lazstats/source_orig/loglinscreenunit.lrs new file mode 100644 index 000000000..24fb78ee7 --- /dev/null +++ b/applications/lazstats/source_orig/loglinscreenunit.lrs @@ -0,0 +1,165 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TLogLinScreenFrm','FORMDATA',[ + 'TPF0'#16'TLogLinScreenFrm'#15'LogLinScreenFrm'#4'Left'#3#144#0#6'Height'#3 + +#137#1#3'Top'#2'i'#5'Width'#3'"'#2#7'Caption'#6'&Cross-Classification Log Li' + +'near Screen'#12'ClientHeight'#3#137#1#11'ClientWidth'#3'"'#2#6'OnShow'#7#8 + +'FormShow'#10'LCLVersion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6 + +'Height'#2#14#3'Top'#2'('#5'Width'#3':'#1#7'Caption'#6'E1, Select the varia' + +'bles of the Grid that define your classifications'#11'ParentColor'#8#0#0#6 + +'TLabel'#6'Label2'#4'Left'#2#9#6'Height'#2#14#3'Top'#2'H'#5'Width'#2'Z'#7'Ca' + +'ption'#6#19'Available Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4 + +'Left'#3#192#0#6'Height'#2#14#3'Top'#2'H'#5'Width'#2'*'#7'Caption'#6#8'Selec' + +'ted'#11'ParentColor'#8#0#0#9'TCheckBox'#11'CountVarChk'#4'Left'#2#6#6'Heigh' + +'t'#2#17#3'Top'#2#8#5'Width'#3#230#0#7'Caption'#6'+Last Variable Selected is' + +' a Frequency Count'#8'TabOrder'#2#0#0#0#7'TButton'#8'Step2Btn'#4'Left'#3'0' + +#1#6'Height'#2#22#3'Top'#2#8#5'Width'#3#228#0#7'Caption'#6')2. Click here wh' + +'en variables are selected'#7'OnClick'#7#13'Step2BtnClick'#8'TabOrder'#2#1#0 + +#0#8'TListBox'#7'VarList'#4'Left'#2#7#6'Height'#3#220#0#3'Top'#2'X'#5'Width' + +#3#140#0#10'ItemHeight'#2#0#11'MultiSelect'#9#8'TabOrder'#2#2#0#0#7'TBitBtn' + +#5'InBtn'#4'Left'#3#152#0#6'Height'#2#28#3'Top'#2'`'#5'Width'#2#31#10'Glyph.' + +'Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16 + +#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184 + +#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177 + +'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255 + +'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255 + +#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255 + +#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142 + +#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J' + +#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162 + +#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255 + +#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130 + +#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199 + +'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255 + +'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5' + +#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'InBtnClick'#8 + +'TabOrder'#2#3#0#0#7'TBitBtn'#6'OutBtn'#4'Left'#3#152#0#6'Height'#2#28#3'Top' + +#3#128#0#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0 + +'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0 + +#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G' + +#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161 + +'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131 + +#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/' + +'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e' + +#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255 + +#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132 + +#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255 + +#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154 + +#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255 + +#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255 + +#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201 + +#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O' + +#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num' + +'Glyphs'#2#0#7'OnClick'#7#11'OutBtnClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#6'A' + +'llBtn'#4'Left'#3#152#0#6'Height'#2#28#3'Top'#3#192#0#5'Width'#2#31#7'Captio' + +'n'#6#3'ALL'#9'NumGlyphs'#2#0#7'OnClick'#7#11'AllBtnClick'#8'TabOrder'#2#5#0 + +#0#8'TListBox'#10'SelectList'#4'Left'#3#192#0#6'Height'#3#219#0#3'Top'#2'Y'#5 + +'Width'#3#142#0#10'ItemHeight'#2#0#8'TabOrder'#2#6#0#0#6'TPanel'#6'Panel1'#4 + +'Left'#3'X'#1#6'Height'#3#152#0#3'Top'#2'H'#5'Width'#3#184#0#12'ClientHeight' + +#3#152#0#11'ClientWidth'#3#184#0#8'TabOrder'#2#7#0#6'TLabel'#6'Label4'#4'Lef' + +'t'#2#7#6'Height'#2#14#3'Top'#2#10#5'Width'#3#165#0#7'Caption'#6'"3. For ea' + +'ch variable complete the'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left' + +#2#7#6'Height'#2#14#3'Top'#2#27#5'Width'#3#151#0#7'Caption'#6' specification' + ,'s below. Press the'#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Left'#2#7#6 + +'Height'#2#14#3'Top'#2'-'#5'Width'#3#151#0#7'Caption'#6#31'enter key followi' + +'ng each entry.'#11'ParentColor'#8#0#0#6'TLabel'#6'Label7'#4'Left'#2']'#6'He' + +'ight'#2#14#3'Top'#2'F'#5'Width'#2'+'#7'Caption'#6#9'Variable:'#11'ParentCol' + +'or'#8#0#0#6'TLabel'#6'Label8'#4'Left'#2#8#6'Height'#2#14#3'Top'#2'b'#5'Widt' + +'h'#2'J'#7'Caption'#6#14'Minimum Value:'#11'ParentColor'#8#0#0#6'TLabel'#6'L' + +'abel9'#4'Left'#2#7#6'Height'#2#14#3'Top'#3#128#0#5'Width'#2'N'#7'Caption'#6 + +#14'Maximum Value:'#11'ParentColor'#8#0#0#10'TScrollBar'#10'ScrollBar1'#4'Le' + +'ft'#2#7#6'Height'#2#17#3'Top'#2'B'#5'Width'#2'L'#8'PageSize'#2#0#8'TabOrder' + +#2#0#8'OnChange'#7#16'ScrollBar1Change'#0#0#5'TEdit'#9'VarNoEdit'#4'Left'#3 + +#139#0#6'Height'#2#21#3'Top'#2'B'#5'Width'#2'$'#8'TabOrder'#2#1#4'Text'#6#9 + +'VarNoEdit'#0#0#5'TEdit'#7'MinEdit'#4'Left'#3#139#0#6'Height'#2#21#3'Top'#2 + +'_'#5'Width'#2'!'#10'OnKeyPress'#7#15'MinEditKeyPress'#8'TabOrder'#2#2#4'Tex' + +'t'#6#7'MinEdit'#0#0#5'TEdit'#7'MaxEdit'#4'Left'#3#138#0#6'Height'#2#21#3'To' + +'p'#2'{'#5'Width'#2'#'#10'OnKeyPress'#7#15'MaxEditKeyPress'#8'TabOrder'#2#3#4 + +'Text'#6#7'MaxEdit'#0#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#6#6'Height'#2 + +'@'#3'Top'#3'@'#1#5'Width'#3'H'#1#7'Caption'#6#7'Options'#12'ClientHeight'#2 + +'.'#11'ClientWidth'#3'D'#1#8'TabOrder'#2#8#0#9'TCheckBox'#10'MarginsChk'#4'L' + +'eft'#2#6#6'Height'#2#17#3'Top'#2#2#5'Width'#2'u'#7'Caption'#6#21'Print Marg' + +'inal Totals'#8'TabOrder'#2#0#0#0#9'TCheckBox'#12'GenlModelChk'#4'Left'#2#6#6 + +'Height'#2#17#3'Top'#2#23#5'Width'#3#194#0#7'Caption'#6'$Print General Linea' + +'r Modle Estimates'#8'TabOrder'#2#1#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3 + +#200#1#6'Height'#2#28#3'Top'#3#240#0#5'Width'#2'H'#7'Caption'#6#5'Reset'#7'O' + +'nClick'#7#13'ResetBtnClick'#8'TabOrder'#2#9#0#0#7'TButton'#9'CancelBtn'#4'L' + +'eft'#3'X'#1#6'Height'#2#28#3'Top'#3#24#1#5'Width'#2'Q'#7'Caption'#6#6'Cance' + +'l'#11'ModalResult'#2#2#7'OnClick'#7#14'CancelBtnClick'#8'TabOrder'#2#10#0#0 + +#7'TButton'#10'ComputeBtn'#4'Left'#3#200#1#6'Height'#2#28#3'Top'#3#24#1#5'Wi' + +'dth'#2'H'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrd' + +'er'#2#11#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#152#1#6'Height'#2#28#3'Top'#3 + +'@'#1#5'Width'#2'H'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#7'OnClick'#7 + +#14'ReturnBtnClick'#8'TabOrder'#2#12#0#0#7'TButton'#7'HelpBtn'#3'Tag'#3#131#0 + +#4'Left'#3'X'#1#6'Height'#2#28#3'Top'#3#240#0#5'Width'#2'Q'#7'Caption'#6#4'H' + +'elp'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#13#0#0#0 +]); diff --git a/applications/lazstats/source_orig/loglinscreenunit.pas b/applications/lazstats/source_orig/loglinscreenunit.pas new file mode 100644 index 000000000..4103ddf83 --- /dev/null +++ b/applications/lazstats/source_orig/loglinscreenunit.pas @@ -0,0 +1,1140 @@ +unit LogLinScreenUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, ExtCtrls, Globals, MainUnit, FunctionsLib, OutPutUnit, + DataProcs, contexthelpunit; + +type + + { TLogLinScreenFrm } + + TLogLinScreenFrm = class(TForm) + HelpBtn: TButton; + InBtn: TBitBtn; + OutBtn: TBitBtn; + AllBtn: TBitBtn; + ResetBtn: TButton; + CancelBtn: TButton; + ComputeBtn: TButton; + ReturnBtn: TButton; + MarginsChk: TCheckBox; + GenlModelChk: TCheckBox; + GroupBox1: TGroupBox; + MaxEdit: TEdit; + MinEdit: TEdit; + Label8: TLabel; + Label9: TLabel; + VarNoEdit: TEdit; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + Label5: TLabel; + Label6: TLabel; + Label7: TLabel; + Panel1: TPanel; + ScrollBar1: TScrollBar; + SelectList: TListBox; + VarList: TListBox; + Step2Btn: TButton; + CountVarChk: TCheckBox; + Label1: TLabel; + procedure AllBtnClick(Sender: TObject); + procedure CancelBtnClick(Sender: TObject); + procedure ComputeBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure HelpBtnClick(Sender: TObject); + procedure InBtnClick(Sender: TObject); + procedure MaxEditKeyPress(Sender: TObject; var Key: char); + procedure MinEditKeyPress(Sender: TObject; var Key: char); + procedure OutBtnClick(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + procedure ReturnBtnClick(Sender: TObject); + procedure ScrollBar1Change(Sender: TObject); + procedure Step2BtnClick(Sender: TObject); + function ArrayPosition(Sender: TObject; NoDims : integer; + VAR Data : DblDyneVec; + VAR Subscripts : IntDyneVec; + VAR DimSize : IntDyneVec) : integer; + procedure Marginals(Sender: TObject; + NoDims : integer; + ArraySize : integer; + VAR Indexes : IntDyneMat; + VAR Data : DblDyneVec; + VAR Margins : IntDyneMat); + + private + { private declarations } + procedure Screen(VAR NVAR : integer; + VAR MP : integer; VAR MM : integer; + VAR NTAB : integer; VAR TABLE : DblDyneVec; + VAR DIM : IntDyneVec; VAR GSQ : DblDyneVec; + VAR DGFR : IntDyneVec; VAR PART : DblDyneMat; + VAR MARG : DblDyneMat; VAR DFS : IntDyneMat; + VAR IP : IntDyneMat; VAR IM : IntDyneMat; + VAR ISET : IntDyneVec; VAR JSET : IntDyneVec; + VAR CONFIG : IntDyneMat; VAR FIT : DblDyneVec; + VAR SIZE : IntDyneVec; VAR COORD : IntDyneVec; + VAR X : DblDyneVec; VAR Y : DblDyneVec; + VAR IFAULT : integer); + + procedure CONF(VAR N : integer; VAR M : integer; + VAR MP : integer; + VAR MM : integer; + VAR ISET : IntDyneVec; VAR JSET : IntDyneVec; + VAR IP : IntDyneMat; VAR IM : IntDyneMat; VAR NP : integer); + + procedure COMBO(VAR ISET : IntDyneVec; + N, M : Integer; + VAR LAST : boolean); + + procedure EVAL(VAR IAR : IntDyneMat; + NC, NV, IBEG, NVAR, MAX : integer; + VAR CONFIG : IntDyneMat; + VAR DIM : IntDyneVec; VAR DF : integer); + + procedure RESET(VAR FIT : DblDyneVec; NTAB : Integer; + AVG : Double); + + procedure LIKE(VAR GSQ : Double; VAR FIT : DblDyneVec; + VAR TABLE : DblDyneVec; NTAB : integer); + + procedure LOGFIT(NVAR, NTAB, NCON : integer; + VAR DIM : IntDyneVec; + VAR CONFIG : IntDyneMat; VAR TABLE : DblDyneVec; + VAR FIT : DblDyneVec; VAR SIZE : IntDyneVec; + VAR COORD : IntDyneVec; VAR X : DblDyneVec; + VAR Y : DblDyneVec); + + procedure MaxCombos(NoDims : integer; VAR MM : integer; VAR MP : integer); + + public + { public declarations } + end; + +var + LogLinScreenFrm: TLogLinScreenFrm; + Minimums : IntDyneVec; + Maximums : IntDyneVec; + Response : BoolDyneVec; + Interact : BoolDyneVec; + NoDims : integer; + +implementation + +{ TLogLinScreenFrm } + +procedure TLogLinScreenFrm.ResetBtnClick(Sender: TObject); +VAR i : integer; +begin + Panel1.Visible := false; + VarList.Clear; + SelectList.Clear; + VarNoEdit.Text := '1'; + MaxEdit.Text := ''; + MinEdit.Text := ''; + InBtn.Visible := true; + OutBtn.Visible := false; + NoDims := 0; + Minimums := nil; + Maximums := nil; + Response := nil; + Interact := nil; + ScrollBar1.Min := 1; + ScrollBar1.Max := 1; + ScrollBar1.Position := 1; + for i := 1 to NoVariables do VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); +end; + +procedure TLogLinScreenFrm.ReturnBtnClick(Sender: TObject); +begin + Maximums := nil; + Minimums := nil; + Response := nil; + Interact := nil; + LogLinScreenFrm.Hide; +end; + +procedure TLogLinScreenFrm.ScrollBar1Change(Sender: TObject); +begin + VarNoEdit.Text := IntToStr(ScrollBar1.Position); +end; + +procedure TLogLinScreenFrm.Step2BtnClick(Sender: TObject); +begin + if CountVarChk.Checked then + begin + NoDims := NoDims - 1; + ScrollBar1.Max := NoDims; + end; + Panel1.Visible := true; + setLength(Maximums,NoDims); + SetLength(Minimums,NoDims); + SetLength(Response,NoDims); + SetLength(Interact,NoDims); + MaxEdit.SetFocus; +end; + +procedure TLogLinScreenFrm.InBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + SelectList.Items.Add(VarList.Items.Strings[index]); + VarList.Items.Delete(index); + OutBtn.Visible := true; + NoDims := NoDims + 1; + ScrollBar1.Max := NoDims; + index := VarList.Items.Count; + if index <= 0 then InBtn.Visible := false; +end; + +procedure TLogLinScreenFrm.MaxEditKeyPress(Sender: TObject; var Key: char); +VAR DimNo : integer; +begin + if ord(Key) = 13 then // return key + begin + DimNo := StrToInt(VarNoEdit.Text); + Maximums[DimNo-1] := StrToInt(MaxEdit.Text); + ScrollBar1.SetFocus; + end; +end; + +procedure TLogLinScreenFrm.MinEditKeyPress(Sender: TObject; var Key: char); +VAR DimNo : integer; +begin + if ord(Key) = 13 then // return key + begin + DimNo := StrToInt(VarNoEdit.Text); + Minimums[DimNo-1] := StrToInt(MinEdit.Text); + MaxEdit.SetFocus; + end; +end; + +procedure TLogLinScreenFrm.FormShow(Sender: TObject); +begin + ResetBtnClick(Self); +end; + +procedure TLogLinScreenFrm.HelpBtnClick(Sender: TObject); +begin + ContextHelpForm.HelpMessage((Sender as TButton).tag); +end; + +procedure TLogLinScreenFrm.CancelBtnClick(Sender: TObject); +begin + Maximums := nil; + Minimums := nil; + Response := nil; + Interact := nil; + LogLinScreenFrm.Hide; +end; + +procedure TLogLinScreenFrm.AllBtnClick(Sender: TObject); +VAR i, count : integer; +begin + count := VarList.Items.Count; + for i := 0 to count-1 do + SelectList.Items.Add(VarList.Items.Strings[i]); + InBtn.Visible := false; + OutBtn.Visible := true; + NoDims := SelectList.Items.Count; + ScrollBar1.Max := NoDims; +end; + +procedure TLogLinScreenFrm.ComputeBtnClick(Sender: TObject); +var + ArraySize : integer; + N : integer; + index, index2, i, j, k, l, NoVars : integer; + count : integer; + Data : DblDyneVec; + Subscripts : IntDyneVec; + DimSize : IntDyneVec; + GridPos : IntDyneVec; + Labels : StrDyneVec; + Margins : IntDyneMat; + Expected : DblDyneVec; + WorkVec : IntDyneVec; + Indexes : IntDyneMat; + LogM : DblDyneVec; + NSize : IntDyneVec; + M : DblDyneMat; + astr, HeadStr : string; + MaxDim, MP, MM : integer; + U, Mu : Double; + Chi2, G2 : double; + DF : integer; + ProbChi2, ProbG2 : double; + GSQ : DblDyneVec; + DGFR : IntDyneVec; + PART : DblDyneMat; + MARG : DblDyneMat; + DFS : IntDyneMat; + IP : IntDyneMat; + IM : IntDyneMat; + ISET : IntDyneVec; + JSET : IntDyneVec; + CONFIG : IntDyneMat; + FIT : DblDyneVec; + SIZE : IntDyneVec; + COORD : IntDyneVec; + X, Y : DblDyneVec; + IFAULT : integer; + TABLE : DblDyneVec; + DIM : IntDyneVec; + HiOrder : integer; + response : string; +begin + OutPutFrm.RichEdit.Clear; + + // Allocate space for labels, DimSize and SubScripts + NoVars := SelectList.Items.Count; + SetLength(Labels,NoVars); + SetLength(DimSize,NoDims); + SetLength(Subscripts,NoDims); + SetLength(GridPos,NoVars); + + // get variable labels and column positions + for i := 1 to NoVars do + begin + astr := SelectList.Items.Strings[i-1]; + for j := 1 to NoVariables do + begin + if OS3MainFrm.DataGrid.Cells[j,0] = astr then + begin + Labels[i-1] := astr; + GridPos[i-1] := j; + break; + end; + end; + end; + + // Get no. of categories for each dimension (DimSize) + MaxDim := 0; + ArraySize := 1; + for i := 0 to NoDims - 1 do + begin + DimSize[i] := Maximums[i] - Minimums[i] + 1; + if DimSize[i] > MaxDim then MaxDim := DimSize[i]; + ArraySize := ArraySize * DimSize[i]; + end; + + // Allocate space for Data and marginals + SetLength(WorkVec,MaxDim); + SetLength(Data,ArraySize); + SetLength(Margins,NoDims,MaxDim); + SetLength(Expected,ArraySize); + SetLength(Indexes,ArraySize+1,NoDims); + SetLength(LogM,ArraySize); + SetLength(M,ArraySize,NoDims); + SetLength(NSize,NoDims); + + // Initialize data and margins arrays + for i := 1 to NoDims do + for j := 1 to MaxDim do + Margins[i-1,j-1] := 0; + for i := 1 to ArraySize do Data[i-1] := 0; + N := 0; + + // Read and store frequencies in Data + for i := 1 to NoCases do + begin + if GoodRecord(i, NoVars, GridPos) then // casewise check + begin + for j := 1 to NoDims do // get cell subscripts + begin + index := StrToInt(OS3MainFrm.DataGrid.Cells[GridPos[j-1],i]); + index := index - Minimums[j-1] + 1; + Subscripts[j-1] := index; + end; + + index := ArrayPosition(Self, NoDims, Data, Subscripts, DimSize); + + for j := 1 to NoDims do // save subscripts for later use + Indexes[index,j-1] := Subscripts[j-1]; + + if CountVarChk.Checked then + begin + k := GridPos[NoVars-1]; + Data[index] := Data[index] + StrToInt(OS3MainFrm.DataGrid.Cells[k,i]); + end + else Data[index] := Data[index] + 1; + end; + end; + + // get total N + for i := 1 to ArraySize do N := N + Round(Data[i-1]); + + // Get marginal frequencies + Marginals(Self,NoDims,ArraySize,Indexes,Data,Margins); + + // Print Marginal totals if requested + if MarginsChk.Checked then + begin + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('FILE: '+ OS3MainFrm.FileNameEdit.Text); + OutPutFrm.RichEdit.Lines.Add(''); + for i := 1 to NoDims do + begin + HeadStr := 'Marginal Totals for ' + Labels[i-1]; + k := DimSize[i-1]; + for j := 0 to k-1 do WorkVec[j] := Margins[i-1,j]; + VecPrint(WorkVec,k,HeadStr); + end; + end; + OutPutFrm.RichEdit.Lines.Add(''); + astr := Format('Total Frequencies = %d',[N]); + OutPutFrm.RichEdit.Lines.Add(astr); + OutPutFrm.ShowModal; + + // Get Expected cell values + U := 0.0; // overall mean (mu) of log linear model + for i := 1 to ArraySize do // indexes point to each cell + begin + Expected[i-1] := 1.0; + for j := 1 to NoDims do + begin + k := Indexes[i-1,j-1]; + Expected[i-1] := Expected[i-1] * (Margins[j-1,k-1] / N); + end; + Expected[i-1] := Expected[i-1] * N; + LogM[i-1] := ln(Expected[i-1]); + end; + for i := 1 to ArraySize do U := U + LogM[i-1]; + U := U / ArraySize; + + // print expected values + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('FILE: '+ OS3MainFrm.FileNameEdit.Text); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('EXPECTED CELL VALUES FOR MODEL OF COMPLETE INDEPENDENCE'); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Cell Observed Expected Log Expected'); + for i := 1 to ArraySize do + begin + astr := ''; + for j := 1 to NoDims do astr := astr + format('%3d ',[Indexes[i-1,j-1]]); + astr := astr + format('%10.0f %10.2f %10.3f',[Data[i-1],Expected[i-1],LogM[i-1]]); + OutPutFrm.RichEdit.Lines.Add(astr); + end; + chi2 := 0.0; + G2 := 0.0; + + // Calculate chi-squared and G squared statistics + for i := 1 to ArraySize do + begin + chi2 := chi2 + Sqr(Data[i-1] - Expected[i-1]) / Expected[i-1]; + G2 := G2 + Data[i-1] * ln(Data[i-1] / Expected[i-1]); + end; + G2 := 2.0 * G2; + DF := 1; + for i := 1 to NoDims do DF := DF * (DimSize[i-1]-1); + ProbChi2 := 1.0 - Chisquaredprob(chi2,DF); + ProbG2 := 1.0 - Chisquaredprob(G2,DF); + astr := format('Chisquare = %10.3f with probability = %10.3f (DF = %d)',[chi2,ProbChi2,DF]); + OutPutFrm.RichEdit.Lines.Add(astr); + astr := format('G squared = %10.3f with probability = %10.3f (DF = %d)',[G2,ProbG2,DF]); + OutPutFrm.RichEdit.Lines.Add(astr); + OutPutFrm.RichEdit.Lines.Add(''); + astr := format('U (mu) for general loglinear model = %10.2f',[U]); + OutPutFrm.RichEdit.Lines.Add(astr); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.ShowModal; + + // Get log linear model values for each cell + // get M's for each cell + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('First Order LogLinear Model Factors and N of Cells in Each'); + astr := 'CELL '; + for i := 1 to NoDims do astr := astr + format(' U%d N Cells ',[i]); + OutPutFrm.RichEdit.Lines.Add(astr); + OutPutFrm.RichEdit.Lines.Add(''); + for i := 1 to ArraySize do // cell + begin + astr := ''; + for j := 1 to NoDims do + astr := astr + format('%3d ',[Indexes[i-1,j-1]]); + for j := 1 to NoDims do // jth mu + begin + index := Indexes[i-1,j-1]; // sum for this mu + count := 0; + Mu := 0.0; + for k := 1 to ArraySize do + begin + if index = Indexes[k-1,j-1] then + begin + count := count + 1; + Mu := Mu + LogM[k-1]; + end; + end; + Mu := Mu / count - U; + astr := astr + format('%10.3f %3d ',[Mu,count]); + end; + OutPutFrm.RichEdit.Lines.Add(astr); + end; + OutPutFrm.ShowModal; + + // get second order interactions + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Second Order Loglinear Model Terms and N of Cells in Each'); + astr := 'CELL '; + for i := 1 to NoDims-1 do + for j := i + 1 to NoDims do + astr := astr + format('U%d%d N Cells ',[i,j]); + OutPutFrm.RichEdit.Lines.Add(astr); + OutPutFrm.RichEdit.Lines.Add(''); + for i := 1 to ArraySize do // cell + begin + astr := ''; + for j := 1 to NoDims do + astr := astr + format('%3d ',[Indexes[i-1,j-1]]); + for j := 1 to NoDims-1 do // jth + begin + index := Indexes[i-1,j-1]; // sum for this mu using j and k + for k := j+1 to NoDims do // with kth + begin + index2 := Indexes[i-1,k-1]; + Mu := 0.0; + count := 0; + for l := 1 to ArraySize do + begin + if ((index = Indexes[l-1,j-1]) and (index2 = Indexes[l-1,k-1])) then + begin + Mu := Mu + LogM[l-1]; + count := count + 1; + end; + end; // next l + Mu := Mu / count - U; + astr := astr + format('%10.3f %3d',[Mu,count]); + end; // next k (second term subscript) + end; // next j (first term subscript) + OutPutFrm.RichEdit.Lines.Add(astr); + end; // next i + + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + + // get maximum no. of interactions in saturated model + MaxCombos(NoDims, MM, MP); + + SetLength(GSQ,NoDims+1); + SetLength(DGFR,NoDims+1); + SetLength(PART,NoDims+1,MP+1); + SetLength(MARG,NoDims+1,MP+1); + SetLength(DFS,NoDims+1,MP+1); + SetLength(IP,NoDims+1,MP+1); + SetLength(IM,NoDims+1,MM+1); + SetLength(ISET,NoDims+1); + SetLength(JSET,NoDims+1); + SetLength(CONFIG,NoDims+1,MP+1); + SetLength(FIT,ArraySize+1); + SetLength(SIZE,NoDims+1); + SetLength(COORD,NoDims+1); + SetLength(X,ArraySize+1); + SetLength(Y,ArraySize+1); + SetLength(TABLE,ArraySize+1); + SetLength(DIM,NoDims+1); + + // Load TABLE and DIM one up from Data + for i := 1 to ArraySize do Table[i] := Data[i-1]; + for i := 1 to NoDims do DIM[i] := DimSize[i-1]; + + Screen(NoDims,MP,MM,ArraySize,TABLE,DIM, + GSQ,DGFR,PART,MARG,DFS,IP,IM,ISET,JSET,CONFIG,FIT,SIZE, + COORD,X,Y,IFAULT); + + // show results + astr := 'SCREEN FOR INTERACTIONS AMONG THE VARIABLES'; + OutPutFrm.RichEdit.Lines.Add(astr); + astr := 'Adapted from the Fortran program by Lustbader and Stodola printed in'; + OutPutFrm.RichEdit.Lines.Add(astr); + astr := 'Applied Statistics, Volume 30, Issue 1, 1981, pages 97-105 as Algorithm'; + OutPutFrm.RichEdit.Lines.Add(astr); + astr := 'AS 160 Partial and Marginal Association in Multidimensional Contingency Tables'; + OutPutFrm.RichEdit.Lines.Add(astr); + OutPutFrm.RichEdit.Lines.Add(''); + astr := 'Statistics for tests that the interactions of a given order are zero'; + OutPutFrm.RichEdit.Lines.Add(astr); + astr := 'ORDER STATISTIC D.F. PROB.'; + OutPutFrm.RichEdit.Lines.Add(astr); + for i := 1 to NoDims do + begin + ProbChi2 := 1.0 - ChiSquaredProb(GSQ[i],DGFR[i]); + astr := format('%5d %10.3f %3d %10.3f',[i,GSQ[i],DGFR[i],ProbChi2]); + OutPutFrm.RichEdit.Lines.Add(astr); + end; + OutPutFrm.RichEdit.Lines.Add(''); + astr := 'Statistics for Marginal Association Tests'; + OutPutFrm.RichEdit.Lines.Add(astr); + astr := 'VARIABLE ASSOC. PART ASSOC. MARGINAL ASSOC. D.F. PROB'; + OutPutFrm.RichEdit.Lines.Add(astr); + for i := 1 to NoDims-1 do + begin + for j := 1 to MP do + begin + ProbChi2 := 1.0 - ChiSquaredProb(MARG[i,j],DFS[i,j]); + astr := format('%5d %5d %10.3f %10.3f %3d %10.3f', + [i,j,Part[i,j],MARG[i,j], DFS[i,j],ProbChi2]); + OutPutFrm.RichEdit.Lines.Add(astr); + end; + end; + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + + TABLE := nil; + DIM := nil; + Y := nil; + X := nil; + COORD := nil; + SIZE := nil; + FIT := nil; + CONFIG := nil; + JSET := nil; + ISET := nil; + IM := nil; + IP := nil; + DFS := nil; + MARG := nil; + PART := nil; + DGFR := nil; + GSQ := nil; + NSize := nil; + M := nil; + LogM := nil; + Indexes := nil; + Expected := nil; + Margins := nil; + Data := nil; + WorkVec := nil; + GridPos := nil; + Subscripts := nil; + DimSize := nil; + Labels := nil; +end; + +procedure TLogLinScreenFrm.OutBtnClick(Sender: TObject); +VAR index : integer; +begin + index := SelectList.ItemIndex; + if index < 0 then exit; + VarList.Items.Add(SelectList.Items.Strings[index]); + SelectList.Items.Delete(index); + index := SelectList.Items.Count; + if index <= 0 then OutBtn.Visible := false; + InBtn.Visible := true; + NoDims := NoDims - 1; + if NoDims > 0 then ScrollBar1.Max := NoDims else ScrollBar1.Max := 1; +end; + +procedure TLogLinScreenFrm.Screen(var NVAR: integer; var MP: integer; + var MM: integer; var NTAB: integer; var TABLE: DblDyneVec; + var DIM: IntDyneVec; var GSQ: DblDyneVec; var DGFR: IntDyneVec; + var PART: DblDyneMat; var MARG: DblDyneMat; var DFS: IntDyneMat; + var IP: IntDyneMat; var IM: IntDyneMat; var ISET: IntDyneVec; + var JSET: IntDyneVec; var CONFIG: IntDyneMat; var FIT: DblDyneVec; + var SIZE: IntDyneVec; var COORD: IntDyneVec; var X: DblDyneVec; + var Y: DblDyneVec; var IFAULT: integer); +Label 160, 170; +VAR ISZ, MAX, LIM, I, J, NV1, M, M1, ITP, NP, NP1, L3, DF : integer; + ZERO, G21, G22, G23, AVG : double; + +begin +// SUBROUTINE SCREEN(NVAR, MP, MM, NTAB, TABLE, DIM, GSQ, DGFR, +// * PART, MARG, DFS, IP, IM, ISET, JSET, CONFIG, FIT, SIZE, +// * COORD, X, Y, IFAULT) +// +// ALGORITHM AS 160 APPL. STATIST. (1981) VOL.30, NO.1 +// +// Screen all efects for partial and marginal association. +// +// INTEGER NVAR, MP, MM, NTAB, IP(NVAR,MP), IM(NVAR,MM), DGFR(NVAR), +// * DFS(NVAR,MP), ISET(NVAR), JSET(NVAR), CONFIG(NVAR,MP), +// * DIM(NVAR), DF, SIZE(NVAR), COORD(NVAR) +// REAL GSQ(NVAR), PART(NVAR,MP), MARG(NVAR,MP), TABLE(NTAB), +// * FIT(NTAB), X(NTAB), Y(NTAB), ZERO +// DATA ZERO /0.0/ +// +// Check for input errors +// + ZERO := 0.0; + IFAULT := 1; + IF (NVAR <= 1) then exit; + ISZ := 1; + for I := 1 to NVAR do + begin + if (DIM[I] <= 1) then IFAULT := 2; + ISZ := ISZ * DIM[i]; + end; + IF (ISZ <> NTAB) then IFAULT := 2; + MAX := 1; + LIM := NVAR div 2; + for I := 1 to LIM do MAX := MAX * (NVAR - I + 1) div I; + IF (MP < MAX) then IFAULT := 3; + MAX := 1; + LIM := (NVAR - 1) div 2; + for I := 1 to LIM do MAX := MAX * (NVAR - I) div I; + MAX := MAX * NVAR; + IF (MM < MAX) then IFAULT := 4; + IF (IFAULT > 1) then exit; +// +// Fit the no effect model +// + DGFR[NVAR] := NTAB - 1; + AVG := ZERO; + IFAULT := 5; + for I := 1 to NTAB do + begin + IF (TABLE[I] < ZERO) then exit; //RETURN + AVG := AVG + TABLE[I]; + end; + IFAULT := 0; + AVG := AVG / NTAB; + RESET(FIT, NTAB, AVG); + LIKE(GSQ[1], FIT, TABLE, NTAB); +// +// Begin fitting effects +// + NV1 := NVAR - 1; + for M := 1 to NV1 do + begin + // DO 200 M = 1, NV1 + // + // Set up the arrays IP and IM + // + M1 := M; + CONF(NVAR, M1, MP, MM, ISET, JSET, IP, IM, NP); + // + // Fit the saturated model + // + RESET(FIT, NTAB, AVG); + EVAL(IP, NP, M, 1, NVAR, MP, CONFIG, DIM, DGFR[M]); + LOGFIT(NVAR, NTAB, NP, DIM, CONFIG, TABLE, FIT, SIZE, COORD, X, Y); + LIKE(GSQ[M+1], FIT, TABLE, NTAB); + // + // Move the first column of IP to the last + // + for I := 1 to M do + begin + // DO 150 I = 1, M + ITP := IP[I,1]; + NP1 := NP - 1; + for J := 1 to NP1 do IP[I,J] := IP[I,J+1]; + IP[I,NP] := ITP; + end; // 150 CONTINUE + L3 := -M + 1; + for J := 1 to NP do + begin + // DO 190 J = 1, NP + // + // Fit the effects in IP ignoring the last column + // + RESET(FIT, NTAB, AVG); + EVAL(IP, NP-1, M, 1, NVAR, MP, CONFIG, DIM, DF); + LOGFIT(NVAR, NTAB, NP-1, DIM, CONFIG, TABLE, FIT, SIZE, COORD, X, Y); + LIKE(G21, FIT, TABLE, NTAB); + DFS[M,J] := DGFR[M] - DF; + PART[M,J] := G21 - GSQ[M+1]; + // + // For M = 1, partials and marginals are equal + // + IF (M > 1) then GOTO 160; + MARG[1,J] := PART[1,J]; + GOTO 170; + // + // Fit the last column alone + // + 160: RESET(FIT, NTAB, AVG); + EVAL(IP, 1, M, NP, NVAR, MP, CONFIG, DIM, DF); + LOGFIT(NVAR, NTAB, 1, DIM, CONFIG, TABLE, FIT, SIZE, + COORD, X, Y); + LIKE(G22, FIT, TABLE, NTAB); + // + // Locate the appropriate columns of IM and fit them + // + L3 := L3 + M; + RESET(FIT, NTAB, AVG); + EVAL(IM, M, M-1, L3, NVAR, MM, CONFIG, DIM, DF); + LOGFIT(NVAR, NTAB, M, DIM, CONFIG, TABLE, FIT, SIZE, + COORD, X, Y); + LIKE(G23, FIT, TABLE, NTAB); + MARG[M,J] := G23 - G22; + // + // Move the next effect to be ignored to the last in IP + // + 170: for I := 1 to M do // DO 180 I = 1, M + begin + ITP := IP[I,NP]; + IP[I,NP] := IP[I,J]; + IP[I,J] := ITP; + end; + // 180 CONTINUE + end; // 190 CONTINUE + // + DGFR[NVAR] := DGFR[NVAR] - DGFR[M]; + GSQ[M] := GSQ[M] - GSQ[M+1]; + end; // 200 CONTINUE +end; + +procedure TLogLinScreenFrm.CONF(var N: integer; var M: integer; + var MP: integer; var MM: integer; var ISET: IntDyneVec; var JSET: IntDyneVec; + var IP: IntDyneMat; var IM: IntDyneMat; var NP: integer); +Label 100, 120; +VAR + ILAST, JLAST : boolean; + I, L, NM, JS : integer; +// SUBROUTINE CONF(N, M, MP, MM, ISET, JSET, IP, IM, NP) +//C +//C ALGORITHM AS 160.1 APPL. STATIST. (1981) VOL.30, NO.1 +//C +//C Set up the arrays IP and IM for a given N and M. Essentially +//C IP contains all possible combinations of (N choose M). For each +//C combination found IM contains all combinations of degree M-1. +//C +// INTEGER ISET(N), JSET(N), IP(N,MP), IM(N,MM) +// LOGICAL ILAST, JLAST +//C + +begin + ILAST := TRUE; + NP := 0; + NM := 0; + // + // Get IP + // + 100: + COMBO(ISET, N, M, ILAST); + IF (ILAST) then exit; + NP := NP + 1; + for I := 1 to M do IP[I,NP] := ISET[I]; + IF (M = 1) then GOTO 100; +// +// Get IM +// + JLAST := TRUE; + L := M - 1; + 120: + COMBO(JSET, M, L, JLAST); + IF (JLAST) then GOTO 100; + NM := NM + 1; + for I := 1 to L do // DO 130 I = 1, L + begin + JS := JSET[I]; + IM[I,NM] := ISET[JS]; + end; // 130 CONTINUE + GOTO 120; +end; + +procedure TLogLinScreenFrm.COMBO(var ISET: IntDyneVec; N, M: Integer; + var LAST: boolean); +label 100, 110, 130, 150; +VAR + I, K, L : integer; + +// SUBROUTINE COMBO(ISET, N, M, LAST) +// +// ALGORITHM AS 160.2 APPL. STATIST. (1981) VOL.30, NO.1 +// +// Subroutine to generate all possible combinations of M of the +// integers from 1 to N in a stepwise fashion. Prior to the first +// call, LAST should be set to .FALSE. Thereafter, as long as LAST +// is returned .FALSE., a new valid combination has been generated. +// When LAST goes .TRUE., there are no more combinations. +// +// LOGICAL LAST +// INTEGER N, M, ISET(M) +// + +begin + IF (LAST) then GOTO 110; +// +// Get next element to increment +// + K := M; +100: L := ISET[K] + 1; + IF (L + M - K <= N) then GOTO 150; + K := K - 1; +// +// See if we are done +// + IF (K <= 0) then GOTO 130; + GOTO 100; +// +// Initialize first combination +// +110: for I := 1 to M do ISET[I] := I; +130: LAST := NOT LAST; + exit; +// +// Fill in remainder of combination. +// +150: for I := K to M do //DO 160 I = K, M + begin + ISET[I] := L; + L := L + 1; + end; //160 CONTINUE +end; + +procedure TLogLinScreenFrm.EVAL(var IAR: IntDyneMat; NC, NV, IBEG, NVAR, + MAX: integer; var CONFIG: IntDyneMat; var DIM: IntDyneVec; var DF: integer); +VAR I, J, K, KK, L : integer; +// SUBROUTINE EVAL(IAR, NC, NV, IBEG, NVAR, MAX, CONFIG, DIM, DF) +// +// ALGORITHM AS 160.3 APPL. STATIST. (1981) VOL.30, NO.1 +// +// IAR = array containing the effects to be fitted +// NC = number of columns of IAR to be used +// NV = number of variables in each effect +// IBEG = gebinning column +// DF = degrees of freedom +// +// CONFIG is in a format compatible with algorithm AS 51 +// +// INTEGER IAR(NVAR,MAX), CONFIG(NVAR,NC), DIM(NVAR), DF +// +begin + DF := 0; + for J := 1 to NC do //DO 110 J = 1, NC + begin + KK := 1; + for I := 1 to NV do //DO 100 I = 1, NV + begin + L := IBEG + J - 1; + K := IAR[I,L]; + KK := KK * (DIM[K] - 1); + CONFIG[I,J] := K; + end; // 100 CONTINUE + CONFIG[NV+1,J] := 0; + DF := DF + KK; + end; // 110 CONTINUE +end; + +procedure TLogLinScreenFrm.RESET(var FIT: DblDyneVec; NTAB: Integer; AVG: Double + ); +VAR I : integer; + +begin +// +// SUBROUTINE RESET(FIT, NTAB, AVG) +// +// ALGORITHM AS 160.4 APPL. STATIST. (1981) VOL.30, NO.1 +// +// Initialize the fitted values to the average entry +// +// REAL FIT(NTAB) +// + for I := 1 to NTAB do //DO 100 I = 1, NTAB + begin + FIT[I] := AVG; + end; // 100 CONTINUE +end; + +procedure TLogLinScreenFrm.LIKE(var GSQ: Double; var FIT: DblDyneVec; + var TABLE: DblDyneVec; NTAB: integer); +VAR I : integer; + ZERO, TWO : Double; + +begin + ZERO := 0.0; + TWO := 2.0; +// SUBROUTINE LIKE(GSQ, FIT, TABLE, NTAB) +// +// ALGORITHM AS 160.5 APPL. STATIST. (1981) VOL.30, NO.1 +// +// Compute the likelihood-ration chi-square +// +// REAL FIT(NTAB), TABLE(NTAB), ZERO, TWO +// DATA ZERO /0.0/, TWO /2.0/ +// + GSQ := ZERO; + for I := 1 to NTAB do //DO 100 I = 1, NTAB + begin + IF (FIT[I] = ZERO) OR (TABLE[I] = ZERO) then continue; // GO TO 100 + GSQ := GSQ + TABLE[I] * Ln(TABLE[I] / FIT[I]); + end; // 100 CONTINUE + GSQ := TWO * GSQ; +end; + +procedure TLogLinScreenFrm.LOGFIT(NVAR, NTAB, NCON: integer; + var DIM: IntDyneVec; var CONFIG: IntDyneMat; var TABLE: DblDyneVec; + var FIT: DblDyneVec; var SIZE: IntDyneVec; var COORD: IntDyneVec; + var X: DblDyneVec; var Y: DblDyneVec); +LABEL 110, 130, 150, 170, 180, 200; +VAR + II, K, KK, L, N, J, I : integer; + OPTION : boolean; + MAXDEV, ZERO, XMAX, E : double; + MAXIT, NV1, ISZ : integer; + +begin +// SUBROUTINE LOGFIT(NVAR, NTAB, NCON, DIM, CONFIG, TABLE, FIT, SIZE, +// * COORD, X, Y) +// +// ALGORITHM AS 160.6 APPL. STATIST. (1981) VOL.30, NO.1 +// +// Iterative proportional fitting of the marginals of a contingency +// table. Relevant code from AS 51 is used. +// +// REAL TABLE(NTAB), FIT(NTAB), MAXDEV, X(NTAB), Y(NTAB), ZERO +// INTEGER CONFIG(NVAR,NCON), DIM(NVAR), SIZE(NVAR), COORD(NVAR) +// LOGICAL OPTION +// DATA MAXDEV /0.25/, MAXIT /25/, ZERO /0.0/ + + MAXDEV := 0.25; + ZERO := 0.0; + MAXIT := 25; + for KK := 1 to MAXIT do //DO 230 KK = 1, MAXIT + begin + // + // XMAX is the maximum deviation between fitted and true marginal + // + XMAX := ZERO; + for II := 1 to NCON do //DO 220 II = 1, NCON + begin + OPTION := TRUE; + // + // Initialize arrays + // + SIZE[1] := 1; + NV1 := NVAR - 1; + for K := 1 to NV1 do //DO 100 K = 1, NV1 + begin + L := CONFIG[K,II]; + IF (L = 0) then GOTO 110; + SIZE[K+1] := SIZE[K] * DIM[L]; + end; // 100 CONTINUE + K := NVAR; + 110: N := K - 1; + ISZ := SIZE[K]; + for J := 1 to ISZ do //DO 120 J = 1, ISZ + begin + X[J] := ZERO; + Y[J] := ZERO; + end; // 120 CONTINUE + // + // Initialize co-ordinates + // + 130: for K := 1 to NVAR do COORD[K] := 0; + // + // Find locations in tables + // + I := 1; + 150: J := 1; + for K := 1 to N do //DO 160 K = 1, N + begin + L := CONFIG[K,II]; + J := J + COORD[L] * SIZE[K]; + end; //160 CONTINUE + IF (NOT OPTION) then GOTO 170; + // + // Compute marginals + // + X[J] := X[J] + TABLE[I]; + Y[J] := Y[J] + FIT[I]; + GOTO 180; + // + // Make adjustments + // + 170: IF (Y[J] <= ZERO) then FIT[I] := ZERO; + IF (Y[J] > ZERO) then FIT[I] := FIT[I] * X[J] / Y[J]; + // + // Update co-ordinates + // + 180: I := I + 1; + for K := 1 to NVAR do //DO 190 K = 1, NVAR + begin + COORD[K] := COORD[K] + 1; + IF (COORD[K] < DIM[K]) then GOTO 150; + COORD[K] := 0; + end; //190 CONTINUE + IF (NOT OPTION) then GOTO 200; + OPTION := FALSE; + GOTO 130; + // + // Find the largest deviation + // + 200: for I := 1 to ISZ do //DO 210 I = 1, ISZ + begin + E := ABS(X[I] - Y[I]); + IF (E > XMAX) then XMAX := E; + end; // 210 CONTINUE + end; // 220 CONTINUE + // + // Test convergence + // + IF (XMAX < MAXDEV) then exit; + end; // 230 CONTINUE +end; + +procedure TLogLinScreenFrm.MaxCombos(NoDims: integer; var MM: integer; + var MP: integer); +var + combos : integer; + i,j : integer; + +begin + MM := 0; + MP := 0; + for i := 1 to NoDims do + begin + combos := 1; + // get numerator factorial products down to i + for j := NoDims downto i + 1 do + combos := combos * j; + // divide by factorial of NoDims - i; + for j := (NoDims - i) downto 2 do + combos := combos div j; + if combos > MP then MP := combos; + if i * combos > MM then MM := i * combos; + end; +end; + +function TLogLinScreenFrm.ArrayPosition(Sender: TObject; NoDims : integer; + VAR Data : DblDyneVec; + VAR Subscripts : IntDyneVec; + VAR DimSize : IntDyneVec) : integer; + +var + Pos : integer; + i, j : integer; + PriorSizes : IntDyneVec; + +begin + // allocate space for PriorSizes + SetLength(PriorSizes,NoDims); + // calculate PriorSizes values + for i := 0 to NoDims - 2 do PriorSizes[i] := 1; // initialize + for i := NoDims - 2 downto 0 do + for j := 0 to i do PriorSizes[i] := PriorSizes[i] * DimSize[j]; + Pos := Subscripts[0] - 1; + for i := 0 to NoDims - 2 do + Pos := Pos + (PriorSizes[i] * (Subscripts[i+1]-1)); + Result := Pos; + PriorSizes := nil; +end; + +procedure TLogLinScreenFrm.Marginals(Sender: TObject; NoDims: integer; + ArraySize: integer; var Indexes: IntDyneMat; var Data: DblDyneVec; + var Margins: IntDyneMat); +var i, j, category : integer; + +begin + for i := 1 to ArraySize do + begin + for j := 1 to NoDims do + begin + category := Indexes[i-1,j-1]; + Margins[j-1,category-1] := Margins[j-1,category-1] + Round(Data[i-1]); + end; + end; +end; + +initialization + {$I loglinscreenunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/logregunit.lfm b/applications/lazstats/source_orig/logregunit.lfm new file mode 100644 index 000000000..a7cec9edd --- /dev/null +++ b/applications/lazstats/source_orig/logregunit.lfm @@ -0,0 +1,326 @@ +object LogRegFrm: TLogRegFrm + Left = 179 + Height = 352 + Top = 102 + Width = 536 + Caption = 'Binary Logistic Regression' + ClientHeight = 352 + ClientWidth = 536 + OnShow = FormShow + LCLVersion = '0.9.28.2' + object Label1: TLabel + Left = 7 + Height = 14 + Top = 0 + Width = 90 + Caption = 'Available Variables' + ParentColor = False + end + object Label2: TLabel + Left = 225 + Height = 14 + Top = 15 + Width = 95 + Caption = 'Dependent Variable' + ParentColor = False + end + object Label3: TLabel + Left = 224 + Height = 14 + Top = 97 + Width = 109 + Caption = 'Independent Variables' + ParentColor = False + end + object Label4: TLabel + Left = 378 + Height = 14 + Top = 129 + Width = 95 + Caption = 'Maximum Iterations' + ParentColor = False + end + object VarList: TListBox + Left = 7 + Height = 316 + Top = 16 + Width = 169 + ItemHeight = 0 + MultiSelect = True + TabOrder = 0 + end + object DepInBtn: TBitBtn + Left = 184 + Height = 28 + Top = 23 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = DepInBtnClick + TabOrder = 1 + end + object DepOutBtn: TBitBtn + Left = 184 + Height = 28 + Top = 56 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = DepOutBtnClick + TabOrder = 2 + end + object InBtn: TBitBtn + Left = 184 + Height = 28 + Top = 112 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = InBtnClick + TabOrder = 3 + end + object OutBtn: TBitBtn + Left = 184 + Height = 28 + Top = 144 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = OutBtnClick + TabOrder = 4 + end + object DepVar: TEdit + Left = 224 + Height = 21 + Top = 32 + Width = 142 + TabOrder = 5 + Text = 'DepVar' + end + object BlockList: TListBox + Left = 224 + Height = 217 + Top = 115 + Width = 144 + ItemHeight = 0 + TabOrder = 6 + end + object GroupBox1: TGroupBox + Left = 378 + Height = 107 + Top = 7 + Width = 145 + Caption = 'Options' + ClientHeight = 89 + ClientWidth = 141 + TabOrder = 7 + object DescChk: TCheckBox + Left = 8 + Height = 17 + Top = 5 + Width = 119 + Caption = 'Descriptive Statistics' + TabOrder = 0 + end + object ProbsChk: TCheckBox + Left = 8 + Height = 17 + Top = 31 + Width = 86 + Caption = 'Y Probabilities' + TabOrder = 1 + end + object ItersChk: TCheckBox + Left = 8 + Height = 17 + Top = 57 + Width = 96 + Caption = 'Show Iterations' + TabOrder = 2 + end + end + object MaxItsEdit: TEdit + Left = 485 + Height = 21 + Top = 121 + Width = 38 + TabOrder = 8 + Text = 'MaxItsEdit' + end + object ResetBtn: TButton + Left = 417 + Height = 29 + Top = 152 + Width = 68 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 9 + end + object CancelBtn: TButton + Left = 417 + Height = 29 + Top = 200 + Width = 68 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 10 + end + object ComputeBtn: TButton + Left = 417 + Height = 29 + Top = 248 + Width = 68 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 11 + end + object ReturnBtn: TButton + Left = 417 + Height = 29 + Top = 296 + Width = 68 + Caption = 'Return' + ModalResult = 1 + TabOrder = 12 + end +end diff --git a/applications/lazstats/source_orig/logregunit.lrs b/applications/lazstats/source_orig/logregunit.lrs new file mode 100644 index 000000000..9049bc472 --- /dev/null +++ b/applications/lazstats/source_orig/logregunit.lrs @@ -0,0 +1,241 @@ +LazarusResources.Add('TLogRegFrm','FORMDATA',[ + 'TPF0'#10'TLogRegFrm'#9'LogRegFrm'#4'Left'#3#179#0#6'Height'#3'`'#1#3'Top'#2 + +'f'#5'Width'#3#24#2#7'Caption'#6#26'Binary Logistic Regression'#12'ClientHei' + +'ght'#3'`'#1#11'ClientWidth'#3#24#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6 + +#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#7#6'Height'#2#14#3'Top'#2#0#5'W' + +'idth'#2'Z'#7'Caption'#6#19'Available Variables'#11'ParentColor'#8#0#0#6'TLa' + +'bel'#6'Label2'#4'Left'#3#225#0#6'Height'#2#14#3'Top'#2#15#5'Width'#2'_'#7'C' + +'aption'#6#18'Dependent Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4 + +'Left'#3#224#0#6'Height'#2#14#3'Top'#2'a'#5'Width'#2'm'#7'Caption'#6#21'Inde' + +'pendent Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3'z'#1 + +#6'Height'#2#14#3'Top'#3#129#0#5'Width'#2'_'#7'Caption'#6#18'Maximum Iterati' + +'ons'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#7#6'Height'#3'<' + +#1#3'Top'#2#16#5'Width'#3#169#0#10'ItemHeight'#2#0#11'MultiSelect'#9#8'TabOr' + +'der'#2#0#0#0#7'TBitBtn'#8'DepInBtn'#4'Left'#3#184#0#6'Height'#2#28#3'Top'#2 + +#23#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0 + +#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0 + +#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%' + +'i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a' + +#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O' + +#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D' + +#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255 + +#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152 + +#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193 + +#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h' + +#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255 + +#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139 + +#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255 + +#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h' + +#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z' + +#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I' + +#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O' + +#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7 + +'OnClick'#7#13'DepInBtnClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'#9'DepOutBtn'#4 + ,'Left'#3#184#0#6'Height'#2#28#3'Top'#2'8'#5'Width'#2' '#10'Glyph.Data'#10':' + +#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' ' + +#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A' + +#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255 + +#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213 + +#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135 + +#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r' + +#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138 + +#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207 + +#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}' + +#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0 + +'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S' + +#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';' + +#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'DepOutBtnClick' + +#8'TabOrder'#2#2#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#184#0#6'Height'#2#28#3'To' + +'p'#2'p'#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0 + +'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0 + +#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + ,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G' + +#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^' + +#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195 + +'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144 + +#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255 + +'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255 + +#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212 + +#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133 + +#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255 + +#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255 + +']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145 + +'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp' + +'hs'#2#0#7'OnClick'#7#10'InBtnClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#6'OutBtn' + +#4'Left'#3#184#0#6'Height'#2#28#3'Top'#3#144#0#5'Width'#2' '#10'Glyph.Data' + +#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0 + +#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A' + +#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255 + +#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213 + +#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135 + ,#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r' + +#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138 + +#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207 + +#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}' + +#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0 + +'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S' + +#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';' + +#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255 + +#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'OutBtnClick'#8 + +'TabOrder'#2#4#0#0#5'TEdit'#6'DepVar'#4'Left'#3#224#0#6'Height'#2#21#3'Top'#2 + +' '#5'Width'#3#142#0#8'TabOrder'#2#5#4'Text'#6#6'DepVar'#0#0#8'TListBox'#9'B' + +'lockList'#4'Left'#3#224#0#6'Height'#3#217#0#3'Top'#2's'#5'Width'#3#144#0#10 + +'ItemHeight'#2#0#8'TabOrder'#2#6#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3'z'#1 + +#6'Height'#2'k'#3'Top'#2#7#5'Width'#3#145#0#7'Caption'#6#7'Options'#12'Clien' + +'tHeight'#2'Y'#11'ClientWidth'#3#141#0#8'TabOrder'#2#7#0#9'TCheckBox'#7'Desc' + +'Chk'#4'Left'#2#8#6'Height'#2#17#3'Top'#2#5#5'Width'#2'w'#7'Caption'#6#22'De' + +'scriptive Statistics'#8'TabOrder'#2#0#0#0#9'TCheckBox'#8'ProbsChk'#4'Left'#2 + +#8#6'Height'#2#17#3'Top'#2#31#5'Width'#2'V'#7'Caption'#6#15'Y Probabilities' + +#8'TabOrder'#2#1#0#0#9'TCheckBox'#8'ItersChk'#4'Left'#2#8#6'Height'#2#17#3'T' + +'op'#2'9'#5'Width'#2'`'#7'Caption'#6#15'Show Iterations'#8'TabOrder'#2#2#0#0 + +#0#5'TEdit'#10'MaxItsEdit'#4'Left'#3#229#1#6'Height'#2#21#3'Top'#2'y'#5'Widt' + +'h'#2'&'#8'TabOrder'#2#8#4'Text'#6#10'MaxItsEdit'#0#0#7'TButton'#8'ResetBtn' + +#4'Left'#3#161#1#6'Height'#2#29#3'Top'#3#152#0#5'Width'#2'D'#7'Caption'#6#5 + +'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#9#0#0#7'TButton'#9'Canc' + +'elBtn'#4'Left'#3#161#1#6'Height'#2#29#3'Top'#3#200#0#5'Width'#2'D'#7'Captio' + +'n'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#10#0#0#7'TButton'#10'Compu' + +'teBtn'#4'Left'#3#161#1#6'Height'#2#29#3'Top'#3#248#0#5'Width'#2'D'#7'Captio' + +'n'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#11#0#0#7'TBu' + +'tton'#9'ReturnBtn'#4'Left'#3#161#1#6'Height'#2#29#3'Top'#3'('#1#5'Width'#2 + +'D'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#12#0#0#0 +]); diff --git a/applications/lazstats/source_orig/logregunit.pas b/applications/lazstats/source_orig/logregunit.pas new file mode 100644 index 000000000..8a34bb364 --- /dev/null +++ b/applications/lazstats/source_orig/logregunit.pas @@ -0,0 +1,534 @@ +unit LogRegUnit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, Globals, MainUnit, MatrixLib, OutPutUnit, FunctionsLib; + +type + + { TLogRegFrm } + + TLogRegFrm = class(TForm) + ResetBtn: TButton; + CancelBtn: TButton; + ComputeBtn: TButton; + ReturnBtn: TButton; + DepInBtn: TBitBtn; + DepOutBtn: TBitBtn; + MaxItsEdit: TEdit; + InBtn: TBitBtn; + Label4: TLabel; + OutBtn: TBitBtn; + DescChk: TCheckBox; + ProbsChk: TCheckBox; + ItersChk: TCheckBox; + DepVar: TEdit; + GroupBox1: TGroupBox; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + BlockList: TListBox; + VarList: TListBox; + procedure ComputeBtnClick(Sender: TObject); + procedure DepInBtnClick(Sender: TObject); + procedure DepOutBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure InBtnClick(Sender: TObject); + procedure OutBtnClick(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + function ChiSq(x : double; n : integer) : double; + function Norm(z : double): double; + function ix(j, k, nCols : integer): integer; + + private + { private declarations } + public + { public declarations } + end; + +var + LogRegFrm: TLogRegFrm; + +implementation + +{ TLogRegFrm } + +procedure TLogRegFrm.ResetBtnClick(Sender: TObject); +VAR i : integer; +begin + BlockList.Clear; + VarList.Clear; + for i := 1 to NoVariables do + begin + VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); + end; + InBtn.Enabled := true; + OutBtn.Enabled := false; + DepInBtn.Enabled := true; + DepOutBtn.Enabled := false; + ProbsChk.Checked := true; + DescChk.Checked := true; + DepVar.Text := ''; + MaxItsEdit.Text := '20'; +end; + +procedure TLogRegFrm.InBtnClick(Sender: TObject); +VAR i, index : integer; +begin + index := VarList.Items.Count; + i := 0; + while i < index do + begin + if (VarList.Selected[i]) then + begin + BlockList.Items.Add(VarList.Items.Strings[i]); + VarList.Items.Delete(i); + index := index - 1; + i := 0; + end + else i := i + 1; + end; + OutBtn.Enabled := true; +end; + +procedure TLogRegFrm.DepInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + DepVar.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + DepOutBtn.Enabled := true; + DepInBtn.Enabled := false; +end; + +procedure TLogRegFrm.ComputeBtnClick(Sender: TObject); +Label CleanUp; +var + i, j, k, l : integer; + title : string; + cellstring : string; + outline : string; + nR : integer; // no. independent variables + ColNoSelected : IntDyneVec; + nC : integer; // no. cases + nP : integer; // total no. variables + RowLabels, ColLabels : StrDyneVec; + nP1 : integer; // total no. variables plus 1 + sY0, sY1 : integer; // sum of cases with dependent of 0 or 1 + sC : integer; // total count of cases with 0 or 1 + X : DblDyneVec; // data matrix for independent variables + Y0, Y1 : DblDyneVec; // data array for dependent data + xM : DblDyneVec; // variable means + xSD : DblDyneVec; // variable standard deviations + Par : DblDyneVec; // work array + SEP : DblDyneVec; // work array; + Arr : DblDyneVec; // work array; + indx, indx2, indx3 : integer; // indexes for arrays + value : double; + LLp, LL, LLn : double; // log likelihood + v, q : double; // work values + xij, s : double; // work value + CSq : double; // chi square statistic + prob : double; // probability of chi square + ORc, OR1, ORh : double; // Odds ratio values + iters : integer; + Table : array[1..3,1..3] of integer; + row, col : integer; +begin + OutPutFrm.RichEdit.Clear; +// OutPutFrm.RichEdit.ParaGraph.Alignment := taLeftJustify; + OutPutFrm.RichEdit.Lines.Add('Logistic Regression Adapted from John C. Pezzullo'); + OutPutFrm.RichEdit.Lines.Add('Java program at http://members.aol.com/johnp71/logistic.html'); + + { get independent item columns } + nR := BlockList.Items.Count; + nC := NoCases; + SetLength(ColNoSelected,nR + 2); + SetLength(RowLabels,nR + 2); + SetLength(ColLabels,nR + 2); + if nR < 1 then + begin + ShowMessage('ERROR! No independent variables selected.'); + goto CleanUp; + end; + + for i := 1 to nR do + begin + cellstring := BlockList.Items.Strings[i-1]; + for j := 1 to NoVariables do + begin + if cellstring = OS3MainFrm.DataGrid.Cells[j,0] then + begin + ColNoSelected[i] := j; + RowLabels[i] := cellstring; + ColLabels[i] := cellstring; + end; + end; + end; + + { get dependendent variable column } + if DepVar.Text = '' then + begin + ShowMessage('ERROR! No Dependent variable selected.'); + goto CleanUp; + end; + nP := nR + 1; + nP1 := nP + 1; + for j := 1 to NoVariables do + begin + if DepVar.Text = OS3MainFrm.DataGrid.Cells[j,0] then + begin + ColNoSelected[nP] := j; + RowLabels[nP] := OS3MainFrm.DataGrid.Cells[j,0]; + ColLabels[nP] := RowLabels[nP]; + end; + end; + + sY0 := 0; + sY1 := 0; + sC := 0; + SetLength(X,(nC + 1) * (nR + 1)); + SetLength(Y0,nC + 1); + SetLength(Y1,nC + 1); + SetLength(xM,nR + 2); + SetLength(xSD,nR + 2); + SetLength(Par,nP + 1); + SetLength(SEP,nP + 1); + SetLength(Arr,(nP + 1) * (nP1 + 1)); + + // get data + for i := 0 to nC - 1 do + begin + indx := ix(i,0,nR+1); + X[indx] := 1; + for j := 1 to nR do + begin + indx := ColNoSelected[j]; + value := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[indx,i+1])); + indx := ix(i,j,nR + 1); + X[indx] := value; + end; + indx := ColNoSelected[nP]; + value := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[indx,i+1])); + if value = 0 then + begin + Y0[i] := 1; + sY0 := sY0 + 1; + end + else begin + Y1[i] := 1; + sY1 := sY1 + 1; + end; + sC := sC + round(Y0[i] + Y1[i]); + for j := 1 to nR do + begin + indx := ix(i,j,nR + 1); + value := X[indx]; + xM[j] := xM[j] + (Y0[i] + Y1[i]) * value; + xSD[j] := xSD[j] + (Y0[i] + Y1[i]) * value * value; + end; + end; // next case i + + // print descriptive statistics + OutPutFrm.RichEdit.Lines.Add(''); + if DescChk.Checked then + OutPutFrm.RichEdit.Lines.Add('Descriptive Statistics'); + outline := format('%d cases have Y=0; %d cases have Y=1.',[sY0,sY1]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add('Variable Label Average Std.Dev.'); + for j := 1 to nR do + begin + xM[j] := xM[j] / sC; + xSD[j] :=xSD[j] / sC; + xSD[j] := sqrt( abs(xSD[j] - xM[j] * xM[j])); + if DescChk.Checked then + begin + outline := format(' %3d %15s %10.4f %10.4f',[j,RowLabels[j],xM[j],xSD[j]]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + end; + OutPutFrm.RichEdit.Lines.Add(''); + xM[0] := 0.0; + xSD[0] := 1.0; + OutPutFrm.ShowModal; + + // convert independent variable values to z scores + for i := 0 to nC - 1 do + begin + for j := 1 to nR do + begin + indx := ix(i,j,nR + 1); + X[indx] := (X[indx] - xM[j]) / xSD[j]; + end; + end; + + // begin iterations + iters := 0; + if ItersChk.Checked then + OutPutFrm.RichEdit.Lines.Add('Iteration History'); + Par[0] := ln(sY1 / sY0); + for j := 1 to nR do Par[j] := 0.0; + LLp := 2e10; + LL := 1e10; + while abs(LLp-LL) > 0.00001 do + begin + iters := iters + 1; + if iters > StrToInt(MaxItsEdit.Text) then break; + LLp := LL; + LL := 0.0; + for j := 0 to nR do + begin + for k := j to nR + 1 do + begin + indx := ix(j,k,nR+2); + Arr[indx] := 0.0; + end; + end; + for i := 0 to nC - 1 do + begin + value := Par[0]; + for j := 1 to nR do + begin + indx := ix(i,j,nR + 1); + value := value + Par[j] * X[indx]; + end; + value := 1.0 / (1.0 + exp(-value)); + q := value * (1.0 - value); + LL := LL - 2.0 * Y1[i] * ln(value) - 2.0 * Y0[i] * ln(1.0 - value); + for j := 0 to nR do + begin + indx := ix(i,j,nR + 1); + xij := X[indx]; + indx := ix(j,nR + 1, nR + 2); + Arr[indx] := Arr[indx] + xij * ( Y1[i] * (1.0 - value) + Y0[i] * (-value)); + for k := j to nR do + begin + indx := ix(j,k,nR + 2); + indx2 := ix(i,k,nR + 1); + Arr[indx] := Arr[indx] + xij * X[indx2] * q * (Y0[i] + Y1[i]); + end; + end; // next j + end; // next i + outline := format('-2 Log Likelihood = %10.4f ',[LL]); + if LLp = 1.0e10 then + begin + LLn := LL; + outline := outline + ' (Null Model)'; + end; + if ItersChk.Checked then OutPutFrm.RichEdit.Lines.Add(outline); + for j := 1 to nR do + begin + for k := 0 to j-1 do + begin + indx := ix(j,k,nR + 2); + indx2 := ix(k,j,nR + 2); + Arr[indx] := Arr[indx2]; + end; + end; + for i := 0 to nR do + begin + indx := ix(i,i,nR + 2); + s := Arr[indx]; + Arr[indx] := 1.0; + for k := 0 to nR + 1 do + begin + indx := ix(i,k,nR + 2); + Arr[indx] := Arr[indx] / s; + end; + for j := 0 to nR do + begin + if i <> j then + begin + indx := ix(j,i,nR + 2); + s := Arr[indx]; + Arr[indx] := 0.0; + for k := 0 to nR + 1 do + begin + indx2 := ix(j,k,nR + 2); + indx3 := ix(i,k,nR + 2); + Arr[indx2] := Arr[indx2] - s * Arr[indx3]; + end; // next k + end; // if i not equal j + end; // next j + end; // next i + for j := 0 to nR do + begin + indx := ix(j,nR + 1,nR + 2); + Par[j] := Par[j] + Arr[indx]; + end; + end; // iteration + OutPutFrm.RichEdit.Lines.Add('Converged'); + OutPutFrm.ShowModal; + + OutPutFrm.RichEdit.Lines.Add(''); + CSq := LLn - LL; + prob := ChiSq(CSq,nR); + outline := format('Overall Model Fit... Chi Square = %8.4f with df = %3d and prob. = %8.4f', + [Csq, nR, prob]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Coefficients and Standard Errors...'); + OutPutFrm.RichEdit.Lines.Add('Variable Label Coeff. StdErr p'); + for j := 1 to nR do + begin + Par[j] := Par[j] / xSD[j]; + indx := ix(j,j,nP + 1); + SEP[j] := sqrt(Arr[indx]) / xSD[j]; + Par[0] := Par[0] - Par[j] * xM[j]; + prob := Norm(abs(Par[j] / SEP[j])); + outline := format(' %3d %15s %10.4f %10.4f %10.4f',[j,RowLabels[j],Par[j],SEP[j],prob]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.ShowModal; + + outline := format('Intercept %10.4f',[Par[0]]); + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Odds Ratios and 95% Confidence Intervals...'); + OutPutFrm.RichEdit.Lines.Add('Variable O.R. Low -- High'); + for j := 1 to nR do + begin + ORc := exp(Par[j]); + OR1 := exp(Par[j] - 1.96 * SEP[j]); + ORh := exp(Par[j] + 1.96 * SEP[j]); + outline := format('%15s %10.4f %10.4f %10.4f',[RowLabels[j],ORc,OR1,ORh]); + OutPutFrm.RichEdit.Lines.Add(outline); + end; + for i := 1 to 3 do + for j := 1 to 3 do Table[i,j] := 0; + outline := ''; + OutPutFrm.RichEdit.Lines.Add(''); + if ProbsChk.Checked then + begin + for j := 1 to nR do outline := outline + ' X '; + outline := outline + ' Y Prob'; + OutPutFrm.RichEdit.Lines.Add(outline); + for i := 0 to nC - 1 do + begin + value := Par[0]; + outline := ''; + for j := 1 to nR do + begin + indx := ix(i,j,nR + 1); + xij := xM[j] + xSD[j] * X[indx]; + value := value + Par[j] * xij; + outline := outline + format(' %10.4f ',[xij]); + end; + value := 1.0 / (1.0 + exp( -value)); + outline := outline + format('%4.0f %10.4f',[Y1[i],value]); + OutPutFrm.RichEdit.Lines.Add(outline); + if round(Y1[i]) = 0 then row := 1 else row := 2; + if round(value) = 0 then col := 1 else col := 2; + Table[row,col] := Table[row,col] + 1; + end; // next i + end; + for i := 1 to 2 do + begin + for j := 1 to 2 do + begin + Table[i,3] := Table[i,3] + Table[i,j]; + Table[3,j] := Table[3,j] + Table[i,j]; + end; + end; + for i := 1 to 2 do Table[3,3] := Table[3,3] + Table[i,3]; + OutPutFrm.RichEdit.Lines.Add(''); + OutPutFrm.RichEdit.Lines.Add('Classification Table'); + OutPutFrm.RichEdit.Lines.Add(' Predicted'); + OutPutFrm.RichEdit.Lines.Add(' --------------- '); + OutPutFrm.RichEdit.Lines.Add('Observed 0 1 Total'); + OutPutFrm.RichEdit.Lines.Add(' --------------- '); + for i := 1 to 2 do + begin + outline := format(' %d ',[i-1]); + for j := 1 to 3 do outline := outline + format('| %3d ',[Table[i,j]]); + outline := outline + '|'; + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.RichEdit.Lines.Add(' --------------- '); + Outline := 'Total '; + for j := 1 to 3 do outline := outline + format('| %3d ',[Table[3,j]]); + outline := outline + ''; + OutPutFrm.RichEdit.Lines.Add(outline); + OutPutFrm.RichEdit.Lines.Add(' --------------- '); + OutPutFrm.ShowModal; + +cleanup: + Arr := nil; + SEP := nil; + Par := nil; + xSD := nil; + xM := nil; + Y1 := nil; + Y0 := nil; + X := nil; + RowLabels := nil; + ColLabels := nil; + ColNoSelected := nil; +end; + +procedure TLogRegFrm.DepOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(DepVar.Text); + DepVar.Text := ''; + DepInBtn.Enabled := true; +end; + +procedure TLogRegFrm.FormShow(Sender: TObject); +begin + ResetBtnClick(Self); +end; + +procedure TLogRegFrm.OutBtnClick(Sender: TObject); +VAR index : integer; +begin + index := BlockList.ItemIndex; + VarList.Items.Add(BlockList.Items.Strings[index]); + BlockList.Items.Delete(index); + InBtn.Enabled := true; + if BlockList.Items.Count = 0 then OutBtn.Enabled := false; +end; + +function TLogRegFrm.ChiSq(x : double; n : integer) : double; +var + p, t, a : double; + k : integer; + +begin + p := exp(-0.5 * x); + if n mod 2 = 1 then p := p * sqrt(2 * x / Pi); + k := n; + while K >= 2 do + begin + p := p * x / k; + k := k - 2; + end; + t := p; + a := n; + while t > 0.000001 * p do + begin + a := a + 2; + t := t * x / a; + p := p + t; + end; + ChiSq := (1 - p); +end; + +function TLogRegFrm.Norm(z : double): double; +begin + Norm := ChiSq(z * z, 1); +end; + +function TLogRegFrm.ix(j, k, nCols : integer): integer; +begin + ix := j * nCols + k; +end; + +initialization + {$I logregunit.lrs} + +end. + diff --git a/applications/lazstats/source_orig/lsmrunit.lfm b/applications/lazstats/source_orig/lsmrunit.lfm new file mode 100644 index 000000000..ba57d94fd --- /dev/null +++ b/applications/lazstats/source_orig/lsmrunit.lfm @@ -0,0 +1,377 @@ +object LSMregForm: TLSMregForm + Left = 358 + Height = 376 + Top = 150 + Width = 668 + Caption = 'Standard Least-Squares Multiple Regression' + ClientHeight = 376 + ClientWidth = 668 + OnShow = ResetBtnClick + LCLVersion = '0.9.30.4' + object Label1: TLabel + Left = 6 + Height = 16 + Top = 8 + Width = 99 + Caption = 'Available Variables' + ParentColor = False + end + object VarList: TListBox + Left = 6 + Height = 297 + Top = 23 + Width = 161 + ItemHeight = 0 + MultiSelect = True + TabOrder = 0 + end + object DepInBtn: TBitBtn + Left = 176 + Height = 29 + Top = 40 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = DepInBtnClick + TabOrder = 1 + end + object Label2: TLabel + Left = 217 + Height = 16 + Top = 40 + Width = 104 + Caption = 'Dependent Variable' + ParentColor = False + end + object DepVar: TEdit + Left = 216 + Height = 23 + Top = 56 + Width = 146 + TabOrder = 2 + Text = 'DepVar' + end + object Label3: TLabel + Left = 214 + Height = 16 + Top = 112 + Width = 168 + Caption = 'Independent Var.s for this block' + ParentColor = False + end + object Label5: TLabel + Left = 383 + Height = 16 + Top = 11 + Width = 164 + Caption = 'Minimum Prob. to enter block:' + ParentColor = False + end + object GroupBox1: TGroupBox + Left = 400 + Height = 225 + Top = 32 + Width = 226 + Caption = 'Options' + ClientHeight = 207 + ClientWidth = 222 + TabOrder = 3 + object CPChkBox: TCheckBox + Left = 6 + Height = 19 + Top = 1 + Width = 169 + Caption = 'Show Cross-Products Matrix' + TabOrder = 0 + end + object CovChkBox: TCheckBox + Left = 6 + Height = 19 + Top = 22 + Width = 197 + Caption = 'Show Variance-Covariance Matrix' + TabOrder = 1 + end + object CorrsChkBox: TCheckBox + Left = 6 + Height = 19 + Top = 43 + Width = 169 + Caption = 'Show Intercorrelation Matrix' + TabOrder = 2 + end + object MeansChkBox: TCheckBox + Left = 7 + Height = 19 + Top = 64 + Width = 87 + Caption = 'Show Means' + TabOrder = 3 + end + object VarChkBox: TCheckBox + Left = 7 + Height = 19 + Top = 85 + Width = 102 + Caption = 'Show Variances' + TabOrder = 4 + end + object SDChkBox: TCheckBox + Left = 6 + Height = 19 + Top = 109 + Width = 157 + Caption = 'Show Standard Deviations' + TabOrder = 5 + end + object MatSaveChkBox: TCheckBox + Left = 6 + Height = 19 + Top = 132 + Width = 142 + Caption = 'Save Correlation Matrix' + TabOrder = 6 + end + object PredictChkBox: TCheckBox + Left = 7 + Height = 19 + Top = 154 + Width = 195 + Caption = 'Predictions,residuals,C.I.''s to Grid' + TabOrder = 7 + end + end + object ResetBtn: TButton + Left = 400 + Height = 26 + Top = 272 + Width = 66 + Caption = 'Reset' + OnClick = ResetBtnClick + TabOrder = 4 + end + object CancelBtn: TButton + Left = 544 + Height = 26 + Top = 272 + Width = 66 + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 5 + end + object ReturnBtn: TButton + Left = 544 + Height = 26 + Top = 312 + Width = 66 + Caption = 'Return' + ModalResult = 1 + OnClick = ReturnBtnClick + TabOrder = 6 + end + object ComputeBtn: TButton + Left = 400 + Height = 26 + Top = 312 + Width = 66 + Caption = 'Compute' + OnClick = ComputeBtnClick + TabOrder = 7 + end + object IndepVars: TListBox + Left = 214 + Height = 192 + Top = 128 + Width = 150 + ItemHeight = 0 + TabOrder = 8 + end + object DepOutBtn: TBitBtn + Left = 176 + Height = 29 + Top = 72 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = DepOutBtnClick + TabOrder = 9 + end + object InBtn: TBitBtn + Left = 176 + Height = 29 + Top = 144 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE + 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 + 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 + 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 + 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 + 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = InBtnClick + TabOrder = 10 + end + object OutBtn: TBitBtn + Left = 176 + Height = 29 + Top = 176 + Width = 32 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 + 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 + 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 + 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 + 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA + 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF + FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 + 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 + } + NumGlyphs = 0 + OnClick = OutBtnClick + TabOrder = 11 + end + object AllBtn: TBitBtn + Left = 176 + Height = 29 + Top = 216 + Width = 32 + Caption = 'ALL' + NumGlyphs = 0 + OnClick = AllBtnClick + TabOrder = 12 + end + object InProb: TEdit + Left = 552 + Height = 23 + Top = 4 + Width = 44 + TabOrder = 13 + Text = 'InProb' + end +end diff --git a/applications/lazstats/source_orig/lsmrunit.lrs b/applications/lazstats/source_orig/lsmrunit.lrs new file mode 100644 index 000000000..c8a1bded6 --- /dev/null +++ b/applications/lazstats/source_orig/lsmrunit.lrs @@ -0,0 +1,257 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TLSMregForm','FORMDATA',[ + 'TPF0'#11'TLSMregForm'#10'LSMregForm'#4'Left'#3'f'#1#6'Height'#3'x'#1#3'Top'#3 + +#150#0#5'Width'#3#156#2#7'Caption'#6'*Standard Least-Squares Multiple Regres' + +'sion'#12'ClientHeight'#3'x'#1#11'ClientWidth'#3#156#2#6'OnShow'#7#13'ResetB' + +'tnClick'#10'LCLVersion'#6#8'0.9.30.4'#0#6'TLabel'#6'Label1'#4'Left'#2#6#6'H' + +'eight'#2#16#3'Top'#2#8#5'Width'#2'c'#7'Caption'#6#19'Available Variables'#11 + +'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#6#6'Height'#3')'#1#3'To' + +'p'#2#23#5'Width'#3#161#0#10'ItemHeight'#2#0#11'MultiSelect'#9#8'TabOrder'#2 + +#0#0#0#7'TBitBtn'#8'DepInBtn'#4'Left'#3#176#0#6'Height'#2#29#3'Top'#2'('#5'W' + +'idth'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0 + +'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0 + +#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)' + +#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190 + +'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255 + +'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139 + +'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160 + +#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255 + +#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128 + +#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199 + +'t'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150 + +#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255 + +#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255 + +#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255 + +'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163 + +'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247 + +';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187 + +'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnCl' + +'ick'#7#13'DepInBtnClick'#8'TabOrder'#2#1#0#0#6'TLabel'#6'Label2'#4'Left'#3 + +#217#0#6'Height'#2#16#3'Top'#2'('#5'Width'#2'h'#7'Caption'#6#18'Dependent Va' + +'riable'#11'ParentColor'#8#0#0#5'TEdit'#6'DepVar'#4'Left'#3#216#0#6'Height'#2 + +#23#3'Top'#2'8'#5'Width'#3#146#0#8'TabOrder'#2#2#4'Text'#6#6'DepVar'#0#0#6'T' + +'Label'#6'Label3'#4'Left'#3#214#0#6'Height'#2#16#3'Top'#2'p'#5'Width'#3#168#0 + +#7'Caption'#6' Independent Var.s for this block'#11'ParentColor'#8#0#0#6'TLa' + ,'bel'#6'Label5'#4'Left'#3#127#1#6'Height'#2#16#3'Top'#2#11#5'Width'#3#164#0#7 + +'Caption'#6#29'Minimum Prob. to enter block:'#11'ParentColor'#8#0#0#9'TGroup' + +'Box'#9'GroupBox1'#4'Left'#3#144#1#6'Height'#3#225#0#3'Top'#2' '#5'Width'#3 + +#226#0#7'Caption'#6#7'Options'#12'ClientHeight'#3#207#0#11'ClientWidth'#3#222 + +#0#8'TabOrder'#2#3#0#9'TCheckBox'#8'CPChkBox'#4'Left'#2#6#6'Height'#2#19#3'T' + +'op'#2#1#5'Width'#3#169#0#7'Caption'#6#26'Show Cross-Products Matrix'#8'TabO' + +'rder'#2#0#0#0#9'TCheckBox'#9'CovChkBox'#4'Left'#2#6#6'Height'#2#19#3'Top'#2 + +#22#5'Width'#3#197#0#7'Caption'#6#31'Show Variance-Covariance Matrix'#8'TabO' + +'rder'#2#1#0#0#9'TCheckBox'#11'CorrsChkBox'#4'Left'#2#6#6'Height'#2#19#3'Top' + +#2'+'#5'Width'#3#169#0#7'Caption'#6#28'Show Intercorrelation Matrix'#8'TabOr' + +'der'#2#2#0#0#9'TCheckBox'#11'MeansChkBox'#4'Left'#2#7#6'Height'#2#19#3'Top' + +#2'@'#5'Width'#2'W'#7'Caption'#6#10'Show Means'#8'TabOrder'#2#3#0#0#9'TCheck' + +'Box'#9'VarChkBox'#4'Left'#2#7#6'Height'#2#19#3'Top'#2'U'#5'Width'#2'f'#7'Ca' + +'ption'#6#14'Show Variances'#8'TabOrder'#2#4#0#0#9'TCheckBox'#8'SDChkBox'#4 + +'Left'#2#6#6'Height'#2#19#3'Top'#2'm'#5'Width'#3#157#0#7'Caption'#6#24'Show ' + +'Standard Deviations'#8'TabOrder'#2#5#0#0#9'TCheckBox'#13'MatSaveChkBox'#4'L' + +'eft'#2#6#6'Height'#2#19#3'Top'#3#132#0#5'Width'#3#142#0#7'Caption'#6#23'Sav' + +'e Correlation Matrix'#8'TabOrder'#2#6#0#0#9'TCheckBox'#13'PredictChkBox'#4 + +'Left'#2#7#6'Height'#2#19#3'Top'#3#154#0#5'Width'#3#195#0#7'Caption'#6'$Pred' + +'ictions,residuals,C.I.''s to Grid'#8'TabOrder'#2#7#0#0#0#7'TButton'#8'Reset' + +'Btn'#4'Left'#3#144#1#6'Height'#2#26#3'Top'#3#16#1#5'Width'#2'B'#7'Caption'#6 + +#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#4#0#0#7'TButton'#9'Ca' + +'ncelBtn'#4'Left'#3' '#2#6'Height'#2#26#3'Top'#3#16#1#5'Width'#2'B'#7'Captio' + +'n'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#5#0#0#7'TButton'#9'ReturnB' + +'tn'#4'Left'#3' '#2#6'Height'#2#26#3'Top'#3'8'#1#5'Width'#2'B'#7'Caption'#6#6 + +'Return'#11'ModalResult'#2#1#7'OnClick'#7#14'ReturnBtnClick'#8'TabOrder'#2#6 + +#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#144#1#6'Height'#2#26#3'Top'#3'8'#1#5 + +'Width'#2'B'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabO' + +'rder'#2#7#0#0#8'TListBox'#9'IndepVars'#4'Left'#3#214#0#6'Height'#3#192#0#3 + +'Top'#3#128#0#5'Width'#3#150#0#10'ItemHeight'#2#0#8'TabOrder'#2#8#0#0#7'TBit' + +'Btn'#9'DepOutBtn'#4'Left'#3#176#0#6'Height'#2#29#3'Top'#2'H'#5'Width'#2' ' + +#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16 + +#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8' + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255 + +'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%' + +'i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200 + +#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139 + +#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v' + +#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201 + +#127#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159 + +#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197 + +#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X' + +#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B' + +#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255 + +#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255 + ,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14 + +'DepOutBtnClick'#8'TabOrder'#2#9#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#176#0#6'H' + +'eight'#2#29#3'Top'#3#144#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0 + +'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4 + +#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\' + +#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?' + +#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0 + +#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255 + +#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137 + +#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255 + +#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158 + +#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255 + +#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255 + +'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q' + +#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G' + +#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + ,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'InBtnClick'#8'TabOrder'#2#10 + +#0#0#7'TBitBtn'#6'OutBtn'#4'Left'#3#176#0#6'Height'#2#29#3'Top'#3#176#0#5'Wi' + +'dth'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'(' + +#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0 + +#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247 + +'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'[' + +#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255 + +'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q' + +#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206 + +#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z' + +#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0 + +'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212#163 + +#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199 + +#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0 + +#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']' + +#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I' + +#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255 + +#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255 + +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255 + +#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0 + +#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7 + +'OnClick'#7#11'OutBtnClick'#8'TabOrder'#2#11#0#0#7'TBitBtn'#6'AllBtn'#4'Left' + +#3#176#0#6'Height'#2#29#3'Top'#3#216#0#5'Width'#2' '#7'Caption'#6#3'ALL'#9'N' + +'umGlyphs'#2#0#7'OnClick'#7#11'AllBtnClick'#8'TabOrder'#2#12#0#0#5'TEdit'#6 + +'InProb'#4'Left'#3'('#2#6'Height'#2#23#3'Top'#2#4#5'Width'#2','#8'TabOrder'#2 + +#13#4'Text'#6#6'InProb'#0#0#0 +]); diff --git a/applications/lazstats/source_orig/lsmrunit.pas b/applications/lazstats/source_orig/lsmrunit.pas new file mode 100644 index 000000000..76ef1a81c --- /dev/null +++ b/applications/lazstats/source_orig/lsmrunit.pas @@ -0,0 +1,358 @@ +unit LSMRunit; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, Globals, MainUnit, MatrixLib, OutPutUnit, + FunctionsLib, DataProcs, DictionaryUnit; + +type + + { TLSMregForm } + + TLSMregForm = class(TForm) + AllBtn: TBitBtn; + IndepVars: TListBox; + CancelBtn: TButton; + ComputeBtn: TButton; + CorrsChkBox: TCheckBox; + CovChkBox: TCheckBox; + CPChkBox: TCheckBox; + DepInBtn: TBitBtn; + DepOutBtn: TBitBtn; + DepVar: TEdit; + GroupBox1: TGroupBox; + InBtn: TBitBtn; + InProb: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label5: TLabel; + MatSaveChkBox: TCheckBox; + MeansChkBox: TCheckBox; + SaveDialog1: TSaveDialog; + OutBtn: TBitBtn; + PredictChkBox: TCheckBox; + ResetBtn: TButton; + ReturnBtn: TButton; + SDChkBox: TCheckBox; + VarChkBox: TCheckBox; + VarList: TListBox; + procedure AllBtnClick(Sender: TObject); + procedure CancelBtnClick(Sender: TObject); + procedure ComputeBtnClick(Sender: TObject); + procedure DepInBtnClick(Sender: TObject); + procedure DepOutBtnClick(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure InBtnClick(Sender: TObject); + procedure OutBtnClick(Sender: TObject); + procedure ResetBtnClick(Sender: TObject); + procedure ReturnBtnClick(Sender: TObject); + + private + { private declarations } + IndepVarsCols : IntDyneVec; + NoVars : integer; + NoBlocks : integer; + public + { public declarations } + end; + +var + LSMregForm: TLSMregForm; + +implementation + + procedure TLSMregForm.ResetBtnClick(Sender: TObject); + VAR i : integer; + begin + IndepVars.Items.Clear; + VarList.Items.Clear; + NoBlocks := 1; + for i := 1 to NoVariables do + begin + VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); + end; + InBtn.Enabled := true; + OutBtn.Enabled := false; + DepInBtn.Enabled := true; + DepOutBtn.Enabled := false; + CPChkBox.Checked := false; + CovChkBox.Checked := false; + CorrsChkBox.Checked := true; + MeansChkBox.Checked := true; + VarChkBox.Checked := false; + SDChkBox.Checked := true; + MatSaveChkBox.Checked := false; + PredictChkBox.Checked := false; +// HeteroChk.Checked := false; + NoVars := 0; + DepVar.Text := ''; + InProb.Text := '0.05'; + SetLength(IndepVarsCols,NoVariables+1); + end; + +procedure TLSMregForm.ReturnBtnClick(Sender: TObject); +begin + LSMregForm.Hide; +end; + + procedure TLSMregForm.FormShow(Sender: TObject); + begin + ResetBtnClick(self); + end; + + procedure TLSMregForm.AllBtnClick(Sender: TObject); + VAR count, index : integer; + begin + count := VarList.Items.Count; + for index := 0 to count-1 do + begin + IndepVars.Items.Add(VarList.Items.Strings[index]); + end; + VarList.Clear; + end; + + procedure TLSMregForm.CancelBtnClick(Sender: TObject); + begin + if IndepVarsCols <> nil then IndepVarsCols := nil; + LSMregForm.Hide; + end; + +procedure TLSMregForm.ComputeBtnClick(Sender: TObject); +Label CleanUp; +var + i, j, k, col, mattype, NCases, anerror : integer; + NoIndepVars, DepVarCol, NEntered, StepNo : integer; + R2, df1, df2, Y, z, BPG, chiprob : double; + StdErrEst, F, FProbF, OldR2 : double; + pdf1, pdf2, probin, prout : double; + errorcode : boolean; + BetaWeights : DblDyneVec; + BWeights : DblDyneVec; + BStdErrs : DblDyneVec; + Bttests : DblDyneVec; + tProbs : DblDyneVec; + cellstring, outline : string; + corrs : DblDyneMat; + Means : DblDyneVec; + Variances : DblDyneVec; + StdDevs : DblDyneVec; + title : string; + IndRowLabels : StrDyneVec; + IndColLabels : StrDyneVec; + IndepInverse : DblDyneMat; + XYCorrs : DblDyneVec; + Partial : DblDyneVec; + ColEntered : IntDyneVec; + filename : string; + constant : double; + errcode : boolean; +begin + NCases := NoCases; + SetLength(corrs,NoVariables+1,NoVariables+1); + SetLength(IndepInverse,NoVariables,NoVariables+1); + SetLength(IndepVarsCols,NoVariables+1); + SetLength(BWeights,NoVariables+1); + SetLength(BStdErrs,NoVariables+1); + SetLength(Bttests,NoVariables+1); + SetLength(tProbs,NoVariables+1); + SetLength(Means,NoVariables+1); + SetLength(Variances,NoVariables+1); + SetLength(StdDevs,NoVariables+1); + SetLength(IndepVarsCols,NoVariables+1); + SetLength(IndColLabels,NoVariables+1); + SetLength(IndRowLabels,NoVariables+1); + SetLength(BetaWeights,NoVariables+1); + SetLength(ColEntered,NoVariables+2); + probin := StrToFloat(InProb.Text); // probability to include a block + prout := 1.0; + OutPutFrm.RichEdit.Clear; + OutPutFrm.RichEdit.Lines.Add('Least Squares Multiple Regression by Bill Miller'); + errorcode := false; + + { get dependendent variable column } + if DepVar.Text = '' then + begin + ShowMessage('ERROR! No Dependent variable selected.'); + goto CleanUp; + end; + DepVarCol := 0; + NoVars := NoVars + 1; + for j := 1 to NoVariables do + if DepVar.Text = OS3MainFrm.DataGrid.Cells[j,0] then DepVarCol := j; + R2 := 0.0; + OldR2 := 0.0; + pdf1 := 0.0; + pdf2 := 0.0; + NEntered := 0; + for i := 0 to IndepVars.Count-1 do + begin + cellstring := OS3Mainfrm.DataGrid.Cells[i+1,0]; + for j := 1 to NoVariables do + begin + if cellstring = OS3MainFrm.DataGrid.Cells[j,0] then + begin + IndepVarsCols[i] := j; + ColEntered[i] := j; + NEntered := NEntered + 1; + IndRowLabels[NEntered-1] := cellstring; + IndColLabels[NEntered-1] := cellstring; + end; + end; + end; + NEntered := NEntered + 1; // dependent variable last + ColEntered[NEntered-1] := DepVarCol; + IndRowLabels[NEntered-1] := OS3MainFrm.DataGrid.Cells[DepVarCol,0]; + IndColLabels[NEntered-1] := OS3MainFrm.DataGrid.Cells[DepVarCol,0]; + OutPutFrm.RichEdit.Lines.Add(''); + if CPChkBox.Checked = true then + begin + title := 'Cross-Products Matrix'; + GridXProd(NEntered,ColEntered,Corrs,errcode,NCases); + MAT_PRINT(Corrs,NEntered,NEntered,title,IndRowLabels,IndColLabels,NCases); + end; + if CovChkBox.Checked = true then + begin + title := 'Variance-Covariance Matrix'; + GridCovar(NEntered,ColEntered,Corrs,Means,Variances, + StdDevs,errcode,NCases); + MAT_PRINT(Corrs,NEntered,NEntered,title,IndRowLabels,IndColLabels,NCases); + end; + Correlations(NEntered,ColEntered,Corrs,Means,Variances, StdDevs,errcode,NCases); + if CorrsChkBox.Checked = true then + begin + title := 'Product-Moment Correlations Matrix'; + MAT_PRINT(Corrs,NEntered,NEntered,title,IndRowLabels,IndColLabels,NCases); + end; + title := 'Means'; + if MeansChkBox.Checked = true then + DynVectorPrint(Means,NEntered,title,IndColLabels,NCases); + title := 'Variances'; + if VarChkBox.Checked = true then + DynVectorPrint(Variances,NEntered,title,IndColLabels,NCases); + title := 'Standard Deviations'; + if SDChkBox.Checked = true then + DynVectorPrint(StdDevs,NEntered,title,IndColLabels,NCases); + if errorcode = true then + begin + ShowMessage('ERROR! A selected variable has no variability-run aborted.'); + goto CleanUp; + end; + NoIndepVars := NEntered - 1; + + MReg(NoIndepVars,ColEntered,DepVarCol,IndRowLabels,Means,Variances, + StdDevs,BWeights,BetaWeights,BStdErrs,Bttests,tProbs,R2,StdErrEst, + NCases,errorcode,true); + df1 := NoIndepVars - pdf1; + df2 := NCases - NoIndepVars - 1; + F := ((R2 - OldR2) / (1.0 - R2)) * df2 / df1; + FProbF := probf(F,df1,df2); + if FProbF < probin then + begin + outline := 'Entry requirements met'; + OutPutFrm.RichEdit.Lines.Add(outline); + end + else + begin + outline := 'Entry requirements not met'; + OutPutFrm.RichEdit.Lines.Add(outline); + end; + OutPutFrm.ShowModal; + OutPutFrm.RichEdit.Clear; + + { add [predicted scores, residual scores, etc. to grid if options elected } + if PredictChkBox.Checked = true then + begin + prout := 1.0; + Correlations(NEntered,ColEntered,Corrs,Means,Variances, + StdDevs,errcode,NCases); + + MReg2(NCases,NEntered,NoIndepVars,ColEntered,corrs,IndepInverse, + IndRowLabels,R2,BetaWeights, + Means,Variances,anerror,StdErrEst,constant,prout,true, false,false); + + Predict(ColEntered, NEntered, IndepInverse, Means, StdDevs, + BetaWeights, StdErrEst, IndepVarsCols, NoIndepVars); + end; +// OutPutFrm.ShowModal; +// OutPutFrm.RichEdit.Clear; + + if MatSaveChkBox.Checked = true then + begin + SaveDialog1.Filter := 'FreeStat matrix files (*.MAT)|*.MAT|All files (*.*)|*.*'; + SaveDialog1.FilterIndex := 1; + if SaveDialog1.Execute then + begin + filename := SaveDialog1.FileName; + MATSAVE(Corrs,NoVars,NoVars,Means,StdDevs,NCases,IndRowLabels,IndColLabels,filename); + end; + end; +// OutPutFrm.ShowModal; +CleanUp: + ColEntered := nil; + BetaWeights := nil; + IndColLabels := nil; + IndRowLabels := nil; + StdDevs := nil; + Variances := nil; + Means := nil; + IndepInverse := nil; + corrs := nil; + IndepVarsCols := nil; +end; + +procedure TLSMregForm.DepInBtnClick(Sender: TObject); +VAR index : integer; +begin + index := VarList.ItemIndex; + DepVar.Text := VarList.Items.Strings[index]; + VarList.Items.Delete(index); + DepOutBtn.Enabled := true; + DepInBtn.Enabled := false; +end; + +procedure TLSMregForm.DepOutBtnClick(Sender: TObject); +begin + VarList.Items.Add(DepVar.Text); + DepVar.Text := ''; + DepInBtn.Enabled := true; +end; + +procedure TLSMregForm.InBtnClick(Sender: TObject); +VAR i, index : integer; +begin + index := VarList.Items.Count; + i := 0; + while i < index do + begin + if (VarList.Selected[i]) then + begin + IndepVars.Items.Add(VarList.Items.Strings[i]); + VarList.Items.Delete(i); + index := index - 1; + i := 0; + end + else i := i + 1; + end; + OutBtn.Enabled := true; +end; + +procedure TLSMregForm.OutBtnClick(Sender: TObject); +VAR index : integer; +begin + index := IndepVars.ItemIndex; + VarList.Items.Add(IndepVars.Items.Strings[index]); + IndepVars.Items.Delete(index); + InBtn.Enabled := true; + if IndepVars.Items.Count = 0 then OutBtn.Enabled := false; +end; + +initialization + {$I lsmrunit.lrs} + +end. +