plot(cars)
library(readxl)
uebung5 <- read_excel("C:/Users/Alfa/Desktop/Uebungen/uebung17.xlsx")
plot(cars)
library(ggplot2)
library(dplyr)
library(psych)
library(car)
library(effsize)
library(lsr)
library(sjstats)
Einfaktoriellen Varianzanalyse mit Messwiederholung
#1. Hypothese
H0: Die Leistungsmotivation der Testpersonen unterscheidet sich nicht zu verschiedenen Messzeitpunkten.
H1: Die Leistungsmotivaton der Testpersonen unterscheidet sich zu verschiedenen Messzeitpunkten.
#2. Voraussetzungen der einfaktoriellen Varianzanalyse mit Messwiederholung
Die abhängige Variable ist intervallskaliert -> Die Variable “Leistungsmotivation” ist ratioskaliert.
Die abhängige Variable ist normalverteilt innerhalb jedes Messzeitpunktes (Ab > 25 Probanden pro Messzeitpunkt sind Verletzungen in der Regel unproblematisch) -> siehe Histogrammm oder QQ-Plot
Sphärizität ist gegeben -> siehe Mauchly-Test auf Sphärizität
#3. Vorrausetzungsprüfung
#umbenennen, Normalitaet (6M <- schliessende Klammer fehlt
#neuordnen!
uebung5$Phase <- factor(uebung5$Phase, levels=c("Honeymoon(Anfang)", "Hangover(3M)", "Normalitaet(6M)" ))
library(car)
uebung5 %>%
group_by(Phase) %>%
ggplot(aes(Leistungsmovitation, color=Phase)) +
geom_histogram(aes(fill = Phase), bins = 30) +
facet_wrap(~Phase) +
theme_grey()+
labs(x= "Leistungsmotivationsskala",y = "Anzahl" )
qqPlot(uebung5$Leistungsmovitation,
main = "QQPlot für die Variable Leistungsmotivation",
xlab = "Normierte Quantile",
ylab = "Leistungsmotivation"
)
Die Daten sind augenscheinlich eher nicht normalverteilt. Daher sollte der Friedman bevorzugt werden. Allerdings im Rahmen der Übungen und unter Anbetracht der Größe der Daten wir die Normalverteilung als gegeben angesehen.
ggplot(uebung5,
aes(Leistungsmovitation,
color=Phase
)
) +
geom_histogram(binwidth=1,
aes(fill = Phase),
bins = 6,
show.legend = TRUE
) +
geom_density(aes(y = ..count..,
fill = Phase
),
alpha=0.2,
colour = "black",
size = 0.3,
show.legend = TRUE
) +
theme(panel.background = element_rect(size = 0.5, fill = "gray91", colour = "gray", linetype='solid'),
panel.grid.major = element_line(size = 0.5, linetype = 'solid', colour = "gray45"),
panel.grid.minor = element_line(size = 0.5, linetype = 'solid', colour = "gray"),
plot.background = element_rect(fill = "moccasin")
)+
scale_fill_discrete(name = "Untersuchte Zeitpunkte",
breaks = c("Honeymoon(Anfang)", " Hangover(3M)", " Normalitaet(6M)"),
labels = c("Honeymoon(Anfang)",
" Hangover(3M)",
" Normalitaet(6M)"
),
aesthetics = "fill" # Die System-Farben werden verwendet.
)+
guides(#fill = FALSE, # Mit "fill = FALSE" werden alle Legenden (automatisch,manuell) abgeschaltet.
color = FALSE
) +
facet_wrap(~ Phase,
ncol = 1
) +
labs(title = "Histogramme",
subtitle = "xxx",
x = "Leistungsmotivation",
y = "Anzahl"
)
#4. Deskriptive Statistik
Die Tabellegibt die Mittelwerte, Standardabweichungen und Grössen aller vier Messzeitpunkte wieder. Diese Informationen werden für die Berichterstattung verwendet.
uebung5 %>%
group_by(uebung5$Phase) %>%
summarize(Anzahl = n(), Mittelwert = mean(Leistungsmovitation), Median = median(Leistungsmovitation), Standardabweichung = sd(Leistungsmovitation)) %>%
mutate_if(is.numeric, round, 2)
Es gibt einen Mittelwertsunterschied zwischen den Messzeitpunkten. In der Honeymoonphase beträgt die Motivationspunkte der Teilnehmer im Mittel ein Wert von 44.48 (SD = 2.01, n=29). Nach drei Monaten Training lag die Leistungsmotivation bei einem Wert von 11.48 (SD = 1.99,n=29).Nach sechs Monaten bei 28.59 (SD=2.11,n=29). Damit haben die Teilnehmer ihre Leistungsmotivation um 17 Punkte herabgesetzt.
#5. Mauchly-Test auf Sphärizität
H0 :Die Varianzen der Differenzen zwischen jeweils zwei Messzeitpunkten sind gleich. H1 :Die Varianzen der Differenzen zwischen jeweils zwei Messzeitpunkten sind nicht gleich.
Ist das Epsilon: p > 0.05 => Ergebnis nicht Signifikant –> Sphärizität Ist das Epsilon: p < 0.05 => Ergebnis Signifikant –> keine Sphärizität-> Wenn dies der Fall ist, müssen die Freiheitsgrade mit dem Korrekturfaktor angepasst werden. -> Ist Epsilon < 0.75 ->Greenhouse-Geisser -> Ist Epsilon > 0.75 ->Huynh-Feldt
#6. Ergebnisse der einfaktoriellen Varianzanalyse mit Messwiederholung
library(afex)
anova_multimess1 <- aov_car(Leistungsmovitation~Error(ID/Phase), data =uebung5, return ="univariate")
anova_multimess1
multimess1b <- aov_car(Leistungsmovitation~Error(ID/Phase), data = uebung5)
multimess2a <- anova(multimess1b, es="pes", correction="none", intercept= TRUE)
multimess2a
multimess2b <- anova(multimess1b, es="pes", correction="GG")
multimess2b
multimess2c <- anova(multimess1b, es="pes", correction="HF")
multimess2c
mitmess2<- rbind("nicht Korrigiert"=multimess2a, "Greenhouse-Geisser"=multimess2b, "Huynh-Feldt"=multimess2c)
mitmess2
View(mitmess2)
df1= 2 df2= 56
#7. Post-hoc-Tests
Multiples Testen
Obwohl der F-Test zeigt, dass ein Haupteffekt der Training besteht, muss anhand von Post-hoc-Tests geklärt werden, zwischen welchen Messzeitpunkten signifikante Unterschiede bezüglich der Konzentrationsfähigkeit bestehen.
Bei der Berechnung von Post-hoc-Tests wird im Prinzip für jede Kombination von zwei Mittelwerten ein t-Test durchgeführt. Im aktuellen Beispiel mit vier Gruppen sind dies 6 Tests. Multiple Tests sind jedoch problematisch, da der Alpha-Fehler (die fälschliche Ablehnung der Nullhypothese) mit der Anzahl der Vergleiche steigt. Wird nur ein t-Test mit einem Signifikanzlevel von .05 durchgeführt, so beträgt die Wahrscheinlichkeit des Nicht-Eintreffens des Alpha-Fehlers 95%. Werden jedoch zehn solcher Paarvergleiche vorgenommen, so beträgt die Nicht-Eintreffens-Wahrscheinlichkeit des Alpha-Fehlers (.95)6 = .735. Um die Wahrscheinlichkeit des Eintreffens des Alpha-Fehlers zu bestimmen, wird 1 - .735 = .265 gerechnet. Die Wahrscheinlichkeit des Eintreffens des Alpha-Fehlers liegt somit bei 26.5%. Diese Fehlerwahrscheinlichkeit wird als “Familywise Error Rate” bezeichnet.
Hierbei wird α durch die Anzahl der Paarvergleiche dividiert. Im hier aufgeführten Fall ist dies .05/3 = .016. (nur beim “none”)
pairwise.t.test(uebung5$Leistungsmovitation,
uebung5$Phase,
p.adjust.method = "bonferroni",
paired = TRUE,
data = uebung5)
Es wird ersichtlich, dass alle drei Messzeitpunkt sich sig unterscheiden(p < .05, wegen method=“bonferroni”). Daher lassen sich für eigenständige Gruppen bilden.
#8. Profildiagramm
ggplot(uebung5, aes(x=Phase, y=Leistungsmovitation, group=1))+
stat_summary(fun.y = mean, geom="point", size=3)+
stat_summary(fun.y = mean, geom="line")+
stat_summary(fun.data = mean_cl_normal, geom="errorbar",width=.2, size=.25)+
labs(x="Phase", y="Leistungsmotivationsskala")+
theme_classic()
Im vorliegenden Beispiel beträgt das partielle Eta-Quadrat .9588. Das heisst, es wird 95,88% der Variation der Gewichtsreduktion durch die Messzeiten aufgeklärt.
Das partielle Eta-Quadrat
Das partielle Eta-Quadrat (partielles η2) ist ein Mass für die Effektgrösse: Es setzt die Varianz, die durch einen Faktor erklärt wird, in Bezug mit jener interessierenden Varianz, die noch nicht durch andere Faktoren im Modell erklärt wird. Das heisst, es wird ausschliesslich jene Variation betrachtet, welche im Fokus des Interesses steht und nicht bereits durch die anderen Faktoren im Modell erklärt wird. Das partielle Eta-Quadrat zeigt, welchen Anteil davon ein Faktor erklärt. Im Falle der einfaktoriellen Varianzanalyse mit Messwiederholung liegt das Interesse ausschliesslich auf der Varianz innerhalb der Personen (SSinnerhalb Personen = SSTreatment + SSResidual), weswegen sich das partielle Eta-Quadrat wie folgt berechnet
\[ eta_p^2 = \frac{SS_{Treatment}}{SS_{Treatment}+SS_{Residual}}\]
sprintf("Partielle Eta-Quadrat für 'Phase': eta= %.4f",multimess2a$pes[2])
Im vorliegenden Beispiel beträgt das partielle Eta-Quadrat .9873. Das heisst, es wird 98,73% der Variation der Gewichtsreduktion durch die Messzeiten aufgeklärt.
#9. Berechnung der Effektstärke
effneu <- sqrt(mitmess2$pes[2]/(1-mitmess2$pes[2]))
sprintf("Effektstärke: f= %.3f",effneu)
Um zu beurteilen, wie gross dieser Effekt ist, kann man sich an der Einteilung von Cohen (1988) orientieren:
f = .10 entspricht einem schwachen Effekt
f = .25 entspricht einem mittleren Effekt
f = .40 entspricht einem starken Effekt
Damit entsprechen die Effektstärken von 8.833 einem starken Effekt.
#10. Eine Aussage
Eine Varianzanalyse mit Messwiederholung zeigt, dass sich die Leistungsmotivation der ProbandInnen je nach Messzeitpunkt unterscheidet. (F(2,56) = 2184.8, p < .000, partielles η2 = .9873, n = 29). Der Mauchly-Test ergab, dass Sphärizität gegeben ist, weshalb die Greenhouse-Geisser-Korrektur nicht angewendet wurde, wodurch sich korrigierte Freiheitsgrade nicht ergeben.
Der Post-Hoc-Test zeigt, dass die Leistungsmotivation der ProbandInnen zum Messzeitpunkt Honeymoon (M =44.48, SD = 2.01, n=29) signifikant höher sind als zum Messzeitpunkt Hangover (3M) (M =11.48, SD = 1.99, n=29) aber wieder zum Messzeitpunkt Normalität(6M)(M =28.59, SD=2.11, n=29) steigt .
Die Effektstärke liegt bei f=8.833 und entspricht damit nach Cohen (1988) einem starken Effekt. H0 kann verworfen werden, H1 angenommen.
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCmBgYHtyfQ0KcGxvdChjYXJzKQ0KYGBgDQoNCmBgYHtyfQ0KbGlicmFyeShyZWFkeGwpDQp1ZWJ1bmc1IDwtIHJlYWRfZXhjZWwoIkM6L1VzZXJzL0FsZmEvRGVza3RvcC9VZWJ1bmdlbi91ZWJ1bmcxNy54bHN4IikNCmBgYA0KDQoNCmBgYHtyfQ0KcGxvdChjYXJzKQ0KDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShwc3ljaCkNCmxpYnJhcnkoY2FyKQ0KbGlicmFyeShlZmZzaXplKQ0KbGlicmFyeShsc3IpDQpsaWJyYXJ5KHNqc3RhdHMpDQpgYGANCg0KRWluZmFrdG9yaWVsbGVuIFZhcmlhbnphbmFseXNlIA0KbWl0IE1lc3N3aWVkZXJob2x1bmcNCg0KIzEuCUh5cG90aGVzZQ0KDQpIMDogRGllIExlaXN0dW5nc21vdGl2YXRpb24gZGVyIFRlc3RwZXJzb25lbiB1bnRlcnNjaGVpZGV0IHNpY2ggbmljaHQgenUgdmVyc2NoaWVkZW5lbiBNZXNzemVpdHB1bmt0ZW4uDQoNCkgxOiBEaWUgTGVpc3R1bmdzbW90aXZhdG9uIGRlciBUZXN0cGVyc29uZW4gdW50ZXJzY2hlaWRldCBzaWNoIHp1IHZlcnNjaGllZGVuZW4gTWVzc3plaXRwdW5rdGVuLg0KDQojMi4JVm9yYXVzc2V0enVuZ2VuIGRlciBlaW5mYWt0b3JpZWxsZW4gVmFyaWFuemFuYWx5c2UgbWl0IE1lc3N3aWVkZXJob2x1bmcNCg0KRGllIGFiaMOkbmdpZ2UgVmFyaWFibGUgaXN0IGludGVydmFsbHNrYWxpZXJ0IC0+IERpZSBWYXJpYWJsZSAiTGVpc3R1bmdzbW90aXZhdGlvbiIgaXN0IHJhdGlvc2thbGllcnQuDQoNCkRpZSBhYmjDpG5naWdlIFZhcmlhYmxlIGlzdCBub3JtYWx2ZXJ0ZWlsdCBpbm5lcmhhbGIgamVkZXMgTWVzc3plaXRwdW5rdGVzIChBYiA+IDI1IFByb2JhbmRlbiBwcm8gTWVzc3plaXRwdW5rdCBzaW5kIFZlcmxldHp1bmdlbiBpbiBkZXIgUmVnZWwgdW5wcm9ibGVtYXRpc2NoKSAtPiBzaWVoZSBIaXN0b2dyYW1tbSBvZGVyIFFRLVBsb3QNCg0KU3Bow6RyaXppdMOkdCBpc3QgZ2VnZWJlbiAtPiBzaWVoZSBNYXVjaGx5LVRlc3QgYXVmIFNwaMOkcml6aXTDpHQNCg0KIzMuCVZvcnJhdXNldHp1bmdzcHLDvGZ1bmcNCmBgYHtyfQ0KDQojdW1iZW5lbm5lbiwgTm9ybWFsaXRhZXQgKDZNIDwtIHNjaGxpZXNzZW5kZSBLbGFtbWVyIGZlaGx0DQoNCg0KI25ldW9yZG5lbiENCnVlYnVuZzUkUGhhc2UgPC0gZmFjdG9yKHVlYnVuZzUkUGhhc2UsIGxldmVscz1jKCJIb25leW1vb24oQW5mYW5nKSIsICJIYW5nb3ZlcigzTSkiLCAiTm9ybWFsaXRhZXQoNk0pIiApKSAgICAgIA0KDQoNCmBgYA0KDQoNCg0KYGBge3J9DQpsaWJyYXJ5KGNhcikNCnVlYnVuZzUgJT4lDQpncm91cF9ieShQaGFzZSkgJT4lDQpnZ3Bsb3QoYWVzKExlaXN0dW5nc21vdml0YXRpb24sIGNvbG9yPVBoYXNlKSkgKyANCmdlb21faGlzdG9ncmFtKGFlcyhmaWxsID0gUGhhc2UpLCBiaW5zID0gMzApICsNCmZhY2V0X3dyYXAoflBoYXNlKSArDQp0aGVtZV9ncmV5KCkrDQpsYWJzKHg9ICJMZWlzdHVuZ3Ntb3RpdmF0aW9uc3NrYWxhIix5ID0gIkFuemFobCIgKQ0KYGBgDQoNCmBgYHtyfQ0KcXFQbG90KHVlYnVuZzUkTGVpc3R1bmdzbW92aXRhdGlvbiwNCm1haW4gPSAiUVFQbG90IGbDvHIgZGllIFZhcmlhYmxlIExlaXN0dW5nc21vdGl2YXRpb24iLA0KeGxhYiA9ICJOb3JtaWVydGUgUXVhbnRpbGUiLA0KeWxhYiA9ICJMZWlzdHVuZ3Ntb3RpdmF0aW9uIg0KKSANCmBgYA0KDQpEaWUgRGF0ZW4gc2luZCBhdWdlbnNjaGVpbmxpY2ggZWhlciBuaWNodCBub3JtYWx2ZXJ0ZWlsdC4gRGFoZXIgc29sbHRlIGRlciBGcmllZG1hbiBiZXZvcnp1Z3Qgd2VyZGVuLiBBbGxlcmRpbmdzIGltIFJhaG1lbiBkZXIgw5xidW5nZW4gdW5kIHVudGVyIEFuYmV0cmFjaHQgZGVyIEdyw7bDn2UgZGVyIERhdGVuIHdpciBkaWUgTm9ybWFsdmVydGVpbHVuZyBhbHMgZ2VnZWJlbiBhbmdlc2VoZW4uDQoNCmBgYHtyfQ0KDQpnZ3Bsb3QodWVidW5nNSwgDQphZXMoTGVpc3R1bmdzbW92aXRhdGlvbiwgDQpjb2xvcj1QaGFzZQ0KKQ0KKSArDQpnZW9tX2hpc3RvZ3JhbShiaW53aWR0aD0xLCANCmFlcyhmaWxsID0gUGhhc2UpLCANCmJpbnMgPSA2LA0Kc2hvdy5sZWdlbmQgPSBUUlVFIA0KKSArDQpnZW9tX2RlbnNpdHkoYWVzKHkgPSAuLmNvdW50Li4sIA0KZmlsbCA9IFBoYXNlDQopLCANCmFscGhhPTAuMiwgDQpjb2xvdXIgPSAiYmxhY2siLA0Kc2l6ZSA9IDAuMywNCnNob3cubGVnZW5kID0gVFJVRQ0KKSArDQp0aGVtZShwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KHNpemUgPSAwLjUsIGZpbGwgPSAiZ3JheTkxIiwgY29sb3VyID0gImdyYXkiLCBsaW5ldHlwZT0nc29saWQnKSwNCnBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2xpbmUoc2l6ZSA9IDAuNSwgbGluZXR5cGUgPSAnc29saWQnLCBjb2xvdXIgPSAiZ3JheTQ1IiksDQpwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9saW5lKHNpemUgPSAwLjUsIGxpbmV0eXBlID0gJ3NvbGlkJywgY29sb3VyID0gImdyYXkiKSwNCnBsb3QuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gIm1vY2Nhc2luIikNCikrDQpzY2FsZV9maWxsX2Rpc2NyZXRlKG5hbWUgPSAiVW50ZXJzdWNodGUgWmVpdHB1bmt0ZSIsIA0KYnJlYWtzID0gYygiSG9uZXltb29uKEFuZmFuZykiLCAiCUhhbmdvdmVyKDNNKSIsICIJTm9ybWFsaXRhZXQoNk0pIiksDQpsYWJlbHMgPSBjKCJIb25leW1vb24oQW5mYW5nKSIsIA0KIglIYW5nb3ZlcigzTSkiLCANCiIJTm9ybWFsaXRhZXQoNk0pIg0KKSwNCmFlc3RoZXRpY3MgPSAiZmlsbCIgIyBEaWUgU3lzdGVtLUZhcmJlbiB3ZXJkZW4gdmVyd2VuZGV0Lg0KKSsNCmd1aWRlcygjZmlsbCA9IEZBTFNFLCAjIE1pdCAiZmlsbCA9IEZBTFNFIiB3ZXJkZW4gYWxsZSBMZWdlbmRlbiAoYXV0b21hdGlzY2gsbWFudWVsbCkgYWJnZXNjaGFsdGV0Lg0KY29sb3IgPSBGQUxTRQ0KKSArIA0KZmFjZXRfd3JhcCh+IFBoYXNlLCANCm5jb2wgPSAxDQopICsgDQpsYWJzKHRpdGxlID0gIkhpc3RvZ3JhbW1lIiwNCnN1YnRpdGxlID0gInh4eCIsDQp4ID0gIkxlaXN0dW5nc21vdGl2YXRpb24iLA0KeSA9ICJBbnphaGwiDQopIA0KYGBgDQoNCiM0LglEZXNrcmlwdGl2ZSBTdGF0aXN0aWsgDQoNCkRpZSBUYWJlbGxlZ2lidCBkaWUgTWl0dGVsd2VydGUsIFN0YW5kYXJkYWJ3ZWljaHVuZ2VuIHVuZCBHcsO2c3NlbiBhbGxlciB2aWVyIE1lc3N6ZWl0cHVua3RlIHdpZWRlci4gRGllc2UgSW5mb3JtYXRpb25lbiB3ZXJkZW4gZsO8ciBkaWUgQmVyaWNodGVyc3RhdHR1bmcgdmVyd2VuZGV0Lg0KDQoNCmBgYHtyfQ0KdWVidW5nNSAlPiUNCmdyb3VwX2J5KHVlYnVuZzUkUGhhc2UpICU+JQ0Kc3VtbWFyaXplKEFuemFobCA9IG4oKSwgTWl0dGVsd2VydCA9IG1lYW4oTGVpc3R1bmdzbW92aXRhdGlvbiksIE1lZGlhbiA9IG1lZGlhbihMZWlzdHVuZ3Ntb3ZpdGF0aW9uKSwgU3RhbmRhcmRhYndlaWNodW5nID0gc2QoTGVpc3R1bmdzbW92aXRhdGlvbikpICU+JQ0KbXV0YXRlX2lmKGlzLm51bWVyaWMsIHJvdW5kLCAyKQ0KYGBgDQpFcyBnaWJ0IGVpbmVuIE1pdHRlbHdlcnRzdW50ZXJzY2hpZWQgendpc2NoZW4gZGVuIE1lc3N6ZWl0cHVua3Rlbi4gSW4gZGVyIEhvbmV5bW9vbnBoYXNlIGJldHLDpGd0IGRpZSBNb3RpdmF0aW9uc3B1bmt0ZSBkZXIgVGVpbG5laG1lciBpbSBNaXR0ZWwgZWluIFdlcnQgdm9uIDQ0LjQ4IChTRCA9IDIuMDEsIG49MjkpLiBOYWNoIGRyZWkgTW9uYXRlbiBUcmFpbmluZyBsYWcgZGllIExlaXN0dW5nc21vdGl2YXRpb24gYmVpIGVpbmVtIFdlcnQgdm9uIDExLjQ4IChTRCA9IDEuOTksbj0yOSkuTmFjaCBzZWNocyBNb25hdGVuIGJlaSAyOC41OSAoU0Q9Mi4xMSxuPTI5KS4gRGFtaXQgaGFiZW4gZGllIFRlaWxuZWhtZXIgaWhyZSBMZWlzdHVuZ3Ntb3RpdmF0aW9uIHVtIDE3IFB1bmt0ZSBoZXJhYmdlc2V0enQuDQoNCg0KIzUuCU1hdWNobHktVGVzdCBhdWYgU3Bow6RyaXppdMOkdA0KDQpIMCA6RGllIFZhcmlhbnplbiBkZXIgRGlmZmVyZW56ZW4gendpc2NoZW4gamV3ZWlscyB6d2VpIE1lc3N6ZWl0cHVua3RlbiBzaW5kIGdsZWljaC4gDQpIMSA6RGllIFZhcmlhbnplbiBkZXIgRGlmZmVyZW56ZW4gendpc2NoZW4gamV3ZWlscyB6d2VpIE1lc3N6ZWl0cHVua3RlbiBzaW5kIG5pY2h0IGdsZWljaC4NCg0KSXN0IGRhcyBFcHNpbG9uOiBwID4gMC4wNSA9PiBFcmdlYm5pcyBuaWNodCBTaWduaWZpa2FudCDigJM+IFNwaMOkcml6aXTDpHQNCklzdCBkYXMgRXBzaWxvbjogcCA8IDAuMDUgPT4gRXJnZWJuaXMgU2lnbmlmaWthbnQg4oCTPiBrZWluZSBTcGjDpHJpeml0w6R0LT4gV2VubiBkaWVzIGRlciBGYWxsIGlzdCwgbcO8c3NlbiBkaWUgRnJlaWhlaXRzZ3JhZGUgbWl0IGRlbSBLb3JyZWt0dXJmYWt0b3IgYW5nZXBhc3N0IHdlcmRlbi4gDQotPiBJc3QgRXBzaWxvbiA8IDAuNzUgLT5HcmVlbmhvdXNlLUdlaXNzZXIgDQotPiBJc3QgRXBzaWxvbiA+IDAuNzUgLT5IdXluaC1GZWxkdA0KDQoNCiM2LglFcmdlYm5pc3NlIGRlciBlaW5mYWt0b3JpZWxsZW4gVmFyaWFuemFuYWx5c2UgbWl0IE1lc3N3aWVkZXJob2x1bmcNCg0KYGBge3J9DQpsaWJyYXJ5KGFmZXgpDQoNCmFub3ZhX211bHRpbWVzczEgPC0gYW92X2NhcihMZWlzdHVuZ3Ntb3ZpdGF0aW9ufkVycm9yKElEL1BoYXNlKSwgZGF0YSA9dWVidW5nNSwgcmV0dXJuID0idW5pdmFyaWF0ZSIpDQphbm92YV9tdWx0aW1lc3MxDQoNCmBgYA0KDQoNCg0KYGBge3J9DQptdWx0aW1lc3MxYiA8LSBhb3ZfY2FyKExlaXN0dW5nc21vdml0YXRpb25+RXJyb3IoSUQvUGhhc2UpLCBkYXRhID0gdWVidW5nNSkNCm11bHRpbWVzczJhIDwtIGFub3ZhKG11bHRpbWVzczFiLCBlcz0icGVzIiwgY29ycmVjdGlvbj0ibm9uZSIsIGludGVyY2VwdD0gVFJVRSkNCm11bHRpbWVzczJhDQptdWx0aW1lc3MyYiA8LSBhbm92YShtdWx0aW1lc3MxYiwgZXM9InBlcyIsIGNvcnJlY3Rpb249IkdHIikNCm11bHRpbWVzczJiDQptdWx0aW1lc3MyYyA8LSBhbm92YShtdWx0aW1lc3MxYiwgZXM9InBlcyIsIGNvcnJlY3Rpb249IkhGIikNCm11bHRpbWVzczJjDQpgYGANCg0KDQpgYGB7cn0NCm1pdG1lc3MyPC0gcmJpbmQoIm5pY2h0IEtvcnJpZ2llcnQiPW11bHRpbWVzczJhLCAiR3JlZW5ob3VzZS1HZWlzc2VyIj1tdWx0aW1lc3MyYiwgIkh1eW5oLUZlbGR0Ij1tdWx0aW1lc3MyYykNCm1pdG1lc3MyDQpgYGANCg0KYGBge3J9DQpWaWV3KG1pdG1lc3MyKQ0KDQpgYGANCg0KDQpkZjE9IDINCmRmMj0gNTYNCg0KIzcuIFBvc3QtaG9jLVRlc3RzDQoNCk11bHRpcGxlcyBUZXN0ZW4NCg0KDQpPYndvaGwgZGVyIEYtVGVzdCB6ZWlndCwgZGFzcyBlaW4gSGF1cHRlZmZla3QgZGVyIFRyYWluaW5nIGJlc3RlaHQsIG11c3MgYW5oYW5kIHZvbiBQb3N0LWhvYy1UZXN0cyBnZWtsw6RydCB3ZXJkZW4sIHp3aXNjaGVuIHdlbGNoZW4gTWVzc3plaXRwdW5rdGVuIHNpZ25pZmlrYW50ZSBVbnRlcnNjaGllZGUgYmV6w7xnbGljaCBkZXIgS29uemVudHJhdGlvbnNmw6RoaWdrZWl0IGJlc3RlaGVuLg0KDQpCZWkgZGVyIEJlcmVjaG51bmcgdm9uIFBvc3QtaG9jLVRlc3RzIHdpcmQgaW0gUHJpbnppcCBmw7xyIGplZGUgS29tYmluYXRpb24gdm9uIHp3ZWkgTWl0dGVsd2VydGVuIGVpbiB0LVRlc3QgZHVyY2hnZWbDvGhydC4gSW0gYWt0dWVsbGVuIEJlaXNwaWVsIG1pdCB2aWVyIEdydXBwZW4gc2luZCBkaWVzIDYgVGVzdHMuIE11bHRpcGxlIFRlc3RzIHNpbmQgamVkb2NoIHByb2JsZW1hdGlzY2gsIGRhIGRlciBBbHBoYS1GZWhsZXIgKGRpZSBmw6Rsc2NobGljaGUgQWJsZWhudW5nIGRlciBOdWxsaHlwb3RoZXNlKSBtaXQgZGVyIEFuemFobCBkZXIgVmVyZ2xlaWNoZSBzdGVpZ3QuIFdpcmQgbnVyIGVpbiB0LVRlc3QgbWl0IGVpbmVtIFNpZ25pZmlrYW56bGV2ZWwgdm9uIC4wNSBkdXJjaGdlZsO8aHJ0LCBzbyBiZXRyw6RndCBkaWUgV2FocnNjaGVpbmxpY2hrZWl0IGRlcyBOaWNodC1FaW50cmVmZmVucyBkZXMgQWxwaGEtRmVobGVycyA5NSUuIFdlcmRlbiBqZWRvY2ggemVobiBzb2xjaGVyIFBhYXJ2ZXJnbGVpY2hlIHZvcmdlbm9tbWVuLCBzbyBiZXRyw6RndCBkaWUgTmljaHQtRWludHJlZmZlbnMtV2FocnNjaGVpbmxpY2hrZWl0IGRlcyBBbHBoYS1GZWhsZXJzICguOTUpNiA9IC43MzUuIFVtIGRpZSBXYWhyc2NoZWlubGljaGtlaXQgZGVzIEVpbnRyZWZmZW5zIGRlcyBBbHBoYS1GZWhsZXJzIHp1IGJlc3RpbW1lbiwgd2lyZCAxIC0gLjczNSA9IC4yNjUgZ2VyZWNobmV0LiBEaWUgV2FocnNjaGVpbmxpY2hrZWl0IGRlcyBFaW50cmVmZmVucyBkZXMgQWxwaGEtRmVobGVycyBsaWVndCBzb21pdCBiZWkgMjYuNSUuIERpZXNlIEZlaGxlcndhaHJzY2hlaW5saWNoa2VpdCB3aXJkIGFscyAiRmFtaWx5d2lzZSBFcnJvciBSYXRlIiBiZXplaWNobmV0Lg0KDQpIaWVyYmVpIHdpcmQgzrEgZHVyY2ggZGllIEFuemFobCBkZXIgUGFhcnZlcmdsZWljaGUgZGl2aWRpZXJ0LiBJbSBoaWVyIGF1ZmdlZsO8aHJ0ZW4gRmFsbCBpc3QgZGllcyAuMDUvMyA9IC4wMTYuIChudXIgYmVpbSAibm9uZSIpDQoNCmBgYHtyfQ0KDQoNCnBhaXJ3aXNlLnQudGVzdCh1ZWJ1bmc1JExlaXN0dW5nc21vdml0YXRpb24sIA0KdWVidW5nNSRQaGFzZSwgDQpwLmFkanVzdC5tZXRob2QgPSAiYm9uZmVycm9uaSIsIA0KcGFpcmVkID0gVFJVRSwgDQpkYXRhID0gdWVidW5nNSkNCmBgYA0KDQpFcyB3aXJkIGVyc2ljaHRsaWNoLCBkYXNzIGFsbGUgZHJlaSBNZXNzemVpdHB1bmt0IHNpY2ggc2lnIHVudGVyc2NoZWlkZW4ocCA8IC4wNSwgd2VnZW4gbWV0aG9kPSJib25mZXJyb25pIikuIERhaGVyIGxhc3NlbiBzaWNoIGbDvHIgZWlnZW5zdMOkbmRpZ2UgR3J1cHBlbiBiaWxkZW4uIA0KDQoNCiM4LglQcm9maWxkaWFncmFtbQ0KDQpgYGB7cn0NCg0KZ2dwbG90KHVlYnVuZzUsIGFlcyh4PVBoYXNlLCB5PUxlaXN0dW5nc21vdml0YXRpb24sIGdyb3VwPTEpKSsNCnN0YXRfc3VtbWFyeShmdW4ueSA9IG1lYW4sIGdlb209InBvaW50Iiwgc2l6ZT0zKSsNCnN0YXRfc3VtbWFyeShmdW4ueSA9IG1lYW4sIGdlb209ImxpbmUiKSsNCnN0YXRfc3VtbWFyeShmdW4uZGF0YSA9IG1lYW5fY2xfbm9ybWFsLCBnZW9tPSJlcnJvcmJhciIsd2lkdGg9LjIsIHNpemU9LjI1KSsNCmxhYnMoeD0iUGhhc2UiLCB5PSJMZWlzdHVuZ3Ntb3RpdmF0aW9uc3NrYWxhIikrDQp0aGVtZV9jbGFzc2ljKCkNCg0KYGBgDQoNCg0KSW0gdm9ybGllZ2VuZGVuIEJlaXNwaWVsIGJldHLDpGd0IGRhcyBwYXJ0aWVsbGUgRXRhLVF1YWRyYXQgLjk1ODguIERhcyBoZWlzc3QsIGVzIHdpcmQgOTUsODglIGRlciBWYXJpYXRpb24gZGVyIEdld2ljaHRzcmVkdWt0aW9uIGR1cmNoIGRpZSBNZXNzemVpdGVuIGF1Zmdla2zDpHJ0Lg0KDQoNCiMgRGFzIHBhcnRpZWxsZSBFdGEtUXVhZHJhdA0KRGFzIHBhcnRpZWxsZSBFdGEtUXVhZHJhdCAocGFydGllbGxlcyDOtzIpIGlzdCBlaW4gTWFzcyBmw7xyIGRpZSBFZmZla3RncsO2c3NlOiBFcyBzZXR6dCBkaWUgVmFyaWFueiwgZGllIGR1cmNoIGVpbmVuIEZha3RvciBlcmtsw6RydCB3aXJkLCBpbiBCZXp1ZyBtaXQgamVuZXIgaW50ZXJlc3NpZXJlbmRlbiBWYXJpYW56LCBkaWUgbm9jaCBuaWNodCBkdXJjaCBhbmRlcmUgRmFrdG9yZW4gaW0gTW9kZWxsIGVya2zDpHJ0IHdpcmQuIERhcyBoZWlzc3QsIGVzIHdpcmQgYXVzc2NobGllc3NsaWNoIGplbmUgVmFyaWF0aW9uIGJldHJhY2h0ZXQsIHdlbGNoZSBpbSBGb2t1cyBkZXMgSW50ZXJlc3NlcyBzdGVodCB1bmQgbmljaHQgYmVyZWl0cyBkdXJjaCBkaWUgYW5kZXJlbiBGYWt0b3JlbiBpbSBNb2RlbGwgZXJrbMOkcnQgd2lyZC4gRGFzIHBhcnRpZWxsZSBFdGEtUXVhZHJhdCB6ZWlndCwgd2VsY2hlbiBBbnRlaWwgZGF2b24gZWluIEZha3RvciBlcmtsw6RydC4gSW0gRmFsbGUgZGVyIGVpbmZha3RvcmllbGxlbiBWYXJpYW56YW5hbHlzZSBtaXQgTWVzc3dpZWRlcmhvbHVuZyBsaWVndCBkYXMgSW50ZXJlc3NlIGF1c3NjaGxpZXNzbGljaCBhdWYgZGVyIFZhcmlhbnogaW5uZXJoYWxiIGRlciBQZXJzb25lbiAoU1Npbm5lcmhhbGIgUGVyc29uZW4gPSBTU1RyZWF0bWVudCArIFNTUmVzaWR1YWwpLCB3ZXN3ZWdlbiBzaWNoIGRhcyBwYXJ0aWVsbGUgRXRhLVF1YWRyYXQgd2llIGZvbGd0IGJlcmVjaG5ldA0KDQoNCg0KJCQgZXRhX3BeMiA9IFxmcmFje1NTX3tUcmVhdG1lbnR9fXtTU197VHJlYXRtZW50fStTU197UmVzaWR1YWx9fSQkDQoNCg0KDQoNCg0KDQpgYGB7cn0NCg0Kc3ByaW50ZigiUGFydGllbGxlIEV0YS1RdWFkcmF0IGbDvHIgJ1BoYXNlJzogZXRhPSAlLjRmIixtdWx0aW1lc3MyYSRwZXNbMl0pDQoNCmBgYA0KDQpJbSB2b3JsaWVnZW5kZW4gQmVpc3BpZWwgYmV0csOkZ3QgZGFzIHBhcnRpZWxsZSBFdGEtUXVhZHJhdCAuOTg3My4gRGFzIGhlaXNzdCwgZXMgd2lyZCA5OCw3MyUgZGVyIFZhcmlhdGlvbiBkZXIgR2V3aWNodHNyZWR1a3Rpb24gZHVyY2ggZGllIE1lc3N6ZWl0ZW4gYXVmZ2VrbMOkcnQuDQoNCiM5LglCZXJlY2hudW5nIGRlciBFZmZla3RzdMOkcmtlDQoNCmBgYHtyfQ0KDQplZmZuZXUgPC0gc3FydChtaXRtZXNzMiRwZXNbMl0vKDEtbWl0bWVzczIkcGVzWzJdKSkNCg0Kc3ByaW50ZigiRWZmZWt0c3TDpHJrZTogZj0gJS4zZiIsZWZmbmV1KQ0KYGBgDQpVbSB6dSBiZXVydGVpbGVuLCB3aWUgZ3Jvc3MgZGllc2VyIEVmZmVrdCBpc3QsIGthbm4gbWFuIHNpY2ggYW4gZGVyIEVpbnRlaWx1bmcgdm9uIENvaGVuICgxOTg4KSBvcmllbnRpZXJlbjoNCg0KZiA9IC4xMCBlbnRzcHJpY2h0IGVpbmVtIHNjaHdhY2hlbiBFZmZla3QgDQoNCmYgPSAuMjUgZW50c3ByaWNodCBlaW5lbSBtaXR0bGVyZW4gRWZmZWt0DQoNCmYgPSAuNDAgZW50c3ByaWNodCBlaW5lbSBzdGFya2VuIEVmZmVrdA0KDQpEYW1pdCBlbnRzcHJlY2hlbiBkaWUgRWZmZWt0c3TDpHJrZW4gdm9uIDguODMzIGVpbmVtIHN0YXJrZW4gRWZmZWt0Lg0KDQoNCiMxMC4JRWluZSBBdXNzYWdlDQoNCkVpbmUgVmFyaWFuemFuYWx5c2UgbWl0IE1lc3N3aWVkZXJob2x1bmcgemVpZ3QsIGRhc3Mgc2ljaCBkaWUgTGVpc3R1bmdzbW90aXZhdGlvbiBkZXIgUHJvYmFuZElubmVuIGplIG5hY2ggTWVzc3plaXRwdW5rdCB1bnRlcnNjaGVpZGV0LiAoRigyLDU2KSA9IDIxODQuOCwgcCA8IC4wMDAsIHBhcnRpZWxsZXMgzrcyID0gLjk4NzMsIG4gPSAyOSkuIERlciBNYXVjaGx5LVRlc3QgZXJnYWIsIGRhc3MgU3Bow6RyaXppdMOkdCBnZWdlYmVuIGlzdCwgd2VzaGFsYiBkaWUgR3JlZW5ob3VzZS1HZWlzc2VyLUtvcnJla3R1ciBuaWNodCBhbmdld2VuZGV0IHd1cmRlLCB3b2R1cmNoIHNpY2gga29ycmlnaWVydGUgRnJlaWhlaXRzZ3JhZGUgbmljaHQgZXJnZWJlbi4NCg0KRGVyIFBvc3QtSG9jLVRlc3QgemVpZ3QsIGRhc3MgZGllIExlaXN0dW5nc21vdGl2YXRpb24gZGVyIFByb2JhbmRJbm5lbiB6dW0gTWVzc3plaXRwdW5rdCBIb25leW1vb24gKE0gPTQ0LjQ4LCBTRCA9IDIuMDEsIG49MjkpICBzaWduaWZpa2FudCBow7ZoZXIgc2luZCBhbHMgenVtIE1lc3N6ZWl0cHVua3QgSGFuZ292ZXIgKDNNKSAoTSA9MTEuNDgsIFNEID0gMS45OSwgbj0yOSkgIGFiZXIgd2llZGVyIHp1bSBNZXNzemVpdHB1bmt0IE5vcm1hbGl0w6R0KDZNKShNID0yOC41OSwgU0Q9Mi4xMSwgbj0yOSkgc3RlaWd0IC4NCg0KRGllIEVmZmVrdHN0w6Rya2UgbGllZ3QgYmVpIGY9OC44MzMgdW5kIGVudHNwcmljaHQgZGFtaXQgbmFjaCBDb2hlbiAoMTk4OCkgZWluZW0gc3RhcmtlbiBFZmZla3QuIEgwIGthbm4gdmVyd29yZmVuIHdlcmRlbiwgSDEgYW5nZW5vbW1lbi4NCg0K