Função xR1 com especificações para média e desvio-padrão
Função xR2 sem especificações para média e desvio-padrão
Funções
# m = número de amostras observadas.
# n = número de observações de cada amostra.
# y = vetor com as observações, ordenadas por amostra, da variável observada.
# mi = especificação para a média do processo.
# sigma = especificação para o desvio-padrão do processo.
xR1=function(m,n,y,mi,sigma){
if (n>1) {
amplit=numeric(m)
mat=matrix(y,m,n,byrow=T)
media=apply(mat,1,mean)
for (i in 1:m) {
amplit[i]=max(mat[i,])-min(mat[i,])}
}
else {
amplit=numeric(m-1)
media=y
for (i in 2:m)
amplit[i-1]=sqrt((y[i]-y[i-1])^2)
}
d2=c(1.1296,1.6918,2.0535,2.3248,2.5404,2.7074, 2.8501,2.9677,3.0737,3.1696)
d3=c(.8541,.8909,.8800,.8674,.8508, .8326,.8209,.8102,.7978,.7890)
LIC1=mi-3*sigma/sqrt(n)
LSC1=mi+3*sigma/sqrt(n)
if(n>1) {
LIC2=d2[n-1]*sigma-3*d3[n-1]*sigma
LSC2=d2[n-1]*sigma+3*d3[n-1]*sigma
if (LIC2 < 0)
LIC2=0
} else {
LIC2=d2[n]*sigma-3*d3[n]*sigma
LSC2=d2[n]*sigma+3*d3[n]*sigma
if (LIC2 < 0)
LIC2=0
}
par(mfrow=c(2,1))
amostra1=matrix(rep(seq(1,m),4),m,4,byrow=F)
if (n>1) amostra2=amostra1 else amostra2=amostra1[-1,]
xbar=cbind(rep(mi,m),rep(LIC1,m),rep(LSC1,m),media)
if (n>1) {
rbar=cbind(rep(sigma,m),rep(LIC2,m),rep(LSC2,m),amplit)
}
else rbar=cbind(rep(sigma,m-1),rep(LIC2,m-1),
rep(LSC2,m-1),amplit)
matplot(amostra2,rbar,type="o",ylab="Amplitude",
col=c("black","red","red","blue"),
ylim=c(min(rbar),max(rbar)),
xlab="Amostras",main="Gráfico R",pch=20, lty=1, lwd=2)
matplot(amostra1,xbar,type="o",ylab="Média",xlab="Amostras",
main=expression(paste("Gráfico " * bar(x))),col=c("black","red","red", "blue"),ylim=c(min(xbar),max(xbar)),pch=20, lty=1, lwd=2)
out=rbind(round(xbar[1,1:3],2),round(rbar[1,1:3],2))
colnames(out)=c("Referência","LIC","LSC")
out
}
xR2=function(m,n,y){
if (n>1) {
amplit=numeric(m)
mat=matrix(y,m,n,byrow=T)
media=apply(mat,1,mean)
for (i in 1:m)
amplit[i]=max(mat[i,])-min(mat[i,])
x2barras=mean(media)
Rbarra=mean(amplit)
d2=c(1.1296,1.6918,2.0535,2.3248,2.5404,2.7074,2.8501, 2.9677,3.0737,3.1696)
d3=c(.8541,.8909,.8800,.8674,.8508,.8326,.8209, .8102,.7978,.7890)
LIC1=x2barras-3*Rbarra/(d2[n-1]*sqrt(n))
LSC1=x2barras+3*Rbarra/(d2[n-1]*sqrt(n))
LIC2=Rbarra-3*d3[n-1]*Rbarra/d2[n-1]
LSC2=Rbarra+3*d3[n-1]*Rbarra/d2[n-1]
if (LIC2 < 0)
LIC2=0
}
else {
amplit=numeric(m-1)
media=y
for (i in 2:m)
amplit[i-1]=sqrt((y[i]-y[i-1])^2)
x2barras=mean(media)
Rbarra=mean(amplit)
d2=1.1296
d3=.8541
LIC1=x2barras-3*Rbarra/(d2*sqrt(n))
LSC1=x2barras+3*Rbarra/(d2*sqrt(n))
LIC2=Rbarra-3*d3*Rbarra/d2
LSC2=Rbarra+3*d3*Rbarra/d2
if (LIC2 < 0) LIC2=0 }
par(mfrow=c(2,1))
amostra1=matrix(rep(seq(1,m),4),m,4,byrow=F)
if (n>1) amostra2=amostra1
else amostra2=amostra1[-1,]
xbar=cbind(rep(x2barras,m),rep(LIC1,m),rep(LSC1,m),media)
if (n>1) {
rbar=cbind(rep(Rbarra,m),rep(LIC2,m),rep(LSC2,m),amplit)
}
else
rbar=cbind(rep(Rbarra,m-1),rep(LIC2,m-1),
rep(LSC2,m-1),amplit)
matplot(amostra2,rbar,type="o",ylab="Amplitude",
col=c("black","red","red","blue"),
ylim=c(min(rbar),max(rbar)),
xlab="Amostras",main="Gráfico R",pch=20, lty=1, lwd=2)
matplot(amostra1,xbar,type="o",ylab="Média",xlab="Amostras",
main=expression(paste("Gráfico " * bar(x))),col=c("black","red","red", "blue"),ylim=c(min(xbar),max(xbar)),pch=20, lty=1,lwd=2)
out=rbind(round(xbar[1,1:3],2),round(rbar[1,1:3],2))
colnames(out)=c("Referência","LIC","LSC")
out
}
# m = número de amostras observadas.
# n = número de observações de cada amostra.
# y = vetor com as observações, ordenadas por amostra, da variável observada.
# mi = especificação para a média do processo.
# sigma = especificação para o desvio-padrão do processo.
TCC Robson
dados <- c(311.37,
311.31,
311.38,
311.23,
311.35,
311.39,
313.13,
311.57,
311.13,
312.58,
311.48,
311.19,
311.26,
311.27,
310.98,
311.33,
311.34,
311.36,
311.4,
311.37,
311.23,
311.26,
311.2,
311.15,
311.27,
311.19,
311.31,
311.12,
311.22,
311.18,
311.23,
311.06,
311.1,
311.23,
311.17,
311.07,
310.94,
311.17,
311.13,
311.11,
311.18,
311.21,
310.56,
310.5,
311.13,
310.92,
308.62,
311.19,
311.25,
311.15,
311.16,
310.98,
311.15,
311.1,
311.22,
310.74,
311.23,
311.08,
310.85,
311.13,
310.5,
310.3,
310.79,
310.83,
310.72,
311.1,
311.04,
311.19,
311.31,
311.39,
310.83,
310.79,
310.91,
310.84,
311.18,
311.1,
311.05,
311.36,
311.32,
311.1,
310.76,
310.75,
310.88,
310.9,
310.95,
311.06,
311.01,
311.15,
311.2,
311.33,
311.14,
310.98,
311.04,
311.2,
311.22,
311.24,
311.35,
311.23,
311.09,
311.31,
311.18,
311.15,
311.16,
311.01,
311.41,
311.34,
311.35,
311.31,
311.11,
311.49,
311.25,
311.16,
311.12,
311.26,
311.27,
311.29,
311,
311.44,
311.53,
311.34,
311.22,
311.25,
310.97,
311.2,
311.15,
311.26,
311.36,
311.37,
311.23,
311.29,
311.06,
311.01,
311.15,
311.16,
311.13,
310.97,
311.13,
311.03,
311.25,
311.26,
311.29,
311.18,
311.44,
311.24,
311.31,
311.5,
311.59,
311.61,
311.31,
311.15,
310.75,
310.97,
310.84,
310.86,
310.82,
311.03,
311.32,
310.97,
311.16,
311.21,
311.42,
311.19,
311.19,
311.49,
311.39,
311.41,
311.36,
311.51,
311.36,
311.1,
311.12,
311.12,
311.25,
310.85,
310.9,
310.83,
311.4,
311.38,
311.17,
311.41,
310.76,
310.77,
310.84,
311.2,
311.09,
311.16,
311.11,
311.02,
311.12,
311.05,
311.13,
310.83,
311.15,
311.13,
311.13,
310.95,
310.98,
310.68,
310.68,
310.82,
309.33,
309.25,
308.98,
309.16,
309.25,
309.22,
309.1,
308.58,
308.28,
308.67,
309.14,
308.9,
309.19,
308.98,
308.9,
308.98,
308.98,
308.75,
309.03,
308.94)
m=44
n=5
xR2(m,n,y=dados)
Referência LIC LSC
[1,] 310.95 310.71 311.19
[2,] 0.42 0.00 0.89

m=22
n=10
xR2(m,n,y=dados)
Referência LIC LSC
[1,] 310.95 310.74 311.16
[2,] 0.67 0.15 1.20

# xR1(m,n,y=dados,mi=311,sigma=?)
LS0tDQp0aXRsZTogIkdyw6FmaWNvcyBkZSBDb250cm9sZSBYX2JhciBlIFIgLSBUQ0MgUk9CU09OIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KIA0KICAgIEZ1bsOnw6NvIHhSMSBjb20gZXNwZWNpZmljYcOnw7VlcyBwYXJhIG3DqWRpYSBlIGRlc3Zpby1wYWRyw6NvDQogICAgRnVuw6fDo28geFIyIHNlbSBlc3BlY2lmaWNhw6fDtWVzIHBhcmEgbcOpZGlhIGUgZGVzdmlvLXBhZHLDo28NCg0KIyMgRnVuw6fDtWVzDQpgYGB7cn0NCg0KIyBtID0gbnXMgW1lcm8gZGUgYW1vc3RyYXMgb2JzZXJ2YWRhcy4NCiMgbiA9IG51zIFtZXJvIGRlIG9ic2VydmFjzKdvzINlcyBkZSBjYWRhIGFtb3N0cmEuDQojIHkgPSB2ZXRvciBjb20gYXMgb2JzZXJ2YWPMp2/Mg2VzLCBvcmRlbmFkYXMgcG9yIGFtb3N0cmEsIGRhIHZhcmlhzIF2ZWwgb2JzZXJ2YWRhLg0KIyBtaSA9IGVzcGVjaWZpY2FjzKdhzINvIHBhcmEgYSBtZcyBZGlhIGRvIHByb2Nlc3NvLg0KIyBzaWdtYSA9IGVzcGVjaWZpY2FjzKdhzINvIHBhcmEgbyBkZXN2aW8tcGFkcmHMg28gZG8gcHJvY2Vzc28uDQoNCg0KeFIxPWZ1bmN0aW9uKG0sbix5LG1pLHNpZ21hKXsgDQogIGlmIChuPjEpIHsgDQogICAgYW1wbGl0PW51bWVyaWMobSkgDQogICAgbWF0PW1hdHJpeCh5LG0sbixieXJvdz1UKSANCiAgICBtZWRpYT1hcHBseShtYXQsMSxtZWFuKSANCiAgICBmb3IgKGkgaW4gMTptKSB7DQogIGFtcGxpdFtpXT1tYXgobWF0W2ksXSktbWluKG1hdFtpLF0pfQ0KIH0gDQogIGVsc2UgeyANCiAgICBhbXBsaXQ9bnVtZXJpYyhtLTEpIA0KICAgIG1lZGlhPXkgDQogICAgZm9yIChpIGluIDI6bSkgDQogICAgICBhbXBsaXRbaS0xXT1zcXJ0KCh5W2ldLXlbaS0xXSleMikgDQogICAgfSANCiAgDQogIGQyPWMoMS4xMjk2LDEuNjkxOCwyLjA1MzUsMi4zMjQ4LDIuNTQwNCwyLjcwNzQsIDIuODUwMSwyLjk2NzcsMy4wNzM3LDMuMTY5NikNCiAgZDM9YyguODU0MSwuODkwOSwuODgwMCwuODY3NCwuODUwOCwgLjgzMjYsLjgyMDksLjgxMDIsLjc5NzgsLjc4OTApIA0KICBMSUMxPW1pLTMqc2lnbWEvc3FydChuKSANCiAgTFNDMT1taSszKnNpZ21hL3NxcnQobikgDQogIGlmKG4+MSkgeyANCiAgICBMSUMyPWQyW24tMV0qc2lnbWEtMypkM1tuLTFdKnNpZ21hIA0KICAgIExTQzI9ZDJbbi0xXSpzaWdtYSszKmQzW24tMV0qc2lnbWEgDQogICAgaWYgKExJQzIgPCAwKSANCiAgICAgIExJQzI9MCANCiAgICB9IGVsc2UgeyANCiAgICAgIExJQzI9ZDJbbl0qc2lnbWEtMypkM1tuXSpzaWdtYSANCiAgICAgIExTQzI9ZDJbbl0qc2lnbWErMypkM1tuXSpzaWdtYSANCiAgICAgIGlmIChMSUMyIDwgMCkNCiAgICAgICAgTElDMj0wDQogICAgICB9DQogIA0KICBwYXIobWZyb3c9YygyLDEpKSANCiAgYW1vc3RyYTE9bWF0cml4KHJlcChzZXEoMSxtKSw0KSxtLDQsYnlyb3c9RikNCiAgaWYgKG4+MSkgYW1vc3RyYTI9YW1vc3RyYTEgZWxzZSBhbW9zdHJhMj1hbW9zdHJhMVstMSxdIA0KICB4YmFyPWNiaW5kKHJlcChtaSxtKSxyZXAoTElDMSxtKSxyZXAoTFNDMSxtKSxtZWRpYSkgDQogIGlmIChuPjEpIHsgDQogICAgcmJhcj1jYmluZChyZXAoc2lnbWEsbSkscmVwKExJQzIsbSkscmVwKExTQzIsbSksYW1wbGl0KSANCiAgICB9IA0KICBlbHNlIHJiYXI9Y2JpbmQocmVwKHNpZ21hLG0tMSkscmVwKExJQzIsbS0xKSwgDQogICAgICAgICAgICAgICAgICByZXAoTFNDMixtLTEpLGFtcGxpdCkgDQogIA0KICBtYXRwbG90KGFtb3N0cmEyLHJiYXIsdHlwZT0ibyIseWxhYj0iQW1wbGl0dWRlIiwNCiAgICAgICAgICBjb2w9YygiYmxhY2siLCJyZWQiLCJyZWQiLCJibHVlIiksDQogICAgICAgICAgeWxpbT1jKG1pbihyYmFyKSxtYXgocmJhcikpLA0KICAgICAgICAgIHhsYWI9IkFtb3N0cmFzIixtYWluPSJHcsOhZmljbyBSIixwY2g9MjAsIGx0eT0xLCBsd2Q9MikNCiAgDQogIG1hdHBsb3QoYW1vc3RyYTEseGJhcix0eXBlPSJvIix5bGFiPSJNw6lkaWEiLHhsYWI9IkFtb3N0cmFzIiwNCiAgICAgICAgICBtYWluPWV4cHJlc3Npb24ocGFzdGUoIkdyw6FmaWNvICIgKiBiYXIoeCkpKSxjb2w9YygiYmxhY2siLCJyZWQiLCJyZWQiLCAiYmx1ZSIpLHlsaW09YyhtaW4oeGJhciksbWF4KHhiYXIpKSxwY2g9MjAsIGx0eT0xLCBsd2Q9MikgDQogIG91dD1yYmluZChyb3VuZCh4YmFyWzEsMTozXSwyKSxyb3VuZChyYmFyWzEsMTozXSwyKSkNCiAgY29sbmFtZXMob3V0KT1jKCJSZWZlcsOqbmNpYSIsIkxJQyIsIkxTQyIpDQogIG91dCANCiAgfQ0KDQoNCnhSMj1mdW5jdGlvbihtLG4seSl7DQogIGlmIChuPjEpIHsgDQogICAgYW1wbGl0PW51bWVyaWMobSkgDQogICAgbWF0PW1hdHJpeCh5LG0sbixieXJvdz1UKSANCiAgICBtZWRpYT1hcHBseShtYXQsMSxtZWFuKSANCiAgICBmb3IgKGkgaW4gMTptKSANCiAgICAgIGFtcGxpdFtpXT1tYXgobWF0W2ksXSktbWluKG1hdFtpLF0pIA0KICAgIHgyYmFycmFzPW1lYW4obWVkaWEpIA0KICAgIFJiYXJyYT1tZWFuKGFtcGxpdCkgDQogICAgZDI9YygxLjEyOTYsMS42OTE4LDIuMDUzNSwyLjMyNDgsMi41NDA0LDIuNzA3NCwyLjg1MDEsIDIuOTY3NywzLjA3MzcsMy4xNjk2KQ0KICAgIGQzPWMoLjg1NDEsLjg5MDksLjg4MDAsLjg2NzQsLjg1MDgsLjgzMjYsLjgyMDksIC44MTAyLC43OTc4LC43ODkwKSANCiAgICBMSUMxPXgyYmFycmFzLTMqUmJhcnJhLyhkMltuLTFdKnNxcnQobikpIA0KICAgIExTQzE9eDJiYXJyYXMrMypSYmFycmEvKGQyW24tMV0qc3FydChuKSkgDQogICAgTElDMj1SYmFycmEtMypkM1tuLTFdKlJiYXJyYS9kMltuLTFdIA0KICAgIExTQzI9UmJhcnJhKzMqZDNbbi0xXSpSYmFycmEvZDJbbi0xXSANCiAgICBpZiAoTElDMiA8IDApIA0KICAgICAgTElDMj0wIA0KICAgIH0gDQogIGVsc2UgeyANCiAgICAgIGFtcGxpdD1udW1lcmljKG0tMSkgDQogICAgICBtZWRpYT15IA0KICAgICAgZm9yIChpIGluIDI6bSkNCiAgICAgICAgYW1wbGl0W2ktMV09c3FydCgoeVtpXS15W2ktMV0pXjIpDQogICAgICB4MmJhcnJhcz1tZWFuKG1lZGlhKSANCiAgICAgIFJiYXJyYT1tZWFuKGFtcGxpdCkgDQogICAgICBkMj0xLjEyOTYgDQogICAgICBkMz0uODU0MSANCiAgICAgIExJQzE9eDJiYXJyYXMtMypSYmFycmEvKGQyKnNxcnQobikpIA0KICAgICAgTFNDMT14MmJhcnJhcyszKlJiYXJyYS8oZDIqc3FydChuKSkgDQogICAgICBMSUMyPVJiYXJyYS0zKmQzKlJiYXJyYS9kMiANCiAgICAgIExTQzI9UmJhcnJhKzMqZDMqUmJhcnJhL2QyIA0KICAgICAgaWYgKExJQzIgPCAwKSBMSUMyPTAgfSANCiAgDQogIHBhcihtZnJvdz1jKDIsMSkpIA0KICBhbW9zdHJhMT1tYXRyaXgocmVwKHNlcSgxLG0pLDQpLG0sNCxieXJvdz1GKSANCiAgaWYgKG4+MSkgYW1vc3RyYTI9YW1vc3RyYTEgDQogIGVsc2UgYW1vc3RyYTI9YW1vc3RyYTFbLTEsXSANCiAgeGJhcj1jYmluZChyZXAoeDJiYXJyYXMsbSkscmVwKExJQzEsbSkscmVwKExTQzEsbSksbWVkaWEpIA0KICBpZiAobj4xKSB7DQogICAgcmJhcj1jYmluZChyZXAoUmJhcnJhLG0pLHJlcChMSUMyLG0pLHJlcChMU0MyLG0pLGFtcGxpdCkgDQogIH0gDQogIGVsc2UNCiAgICByYmFyPWNiaW5kKHJlcChSYmFycmEsbS0xKSxyZXAoTElDMixtLTEpLA0KICAgICAgICAgICAgICAgcmVwKExTQzIsbS0xKSxhbXBsaXQpIA0KICANCiAgbWF0cGxvdChhbW9zdHJhMixyYmFyLHR5cGU9Im8iLHlsYWI9IkFtcGxpdHVkZSIsDQogICAgICAgICAgY29sPWMoImJsYWNrIiwicmVkIiwicmVkIiwiYmx1ZSIpLA0KICAgICAgICAgIHlsaW09YyhtaW4ocmJhciksbWF4KHJiYXIpKSwNCiAgICAgICAgICB4bGFiPSJBbW9zdHJhcyIsbWFpbj0iR3LDoWZpY28gUiIscGNoPTIwLCBsdHk9MSwgbHdkPTIpDQogIA0KICBtYXRwbG90KGFtb3N0cmExLHhiYXIsdHlwZT0ibyIseWxhYj0iTcOpZGlhIix4bGFiPSJBbW9zdHJhcyIsDQogICAgICAgICAgbWFpbj1leHByZXNzaW9uKHBhc3RlKCJHcsOhZmljbyAiICogYmFyKHgpKSksY29sPWMoImJsYWNrIiwicmVkIiwicmVkIiwgImJsdWUiKSx5bGltPWMobWluKHhiYXIpLG1heCh4YmFyKSkscGNoPTIwLCBsdHk9MSxsd2Q9MikNCiAgb3V0PXJiaW5kKHJvdW5kKHhiYXJbMSwxOjNdLDIpLHJvdW5kKHJiYXJbMSwxOjNdLDIpKSANCiAgY29sbmFtZXMob3V0KT1jKCJSZWZlcsOqbmNpYSIsIkxJQyIsIkxTQyIpDQogIG91dA0KICB9DQoNCmBgYA0KDQogICAgIyBtID0gbnXMgW1lcm8gZGUgYW1vc3RyYXMgb2JzZXJ2YWRhcy4NCiAgICAjIG4gPSBudcyBbWVybyBkZSBvYnNlcnZhY8ynb8yDZXMgZGUgY2FkYSBhbW9zdHJhLg0KICAgICMgeSA9IHZldG9yIGNvbSBhcyBvYnNlcnZhY8ynb8yDZXMsIG9yZGVuYWRhcyBwb3IgYW1vc3RyYSwgZGEgdmFyaWHMgXZlbCBvYnNlcnZhZGEuDQogICAgIyBtaSA9IGVzcGVjaWZpY2FjzKdhzINvIHBhcmEgYSBtZcyBZGlhIGRvIHByb2Nlc3NvLg0KICAgICMgc2lnbWEgPSBlc3BlY2lmaWNhY8ynYcyDbyBwYXJhIG8gZGVzdmlvLXBhZHJhzINvIGRvIHByb2Nlc3NvLg0KDQojIyBUQ0MgUm9ic29uDQoNCmBgYHtyIGZpZy5oZWlnaHQ9MTUsIGZpZy53aWR0aD0xMn0NCmRhZG9zIDwtIGMoMzExLjM3LA0KMzExLjMxLA0KMzExLjM4LA0KMzExLjIzLA0KMzExLjM1LA0KMzExLjM5LA0KMzEzLjEzLA0KMzExLjU3LA0KMzExLjEzLA0KMzEyLjU4LA0KMzExLjQ4LA0KMzExLjE5LA0KMzExLjI2LA0KMzExLjI3LA0KMzEwLjk4LA0KMzExLjMzLA0KMzExLjM0LA0KMzExLjM2LA0KMzExLjQsDQozMTEuMzcsDQozMTEuMjMsDQozMTEuMjYsDQozMTEuMiwNCjMxMS4xNSwNCjMxMS4yNywNCjMxMS4xOSwNCjMxMS4zMSwNCjMxMS4xMiwNCjMxMS4yMiwNCjMxMS4xOCwNCjMxMS4yMywNCjMxMS4wNiwNCjMxMS4xLA0KMzExLjIzLA0KMzExLjE3LA0KMzExLjA3LA0KMzEwLjk0LA0KMzExLjE3LA0KMzExLjEzLA0KMzExLjExLA0KMzExLjE4LA0KMzExLjIxLA0KMzEwLjU2LA0KMzEwLjUsDQozMTEuMTMsDQozMTAuOTIsDQozMDguNjIsDQozMTEuMTksDQozMTEuMjUsDQozMTEuMTUsDQozMTEuMTYsDQozMTAuOTgsDQozMTEuMTUsDQozMTEuMSwNCjMxMS4yMiwNCjMxMC43NCwNCjMxMS4yMywNCjMxMS4wOCwNCjMxMC44NSwNCjMxMS4xMywNCjMxMC41LA0KMzEwLjMsDQozMTAuNzksDQozMTAuODMsDQozMTAuNzIsDQozMTEuMSwNCjMxMS4wNCwNCjMxMS4xOSwNCjMxMS4zMSwNCjMxMS4zOSwNCjMxMC44MywNCjMxMC43OSwNCjMxMC45MSwNCjMxMC44NCwNCjMxMS4xOCwNCjMxMS4xLA0KMzExLjA1LA0KMzExLjM2LA0KMzExLjMyLA0KMzExLjEsDQozMTAuNzYsDQozMTAuNzUsDQozMTAuODgsDQozMTAuOSwNCjMxMC45NSwNCjMxMS4wNiwNCjMxMS4wMSwNCjMxMS4xNSwNCjMxMS4yLA0KMzExLjMzLA0KMzExLjE0LA0KMzEwLjk4LA0KMzExLjA0LA0KMzExLjIsDQozMTEuMjIsDQozMTEuMjQsDQozMTEuMzUsDQozMTEuMjMsDQozMTEuMDksDQozMTEuMzEsDQozMTEuMTgsDQozMTEuMTUsDQozMTEuMTYsDQozMTEuMDEsDQozMTEuNDEsDQozMTEuMzQsDQozMTEuMzUsDQozMTEuMzEsDQozMTEuMTEsDQozMTEuNDksDQozMTEuMjUsDQozMTEuMTYsDQozMTEuMTIsDQozMTEuMjYsDQozMTEuMjcsDQozMTEuMjksDQozMTEsDQozMTEuNDQsDQozMTEuNTMsDQozMTEuMzQsDQozMTEuMjIsDQozMTEuMjUsDQozMTAuOTcsDQozMTEuMiwNCjMxMS4xNSwNCjMxMS4yNiwNCjMxMS4zNiwNCjMxMS4zNywNCjMxMS4yMywNCjMxMS4yOSwNCjMxMS4wNiwNCjMxMS4wMSwNCjMxMS4xNSwNCjMxMS4xNiwNCjMxMS4xMywNCjMxMC45NywNCjMxMS4xMywNCjMxMS4wMywNCjMxMS4yNSwNCjMxMS4yNiwNCjMxMS4yOSwNCjMxMS4xOCwNCjMxMS40NCwNCjMxMS4yNCwNCjMxMS4zMSwNCjMxMS41LA0KMzExLjU5LA0KMzExLjYxLA0KMzExLjMxLA0KMzExLjE1LA0KMzEwLjc1LA0KMzEwLjk3LA0KMzEwLjg0LA0KMzEwLjg2LA0KMzEwLjgyLA0KMzExLjAzLA0KMzExLjMyLA0KMzEwLjk3LA0KMzExLjE2LA0KMzExLjIxLA0KMzExLjQyLA0KMzExLjE5LA0KMzExLjE5LA0KMzExLjQ5LA0KMzExLjM5LA0KMzExLjQxLA0KMzExLjM2LA0KMzExLjUxLA0KMzExLjM2LA0KMzExLjEsDQozMTEuMTIsDQozMTEuMTIsDQozMTEuMjUsDQozMTAuODUsDQozMTAuOSwNCjMxMC44MywNCjMxMS40LA0KMzExLjM4LA0KMzExLjE3LA0KMzExLjQxLA0KMzEwLjc2LA0KMzEwLjc3LA0KMzEwLjg0LA0KMzExLjIsDQozMTEuMDksDQozMTEuMTYsDQozMTEuMTEsDQozMTEuMDIsDQozMTEuMTIsDQozMTEuMDUsDQozMTEuMTMsDQozMTAuODMsDQozMTEuMTUsDQozMTEuMTMsDQozMTEuMTMsDQozMTAuOTUsDQozMTAuOTgsDQozMTAuNjgsDQozMTAuNjgsDQozMTAuODIsDQozMDkuMzMsDQozMDkuMjUsDQozMDguOTgsDQozMDkuMTYsDQozMDkuMjUsDQozMDkuMjIsDQozMDkuMSwNCjMwOC41OCwNCjMwOC4yOCwNCjMwOC42NywNCjMwOS4xNCwNCjMwOC45LA0KMzA5LjE5LA0KMzA4Ljk4LA0KMzA4LjksDQozMDguOTgsDQozMDguOTgsDQozMDguNzUsDQozMDkuMDMsDQozMDguOTQpDQoNCm09NDQNCm49NQ0KDQp4UjIobSxuLHk9ZGFkb3MpDQoNCm09MjINCm49MTANCg0KeFIyKG0sbix5PWRhZG9zKQ0KDQojIHhSMShtLG4seT1kYWRvcyxtaT0zMTEsc2lnbWE9PykNCmBgYA0KDQog