library(tidyverse)
library(plotly)
library(ggplot2)
library(ggfortify)
library(ggpubr)
library(sciplot)
library(lsr)
library(knitr)
                                                    **Abstract**

This survey analysis was performed with scales obtained from the Becks Cognitive Insight Scale (Beck, Bauruch, Balter, Steer, & Warman, 2004) and The Centrality of Religiosity Scale (Huber & Huber, 2012) to see if there is a relationship between the participants Insight and Religiosity. This survey collected 45 participants. Additionally, the study looked at the relationship between Age and Gender with Insight and Religiosity scores. In addition to a plot that shows the approximate scores of each participant a linear regression was performed. In addition the the regression analysis a One-Way ANOVA were performed to examine the similar concept. A One-Way ANOVA were then Performed followed by an ANCOVA and MANOVA. There were no significance in any of the analysis performed. This could be due to the small sample size and poor diversity among the population.

                                                    **Methods**

A bar graph were used to represent the overall scores of each participant. A regression analysis were then performed to analyze the relationship between the Religiosity (R Totals) and Insight (I Totals) scores. A One-Way ANOVA was then performed to also assess the relationship between Religiosity and Insight Scores. This was then followed by a Three-Way ANOVA to assess the relationship between the Religiosity scores, Age, and Gender to the Insight scores. Lastly, A MANOVA analysis were performed to combine the Religiosity and Insight scores to compare the relationship with the Age and Gender variables.

                                                    **Results**
summary(FaithandInsight)
    Subnum              Gender           Age              I1              I2       
 Length:45          Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 Class :character   1st Qu.:2.000   1st Qu.:1.000   1st Qu.:2.000   1st Qu.:2.000  
 Mode  :character   Median :2.000   Median :1.000   Median :2.000   Median :2.000  
                    Mean   :1.778   Mean   :2.267   Mean   :2.556   Mean   :2.333  
                    3rd Qu.:2.000   3rd Qu.:4.000   3rd Qu.:3.000   3rd Qu.:3.000  
                    Max.   :3.000   Max.   :5.000   Max.   :4.000   Max.   :4.000  
       I3              I4              I5            I6              I7       
 Min.   :1.000   Min.   :1.000   Min.   :1.0   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:2.000   1st Qu.:1.0   1st Qu.:2.000   1st Qu.:1.000  
 Median :2.000   Median :2.000   Median :2.0   Median :2.000   Median :2.000  
 Mean   :1.711   Mean   :2.356   Mean   :1.8   Mean   :2.244   Mean   :2.067  
 3rd Qu.:2.000   3rd Qu.:3.000   3rd Qu.:2.0   3rd Qu.:3.000   3rd Qu.:3.000  
 Max.   :4.000   Max.   :4.000   Max.   :3.0   Max.   :4.000   Max.   :4.000  
       I8              I9             I10             I11             I12       
 Min.   :2.000   Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:2.000   1st Qu.:2.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:2.000  
 Median :3.000   Median :3.000   Median :2.000   Median :2.000   Median :3.000  
 Mean   :3.178   Mean   :2.889   Mean   :1.622   Mean   :2.022   Mean   :2.444  
 3rd Qu.:4.000   3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:2.000   3rd Qu.:3.000  
 Max.   :4.000   Max.   :4.000   Max.   :3.000   Max.   :4.000   Max.   :4.000  
      I13           I14             I15            ITotal            18       
 Min.   :1.0   Min.   :2.000   Min.   :1.000   Min.   :29.00   Min.   :1.000  
 1st Qu.:2.0   1st Qu.:3.000   1st Qu.:3.000   1st Qu.:34.00   1st Qu.:2.000  
 Median :3.0   Median :4.000   Median :3.000   Median :37.00   Median :2.000  
 Mean   :2.4   Mean   :3.444   Mean   :3.556   Mean   :36.51   Mean   :2.822  
 3rd Qu.:3.0   3rd Qu.:4.000   3rd Qu.:5.000   3rd Qu.:40.00   3rd Qu.:5.000  
 Max.   :4.0   Max.   :4.000   Max.   :6.000   Max.   :44.00   Max.   :6.000  
       19              20              21              22              23       
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   :1.000  
 1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000  
 Median :2.000   Median :3.000   Median :1.000   Median :2.000   Median :1.000  
 Mean   :2.333   Mean   :3.444   Mean   :2.067   Mean   :2.267   Mean   :1.667  
 3rd Qu.:3.000   3rd Qu.:6.000   3rd Qu.:3.000   3rd Qu.:3.000   3rd Qu.:2.000  
 Max.   :6.000   Max.   :6.000   Max.   :6.000   Max.   :7.000   Max.   :5.000  
       24              25              26            RTotal          Total      
 Min.   :1.000   Min.   :1.000   Min.   :1.000   Min.   : 9.00   Min.   :40.00  
 1st Qu.:1.000   1st Qu.:1.000   1st Qu.:1.000   1st Qu.:15.00   1st Qu.:50.00  
 Median :2.000   Median :1.000   Median :2.000   Median :21.00   Median :59.00  
 Mean   :2.667   Mean   :1.778   Mean   :2.956   Mean   :21.98   Mean   :58.49  
 3rd Qu.:3.000   3rd Qu.:2.000   3rd Qu.:4.000   3rd Qu.:28.00   3rd Qu.:64.00  
 Max.   :7.000   Max.   :7.000   Max.   :6.000   Max.   :40.00   Max.   :81.00  

This is a summary of the data by column and questions.

ggplot(FaithandInsight, aes(x = Subnum, y = Total)) + 
  geom_col() +
  geom_rug() +
  labs(title = "Overall Participant Scores", x = "Participant") +
  stat_smooth(method = "lm", col = 'red')
`geom_smooth()` using formula = 'y ~ x'

Figure 1.1 Indicates the total of each participant. The lowest scores were around 40. The highest were around 80.

regression.model <- lm( ITotal~ RTotal, data = FaithandInsight)
 summary.lm( regression.model )

Call:
lm(formula = ITotal ~ RTotal, data = FaithandInsight)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.6896 -2.6006  0.3994  3.2391  7.3816 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 36.11962    1.46466  24.661   <2e-16 ***
RTotal       0.01781    0.06103   0.292    0.772    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.947 on 43 degrees of freedom
Multiple R-squared:  0.001977,  Adjusted R-squared:  -0.02123 
F-statistic: 0.08519 on 1 and 43 DF,  p-value: 0.7718

The regression F statistic (0.08519) indicates that there is low variability. However the P value (0.7718) indicates there is not any significance of the Religiosity scores(R Total) effecting the Insight scores(I Total).

autoplot(regression.model)

Figure 1.2 These graphs represents the regression model and indicate that the distributions of scores are too spread out to indicate a correlation between the Religiosity scores and the Insight scores.

aov.model <- aov(formula = ITotal ~ RTotal, data = FaithandInsight)
summary(aov.model)
            Df Sum Sq Mean Sq F value Pr(>F)
RTotal       1    1.3   1.327   0.085  0.772
Residuals   43  669.9  15.579               

This One-Way ANOVA and the P value (0.772) indicate there is not any significance of the Religiosity scores (R Total) effecting the Insight scores (I Total).

autoplot(aov.model)

Figure 1.3 These graphs represent the One-Way ANOVA and indicate that the distributions of scores are too spread out to indicate a correlation between the Religiosity scores and the Insight scores.

aov.model2 <- aov(formula = ITotal ~ RTotal + Age + Gender, data = FaithandInsight)
summary.aov(aov.model2)
            Df Sum Sq Mean Sq F value Pr(>F)
RTotal       1    1.3   1.327   0.085  0.773
Age          1    8.0   7.971   0.508  0.480
Gender       1   18.2  18.210   1.160  0.288
Residuals   41  643.7  15.701               

The Three-way ANOVA and the Religiosity (R Total) P value of (.773), Age P value of (.480), and Gender P value of (.288) indicate there is not any significance of the Religiosity, Age, or Gender Variables effecting the Insight scores(I Total).

ggplot(aov.model2, aes(group = Age, x =RTotal, y = ITotal, color = factor(Age, labels = c("18-30", 
    "31-40", "41-50", "51-60", "60+")))) + 
  theme(legend.text = element_text(colour="Black", size = 16, face = "bold")) +
  theme(legend.background = element_rect(colour = 'Dark Blue', fill = 'Green', size = 3)) +
  geom_boxplot() +
  labs(color = "Age") +
labs(title= "Scores by Age Groups") 
Warning: The `size` argument of `element_rect()` is deprecated as of ggplot2 3.4.0.
ℹ Please use the `linewidth` argument instead.
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
generated.

Figure 1.4 Represents the Three-Way ANOVA and indicates that the highest scoring group of participants were in the 18-30 range and the least in the 31-40 range. Those in the 60+ range scored higher on Insight. Those in the 18-30 were second highest on Insight. There is little variation from the mean.

`geom_smooth()` using formula = 'y ~ x'

Figure 1.5 Represents the Three-Way ANOVA with a focus on Gender and indicates that female participants scored higher on Insight. There is little variation from the mean.

manova.model <- manova(cbind(ITotal, RTotal) ~  Age*Gender, data = FaithandInsight)
summary(manova.model, test = "Wilks")
           Df   Wilks approx F num Df den Df Pr(>F)
Age         1 0.94400   1.1864      2     40 0.3158
Gender      1 0.94253   1.2195      2     40 0.3061
Age:Gender  1 0.94715   1.1159      2     40 0.3376
Residuals  41                                      

This Two-way MANOVA indicates that the variables of Age and Gender fit the model well with little discrimination as indicated by the Wilks test scores being under 1. However the P value for Gender (.3061), and the P value for Age (.3158) indicate there in no significant in any of the variables to Religiosity or Insight.

ggplot(manova.model, aes(x = Age, y = Gender, color = factor(Gender, labels = c("Male", 
    "Female", "Decline to Answer")))) + 
  geom_violin() +
  scale_x_continuous(labels =c("1" = "18-30", "2" = "31-40", "3" = "41-50", "4" = "51-60", "5" = "60+")) +
  labs(color = "Gender") +
  labs(title= "Gender Focus") +
  stat_smooth(method = "aov", col = "red")
Warning: Groups with fewer than two datapoints have been dropped.
ℹ Set `drop = FALSE` to consider such groups for position adjustment purposes.
`geom_smooth()` using formula = 'y ~ x'

Figure 1.6 Represents the MANOVA measuring the relationship of Age and Gender to Religiosity and Insight. It appears that females in the 18-31 range scored the highest on Religiosity and Insight. Males from the 41-60 range scored highest for their group.

ggplot(manova.model, aes(x = Age, y = Gender, color = factor(Age, labels = c("18-30", "31-40", "41-50", "51-60", "60+")))) + 
  geom_violin() +
  labs(color = "Age") +
  labs(title= "Age Focus") +
  stat_smooth(method = "aov", col = "red")
`geom_smooth()` using formula = 'y ~ x'

Figure 1.7 Represents the Age perspective of the above MANOVA and indicates that those in the 41-50 range scored the lowest on Religiosity and Insight while those in the 18-30 range scored the highest.

 
                                                    **Discussion**

The Overall goal of this study is to see if there is a relationship between ones Insight and how Religious the participants are. In this Regard there was no evidence found to support that hypothesis. With the small sample collected it was discovered that participants in the 18-30 age group scored the highest on Insight and Religiosity. The 41-50 and the group that scored the least on Insight and Religiosity were those in the age group of 31-40. It was also found that females scored higher on both Religiosity and Insight scales. There was no significant correlation found between Age or Gender on Religiosity or Insight. In the future this study could yield better results with a larger sample size and a more diverse distribution among age. In the future switching the primary scale looked at from the Insight scores to the Religiosity scores would be beneficial for a better overall picture.


                                                   **Work Cited**
                              

Beck, A. T., Bauruch, E., Balter, J. M., Steer, R. A., & Warman, D. M. (2004). A new instrument for measuring insight: the Beck Cognitive Insight Scale. Elsevier, 319-329. Huber, S., & Huber, O. W. (2012). The Centrality of Religiosity Scale. Religions, 710-724.

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IGRlZmF1bHQKICBwZGZfZG9jdW1lbnQ6IAogICAga2VlcF90ZXg6IHRydWUKICBodG1sX2RvY3VtZW50OgogICAgZGZfcHJpbnQ6IG91dHB1dAotLS0KCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShwbG90bHkpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShnZ2ZvcnRpZnkpCmxpYnJhcnkoZ2dwdWJyKQpsaWJyYXJ5KHNjaXBsb3QpCmxpYnJhcnkobHNyKQpsaWJyYXJ5KGtuaXRyKQpgYGAKCmBgYCAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipBYnN0cmFjdCoqCmBgYAoKVGhpcyBzdXJ2ZXkgYW5hbHlzaXMgd2FzIHBlcmZvcm1lZCB3aXRoIHNjYWxlcyBvYnRhaW5lZCBmcm9tIHRoZSBCZWNrcyBDb2duaXRpdmUgSW5zaWdodCBTY2FsZSAoQmVjaywgQmF1cnVjaCwgQmFsdGVyLCBTdGVlciwgJiBXYXJtYW4sIDIwMDQpIGFuZCBUaGUgQ2VudHJhbGl0eSBvZiBSZWxpZ2lvc2l0eSBTY2FsZSAoSHViZXIgJiBIdWJlciwgMjAxMikgdG8gc2VlIGlmIHRoZXJlIGlzIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHBhcnRpY2lwYW50cyBJbnNpZ2h0IGFuZCBSZWxpZ2lvc2l0eS4gVGhpcyBzdXJ2ZXkgY29sbGVjdGVkIDQ1IHBhcnRpY2lwYW50cy4gQWRkaXRpb25hbGx5LCB0aGUgc3R1ZHkgbG9va2VkIGF0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBBZ2UgYW5kIEdlbmRlciB3aXRoIEluc2lnaHQgYW5kIFJlbGlnaW9zaXR5IHNjb3Jlcy4gSW4gYWRkaXRpb24gdG8gYSBwbG90IHRoYXQgc2hvd3MgdGhlIGFwcHJveGltYXRlIHNjb3JlcyBvZiBlYWNoIHBhcnRpY2lwYW50IGEgbGluZWFyIHJlZ3Jlc3Npb24gd2FzIHBlcmZvcm1lZC4gSW4gYWRkaXRpb24gdGhlIHRoZSByZWdyZXNzaW9uIGFuYWx5c2lzIGEgT25lLVdheSBBTk9WQSB3ZXJlIHBlcmZvcm1lZCB0byBleGFtaW5lIHRoZSBzaW1pbGFyIGNvbmNlcHQuIEEgT25lLVdheSBBTk9WQSB3ZXJlIHRoZW4gUGVyZm9ybWVkIGZvbGxvd2VkIGJ5IGFuIEFOQ09WQSBhbmQgTUFOT1ZBLiBUaGVyZSB3ZXJlIG5vIHNpZ25pZmljYW5jZSBpbiBhbnkgb2YgdGhlIGFuYWx5c2lzIHBlcmZvcm1lZC4gVGhpcyBjb3VsZCBiZSBkdWUgdG8gdGhlIHNtYWxsIHNhbXBsZSBzaXplIGFuZCBwb29yIGRpdmVyc2l0eSBhbW9uZyB0aGUgcG9wdWxhdGlvbi4KCmBgYAoKYGBgCgpgYGAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqTWV0aG9kcyoqCmBgYAoKQSBiYXIgZ3JhcGggd2VyZSB1c2VkIHRvIHJlcHJlc2VudCB0aGUgb3ZlcmFsbCBzY29yZXMgb2YgZWFjaCBwYXJ0aWNpcGFudC4gQSByZWdyZXNzaW9uIGFuYWx5c2lzIHdlcmUgdGhlbiBwZXJmb3JtZWQgdG8gYW5hbHl6ZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIFJlbGlnaW9zaXR5IChSIFRvdGFscykgYW5kIEluc2lnaHQgKEkgVG90YWxzKSBzY29yZXMuIEEgT25lLVdheSBBTk9WQSB3YXMgdGhlbiBwZXJmb3JtZWQgdG8gYWxzbyBhc3Nlc3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIFJlbGlnaW9zaXR5IGFuZCBJbnNpZ2h0IFNjb3Jlcy4gVGhpcyB3YXMgdGhlbiBmb2xsb3dlZCBieSBhIFRocmVlLVdheSBBTk9WQSB0byBhc3Nlc3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBSZWxpZ2lvc2l0eSBzY29yZXMsIEFnZSwgYW5kIEdlbmRlciB0byB0aGUgSW5zaWdodCBzY29yZXMuIExhc3RseSwgQSBNQU5PVkEgYW5hbHlzaXMgd2VyZSBwZXJmb3JtZWQgdG8gY29tYmluZSB0aGUgUmVsaWdpb3NpdHkgYW5kIEluc2lnaHQgc2NvcmVzIHRvIGNvbXBhcmUgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBBZ2UgYW5kIEdlbmRlciB2YXJpYWJsZXMuCgpgYGAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqUmVzdWx0cyoqCmBgYAoKYGBge3J9CnN1bW1hcnkoRmFpdGhhbmRJbnNpZ2h0KQpgYGAKClRoaXMgaXMgYSBzdW1tYXJ5IG9mIHRoZSBkYXRhIGJ5IGNvbHVtbiBhbmQgcXVlc3Rpb25zLgoKCmBgYHtyfQpnZ3Bsb3QoRmFpdGhhbmRJbnNpZ2h0LCBhZXMoeCA9IFN1Ym51bSwgeSA9IFRvdGFsKSkgKyAKICBnZW9tX2NvbCgpICsKICBnZW9tX3J1ZygpICsKICBsYWJzKHRpdGxlID0gIk92ZXJhbGwgUGFydGljaXBhbnQgU2NvcmVzIiwgeCA9ICJQYXJ0aWNpcGFudCIpICsKICBzdGF0X3Ntb290aChtZXRob2QgPSAibG0iLCBjb2wgPSAncmVkJykKYGBgCgoqKkZpZ3VyZSAxLjEqKiBJbmRpY2F0ZXMgdGhlIHRvdGFsIG9mIGVhY2ggcGFydGljaXBhbnQuIFRoZSBsb3dlc3Qgc2NvcmVzIHdlcmUgYXJvdW5kIDQwLiBUaGUgaGlnaGVzdCB3ZXJlIGFyb3VuZCA4MC4KCgpgYGB7cn0KcmVncmVzc2lvbi5tb2RlbCA8LSBsbSggSVRvdGFsfiBSVG90YWwsIGRhdGEgPSBGYWl0aGFuZEluc2lnaHQpCiBzdW1tYXJ5LmxtKCByZWdyZXNzaW9uLm1vZGVsICkKYGBgCgpUaGUgcmVncmVzc2lvbiBGIHN0YXRpc3RpYyAoMC4wODUxOSkgaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgbG93IHZhcmlhYmlsaXR5LiBIb3dldmVyIHRoZSBQIHZhbHVlICgwLjc3MTgpIGluZGljYXRlcyB0aGVyZSBpcyBub3QgYW55IHNpZ25pZmljYW5jZSBvZiB0aGUgUmVsaWdpb3NpdHkgc2NvcmVzKFIgVG90YWwpIGVmZmVjdGluZyB0aGUgSW5zaWdodCBzY29yZXMoSSBUb3RhbCkuCgoKYGBge3J9CmF1dG9wbG90KHJlZ3Jlc3Npb24ubW9kZWwpCmBgYAoKKipGaWd1cmUgMS4yKiogVGhlc2UgZ3JhcGhzIHJlcHJlc2VudHMgdGhlIHJlZ3Jlc3Npb24gbW9kZWwgYW5kIGluZGljYXRlIHRoYXQgdGhlIGRpc3RyaWJ1dGlvbnMgb2Ygc2NvcmVzIGFyZSB0b28gc3ByZWFkIG91dCB0byBpbmRpY2F0ZSBhIGNvcnJlbGF0aW9uIGJldHdlZW4gdGhlIFJlbGlnaW9zaXR5IHNjb3JlcyBhbmQgdGhlIEluc2lnaHQgc2NvcmVzLgoKCmBgYHtyfQphb3YubW9kZWwgPC0gYW92KGZvcm11bGEgPSBJVG90YWwgfiBSVG90YWwsIGRhdGEgPSBGYWl0aGFuZEluc2lnaHQpCnN1bW1hcnkoYW92Lm1vZGVsKQpgYGAKClRoaXMgT25lLVdheSBBTk9WQSBhbmQgdGhlIFAgdmFsdWUgKDAuNzcyKSBpbmRpY2F0ZSB0aGVyZSBpcyBub3QgYW55IHNpZ25pZmljYW5jZSBvZiB0aGUgUmVsaWdpb3NpdHkgc2NvcmVzIChSIFRvdGFsKSBlZmZlY3RpbmcgdGhlIEluc2lnaHQgc2NvcmVzIChJIFRvdGFsKS4KCgpgYGB7cn0KYXV0b3Bsb3QoYW92Lm1vZGVsKQpgYGAKCioqRmlndXJlIDEuMyoqIFRoZXNlIGdyYXBocyByZXByZXNlbnQgdGhlIE9uZS1XYXkgQU5PVkEgYW5kIGluZGljYXRlIHRoYXQgdGhlIGRpc3RyaWJ1dGlvbnMgb2Ygc2NvcmVzIGFyZSB0b28gc3ByZWFkIG91dCB0byBpbmRpY2F0ZSBhIGNvcnJlbGF0aW9uIGJldHdlZW4gdGhlIFJlbGlnaW9zaXR5IHNjb3JlcyBhbmQgdGhlIEluc2lnaHQgc2NvcmVzLgoKCmBgYHtyfQphb3YubW9kZWwyIDwtIGFvdihmb3JtdWxhID0gSVRvdGFsIH4gUlRvdGFsICsgQWdlICsgR2VuZGVyLCBkYXRhID0gRmFpdGhhbmRJbnNpZ2h0KQpzdW1tYXJ5LmFvdihhb3YubW9kZWwyKQpgYGAKClRoZSBUaHJlZS13YXkgQU5PVkEgYW5kIHRoZSBSZWxpZ2lvc2l0eSAoUiBUb3RhbCkgUCB2YWx1ZSBvZiAoLjc3MyksIEFnZSBQIHZhbHVlIG9mICguNDgwKSwgYW5kIEdlbmRlciBQIHZhbHVlIG9mICguMjg4KSBpbmRpY2F0ZSB0aGVyZSBpcyBub3QgYW55IHNpZ25pZmljYW5jZSBvZiB0aGUgUmVsaWdpb3NpdHksIEFnZSwgb3IgR2VuZGVyIFZhcmlhYmxlcyBlZmZlY3RpbmcgdGhlIEluc2lnaHQgc2NvcmVzKEkgVG90YWwpLgoKCmBgYHtyfQpnZ3Bsb3QoYW92Lm1vZGVsMiwgYWVzKGdyb3VwID0gQWdlLCB4ID1SVG90YWwsIHkgPSBJVG90YWwsIGNvbG9yID0gZmFjdG9yKEFnZSwgbGFiZWxzID0gYygiMTgtMzAiLCAKICAgICIzMS00MCIsICI0MS01MCIsICI1MS02MCIsICI2MCsiKSkpKSArIAogIHRoZW1lKGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91cj0iQmxhY2siLCBzaXplID0gMTYsIGZhY2UgPSAiYm9sZCIpKSArCiAgdGhlbWUobGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gJ0RhcmsgQmx1ZScsIGZpbGwgPSAnR3JlZW4nLCBzaXplID0gMykpICsKICBnZW9tX2JveHBsb3QoKSArCiAgbGFicyhjb2xvciA9ICJBZ2UiKSArCmxhYnModGl0bGU9ICJTY29yZXMgYnkgQWdlIEdyb3VwcyIpIApgYGAKCioqRmlndXJlIDEuNCoqIFJlcHJlc2VudHMgdGhlIFRocmVlLVdheSBBTk9WQSBhbmQgaW5kaWNhdGVzIHRoYXQgdGhlIGhpZ2hlc3Qgc2NvcmluZyBncm91cCBvZiBwYXJ0aWNpcGFudHMgd2VyZSBpbiB0aGUgMTgtMzAgcmFuZ2UgYW5kIHRoZSBsZWFzdCBpbiB0aGUgMzEtNDAgcmFuZ2UuIFRob3NlIGluIHRoZSA2MCsgcmFuZ2Ugc2NvcmVkIGhpZ2hlciBvbiBJbnNpZ2h0LiBUaG9zZSBpbiB0aGUgMTgtMzAgd2VyZSBzZWNvbmQgaGlnaGVzdCBvbiBJbnNpZ2h0LiBUaGVyZSBpcyBsaXR0bGUgdmFyaWF0aW9uIGZyb20gdGhlIG1lYW4uCgoKYGBge3IgZWNobz1GQUxTRX0KZ2dwbG90KGFvdi5tb2RlbDIsIGFlcyhncm91cCA9IEdlbmRlciwgeCA9IFJUb3RhbCwgeSA9IElUb3RhbCwgY29sb3IgPSBmYWN0b3IoR2VuZGVyLCBsYWJlbHMgPSBjKCJNYWxlIiwgCiAgICAiRmVtYWxlIiwgIkRlY2xpbmUgdG8gQW5zd2VyIikpKSkgKwogIHRoZW1lKGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG91cj0iQmxhY2siLCBzaXplID0gMTYsIGZhY2UgPSAiYm9sZCIpKSArCiAgdGhlbWUobGVnZW5kLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoY29sb3VyID0gJ0RhcmsgQmx1ZScsIGZpbGwgPSAnR3JlZW4nLCBzaXplID0gMykpICsKICBnZW9tX2JveHBsb3QoKSArCiAgbGFicyh0aXRsZT0gIlNjb3JlcyBieSBHZW5kZXIiKSArCiAgbGFicyhjb2xvciA9ICdHZW5kZXInLCBmaWxsID0gJ0dlbmRlcicpICsKICBzdGF0X3Ntb290aChtZXRob2QgPSAiYW92IiwgY29sID0gInJlZCIpCiAgCmBgYAoKKipGaWd1cmUgMS41KiogUmVwcmVzZW50cyB0aGUgVGhyZWUtV2F5IEFOT1ZBIHdpdGggYSBmb2N1cyBvbiBHZW5kZXIgYW5kIGluZGljYXRlcyB0aGF0IGZlbWFsZSBwYXJ0aWNpcGFudHMgc2NvcmVkIGhpZ2hlciBvbiBJbnNpZ2h0LiBUaGVyZSBpcyBsaXR0bGUgdmFyaWF0aW9uIGZyb20gdGhlIG1lYW4uCgoKYGBge3J9Cm1hbm92YS5tb2RlbCA8LSBtYW5vdmEoY2JpbmQoSVRvdGFsLCBSVG90YWwpIH4gIEFnZSpHZW5kZXIsIGRhdGEgPSBGYWl0aGFuZEluc2lnaHQpCnN1bW1hcnkobWFub3ZhLm1vZGVsLCB0ZXN0ID0gIldpbGtzIikKYGBgCgpUaGlzIFR3by13YXkgTUFOT1ZBIGluZGljYXRlcyB0aGF0IHRoZSB2YXJpYWJsZXMgb2YgQWdlIGFuZCBHZW5kZXIgZml0IHRoZSBtb2RlbCB3ZWxsIHdpdGggbGl0dGxlIGRpc2NyaW1pbmF0aW9uIGFzIGluZGljYXRlZCBieSB0aGUgV2lsa3MgdGVzdCBzY29yZXMgYmVpbmcgdW5kZXIgMS4gSG93ZXZlciB0aGUgUCB2YWx1ZSBmb3IgR2VuZGVyICguMzA2MSksIGFuZCB0aGUgUCB2YWx1ZSBmb3IgQWdlICguMzE1OCkgaW5kaWNhdGUgdGhlcmUgaW4gbm8gc2lnbmlmaWNhbnQgaW4gYW55IG9mIHRoZSB2YXJpYWJsZXMgdG8gUmVsaWdpb3NpdHkgb3IgSW5zaWdodC4KCgpgYGB7ciBlY2hvPVRSVUV9CmdncGxvdChtYW5vdmEubW9kZWwsIGFlcyh4ID0gQWdlLCB5ID0gR2VuZGVyLCBjb2xvciA9IGZhY3RvcihHZW5kZXIsIGxhYmVscyA9IGMoIk1hbGUiLCAKICAgICJGZW1hbGUiLCAiRGVjbGluZSB0byBBbnN3ZXIiKSkpKSArIAogIGdlb21fdmlvbGluKCkgKwogIHNjYWxlX3hfY29udGludW91cyhsYWJlbHMgPWMoIjEiID0gIjE4LTMwIiwgIjIiID0gIjMxLTQwIiwgIjMiID0gIjQxLTUwIiwgIjQiID0gIjUxLTYwIiwgIjUiID0gIjYwKyIpKSArCiAgbGFicyhjb2xvciA9ICJHZW5kZXIiKSArCiAgbGFicyh0aXRsZT0gIkdlbmRlciBGb2N1cyIpICsKICBzdGF0X3Ntb290aChtZXRob2QgPSAiYW92IiwgY29sID0gInJlZCIpCmBgYAoKKipGaWd1cmUgMS42KiogUmVwcmVzZW50cyB0aGUgTUFOT1ZBIG1lYXN1cmluZyB0aGUgcmVsYXRpb25zaGlwIG9mIEFnZSBhbmQgR2VuZGVyIHRvIFJlbGlnaW9zaXR5IGFuZCBJbnNpZ2h0LiBJdCBhcHBlYXJzIHRoYXQgZmVtYWxlcyBpbiB0aGUgMTgtMzEgcmFuZ2Ugc2NvcmVkIHRoZSBoaWdoZXN0IG9uIFJlbGlnaW9zaXR5IGFuZCBJbnNpZ2h0LiBNYWxlcyBmcm9tIHRoZSA0MS02MCByYW5nZSBzY29yZWQgaGlnaGVzdCBmb3IgdGhlaXIgZ3JvdXAuCgoKYGBge3J9CmdncGxvdChtYW5vdmEubW9kZWwsIGFlcyh4ID0gQWdlLCB5ID0gR2VuZGVyLCBjb2xvciA9IGZhY3RvcihBZ2UsIGxhYmVscyA9IGMoIjE4LTMwIiwgIjMxLTQwIiwgIjQxLTUwIiwgIjUxLTYwIiwgIjYwKyIpKSkpICsgCiAgZ2VvbV92aW9saW4oKSArCiAgbGFicyhjb2xvciA9ICJBZ2UiKSArCiAgbGFicyh0aXRsZT0gIkFnZSBGb2N1cyIpICsKICBzdGF0X3Ntb290aChtZXRob2QgPSAiYW92IiwgY29sID0gInJlZCIpCmBgYAoKKipGaWd1cmUgMS43KiogUmVwcmVzZW50cyB0aGUgQWdlIHBlcnNwZWN0aXZlIG9mIHRoZSBhYm92ZSBNQU5PVkEgYW5kIGluZGljYXRlcyB0aGF0IHRob3NlIGluIHRoZSA0MS01MCByYW5nZSBzY29yZWQgdGhlIGxvd2VzdCBvbiBSZWxpZ2lvc2l0eSBhbmQgSW5zaWdodCB3aGlsZSB0aG9zZSBpbiB0aGUgMTgtMzAgcmFuZ2Ugc2NvcmVkIHRoZSBoaWdoZXN0LgoKYGBgICAgICAgICAgCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqRGlzY3Vzc2lvbioqCmBgYAoKVGhlIE92ZXJhbGwgZ29hbCBvZiB0aGlzIHN0dWR5IGlzIHRvIHNlZSBpZiB0aGVyZSBpcyBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG9uZXMgSW5zaWdodCBhbmQgaG93IFJlbGlnaW91cyB0aGUgcGFydGljaXBhbnRzIGFyZS4gSW4gdGhpcyBSZWdhcmQgdGhlcmUgd2FzIG5vIGV2aWRlbmNlIGZvdW5kIHRvIHN1cHBvcnQgdGhhdCBoeXBvdGhlc2lzLiBXaXRoIHRoZSBzbWFsbCBzYW1wbGUgY29sbGVjdGVkIGl0IHdhcyBkaXNjb3ZlcmVkIHRoYXQgcGFydGljaXBhbnRzIGluIHRoZSAxOC0zMCBhZ2UgZ3JvdXAgc2NvcmVkIHRoZSBoaWdoZXN0IG9uIEluc2lnaHQgYW5kIFJlbGlnaW9zaXR5LiBUaGUgNDEtNTAgYW5kIHRoZSBncm91cCB0aGF0IHNjb3JlZCB0aGUgbGVhc3Qgb24gSW5zaWdodCBhbmQgUmVsaWdpb3NpdHkgd2VyZSB0aG9zZSBpbiB0aGUgYWdlIGdyb3VwIG9mIDMxLTQwLiBJdCB3YXMgYWxzbyBmb3VuZCB0aGF0IGZlbWFsZXMgc2NvcmVkIGhpZ2hlciBvbiBib3RoIFJlbGlnaW9zaXR5IGFuZCBJbnNpZ2h0IHNjYWxlcy4gVGhlcmUgd2FzIG5vIHNpZ25pZmljYW50IGNvcnJlbGF0aW9uIGZvdW5kIGJldHdlZW4gQWdlIG9yIEdlbmRlciBvbiBSZWxpZ2lvc2l0eSBvciBJbnNpZ2h0LiBJbiB0aGUgZnV0dXJlIHRoaXMgc3R1ZHkgY291bGQgeWllbGQgYmV0dGVyIHJlc3VsdHMgd2l0aCBhIGxhcmdlciBzYW1wbGUgc2l6ZSBhbmQgYSBtb3JlIGRpdmVyc2UgZGlzdHJpYnV0aW9uIGFtb25nIGFnZS4gSW4gdGhlIGZ1dHVyZSBzd2l0Y2hpbmcgdGhlIHByaW1hcnkgc2NhbGUgbG9va2VkIGF0IGZyb20gdGhlIEluc2lnaHQgc2NvcmVzIHRvIHRoZSBSZWxpZ2lvc2l0eSBzY29yZXMgd291bGQgYmUgYmVuZWZpY2lhbCBmb3IgYSBiZXR0ZXIgb3ZlcmFsbCBwaWN0dXJlLgoKYGBgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKldvcmsgQ2l0ZWQqKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKYGBgCgpCZWNrLCBBLiBULiwgQmF1cnVjaCwgRS4sIEJhbHRlciwgSi4gTS4sIFN0ZWVyLCBSLiBBLiwgJiBXYXJtYW4sIEQuIE0uICgyMDA0KS4gQSBuZXcgaW5zdHJ1bWVudCBmb3IgbWVhc3VyaW5nIGluc2lnaHQ6IHRoZSBCZWNrIENvZ25pdGl2ZSBJbnNpZ2h0IFNjYWxlLiBFbHNldmllciwgMzE5LTMyOS4gSHViZXIsIFMuLCAmIEh1YmVyLCBPLiBXLiAoMjAxMikuIFRoZSBDZW50cmFsaXR5IG9mIFJlbGlnaW9zaXR5IFNjYWxlLiBSZWxpZ2lvbnMsIDcxMC03MjQuCg==