1 Análise Fatorial - AF

1.1 Aspectos Históricos

Historicamente, a origem das técnicas de análise de fatores ou análise fatorial está ligada a estudos da área de psicologia. Sua criação data do início do século XX, quando Karl Pearson (1901) e Charles Spearman (Spearman, 1904) desenvolveram um método para a criação de um índice geral de inteligência (fator “g”) com base nos resultados em vários testes (escalas) que refletiriam essa aptidão. Tratava-se de um primeiro método de AF, adequado para a estimação de um único fator. No entanto, o termo Análise de Fatorial foi introduzido por Louis L. Thurstone em 1931 no seu artigo Multiple Factor Analysis.

Thurstone (1931) identificou sete habilidades mentais primárias, em vez de um único fator g. Estudos mais recentes têm alterado a quantidade de fatores a serem considerados na análise de inteligência. No início, os métodos apresentavam uma característica mais empírica do que inferencial. Em 1933 Pearson e Hotteling deram um formalismo melhor as idéias criadas por Spearman, e assim impulsionado com essas idéias, em 1940 com Lawley, surge um primeiro trabalho com um maior rigor matemático, o que fez com que se aumentasse à aceitação dessas técnicas no ramo da psicologia (LAWLEY, 1940).

Certos conceitos das ciências sociais e comportamentais não são bem definidos e existem muitas discussões sobre o real significado de termos como classe social, opinião pública, comportamento de risco ou personalidade extrovertida. Tais conceitos são freqüentemente chamados de variáveis latentes, desde que não são diretamente observáveis mesmo na população. Trata-se de construtos inventados pelos cientistas com o propósito de entender alguma área de interesse na pesquisa sendo realizada e para a qual não existe método operacional para fazer uma medida de forma direta.

Embora as variáveis latentes não possam ser observadas diretamente, alguns de seus efeitos aparecerão nas variáveis manifestas, ou seja, aquelas que podem ser verificadas. Fica claro que medir diretamente um conceito como preconceito racial não é possível; no entanto, pode-se, por exemplo, observar quando uma pessoa aprova, ou não, alguma legislação do governo a respeito deste assunto. Pode-se, também, saber de que raça são os amigos desta pessoa e assim assumir que tais observações são de algum modo, indicadores de uma variável mais fundamental, o preconceito racial (Everitt, 1984). O método mais conhecido para investigar a dependência de um conjunto de variáveis manifestas em relação a um número menor de variáveis latentes é a chamada Análise de Fatores.

A análise de fatores é uma das técnicas mais usuais do que se convencionou chamar de análise multivariada. Quando empregamos este tipo de análise estamos frequentemente interessados no comportamento de uma variável ou grupos de variáveis em covariação com outras (GREEN, 1976).

Em realidade a análise fatorial não se refere a uma única técnica estatística, mas a uma variedade de técnicas relacionadas para tornar os dados observados mais facilmente (e diretamente) interpretados. Isto é feito analisando-se os inter-relacionamentos entre as variáveis de tal modo que estas possam ser descritas convenientemente por um grupo de categorias básicas, em número menor que as variáveis originais, chamado fatores. Assim, o objetivo da análise fatorial é a parcimônia, procurando definir o relacionamento entre as variáveis de modo simples e usando um número de fatores menor que o número original de variáveis.

Mais precisamente, um fator é um construto, uma entidade hipotética, uma variável não observada, que se supõe estarem subjacente a testes, escalas, itens e, de fato, medidas de qualquer espécie. Como construtos, os fatores apenas possuem realidade no fato de explicarem a variância de variáveis observadas, tal como se revelam pelas correlações entre as variáveis sendo analisadas, ou seja, a única realidade científica que os fatores possuem vem das correlações entre testes ou variáveis sendo pesquisadas. Se os resultados de indivíduos em itens ou testes caminham juntos, então, na medida em que existam correlações substanciais entre eles, está definido um fator.

1.2 Definição Clássica - AF

A análise fatorial (AF), de modo geral, é uma técnica estatística multivariada que tem como princípio analisar a estrutura das inter-relações (correlações) entre um grande número de variáveis, ou seja, descrever a estrutura de dependência de um conjunto de variáveis através da criação de fatores, que são variáveis que, supostamente, medem aspectos comuns (Hair et al, 2005). Com o emprego dessa técnica, inicialmente podem-se identificar as dimensões isoladas da estrutura dos dados e então determinar o grau em que cada variável é explicada por cada dimensão ou fator.

Segundo Mingoti (2005), a AF tem como objetivo principal descrever a variabilidade original do vetor aleatório X, em termos de um número menor M de variáveis aleatórias, chamadas de fatores comuns e que estão relacionadas com o vetor original X através de um modelo linear. Neste modelo, parte da variabilidade de X, é atribuída aos fatores comuns, sendo o restante da variabilidade de X atribuído ás variáveis que não foram incluídas no modelo, ou seja, o erro aleatório.

Para Barroso e Artes (2003), a AF é uma técnica que descreve a estrutura de dependência de um conjunto de variáveis, através da criação de fatores, que são variáveis que, supostamente, medem aspectos comuns.

Reis (1997) descreve a AF como um conjunto de técnicas cuja finalidade é representar ou descrever um número de variáveis iniciais a partir de um menor número de variáveis hipotéticas. Trata-se de uma técnica estatística multivariada que, a partir da estrutura de dependência existente entre as variáveis de interesse (em geral representada pelas correlações ou covariâncias entre essas variáveis), permite a criação de um conjunto menor de variáveis (variáveis latentes ou fatores), obtidas a partir das originais.

De acordo com Malhotra (2001), análise fatorial é um nome genérico que denota uma classe de processos essencialmente para redução e sumarização dos dados”.

A análise fatorial é uma técnica de interdependência na qual todas as variáveis são simultaneamente consideradas, cada uma relacionada com todas as outras, empregando o conceito da variável estatística, a composição linear das variáveis. Ela difere das técnicas multivariadas de dependência (Regressão Múltipla, Análise Discriminante, Análise Multivariada de Variância ou Correlação Canônica), nas quais uma ou mais variáveis são explicitamente consideradas como as variáveis de critério ou dependentes e todas as outras são as variáveis preditoras ou independentes.

Na análise fatorial, as variáveis estatísticas (fatores) são formadas para maximizar seu poder de explicação do conjunto inteiro de variáveis, e não para prever uma variável (eis) dependente(s).

Na concepção de Pasquali (2003), a análise fatorial é uma técnica caucada sobre o pressuposto de que uma série de variáveis observadas, medidas, chamadas de variáveis empíricas ou observáveis pode ser explicada por um número menor de variáveis não observáveis, chamadas precisamente de variáveis fontes, mais conhecidas sob o nome de fatores.

As chamadas variáveis fontes seriam a causa do fato de que as variáveis observáveis se relacionam entre si, isto é, são responsáveis pelas intercorrelações (covariâncias) entre as variáveis. Supõe-se que, se as variáveis empíricas se relacionam entre si, é porque elas têm uma causa comum que produz esta correlação entre elas. E a esta causa comum que se chama de fator e cuja descoberta é precisamente a tarefa da análise fatorial. Então, nestas afirmações já fizemos dois postulados que a análise fatorial assume (Pasquali, 2003):

    1. Princípio da Parcimônia ou de Rank Reduction: Um número menor de variáveis-fonte é suficiente para explicar uma série maior de variáveis observáveis, isto é, redução do posto da matriz das intercorrelações entre as variáveis observáveis.
    1. Princípio da Causalidade: As variáveis-fonte são as causas da covariância entre as variáveis observáveis, ou seja, a análise fatorial é um modelo causal.

1.3 Tipos de Análise Fatorial

Técnicas analíticas fatoriais podem atingir seus objetivos ou de uma perspectiva exploratória ou de uma confirmatória. Existe um debate contínuo sobre o papel apropriado da análise fatorial, onde muitos pesquisadores consideram a AF apenas exploratória, útil na busca da estrutura em um conjunto de variáveis ou como um método de redução de dados. Sob essa perspectiva, as técnicas analíticas fatoriais consideram o que os dados oferecem e não estabelecem restrições a priori sobre o número de componentes a serem extraídos. Para muitas, talvez a maioria das aplicações, esse uso da AF é adequado. No entanto, em outras situações, o pesquisador tem preconcebido idéias sobre a real estrutura dos dados, baseado em suporte teórico ou em pesquisas anteriores. Ele pode desejar testar hipóteses envolvendo questões sobre, por exemplo, quais variáveis deveriam ser agrupadas em fator ou número exato de fatores. Nesses casos, o pesquisador espera que a análise fatorial desempenhe um papel confirmatório, ou seja, avalie o grau em que os dados satisfazem à estrutura esperada.

1.3.1 Análise Fatorial Exploratória - AFE

È comum um pesquisador analisar dados relativos a um fenômeno sem dispor de um quadro de referência teórica que o oriente completamente. Na maioria das vezes, essa situação decorre da falta de investimento na estruturação teórica do problema, da existência de lacunas na teoria ou da falta de ajuste de um modelo teórico proposto de antemão aos dados observados.

De qualquer modo, sempre deve haver um mínimo de teoria indispensável à utilização da AF, mesmo em sua forma exploratória. No mínimo, o pesquisador deve supor que, por trás das variáveis observadas, há uma estrutura de fatores ortogonais ou oblíquos. Isso por si só não é pouco, pois exclui relações causais entre fatores, relações causais entre variáveis observadas e correlações dos fatores únicos com outros fatores ou com variáveis cuja especificidade não determina.
Assumida a existência de uma estrutura fatorial subjacente, o objetivo primário da Análise Fatorial Exploratória é determinar a menor quantidade possível de fatores que possam reproduzir a estrutura de correlações das variáveis observadas. Secundariamente, o propósito é ajustar soluções em que um pequeno número de variáveis tenha carga elevada em cada fator, pois isso facilita a interpretação da solução.

1.3.2 Análise Fatorial Confirmatória - AFC

A aplicação na análise fatorial confirmatória procura verificar se os dados observados se comportam de acordo com uma expectativa teórica. Se isso ocorrer, serve como evidência favorável à validade dos dados e reforça a teoria proposta, se não acontecer, alerta para existência de problemas com os dados, com a teoria ou com ambos. O requisito mínimo para execução da análise fatorial confirmatória é o pesquisador possuir de antemão uma hipótese acerca da quantidade de fatores comuns e apresentar uma expectativa teórica sobre qual fator deve carregar em qual variável.

1.4 Cargas Fatoriais

As cargas fatoriais obtidas são, com efeito, reduções de dados muito mais complexos a tamanho manuseável para que o pesquisador possa interpretar melhor os resultados (KERLINGER, 1980).

A expressão carga fatorial ocorre freqüentemente. Uma matriz de cargas fatoriais é um dos produtos finais da análise fatorial. Uma carga fatorial é um coeficiente, um número decimal, positivo ou negativo, geralmente menor do que 1, que expressa o quanto um teste ou variável observada está carregado ou saturado em um fator. Por outras palavras, quanto maior for a carga em cima de um fator, mais a variável se identifica com o que quer que seja o fator.

Em síntese, a análise fatorial é essencialmente um método para determinar o número de fatores existentes em um conjunto de dados, para determinar quais testes ou variáveis pertencem a quais fatores, e em que extensão os testes ou variáveis pertencem a/ou estão saturados com o que quer que seja o fator.

Assim, na AF uma situação, com inúmeras variáveis (\(X_{1}, X_{2},..., X_{p}\)), é explicada a partir de dimensões escondidas (fatores: \(F_{1}, F_{2}, F_{3}\)). A Figura 1 demonstra graficamente o esquema geral da análise de fatores.

1.5 Modelo Estatístico - AF

O modelo estatístico usado na análise fatorial explica uma estrutura de correlação existente entre um conjunto de informações, diretamente observado por meio de combinação linear de variáveis, as quais não são diretamente observadas, denominados fatores comuns, acrescidas de componente residual. Um modelo de análise fatorial pode ser apresentado na seguinte forma conforme (DILLON e GOLDSTEIN, 1984).

Sejam variáveis aleatórias, m fatores comuns; m<p.

\[ X_{i} = \sum_{j=1}^{m} \lambda_{ij} F_{j} + \epsilon_{i} \]

Em que:

\(X_{i}\) = variáveis originais ou observadas;

\(\lambda_{ij}\) = Cargas fatoriais da i-ésima variável no j-ésimo fator comum e refletem a importância do j-ésimo fator na composição da i-ésima variável.

\(F_{j}\) = variáveis não-observáveis ou variáveis latentes chamadas de fatores comuns;

\(\epsilon_{i}\) = Fatores específicos que descrevem a variação residual específica da i-ésima variável (resíduo que afeta somente \(X_{i}\)). É a parte da variável \(X_{i}\) que não é explicada pelos fatores comuns.

1.6 Comunalidades

A porção da variância que a variável contribui para o fator comum m é chamada de comunalidade. A porção da variância Var(X)= \(\sigma^{2}\) devido ao fator específico, chama-se especificidade ou variância específica.

Então tem-se que A variância de cada variável \(X_{i}\) é a soma das Comunalidades \(h_{i}^{2}\) com suas respectivas especificidades ou variância específica \(\psi_{i}\).

\[\underbrace{\sigma_{ij}}_{\mbox{Var} (X_{i})} = \underbrace{l^{2}_{i1}+l^{2}_{i2}+\ldots+l^{2}_{im}}_{\mbox{Comunalidades}} +\underbrace{\psi_{i}}_{\mbox{Variancia Especifica}}\] Denotando-se a i-ésima comunalidade por \(h_{i}^{2}\) tem-se:

\[h_{ij}^{2} = l^{2}_{i1}+l^{2}_{i2}+\ldots+l^{2}_{im} = \sum_{ij}^{m} l^{2}_{ij} \ \ \ \ \ com \ \ \ \ i=1,2,...,p \]

Então:

\[ \sigma_{ij} = h_{i}^{2} + \psi_{i}\]

A i-ésima comunalidade é a soma dos quadrados dos carregamentos da i-ésima variável com m fatores comuns. Portanto as comunalidades são as maiores parcelas do total da variância de uma variável \(X_{i}\). A segunda parcela é proveniente da variância específica de cada variável, representada por \(\psi\). Quanto mais a comunalidade se aproximar de 1, melhor será o modelo fatorial. Autores consideram boa comunalidade valores acima de 0,70.

1.7 Principais Etapas para Aplicação - AF

A análise fatorial possui, basicamente, oito etapas para a sua elaboração que são:

  • Formular o Problema: Formulação do problema da análise fatorial e identificação das variáveis originais que serão investigadas para resumo ou redução dos dados.

  • Cálculo da Matriz de Correlação: Cálculo da matriz de correlação das variáveis em estudo para a verificação do grau de associação entre as variáveis. Para testar a conveniência do modelo fatorial, pode-se aplicar o teste de esfericidade de Bartlett para testar a hipótese nula de que as variáveis não sejam correlacionadas na população, ou seja, que a matriz de correlação da população é uma matriz de identidade. Outra estatística utilizada pode ser a medida de adequacidade da amostra de Kaiser-Meyer-Olkin (KMO), um índice usado para avaliar a medida de adequacidade da amostra da análise fatorial. Valores altos (entre 0,5 e 1,0) indicam que a análise fatorial é apropriada. Assim, a partir de uma análise da matriz de correlação das diversas variáveis, é possível obter indicadores sintéticos, ou, utilizando o termo técnico, escores fatoriais, que consistem numa combinação linear das variáveis originais que as sintetizam e explicam (KAISER E RICE, 1974, SPSS, 1999).

  • Método de Análise: Escolha do método de análise fatorial mais apropriado para extração dos fatores a serem utilizados existem vários dentre os mais usuais são: Método de Componentes Principais, Método de Análise Fatorial Comum e Método de Máxima Verossimilhança.

  • Extrair Fatores Iniciais: Extração dos fatores (cargas fatoriais) mais significativos que representarão os dados, através do método mais adequado. Podem ser: a priori, com base em autovalores, com base em um gráfico de Declive (Scree Plot), na percentagem da variância. Aqui se sabe o quão bem o modelo representa os dados (HAIR et. al, 2005).

  • Rotação dos Fatores: Aplicar algum tipo de rotação nos fatores para facilitar o entendimento dos mesmos. Podem ser: ortogonal, quando os eixos são mantidos em ângulo reto e rotação oblíqua, quando os eixos não são mantidos em ângulo reto. (Geralmente, utiliza-se rotação para transformar a matriz de fatores em uma matriz mais simples e mais fácil de interpretar. O método de rotação mais comumente usado é o processo varimax que objetiva diminuir o número de variáveis com cargas fatoriais altas em um só fator, resultando em fatores ortogonais. Se há fatores altamente correlacionados na população pesquisada, pode-se usar a rotação oblíqua).

  • Interpretação de Fatores: É facilitada através da identificação das variáveis que apresentam grandes cargas sobre o mesmo fator. O fator pode então ser interpretado em termos das variáveis que o pesam fortemente

  • Cálculo dos Escores Fatoriais: Escores fatoriai são estimados para cada observação nos fatores derivados. A redução de dados pode ser conseguida calculando escores para cada dimensão latente e substituindo as variáveis originais pelos mesmos. A análise fatorial pode auxiliar na seleção de um subconjunto representativo de variáveis ou mesmo da criação de novas variáveis como substitutas das variáveis originais, e ainda mantendo seu caráter original.

  • Determinação do Ajuste do Modelo: As diferenças entre as correlações observadas (matriz de entrada) e as correlações reproduzidas (estimada com base na matriz de fatores) são chamadas de resíduos e se há muitos resíduos grandes, o modelo fatorial não dá um bom ajuste aos dados, e deve ser reconsiderado.

1.8 Método de Extração dos Fatores

Há na literatura vários métodos para a estimação de fatores tais como:

  • Method Unweighted Least Squares: um dos métodos de extração que minimiza a soma das diferenças quadráticas entre a matriz de dados e a matriz de correlação reproduzida, ignorando as diagonais.
  • Method Generalized Least Squares: idem ao anterior, mas neste caso a correlação é pesada pelo inverso das suas singularidades, assim como as variáveis com altas singularidades são tomadas com peso menor que aquelas com menor singularidades.
  • Method Maximun Likelihood: este cria parâmetros estimados como sendo mais prováveis para produzir a matriz de correlação observada, se a amostra pode ser caracterizada por uma distribuição normal multivariada. As correlações são pesadas pelo inverso das singularidades das variáveis, pelo emprego de um algoritmo “iterativo”.
  • Method Principal Axis Factoring: parte da matriz de correlação original com os coeficientes de correlações múltiplos colocados na diagonal como estimativas iniciais das comunalidades.
  • Method Principal Components: é usada para obter uma combinação linear não-correlata das combinações das variáveis mensuradas, obtendo-se as soluções dos fatores, ela pode ser usada quando a matriz de correlação é singular.
  • Method Alpha Factoring: é um método de extração que considera as variáveis na análise como uma amostra do universo potencial de variáveis. Ele maximiza a confiabilidade ou fidedignidade alfa (de Cronbach) dos fatores
  • Method Image Factoring: é um método fatorial de extração desenvolvido por Guttman e está baseado na Teoria de Imagens. A parte comum da variância, chamada de imagem parcial, é definida como uma regressão linear sobre as restantes, preferivelmente que a função dos fatores hipotéticos.

1.9 Método de Rotação dos Fatores

Uma ferramenta importante na interpretação de fatores é a rotação fatorial. O termo rotação significa exatamente o que sugere. Especificamente, os eixos de referência dos fatores são rotacionados em torno da origem até que alguma outra posição seja alcançada. As soluções de fatores não-rotacionadas extraem fatores na ordem de sua importância.

O primeiro fator tende a ser um fator geral com quase toda a variável com carga significativa, e explica a quantia maior de variância. O segundo fator e os seguintes são então baseados na quantia residual de variância. Cada fator explica porções sucessivamente menores de variância. O efeito final de rotacionar a matriz fatorial é redistribuir a variância dos primeiros fatores para os últimos com o objetivo de atingir um padrão fatorial mais simples e teoricamente mais significativo.

O caso mais simples de rotação é uma Rotação Ortogonal, na qual os eixos são mantidos a 90º. Também é possível rotacionar os eixos sem manter o ângulo de 90 graus entre os eixos de referência. Procedimento de rotação se chama **Rotação Oblíqua*.

1.9.1 Rotação Ortogonal dos Fatores

Para rotação ortogonal dos fatores existem vários tipos na literatura como: Varimax (mais usado) que é um método de rotação ortogonal que minimiza o número de variáveis que cada agrupamento terá. Ele simplifica a interpretação dos fatores.

Quartimax é um método que minimiza o número de fatores necessários para explicar cada variável. Ele simplifica a interpretação das variáveis obtidas.

O Equamax é também um método que busca uma combinação dos outros (varimax e quartimax). O número de variáveis obtido terá carga fatorial maior e o número de fatores será minimizado.

1.9.1.1 Rotação Varimax

A rotação varimax é uma das rotações ortogonais mais utilizadas em análise fatorial. Intuitivamente, ela busca soluções nas quais se busca maximizar as correlações de cada variável com apenas um fator.

O método varimax é um processo em que os eixos de referência dos fatores são rotacionados em torno da origem até que alguma outra posição seja alcançada. Intuitivamente, ela busca soluções nas quais se busca maximizar as correlações de cada variável com apenas um fator. O objetivo é redistribuir a variância dos primeiros fatores para os demais e atingir um padrão fatorial mais simples e teoricamente mais significativo (REIS, 2001; HAIR, 2005).

Varimax é um tipo de rotação ortogonal na qual mantém os fatores perpendiculares entre si, ou seja, sem correlação entre eles. È o tipo de rotação mais utilizado e que tem como característica o fato de minimizar a ocorrência de uma variável possuir altas cargas fatoriais para diferentes fatores, permitindo que uma variável seja facilmente identificada como único fator (CORRAR et al, 2007).

1.9.2 Rotação Oblíqua dos Fatores

Para rotação oblíqua dos fatores cita-se: Direct Oblimin um método diferentemente dos três anteriores é oblíquo (não ortogonal). Quando delta é igual a 0 (default), a solução é mais oblíqua. Tomando-se delta mais negativo, os fatores ficaram menos oblíquos. Ignorando-se o default delta de 0, deve-se usar um número menor ou igual a 0,8.

O Promax também é um método oblíquo de rotação, o qual possibilita os fatores correlatos. Ele pode ser calculado mais rapidamente que a rotação direct oblimin. Assim ele é usado para grandes grupos de dados. Kappa na maioria das vezes é tomado com o valor 4. Existem outros métodos de rotação oblíqua na literatura como:

  • Covarimin;
  • Oblimax;
  • Quartimin

mas que não são tão usados como os anteriores mensionados.

Os mesmos princípios gerais de rotações ortogonais são aplicáveis a rotações oblíquas. O método de rotação oblíqua é mais flexível, pois os eixos fatoriais não precisam ser ortogonais. Além disso, é mais realista porque as dimensões inerentes que são teoricamente importantes não são supostas sem correlações entre si. A solução oblíqua fornece informações sobre o grau em que os fatores realmente estão correlacionados um com o outro.

1.10 Métodos de Escolha do Número de Fatores

A escolha do número de fatores é uma das tarefas mais importante de uma análise fatorial. Quando o pesquisador opta por um número muito reduzido, ele pode não identificar estruturas importantes existentes nos dados e, por outro lado, se o número é excessivo, ele pode vir a ter problemas de interpretação dos fatores. Existem, na literatura, vários critérios que auxiliam na determinação do número de fatores que, invariavelmente, quando empregados em um mesmo conjunto de dados, conduzem a resultados diferentes (HAIR, 1998).

Os métodos de escolha, que se passou a descrever, têm caráter apenas indicativo, não existindo uma hierarquia entre eles.

  • Técnica de Raiz Latente (Critério de Kaiser) : Esta técnica parte do princípio de que qualquer fator individual deve explicar a variância de pelo menos uma variável para que seja mantido para interpretação. Cada variável contribui com um valor 1 do autovalor total. Com efeito, apenas os fatores que têm raízes latentes ou autovalores maiores que 1 são considerados significantes e os demais fatores com autovalores menores do que 1 são considerados insignificantes e descartados (KAISER, 1958).

  • Critério da % da Variância Explicada : O número é determinado de modo que o conjunto de fatores comuns explique uma porcentagem pré-definida da variabilidade global, por exemplo, desejamos explicar pelo menos 70% da variabilidade total dos dados.

  • Critério Scree Test : È comum que a diferença de explicação entre os primeiros fatores de uma AF seja grande e que tenda a diminuir com o aumento no número de fatores. Por este critério, o número ótimo de fatores é obtido quando a variação da explicação entre fatores consecutivos passa a ser pequena. Com isso, de acordo com a Figura 5, pode-se verificar melhor o Critério Scree Test junto com o Critério da Raiz Latente ou de Kaiser.

  • Métodos Inferenciais : Outros métodos foram desenvolvidos para os casos em que as variáveis originais seguem uma distribuição normal. Esses métodos consistem no desenvolvimento de testes estatísticos que se alicerçam na suposição de normalidade e, dessa forma, não são, em princípio, adequados à análise da maioria das escalas psicológicas. Apesar disso, esses métodos podem ser utilizados com um fim puramente indicativo, sendo que a significância obtida nessas situações não corresponde à realidade. Dentre esses testes destacamos o de Bartlett (Johnson e Wichern, 1992) que verifica a adequabilidade do modelo de AF estimado (pelo método da máxima verossimilhança) para representar a estrutura de dependência dos dados.

1.11 Tamanho de Amostra para Aplicação da AF

Uma AF envolve a estimação de um grande número de parâmetros e, para que isso seja feito com um mínimo de qualidade, é necessário um tamanho amostral relativamente grande em comparação ao número de variáveis envolvidas. Há, na literatura estatística, uma série de sugestões para a escolha desse tamanho amostral.

Em geral, essas opções baseiam-se na experiência pessoal dos diversos autores que, em alguns casos, sugerem um tamanho amostral da ordem de 20 vezes o número de variáveis envolvidas (ver Hair et al., 1995).

Reis (1997) e Hair et al. (1995) sugerem que o número de observações deva ser de no mínimo 5 vezes o número de variáveis, além disso, indicam que preferencialmente a análise seja feita com pelo menos 100 observações. Hair et al. (2005) enfatiza que ela não deve ser utilizada em amostras inferiores a 50 observações.

1.12 Métodos de Estimação dos Escores Fatoriais

Quando o objetivo final da análise de dados é a descrição e o entendimento da estrutura de correlação das variáveis, o que vimos sobre análise fatorial pode levar às respostas desejadas. Outras vezes, entretanto, os objetivos da pesquisa podem envolver análises posteriores aplicadas aos fatores identificados aos dados. È suposto que cada variável na amostra tenha um valor para cada um dos Fatores Comuns, que, como já foi dito, não são diretamente observáveis. Esses valores são os chamados Escores Fatoriais que posteriormente podem ser utilizados em outras análises conjuntamente. (BARROSO; ARTES, 2003).

Existem na literatura vários métodos de estimação dos escores fatoriais para cada elemento amostral, tais como:

  • Método dos Mínimos Quadrados Ponderados;
  • Método de Bartlett;
  • Método de Anderson Rubin;
  • Método de Regressão.

Sendo o Método de Regressão usado para estimar os escores dos coeficientes dos fatores. Os escores gerados têm média 0 e variância igual ao quadrado da correlação múltipla entre os escores dos fatores estimados e os valores verdadeiros dos fatores. Os escores devem ser igualados com os fatores ortogonais.

Em relação ao Método de Bartlett usado também para estimação dos escores dos coeficientes dos fatores. Os escores produzidos têm média de zero. A soma dos quadrados de um fator é feita sobre a extensão das variáveis minimizadas. Já o Método de Anderson Rubin é similar ao de Bartlett a diferença está em garantir a ortogonalidade dos fatores estimados. Os escores gerados têm uma média de 0, desvio padrão de 1,0 e são não correlatos.

1.12.1 Padronização dos Escores Fatoriais

Ao realizar a análise sobre um conjunto de dados com variáveis com variâncias de magnitudes diferentes (provenientes de diversos setores), podemos estar introduzindo dificuldades na explicitação dessa dependência. Nos casos que existe uma grande diferença entre as variâncias das variáveis originais, sugere-se que a análise seja realizada sobre as variáveis padronizadas (Johnson, 1998).

Para facilitar a comparabilidade dos índices de um município nos diversos grupos trasformou-se a base dos índices, ou seja, o escore fatorial foi padronizado para se obter valores positivos dos escores originais e permitir a hierarquização dos municípios, de tal forma que os valores do índice estimado estejam situados entre zero e um (Santana, 2007).

A fórmula é a seguinte:

\[ Escore_{(Fatorial)_{(pad)}} =\left(\frac{F_{i}-F_{min}}{F_{max} - F_{mini}}\right) \] Em que \(F_{min}\) e \(F_{max}\) são os valores de mínimo e máximo observado para os escores fatoriais associados aos municípios.

1.13 Viabilidade da Análise de Fatores

Apresentam-se algumas medidas adicionais para aferir a viabilidade da aplicação de uma análise fatorial a um conjunto de dados. As principais medidas aplicadas foram: Matriz Anti-Imagem, Teste de Esfericidade de Bartlett, Teste de Kaiser-Meyer-Olkin (KMO) e Measure of Sampling Adequacy (MSA).

1.13.1 Matriz Anti-imagem

Uma das premissas de uma análise fatorial é que exista uma estrutura de dependência clara entre as variáveis envolvidas. No modelo estudado, essa estrutura é expressa através da matriz de covariância ou de correlação. A existência de tal estrutura implica que uma variável pode, dentro de certos limites, ser prevista pelas demais. Para verificar esse fato, pode-se calcular os coeficientes de correlação parcial entre os pares de variáveis, eliminado o efeito das demais variáveis. Espera-se que os valores obtidos sejam baixos. A matriz anti-imagem é construída com esses coeficientes com sinais invertidos, muitas vezes, coloca-se na diagonal principal dessa matriz os indicadores MAS (Measure of Sampling Adequacy(MSA)) (BARROSO ; ARTES, 2003).

1.13.2 Teste de Esfericidade de Bartlett

Esse teste avalia a significância geral da matriz de correlação, ou seja, testa se todas as variáveis oriundas de diversos setores possuem uma possível relação em comum (Dillon; Goldstein, 1984; Reis, 2001).

O teste de Bartlett testa as seguintes hipóteses nulas

\[ H_{0}: R = I \\ H_{1}: \lambda_{1} = \lambda_{2} = \ldots = \lambda_{p} \]

E a estatística do teste

\[\chi^{2} = - [n-1-\frac{1}{6}(2p+5)]\sum_{i=1}^{p} ln|R|\]

Em que \(|R|\) é o determinante da matriz de correlação amostral, \(\lambda\) é a variância explicada por cada fator, n é o número de observações e p é o número de variáveis.

A estatística tem uma distribuição assintótica de \(\chi^{2}\) com (0,5p(p-1)) graus de liberdade.

1.13.3 Teste de Kaiser-Meyer-Olkin (KMO)

Este teste é usado para compara as correlações parciais entre os pares de variáveis sem o efeito das demais, ou seja, testa se duas a duas variáveis possuem algum tipo de relação entre si (Dillon; Goldstein, 1984; Kaiser, 1970; Reis, 2001).

\[ KMO = \left(\frac{\sum_{i}\sum_{j}r_{ij}^{2}}{\sum_{i}\sum_{j}r_{ij}^{2}+\sum_{i} \sum_{j}a_{ij}^{2}}\right) \] Em que \(r_{ij}\) é o coeficiente de correlação observado entre as variáveis i e j e \(a_{ij}\) é o coeficiente de correlação parcial entre as mesmas variáveis que é, simultaneamente, uma estimativa das correlações entre os fatores, eliminado o efeito das demais variáveis. Os \(a_{ij}\) deverão assumir valores próximos de zero, uma vez que se pressupõe que os fatores são ortogonais entre si.

Conforme, (Kaiser; Rice, 1974), os valores do teste são classificados da seguinte forma:

Tabela 1. Classificação Geral do Teste de adequabilidade KMO segundo (Kaiser; Rice, 1974).

KMO Classificação
0.90 - 1.00 Excelente
0.80 – 0.90 Ótimo
0.70 – 0.80 Bom
0.60 – 0.70 Regular
0.50 – 0.60 Ruim
0.00 – 0.50 Inadequado

1.13.4 Measure of Sampling Adequacy(MSA)

Essa medida é bastante similar ao KMO. Novamente, deseja-se verificar a possibilidade de existir uma estrutura fatorial nos dados. Na verdade, a, MSA deve ser calculada separadamente para cada variável. O objetivo é verificar se uma dada variável pode ser explicada pelas demais (o que é esperado num modelo fatorial). Valores baixos de MSAi são indícios de que a respectiva variável pode ser retirada da análise sem maiores prejuízos (BARROSO; ARTES, 2003).

\[ MSA_{i} = \left(\frac{\sum_{j=1}^{p}r_{ij}^{2}}{\sum_{j=1}^{p}r_{ij}^{2} + \sum_{j=1}^{p}a_{ij}^{2}} \right) \]

2 Referências Bibliográficas

ANDERSON, T. W. An Introduction Multivariate Analysis. New York: John Wiley, 2003.

BARROSO, L.P.; ARTES, R. Análise Multivariada. São Paulo: IME-USP, 2003.

DILON, W.R.; GOLDSTEIN, M. Multivariate Analysis: methods and applications. New York: John Wiley & Son, 1984.

DRAPER, N.R.; SMITH, H. Applied Regression Analysis. New York: John Wiley & Sons, 1981.

ELIAN, Silva. N. Análise de Regressão. São Paulo: IME, 1998.

GREENE, W. H. Econometric Analysis. 3.ª Ed. Prentice Hall. New Jersey, 1997.

GORSUCH, R. L. Factor Analysis. New Jersey: Lawrence Erlbaum, 1983.

GUJARATI, Dalmodar. N. Econometria Básica. São Paulo: Makron Book, 2000.

HAIR JR, J.F., ANDERSON, R.E., TATHAM, R.L., BLACK, W.C. Análise Multivariada de Dados. 5. ed. Porto Alegre: Bookman, 2005.

HAIR JR, J.F., ANDERSON, R.E., TATHAM, R.L., BLACK, W.C. Multivariate Data Analysis. New York: Prentice Hall, 1998.

JOHNSON, R. A.; WICHERN, D. W. Applied Multivariate Statistical Analysis. 4. ed. Nova Jersey: Prentice Hall, 1998.

KAISER, H. F. The Varimax Criteion for Analaytic Rotation in Factor Anaysis. Psychometrika, 1958.

KAISER, H. F.; RICE, J. Little Jiffy, mark IV. Education and Psychological Measurement, 1974.

NETER, J.; WASSERMAN, W. Applied linear statistical models. Illinois: Richard D. Irwin, 1974.

REIS, E. Estatística Multivariada Aplicada. 2. ed. Lisboa: Silabo, 2001.

RENCHER, A. Methods of Multivariate Analysis. 2 ed. New York: John Wiley & Son, 2002.

ROYSTON, J. B. Some techniques for assessing multivariate based on the Shapiro-Wilk W. Applied Statistics, London, v. 32, n. 2, p. 121-133, 1983.

SANTOS, A. C.; FERREIRA, D. F. Definição do tamanho amostral usando simulação Monte Carlo para o teste de normalidade baseado em assimetria e curtose: II. Abordagem multivariada. Ciência e Agrotecnlogia, Lavras, v. 24, n. 1, p. 62-69, 2003.

MAHALANOBIS, P. C. On the Generalized Distance in Statistics. Proceedings of the National Institute of Science of India, 1936.

MALHOTRA, N. K. Marketing Research: An Applied Orientation. New Jersey: Prentice Hall, 2001.

MINGOTI, S.A. Análise de Dados Através de Métodos de Estatística Multivariada: Uma Abordagem Aplicada. Belo Horizonte: UFMG, 2005.

LS0tDQp0aXRsZTogIioqQW7DoWxpc2UgRmF0b3JpYWwgbm8gUjogdW0gR3VpYSBQcsOhdGljbyoqIg0KYXV0aG9yOg0KLSBuYW1lOiBNw6FyaW8gRGllZ28gVmFsZW50ZQ0KLSBuYW1lOiBDYXJsb3MgUGFpeMOjbw0KZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJWQgJUIsICVZJylgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBoaWdobGlnaHQ6IHRleHRtYXRlDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogY2VydWxlYW4NCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNg0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogeWVzDQogICAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgICBrZWVwX21kOiB5ZXMNCiAgcGRmX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiAnNicNCmluc3RpdHV0ZToNCmFic3RyYWN0OiAiQSBBbsOhbGlzZSBGYXRvcmlhbCDDqSB1bWEgdMOpY25pY2EgZXN0YXTDrXN0aWNhIHV0aWxpemFkYS4uLiINCi0tLQ0KDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCg0KYGBgez1odG1sfQ0KPHN0eWxlPg0KYm9keXt0ZXh0LWFsaWduOiBqdXN0aWZ5fQ0KPC9zdHlsZT4NCmBgYA0KDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyAqKkFuw6FsaXNlIEZhdG9yaWFsIC0gQUYqKg0KIyMgKipBc3BlY3RvcyBIaXN0w7NyaWNvcyoqDQoNCkhpc3RvcmljYW1lbnRlLCBhIG9yaWdlbSBkYXMgdMOpY25pY2FzIGRlIGFuw6FsaXNlIGRlIGZhdG9yZXMgb3UgYW7DoWxpc2UgZmF0b3JpYWwgZXN0w6EgbGlnYWRhIGEgZXN0dWRvcyBkYSDDoXJlYSBkZSBwc2ljb2xvZ2lhLiBTdWEgY3JpYcOnw6NvIGRhdGEgZG8gaW7DrWNpbyBkbyBzw6ljdWxvIFhYLCBxdWFuZG8gKipLYXJsIFBlYXJzb24gKDE5MDEpKiogZSAqKkNoYXJsZXMgU3BlYXJtYW4gKFNwZWFybWFuLCAxOTA0KSoqIGRlc2Vudm9sdmVyYW0gdW0gbcOpdG9kbyBwYXJhIGEgY3JpYcOnw6NvIGRlIHVtIMOtbmRpY2UgZ2VyYWwgZGUgaW50ZWxpZ8OqbmNpYSAoZmF0b3Ig4oCcZ+KAnSkgY29tIGJhc2Ugbm9zIHJlc3VsdGFkb3MgZW0gdsOhcmlvcyB0ZXN0ZXMgKGVzY2FsYXMpIHF1ZSByZWZsZXRpcmlhbSBlc3NhIGFwdGlkw6NvLiBUcmF0YXZhLXNlIGRlIHVtIHByaW1laXJvIG3DqXRvZG8gZGUgQUYsIGFkZXF1YWRvIHBhcmEgYSBlc3RpbWHDp8OjbyBkZSB1bSDDum5pY28gZmF0b3IuIE5vIGVudGFudG8sIG8gdGVybW8gQW7DoWxpc2UgZGUgRmF0b3JpYWwgZm9pIGludHJvZHV6aWRvIHBvciAqKkxvdWlzIEwuIFRodXJzdG9uZSoqIGVtIDE5MzEgbm8gc2V1IGFydGlnbyAqKk11bHRpcGxlIEZhY3RvciBBbmFseXNpcyoqLiANCg0KKipUaHVyc3RvbmUgKDE5MzEpKiogaWRlbnRpZmljb3Ugc2V0ZSBoYWJpbGlkYWRlcyBtZW50YWlzIHByaW3DoXJpYXMsIGVtIHZleiBkZSB1bSDDum5pY28gZmF0b3IgZy4gRXN0dWRvcyBtYWlzIHJlY2VudGVzIHTDqm0gYWx0ZXJhZG8gYSBxdWFudGlkYWRlIGRlIGZhdG9yZXMgYSBzZXJlbSBjb25zaWRlcmFkb3MgbmEgYW7DoWxpc2UgZGUgaW50ZWxpZ8OqbmNpYS4gTm8gaW7DrWNpbywgb3MgbcOpdG9kb3MgYXByZXNlbnRhdmFtIHVtYSBjYXJhY3RlcsOtc3RpY2EgbWFpcyBlbXDDrXJpY2EgZG8gcXVlIGluZmVyZW5jaWFsLiBFbSAxOTMzIFBlYXJzb24gZSBIb3R0ZWxpbmcgZGVyYW0gdW0gZm9ybWFsaXNtbyBtZWxob3IgYXMgaWTDqWlhcyBjcmlhZGFzIHBvciBTcGVhcm1hbiwgZSBhc3NpbSBpbXB1bHNpb25hZG8gY29tIGVzc2FzIGlkw6lpYXMsIGVtIDE5NDAgY29tIExhd2xleSwgc3VyZ2UgdW0gcHJpbWVpcm8gdHJhYmFsaG8gY29tIHVtIG1haW9yIHJpZ29yIG1hdGVtw6F0aWNvLCBvIHF1ZSBmZXogY29tIHF1ZSBzZSBhdW1lbnRhc3NlIMOgIGFjZWl0YcOnw6NvIGRlc3NhcyB0w6ljbmljYXMgbm8gcmFtbyBkYSBwc2ljb2xvZ2lhICgqKkxBV0xFWSwgMTk0MCoqKS4gDQoNCkNlcnRvcyBjb25jZWl0b3MgZGFzIGNpw6puY2lhcyBzb2NpYWlzIGUgY29tcG9ydGFtZW50YWlzIG7Do28gc8OjbyBiZW0gZGVmaW5pZG9zIGUgZXhpc3RlbSBtdWl0YXMgZGlzY3Vzc8O1ZXMgc29icmUgbyByZWFsIHNpZ25pZmljYWRvIGRlIHRlcm1vcyBjb21vIGNsYXNzZSBzb2NpYWwsIG9waW5pw6NvIHDDumJsaWNhLCBjb21wb3J0YW1lbnRvIGRlIHJpc2NvIG91IHBlcnNvbmFsaWRhZGUgZXh0cm92ZXJ0aWRhLiBUYWlzIGNvbmNlaXRvcyBzw6NvIGZyZXHDvGVudGVtZW50ZSBjaGFtYWRvcyBkZSB2YXJpw6F2ZWlzIGxhdGVudGVzLCBkZXNkZSBxdWUgbsOjbyBzw6NvIGRpcmV0YW1lbnRlIG9ic2VydsOhdmVpcyBtZXNtbyBuYSBwb3B1bGHDp8Ojby4gVHJhdGEtc2UgZGUgY29uc3RydXRvcyBpbnZlbnRhZG9zIHBlbG9zIGNpZW50aXN0YXMgY29tIG8gcHJvcMOzc2l0byBkZSBlbnRlbmRlciBhbGd1bWEgw6FyZWEgZGUgaW50ZXJlc3NlIG5hIHBlc3F1aXNhIHNlbmRvIHJlYWxpemFkYSBlIHBhcmEgYSBxdWFsIG7Do28gZXhpc3RlIG3DqXRvZG8gb3BlcmFjaW9uYWwgcGFyYSBmYXplciB1bWEgbWVkaWRhIGRlIGZvcm1hIGRpcmV0YS4NCg0KRW1ib3JhIGFzIHZhcmnDoXZlaXMgbGF0ZW50ZXMgbsOjbyBwb3NzYW0gc2VyIG9ic2VydmFkYXMgZGlyZXRhbWVudGUsIGFsZ3VucyBkZSBzZXVzIGVmZWl0b3MgYXBhcmVjZXLDo28gbmFzIHZhcmnDoXZlaXMgbWFuaWZlc3Rhcywgb3Ugc2VqYSwgYXF1ZWxhcyBxdWUgcG9kZW0gc2VyIHZlcmlmaWNhZGFzLiBGaWNhIGNsYXJvIHF1ZSBtZWRpciBkaXJldGFtZW50ZSB1bSBjb25jZWl0byBjb21vIHByZWNvbmNlaXRvIHJhY2lhbCBuw6NvIMOpIHBvc3PDrXZlbDsgbm8gZW50YW50bywgcG9kZS1zZSwgcG9yIGV4ZW1wbG8sIG9ic2VydmFyIHF1YW5kbyB1bWEgcGVzc29hIGFwcm92YSwgb3UgbsOjbywgYWxndW1hIGxlZ2lzbGHDp8OjbyBkbyBnb3Zlcm5vIGEgcmVzcGVpdG8gZGVzdGUgYXNzdW50by4gUG9kZS1zZSwgdGFtYsOpbSwgc2FiZXIgZGUgcXVlIHJhw6dhIHPDo28gb3MgYW1pZ29zIGRlc3RhIHBlc3NvYSBlIGFzc2ltIGFzc3VtaXIgcXVlIHRhaXMgb2JzZXJ2YcOnw7VlcyBzw6NvIGRlIGFsZ3VtIG1vZG8sIGluZGljYWRvcmVzIGRlIHVtYSB2YXJpw6F2ZWwgbWFpcyBmdW5kYW1lbnRhbCwgbyBwcmVjb25jZWl0byByYWNpYWwgKEV2ZXJpdHQsIDE5ODQpLiBPIG3DqXRvZG8gbWFpcyBjb25oZWNpZG8gcGFyYSBpbnZlc3RpZ2FyIGEgZGVwZW5kw6puY2lhIGRlIHVtIGNvbmp1bnRvIGRlIHZhcmnDoXZlaXMgbWFuaWZlc3RhcyBlbSByZWxhw6fDo28gYSB1bSBuw7ptZXJvIG1lbm9yIGRlIHZhcmnDoXZlaXMgbGF0ZW50ZXMgw6kgYSBjaGFtYWRhIEFuw6FsaXNlIGRlIEZhdG9yZXMuDQoNCkEgYW7DoWxpc2UgZGUgZmF0b3JlcyDDqSB1bWEgZGFzIHTDqWNuaWNhcyBtYWlzIHVzdWFpcyBkbyBxdWUgc2UgY29udmVuY2lvbm91IGNoYW1hciBkZSBhbsOhbGlzZSBtdWx0aXZhcmlhZGEuIFF1YW5kbyBlbXByZWdhbW9zIGVzdGUgdGlwbyBkZSBhbsOhbGlzZSBlc3RhbW9zIGZyZXF1ZW50ZW1lbnRlIGludGVyZXNzYWRvcyBubyBjb21wb3J0YW1lbnRvIGRlIHVtYSB2YXJpw6F2ZWwgb3UgZ3J1cG9zIGRlIHZhcmnDoXZlaXMgZW0gY292YXJpYcOnw6NvIGNvbSBvdXRyYXMgKCoqR1JFRU4sIDE5NzYqKikuICAgDQoNCkVtIHJlYWxpZGFkZSBhIGFuw6FsaXNlIGZhdG9yaWFsIG7Do28gc2UgcmVmZXJlIGEgdW1hIMO6bmljYSB0w6ljbmljYSBlc3RhdMOtc3RpY2EsIG1hcyBhIHVtYSB2YXJpZWRhZGUgZGUgdMOpY25pY2FzIHJlbGFjaW9uYWRhcyBwYXJhIHRvcm5hciBvcyBkYWRvcyBvYnNlcnZhZG9zIG1haXMgZmFjaWxtZW50ZSAoZSBkaXJldGFtZW50ZSkgaW50ZXJwcmV0YWRvcy4gSXN0byDDqSBmZWl0byBhbmFsaXNhbmRvLXNlIG9zIGludGVyLXJlbGFjaW9uYW1lbnRvcyBlbnRyZSBhcyB2YXJpw6F2ZWlzIGRlIHRhbCBtb2RvIHF1ZSBlc3RhcyBwb3NzYW0gc2VyIGRlc2NyaXRhcyBjb252ZW5pZW50ZW1lbnRlIHBvciB1bSBncnVwbyBkZSBjYXRlZ29yaWFzIGLDoXNpY2FzLCBlbSBuw7ptZXJvIG1lbm9yIHF1ZSBhcyB2YXJpw6F2ZWlzIG9yaWdpbmFpcywgY2hhbWFkbyBmYXRvcmVzLiBBc3NpbSwgbyBvYmpldGl2byBkYSBhbsOhbGlzZSBmYXRvcmlhbCDDqSBhIHBhcmNpbcO0bmlhLCBwcm9jdXJhbmRvIGRlZmluaXIgbyByZWxhY2lvbmFtZW50byBlbnRyZSBhcyB2YXJpw6F2ZWlzIGRlIG1vZG8gc2ltcGxlcyBlIHVzYW5kbyB1bSBuw7ptZXJvIGRlIGZhdG9yZXMgbWVub3IgcXVlIG8gbsO6bWVybyBvcmlnaW5hbCBkZSB2YXJpw6F2ZWlzLg0KDQpNYWlzIHByZWNpc2FtZW50ZSwgdW0gZmF0b3Igw6kgdW0gY29uc3RydXRvLCB1bWEgZW50aWRhZGUgaGlwb3TDqXRpY2EsIHVtYSB2YXJpw6F2ZWwgbsOjbyBvYnNlcnZhZGEsIHF1ZSBzZSBzdXDDtWUgZXN0YXJlbSBzdWJqYWNlbnRlIGEgdGVzdGVzLCBlc2NhbGFzLCBpdGVucyBlLCBkZSBmYXRvLCBtZWRpZGFzIGRlIHF1YWxxdWVyIGVzcMOpY2llLiBDb21vIGNvbnN0cnV0b3MsIG9zIGZhdG9yZXMgYXBlbmFzIHBvc3N1ZW0gcmVhbGlkYWRlIG5vIGZhdG8gZGUgZXhwbGljYXJlbSBhIHZhcmnDom5jaWEgZGUgdmFyacOhdmVpcyBvYnNlcnZhZGFzLCB0YWwgY29tbyBzZSByZXZlbGFtIHBlbGFzIGNvcnJlbGHDp8O1ZXMgZW50cmUgYXMgdmFyacOhdmVpcyBzZW5kbyBhbmFsaXNhZGFzLCBvdSBzZWphLCBhIMO6bmljYSByZWFsaWRhZGUgY2llbnTDrWZpY2EgcXVlIG9zIGZhdG9yZXMgcG9zc3VlbSB2ZW0gZGFzIGNvcnJlbGHDp8O1ZXMgZW50cmUgdGVzdGVzIG91IHZhcmnDoXZlaXMgc2VuZG8gcGVzcXVpc2FkYXMuIFNlIG9zIHJlc3VsdGFkb3MgZGUgaW5kaXbDrWR1b3MgZW0gaXRlbnMgb3UgdGVzdGVzIGNhbWluaGFtIGp1bnRvcywgZW50w6NvLCBuYSBtZWRpZGEgZW0gcXVlIGV4aXN0YW0gY29ycmVsYcOnw7VlcyBzdWJzdGFuY2lhaXMgZW50cmUgZWxlcywgZXN0w6EgZGVmaW5pZG8gdW0gZmF0b3IuIA0KDQo6OjogcHJvZ3Jlc3MNCjo6OiB7LnByb2dyZXNzLWJhciBzdHlsZT0id2lkdGg6IDEwMCU7In0NCjo6Og0KOjo6DQoNCiMjICoqRGVmaW5pw6fDo28gQ2zDoXNzaWNhIC0gQUYqKg0KDQpBIGFuw6FsaXNlIGZhdG9yaWFsIChBRiksIGRlIG1vZG8gZ2VyYWwsIMOpIHVtYSB0w6ljbmljYSBlc3RhdMOtc3RpY2EgbXVsdGl2YXJpYWRhIHF1ZSB0ZW0gY29tbyBwcmluY8OtcGlvIGFuYWxpc2FyIGEgZXN0cnV0dXJhIGRhcyBpbnRlci1yZWxhw6fDtWVzIChjb3JyZWxhw6fDtWVzKSBlbnRyZSB1bSBncmFuZGUgbsO6bWVybyBkZSB2YXJpw6F2ZWlzLCBvdSBzZWphLCBkZXNjcmV2ZXIgYSBlc3RydXR1cmEgZGUgZGVwZW5kw6puY2lhIGRlIHVtIGNvbmp1bnRvIGRlIHZhcmnDoXZlaXMgYXRyYXbDqXMgZGEgY3JpYcOnw6NvIGRlIGZhdG9yZXMsIHF1ZSBzw6NvIHZhcmnDoXZlaXMgcXVlLCBzdXBvc3RhbWVudGUsIG1lZGVtIGFzcGVjdG9zIGNvbXVucyAoKipIYWlyIGV0IGFsLCAyMDA1KiopLiBDb20gbyBlbXByZWdvIGRlc3NhIHTDqWNuaWNhLCBpbmljaWFsbWVudGUgcG9kZW0tc2UgaWRlbnRpZmljYXIgYXMgZGltZW5zw7VlcyBpc29sYWRhcyBkYSBlc3RydXR1cmEgZG9zIGRhZG9zIGUgZW50w6NvIGRldGVybWluYXIgbyBncmF1IGVtIHF1ZSBjYWRhIHZhcmnDoXZlbCDDqSBleHBsaWNhZGEgcG9yIGNhZGEgZGltZW5zw6NvIG91IGZhdG9yLg0KDQpTZWd1bmRvICoqTWluZ290aSAoMjAwNSkqKiwgYSBBRiB0ZW0gY29tbyBvYmpldGl2byBwcmluY2lwYWwgZGVzY3JldmVyIGEgdmFyaWFiaWxpZGFkZSBvcmlnaW5hbCBkbyB2ZXRvciBhbGVhdMOzcmlvIFgsIGVtIHRlcm1vcyBkZSB1bSBuw7ptZXJvIG1lbm9yIE0gZGUgdmFyacOhdmVpcyBhbGVhdMOzcmlhcywgY2hhbWFkYXMgZGUgZmF0b3JlcyBjb211bnMgZSBxdWUgZXN0w6NvIHJlbGFjaW9uYWRhcyBjb20gbyB2ZXRvciBvcmlnaW5hbCBYIGF0cmF2w6lzIGRlIHVtIG1vZGVsbyBsaW5lYXIuIE5lc3RlIG1vZGVsbywgcGFydGUgZGEgdmFyaWFiaWxpZGFkZSBkZSBYLCDDqSBhdHJpYnXDrWRhIGFvcyBmYXRvcmVzIGNvbXVucywgc2VuZG8gbyByZXN0YW50ZSBkYSB2YXJpYWJpbGlkYWRlIGRlIFggYXRyaWJ1w61kbyDDoXMgdmFyacOhdmVpcyBxdWUgbsOjbyBmb3JhbSBpbmNsdcOtZGFzIG5vIG1vZGVsbywgb3Ugc2VqYSwgbyBlcnJvIGFsZWF0w7NyaW8uDQoNClBhcmEgKipCYXJyb3NvIGUgQXJ0ZXMgKDIwMDMpKiosIGEgQUYgw6kgdW1hIHTDqWNuaWNhIHF1ZSBkZXNjcmV2ZSBhIGVzdHJ1dHVyYSBkZSBkZXBlbmTDqm5jaWEgZGUgdW0gY29uanVudG8gZGUgdmFyacOhdmVpcywgYXRyYXbDqXMgZGEgY3JpYcOnw6NvIGRlIGZhdG9yZXMsIHF1ZSBzw6NvIHZhcmnDoXZlaXMgcXVlLCBzdXBvc3RhbWVudGUsIG1lZGVtIGFzcGVjdG9zIGNvbXVucy4gDQoNCioqUmVpcyAoMTk5NykqKiBkZXNjcmV2ZSBhIEFGIGNvbW8gdW0gY29uanVudG8gZGUgdMOpY25pY2FzIGN1amEgZmluYWxpZGFkZSDDqSByZXByZXNlbnRhciBvdSBkZXNjcmV2ZXIgdW0gbsO6bWVybyBkZSB2YXJpw6F2ZWlzIGluaWNpYWlzIGEgcGFydGlyIGRlIHVtIG1lbm9yIG7Dum1lcm8gZGUgdmFyacOhdmVpcyBoaXBvdMOpdGljYXMuIFRyYXRhLXNlIGRlIHVtYSB0w6ljbmljYSBlc3RhdMOtc3RpY2EgbXVsdGl2YXJpYWRhIHF1ZSwgYSBwYXJ0aXIgZGEgZXN0cnV0dXJhIGRlIGRlcGVuZMOqbmNpYSBleGlzdGVudGUgZW50cmUgYXMgdmFyacOhdmVpcyBkZSBpbnRlcmVzc2UgKGVtIGdlcmFsIHJlcHJlc2VudGFkYSBwZWxhcyBjb3JyZWxhw6fDtWVzIG91IGNvdmFyacOibmNpYXMgZW50cmUgZXNzYXMgdmFyacOhdmVpcyksIHBlcm1pdGUgYSBjcmlhw6fDo28gZGUgdW0gY29uanVudG8gbWVub3IgZGUgdmFyacOhdmVpcyAodmFyacOhdmVpcyBsYXRlbnRlcyBvdSBmYXRvcmVzKSwgb2J0aWRhcyBhIHBhcnRpciBkYXMgb3JpZ2luYWlzLiANCg0KRGUgYWNvcmRvIGNvbSAqKk1hbGhvdHJhICgyMDAxKSoqLCBhbsOhbGlzZSBmYXRvcmlhbCDDqSB1bSBub21lIGdlbsOpcmljbyBxdWUgZGVub3RhIHVtYSBjbGFzc2UgZGUgcHJvY2Vzc29zIGVzc2VuY2lhbG1lbnRlIHBhcmEgcmVkdcOnw6NvIGUgc3VtYXJpemHDp8OjbyBkb3MgZGFkb3PigJ0uIA0KDQpBIGFuw6FsaXNlIGZhdG9yaWFsIMOpIHVtYSB0w6ljbmljYSBkZSBpbnRlcmRlcGVuZMOqbmNpYSBuYSBxdWFsIHRvZGFzIGFzIHZhcmnDoXZlaXMgc8OjbyBzaW11bHRhbmVhbWVudGUgY29uc2lkZXJhZGFzLCBjYWRhIHVtYSByZWxhY2lvbmFkYSBjb20gdG9kYXMgYXMgb3V0cmFzLCBlbXByZWdhbmRvIG8gY29uY2VpdG8gZGEgdmFyacOhdmVsIGVzdGF0w61zdGljYSwgYSBjb21wb3Npw6fDo28gbGluZWFyIGRhcyB2YXJpw6F2ZWlzLiBFbGEgZGlmZXJlIGRhcyB0w6ljbmljYXMgbXVsdGl2YXJpYWRhcyBkZSBkZXBlbmTDqm5jaWEgKFJlZ3Jlc3PDo28gTcO6bHRpcGxhLCBBbsOhbGlzZSBEaXNjcmltaW5hbnRlLCBBbsOhbGlzZSBNdWx0aXZhcmlhZGEgZGUgVmFyacOibmNpYSBvdSBDb3JyZWxhw6fDo28gQ2Fuw7RuaWNhKSwgbmFzIHF1YWlzIHVtYSBvdSBtYWlzIHZhcmnDoXZlaXMgc8OjbyBleHBsaWNpdGFtZW50ZSBjb25zaWRlcmFkYXMgY29tbyBhcyB2YXJpw6F2ZWlzIGRlIGNyaXTDqXJpbyBvdSBkZXBlbmRlbnRlcyBlIHRvZGFzIGFzIG91dHJhcyBzw6NvIGFzIHZhcmnDoXZlaXMgcHJlZGl0b3JhcyBvdSBpbmRlcGVuZGVudGVzLg0KDQpOYSBhbsOhbGlzZSBmYXRvcmlhbCwgYXMgdmFyacOhdmVpcyBlc3RhdMOtc3RpY2FzIChmYXRvcmVzKSBzw6NvIGZvcm1hZGFzIHBhcmEgbWF4aW1pemFyIHNldSBwb2RlciBkZSBleHBsaWNhw6fDo28gZG8gY29uanVudG8gaW50ZWlybyBkZSB2YXJpw6F2ZWlzLCBlIG7Do28gcGFyYSBwcmV2ZXIgdW1hIHZhcmnDoXZlbCAoZWlzKSBkZXBlbmRlbnRlKHMpLg0KDQpOYSBjb25jZXDDp8OjbyBkZSAqKlBhc3F1YWxpICgyMDAzKSoqLCBhIGFuw6FsaXNlIGZhdG9yaWFsIMOpIHVtYSB0w6ljbmljYSBjYXVjYWRhIHNvYnJlIG8gcHJlc3N1cG9zdG8gZGUgcXVlIHVtYSBzw6lyaWUgZGUgdmFyacOhdmVpcyBvYnNlcnZhZGFzLCBtZWRpZGFzLCBjaGFtYWRhcyBkZSB2YXJpw6F2ZWlzIGVtcMOtcmljYXMgb3Ugb2JzZXJ2w6F2ZWlzIHBvZGUgc2VyIGV4cGxpY2FkYSBwb3IgdW0gbsO6bWVybyBtZW5vciBkZSB2YXJpw6F2ZWlzIG7Do28gb2JzZXJ2w6F2ZWlzLCBjaGFtYWRhcyBwcmVjaXNhbWVudGUgZGUgdmFyacOhdmVpcyBmb250ZXMsIG1haXMgY29uaGVjaWRhcyBzb2IgbyBub21lIGRlIGZhdG9yZXMuDQoNCkFzIGNoYW1hZGFzIHZhcmnDoXZlaXMgZm9udGVzIHNlcmlhbSBhIGNhdXNhIGRvIGZhdG8gZGUgcXVlIGFzIHZhcmnDoXZlaXMgb2JzZXJ2w6F2ZWlzIHNlIHJlbGFjaW9uYW0gZW50cmUgc2ksIGlzdG8gw6ksIHPDo28gcmVzcG9uc8OhdmVpcyBwZWxhcyBpbnRlcmNvcnJlbGHDp8O1ZXMgKGNvdmFyacOibmNpYXMpIGVudHJlIGFzIHZhcmnDoXZlaXMuIFN1cMO1ZS1zZSBxdWUsIHNlIGFzIHZhcmnDoXZlaXMgZW1ww61yaWNhcyBzZSByZWxhY2lvbmFtIGVudHJlIHNpLCDDqSBwb3JxdWUgZWxhcyB0w6ptIHVtYSBjYXVzYSBjb211bSBxdWUgcHJvZHV6IGVzdGEgY29ycmVsYcOnw6NvIGVudHJlIGVsYXMuIEUgYSBlc3RhIGNhdXNhIGNvbXVtIHF1ZSBzZSBjaGFtYSBkZSBmYXRvciBlIGN1amEgZGVzY29iZXJ0YSDDqSBwcmVjaXNhbWVudGUgYSB0YXJlZmEgZGEgYW7DoWxpc2UgZmF0b3JpYWwuIEVudMOjbywgbmVzdGFzIGFmaXJtYcOnw7VlcyBqw6EgZml6ZW1vcyBkb2lzIHBvc3R1bGFkb3MgcXVlIGEgYW7DoWxpc2UgZmF0b3JpYWwgYXNzdW1lIChQYXNxdWFsaSwgMjAwMyk6DQoNCi0gICAxKSAqKlByaW5jw61waW8gZGEgUGFyY2ltw7RuaWEgb3UgZGUgUmFuayBSZWR1Y3Rpb24qKjogVW0gbsO6bWVybyBtZW5vciBkZSB2YXJpw6F2ZWlzLWZvbnRlIMOpIHN1ZmljaWVudGUgcGFyYSBleHBsaWNhciB1bWEgc8OpcmllIG1haW9yIGRlIHZhcmnDoXZlaXMgb2JzZXJ2w6F2ZWlzLCBpc3RvIMOpLCByZWR1w6fDo28gZG8gcG9zdG8gZGEgbWF0cml6IGRhcyBpbnRlcmNvcnJlbGHDp8O1ZXMgZW50cmUgYXMgdmFyacOhdmVpcyBvYnNlcnbDoXZlaXMuDQotICAgMikJKipQcmluY8OtcGlvIGRhIENhdXNhbGlkYWRlKio6IEFzIHZhcmnDoXZlaXMtZm9udGUgc8OjbyBhcyBjYXVzYXMgZGEgY292YXJpw6JuY2lhIGVudHJlIGFzIHZhcmnDoXZlaXMgb2JzZXJ2w6F2ZWlzLCBvdSBzZWphLCBhIGFuw6FsaXNlIGZhdG9yaWFsIMOpIHVtIG1vZGVsbyBjYXVzYWwuIA0KDQo6OjogcHJvZ3Jlc3MNCjo6OiB7LnByb2dyZXNzLWJhciBzdHlsZT0id2lkdGg6IDEwMCU7In0NCjo6Og0KOjo6DQoNCiMjICoqVGlwb3MgZGUgQW7DoWxpc2UgRmF0b3JpYWwqKg0KDQpUw6ljbmljYXMgYW5hbMOtdGljYXMgZmF0b3JpYWlzIHBvZGVtIGF0aW5naXIgc2V1cyBvYmpldGl2b3Mgb3UgZGUgdW1hIHBlcnNwZWN0aXZhIGV4cGxvcmF0w7NyaWEgb3UgZGUgdW1hIGNvbmZpcm1hdMOzcmlhLiBFeGlzdGUgdW0gZGViYXRlIGNvbnTDrW51byBzb2JyZSBvIHBhcGVsIGFwcm9wcmlhZG8gZGEgYW7DoWxpc2UgZmF0b3JpYWwsIG9uZGUgbXVpdG9zIHBlc3F1aXNhZG9yZXMgY29uc2lkZXJhbSBhIEFGIGFwZW5hcyBleHBsb3JhdMOzcmlhLCDDunRpbCBuYSBidXNjYSBkYSBlc3RydXR1cmEgZW0gdW0gY29uanVudG8gZGUgdmFyacOhdmVpcyBvdSBjb21vIHVtIG3DqXRvZG8gZGUgcmVkdcOnw6NvIGRlIGRhZG9zLiBTb2IgZXNzYSBwZXJzcGVjdGl2YSwgYXMgdMOpY25pY2FzIGFuYWzDrXRpY2FzIGZhdG9yaWFpcyBjb25zaWRlcmFtIG8gcXVlIG9zIGRhZG9zIG9mZXJlY2VtIGUgbsOjbyBlc3RhYmVsZWNlbSByZXN0cmnDp8O1ZXMgYSBwcmlvcmkgc29icmUgbyBuw7ptZXJvIGRlIGNvbXBvbmVudGVzIGEgc2VyZW0gZXh0cmHDrWRvcy4gUGFyYSBtdWl0YXMsIHRhbHZleiBhIG1haW9yaWEgZGFzIGFwbGljYcOnw7VlcywgZXNzZSB1c28gZGEgQUYgw6kgYWRlcXVhZG8uIE5vIGVudGFudG8sIGVtIG91dHJhcyBzaXR1YcOnw7VlcywgbyBwZXNxdWlzYWRvciB0ZW0gcHJlY29uY2ViaWRvIGlkw6lpYXMgc29icmUgYSByZWFsIGVzdHJ1dHVyYSBkb3MgZGFkb3MsIGJhc2VhZG8gZW0gc3Vwb3J0ZSB0ZcOzcmljbyBvdSBlbSBwZXNxdWlzYXMgYW50ZXJpb3Jlcy4gRWxlIHBvZGUgZGVzZWphciB0ZXN0YXIgaGlww7N0ZXNlcyBlbnZvbHZlbmRvIHF1ZXN0w7VlcyBzb2JyZSwgcG9yIGV4ZW1wbG8sIHF1YWlzIHZhcmnDoXZlaXMgZGV2ZXJpYW0gc2VyIGFncnVwYWRhcyBlbSBmYXRvciBvdSBuw7ptZXJvIGV4YXRvIGRlIGZhdG9yZXMuIE5lc3NlcyBjYXNvcywgbyBwZXNxdWlzYWRvciBlc3BlcmEgcXVlIGEgYW7DoWxpc2UgZmF0b3JpYWwgZGVzZW1wZW5oZSB1bSBwYXBlbCBjb25maXJtYXTDs3Jpbywgb3Ugc2VqYSwgYXZhbGllIG8gZ3JhdSBlbSBxdWUgb3MgZGFkb3Mgc2F0aXNmYXplbSDDoCBlc3RydXR1cmEgZXNwZXJhZGEuDQoNCiMjIyAqKkFuw6FsaXNlIEZhdG9yaWFsIEV4cGxvcmF0w7NyaWEgLSBBRkUqKg0KDQrDiCBjb211bSB1bSBwZXNxdWlzYWRvciBhbmFsaXNhciBkYWRvcyByZWxhdGl2b3MgYSB1bSBmZW7DtG1lbm8gc2VtIGRpc3BvciBkZSB1bSBxdWFkcm8gZGUgcmVmZXLDqm5jaWEgdGXDs3JpY2EgcXVlIG8gb3JpZW50ZSBjb21wbGV0YW1lbnRlLiBOYSBtYWlvcmlhIGRhcyB2ZXplcywgZXNzYSBzaXR1YcOnw6NvIGRlY29ycmUgZGEgZmFsdGEgZGUgaW52ZXN0aW1lbnRvIG5hIGVzdHJ1dHVyYcOnw6NvIHRlw7NyaWNhIGRvIHByb2JsZW1hLCBkYSBleGlzdMOqbmNpYSBkZSBsYWN1bmFzIG5hIHRlb3JpYSBvdSBkYSBmYWx0YSBkZSBhanVzdGUgZGUgdW0gbW9kZWxvIHRlw7NyaWNvIHByb3Bvc3RvIGRlIGFudGVtw6NvIGFvcyBkYWRvcyBvYnNlcnZhZG9zLg0KDQpEZSBxdWFscXVlciBtb2RvLCBzZW1wcmUgZGV2ZSBoYXZlciB1bSBtw61uaW1vIGRlIHRlb3JpYSBpbmRpc3BlbnPDoXZlbCDDoCB1dGlsaXphw6fDo28gZGEgQUYsIG1lc21vIGVtIHN1YSBmb3JtYSBleHBsb3JhdMOzcmlhLiBObyBtw61uaW1vLCBvIHBlc3F1aXNhZG9yIGRldmUgc3Vwb3IgcXVlLCBwb3IgdHLDoXMgZGFzIHZhcmnDoXZlaXMgb2JzZXJ2YWRhcywgaMOhIHVtYSBlc3RydXR1cmEgZGUgZmF0b3JlcyBvcnRvZ29uYWlzIG91IG9ibMOtcXVvcy4gSXNzbyBwb3Igc2kgc8OzIG7Do28gw6kgcG91Y28sIHBvaXMgZXhjbHVpIHJlbGHDp8O1ZXMgY2F1c2FpcyBlbnRyZSBmYXRvcmVzLCByZWxhw6fDtWVzIGNhdXNhaXMgZW50cmUgdmFyacOhdmVpcyBvYnNlcnZhZGFzIGUgY29ycmVsYcOnw7VlcyBkb3MgZmF0b3JlcyDDum5pY29zIGNvbSBvdXRyb3MgZmF0b3JlcyBvdSBjb20gdmFyacOhdmVpcyBjdWphIGVzcGVjaWZpY2lkYWRlIG7Do28gZGV0ZXJtaW5hLiAgDQpBc3N1bWlkYSBhIGV4aXN0w6puY2lhIGRlIHVtYSBlc3RydXR1cmEgZmF0b3JpYWwgc3ViamFjZW50ZSwgbyBvYmpldGl2byBwcmltw6FyaW8gZGEgQW7DoWxpc2UgRmF0b3JpYWwgRXhwbG9yYXTDs3JpYSDDqSBkZXRlcm1pbmFyIGEgbWVub3IgcXVhbnRpZGFkZSBwb3Nzw612ZWwgZGUgZmF0b3JlcyBxdWUgcG9zc2FtIHJlcHJvZHV6aXIgYSBlc3RydXR1cmEgZGUgY29ycmVsYcOnw7VlcyBkYXMgdmFyacOhdmVpcyBvYnNlcnZhZGFzLiBTZWN1bmRhcmlhbWVudGUsIG8gcHJvcMOzc2l0byDDqSBhanVzdGFyIHNvbHXDp8O1ZXMgZW0gcXVlIHVtIHBlcXVlbm8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzIHRlbmhhIGNhcmdhIGVsZXZhZGEgZW0gY2FkYSBmYXRvciwgcG9pcyBpc3NvIGZhY2lsaXRhIGEgaW50ZXJwcmV0YcOnw6NvIGRhIHNvbHXDp8Ojby4NCg0KIyMjICoqQW7DoWxpc2UgRmF0b3JpYWwgQ29uZmlybWF0w7NyaWEgLSBBRkMqKg0KDQpBIGFwbGljYcOnw6NvIG5hIGFuw6FsaXNlIGZhdG9yaWFsIGNvbmZpcm1hdMOzcmlhIHByb2N1cmEgdmVyaWZpY2FyIHNlIG9zIGRhZG9zIG9ic2VydmFkb3Mgc2UgY29tcG9ydGFtIGRlIGFjb3JkbyBjb20gdW1hIGV4cGVjdGF0aXZhIHRlw7NyaWNhLiBTZSBpc3NvIG9jb3JyZXIsIHNlcnZlIGNvbW8gZXZpZMOqbmNpYSBmYXZvcsOhdmVsIMOgIHZhbGlkYWRlIGRvcyBkYWRvcyBlIHJlZm9yw6dhIGEgdGVvcmlhIHByb3Bvc3RhLCBzZSBuw6NvIGFjb250ZWNlciwgYWxlcnRhIHBhcmEgZXhpc3TDqm5jaWEgZGUgcHJvYmxlbWFzIGNvbSBvcyBkYWRvcywgY29tIGEgdGVvcmlhIG91IGNvbSBhbWJvcy4gTyByZXF1aXNpdG8gbcOtbmltbyBwYXJhIGV4ZWN1w6fDo28gZGEgYW7DoWxpc2UgZmF0b3JpYWwgY29uZmlybWF0w7NyaWEgw6kgbyBwZXNxdWlzYWRvciBwb3NzdWlyIGRlIGFudGVtw6NvIHVtYSBoaXDDs3Rlc2UgYWNlcmNhIGRhIHF1YW50aWRhZGUgZGUgZmF0b3JlcyBjb211bnMgZSBhcHJlc2VudGFyIHVtYSBleHBlY3RhdGl2YSB0ZcOzcmljYSBzb2JyZSBxdWFsIGZhdG9yIGRldmUgY2FycmVnYXIgZW0gcXVhbCB2YXJpw6F2ZWwuDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyMgKipDYXJnYXMgRmF0b3JpYWlzKioNCg0KQXMgY2FyZ2FzIGZhdG9yaWFpcyBvYnRpZGFzIHPDo28sIGNvbSBlZmVpdG8sIHJlZHXDp8O1ZXMgZGUgZGFkb3MgbXVpdG8gbWFpcyBjb21wbGV4b3MgYSB0YW1hbmhvIG1hbnVzZcOhdmVsIHBhcmEgcXVlIG8gcGVzcXVpc2Fkb3IgcG9zc2EgaW50ZXJwcmV0YXIgbWVsaG9yIG9zIHJlc3VsdGFkb3MgKCoqS0VSTElOR0VSLCAxOTgwKiopLiANCg0KQSBleHByZXNzw6NvIGNhcmdhIGZhdG9yaWFsIG9jb3JyZSBmcmVxw7xlbnRlbWVudGUuIFVtYSBtYXRyaXogZGUgY2FyZ2FzIGZhdG9yaWFpcyDDqSB1bSBkb3MgcHJvZHV0b3MgZmluYWlzIGRhIGFuw6FsaXNlIGZhdG9yaWFsLiBVbWEgY2FyZ2EgZmF0b3JpYWwgw6kgdW0gY29lZmljaWVudGUsIHVtIG7Dum1lcm8gZGVjaW1hbCwgcG9zaXRpdm8gb3UgbmVnYXRpdm8sIGdlcmFsbWVudGUgbWVub3IgZG8gcXVlIDEsIHF1ZSBleHByZXNzYSBvIHF1YW50byB1bSB0ZXN0ZSBvdSB2YXJpw6F2ZWwgb2JzZXJ2YWRhIGVzdMOhIGNhcnJlZ2FkbyBvdSBzYXR1cmFkbyBlbSB1bSBmYXRvci4gUG9yIG91dHJhcyBwYWxhdnJhcywgcXVhbnRvIG1haW9yIGZvciBhIGNhcmdhIGVtIGNpbWEgZGUgdW0gZmF0b3IsIG1haXMgYSB2YXJpw6F2ZWwgc2UgaWRlbnRpZmljYSBjb20gbyBxdWUgcXVlciBxdWUgc2VqYSBvIGZhdG9yLiANCg0KRW0gc8OtbnRlc2UsIGEgYW7DoWxpc2UgZmF0b3JpYWwgw6kgZXNzZW5jaWFsbWVudGUgdW0gbcOpdG9kbyBwYXJhIGRldGVybWluYXIgbyBuw7ptZXJvIGRlIGZhdG9yZXMgZXhpc3RlbnRlcyBlbSB1bSBjb25qdW50byBkZSBkYWRvcywgcGFyYSBkZXRlcm1pbmFyIHF1YWlzIHRlc3RlcyBvdSB2YXJpw6F2ZWlzIHBlcnRlbmNlbSBhIHF1YWlzIGZhdG9yZXMsIGUgZW0gcXVlIGV4dGVuc8OjbyBvcyB0ZXN0ZXMgb3UgdmFyacOhdmVpcyBwZXJ0ZW5jZW0gYS9vdSBlc3TDo28gc2F0dXJhZG9zIGNvbSBvIHF1ZSBxdWVyIHF1ZSBzZWphIG8gZmF0b3IuIA0KDQpBc3NpbSwgbmEgQUYgdW1hIHNpdHVhw6fDo28sIGNvbSBpbsO6bWVyYXMgdmFyacOhdmVpcyAoJFhfezF9LCBYX3syfSwuLi4sIFhfe3B9JCksIMOpIGV4cGxpY2FkYSBhIHBhcnRpciBkZSBkaW1lbnPDtWVzIGVzY29uZGlkYXMgKGZhdG9yZXM6ICRGX3sxfSwgRl97Mn0sIEZfezN9JCkuIEEgRmlndXJhIDEgZGVtb25zdHJhIGdyYWZpY2FtZW50ZSBvIGVzcXVlbWEgZ2VyYWwgZGEgYW7DoWxpc2UgZGUgZmF0b3Jlcy4NCg0KOjo6IHByb2dyZXNzDQo6Ojogey5wcm9ncmVzcy1iYXIgc3R5bGU9IndpZHRoOiAxMDAlOyJ9DQo6OjoNCjo6Og0KDQojIyAqKk1vZGVsbyBFc3RhdMOtc3RpY28gLSBBRioqDQoNCk8gbW9kZWxvIGVzdGF0w61zdGljbyB1c2FkbyBuYSBhbsOhbGlzZSBmYXRvcmlhbCBleHBsaWNhIHVtYSBlc3RydXR1cmEgZGUgY29ycmVsYcOnw6NvIGV4aXN0ZW50ZSBlbnRyZSB1bSBjb25qdW50byBkZSBpbmZvcm1hw6fDtWVzLCBkaXJldGFtZW50ZSBvYnNlcnZhZG8gcG9yIG1laW8gZGUgY29tYmluYcOnw6NvIGxpbmVhciBkZSB2YXJpw6F2ZWlzLCBhcyBxdWFpcyBuw6NvIHPDo28gZGlyZXRhbWVudGUgb2JzZXJ2YWRhcywgZGVub21pbmFkb3MgZmF0b3JlcyBjb211bnMsIGFjcmVzY2lkYXMgZGUgY29tcG9uZW50ZSByZXNpZHVhbC4gVW0gbW9kZWxvIGRlIGFuw6FsaXNlIGZhdG9yaWFsIHBvZGUgc2VyIGFwcmVzZW50YWRvIG5hIHNlZ3VpbnRlIGZvcm1hIGNvbmZvcm1lICgqKkRJTExPTiBlIEdPTERTVEVJTiwgMTk4NCoqKS4NCg0KU2VqYW0gIHZhcmnDoXZlaXMgYWxlYXTDs3JpYXMsIG0gZmF0b3JlcyBjb211bnM7IG08cC4NCg0KDQokJCAgWF97aX0gPSBcc3VtX3tqPTF9XnttfSBcbGFtYmRhX3tpan0gRl97an0gKyBcZXBzaWxvbl97aX0gJCQNCg0KRW0gcXVlOiANCg0KJFhfe2l9JCA9IHZhcmnDoXZlaXMgb3JpZ2luYWlzIG91IG9ic2VydmFkYXM7DQoNCiRcbGFtYmRhX3tpan0kID0gQ2FyZ2FzIGZhdG9yaWFpcyBkYSBpLcOpc2ltYSB2YXJpw6F2ZWwgbm8gai3DqXNpbW8gZmF0b3IgY29tdW0gZSByZWZsZXRlbSBhIGltcG9ydMOibmNpYSBkbyBqLcOpc2ltbyBmYXRvciBuYSBjb21wb3Npw6fDo28gZGEgaS3DqXNpbWEgdmFyacOhdmVsLg0KDQokRl97an0kID0gdmFyacOhdmVpcyBuw6NvLW9ic2VydsOhdmVpcyBvdSB2YXJpw6F2ZWlzIGxhdGVudGVzIGNoYW1hZGFzIGRlIGZhdG9yZXMgY29tdW5zOw0KDQokXGVwc2lsb25fe2l9JCAgPSBGYXRvcmVzIGVzcGVjw61maWNvcyBxdWUgZGVzY3JldmVtIGEgdmFyaWHDp8OjbyByZXNpZHVhbCBlc3BlY8OtZmljYSBkYSBpLcOpc2ltYSB2YXJpw6F2ZWwgKHJlc8OtZHVvIHF1ZSBhZmV0YSBzb21lbnRlICRYX3tpfSQpLiDDiSBhIHBhcnRlIGRhIHZhcmnDoXZlbCAkWF97aX0kIHF1ZSBuw6NvIMOpIGV4cGxpY2FkYSBwZWxvcyBmYXRvcmVzIGNvbXVucy4NCg0KOjo6IHByb2dyZXNzDQo6Ojogey5wcm9ncmVzcy1iYXIgc3R5bGU9IndpZHRoOiAxMDAlOyJ9DQo6OjoNCjo6Og0KDQojIyAqKkNvbXVuYWxpZGFkZXMqKg0KDQpBIHBvcsOnw6NvIGRhIHZhcmnDom5jaWEgcXVlIGEgdmFyacOhdmVsIGNvbnRyaWJ1aSBwYXJhIG8gZmF0b3IgY29tdW0gbSDDqSBjaGFtYWRhIGRlIGNvbXVuYWxpZGFkZS4gQSBwb3LDp8OjbyBkYSB2YXJpw6JuY2lhIFZhcihYKT0gJFxzaWdtYV57Mn0kIGRldmlkbyBhbyBmYXRvciBlc3BlY8OtZmljbywgY2hhbWEtc2UgZXNwZWNpZmljaWRhZGUgb3UgdmFyacOibmNpYSBlc3BlY8OtZmljYS4gDQoNCkVudMOjbyB0ZW0tc2UgcXVlIEEgdmFyacOibmNpYSBkZSBjYWRhIHZhcmnDoXZlbCAkWF97aX0kIMOpIGEgc29tYSBkYXMgQ29tdW5hbGlkYWRlcyAkaF97aX1eezJ9JCBjb20gc3VhcyByZXNwZWN0aXZhcyBlc3BlY2lmaWNpZGFkZXMgb3UgdmFyacOibmNpYSBlc3BlY8OtZmljYSAkXHBzaV97aX0kLiANCg0KDQokJFx1bmRlcmJyYWNle1xzaWdtYV97aWp9fV97XG1ib3h7VmFyfSAoWF97aX0pfSA9IFx1bmRlcmJyYWNle2xeezJ9X3tpMX0rbF57Mn1fe2kyfStcbGRvdHMrbF57Mn1fe2ltfX1fe1xtYm94e0NvbXVuYWxpZGFkZXN9fSAgK1x1bmRlcmJyYWNle1xwc2lfe2l9fV97XG1ib3h7VmFyaWFuY2lhIEVzcGVjaWZpY2F9fSQkDQpEZW5vdGFuZG8tc2UgYSBpLcOpc2ltYSBjb211bmFsaWRhZGUgcG9yICRoX3tpfV57Mn0kIHRlbS1zZToNCg0KDQokJGhfe2lqfV57Mn0gPSAgbF57Mn1fe2kxfStsXnsyfV97aTJ9K1xsZG90cytsXnsyfV97aW19ID0gXHN1bV97aWp9XnttfSBsXnsyfV97aWp9IFwgXCBcIFwgXCBjb20gXCBcIFwgXCBpPTEsMiwuLi4scCAkJCANCg0KRW50w6NvOg0KDQoNCiQkIFxzaWdtYV97aWp9ICA9IGhfe2l9XnsyfSArIFxwc2lfe2l9JCQNCg0KQSBpLcOpc2ltYSBjb211bmFsaWRhZGUgw6kgYSBzb21hIGRvcyBxdWFkcmFkb3MgZG9zIGNhcnJlZ2FtZW50b3MgZGEgaS3DqXNpbWEgdmFyacOhdmVsIGNvbSBtIGZhdG9yZXMgY29tdW5zLiBQb3J0YW50byBhcyBjb211bmFsaWRhZGVzIHPDo28gYXMgbWFpb3JlcyBwYXJjZWxhcyBkbyB0b3RhbCBkYSB2YXJpw6JuY2lhIGRlIHVtYSB2YXJpw6F2ZWwgJFhfe2l9JC4gQSBzZWd1bmRhIHBhcmNlbGEgw6kgcHJvdmVuaWVudGUgZGEgdmFyacOibmNpYSBlc3BlY8OtZmljYSBkZSBjYWRhIHZhcmnDoXZlbCwgcmVwcmVzZW50YWRhIHBvciAkXHBzaSQuIFF1YW50byBtYWlzIGEgY29tdW5hbGlkYWRlIHNlIGFwcm94aW1hciBkZSAxLCBtZWxob3Igc2Vyw6EgbyBtb2RlbG8gZmF0b3JpYWwuIEF1dG9yZXMgY29uc2lkZXJhbSBib2EgY29tdW5hbGlkYWRlIHZhbG9yZXMgYWNpbWEgZGUgMCw3MC4NCg0KOjo6IHByb2dyZXNzDQo6Ojogey5wcm9ncmVzcy1iYXIgc3R5bGU9IndpZHRoOiAxMDAlOyJ9DQo6OjoNCjo6Og0KDQojIyAqKlByaW5jaXBhaXMgRXRhcGFzIHBhcmEgQXBsaWNhw6fDo28gLSBBRioqDQoNCkEgYW7DoWxpc2UgZmF0b3JpYWwgcG9zc3VpLCBiYXNpY2FtZW50ZSwgb2l0byBldGFwYXMgcGFyYSBhIHN1YSBlbGFib3Jhw6fDo28gcXVlIHPDo286DQoNCi0gICAqKkZvcm11bGFyIG8gUHJvYmxlbWEqKjogRm9ybXVsYcOnw6NvIGRvIHByb2JsZW1hIGRhIGFuw6FsaXNlIGZhdG9yaWFsIGUgaWRlbnRpZmljYcOnw6NvIGRhcyB2YXJpw6F2ZWlzIG9yaWdpbmFpcyBxdWUgc2Vyw6NvIGludmVzdGlnYWRhcyBwYXJhIHJlc3VtbyBvdSByZWR1w6fDo28gZG9zIGRhZG9zLg0KDQotICAgKipDw6FsY3VsbyBkYSBNYXRyaXogZGUgQ29ycmVsYcOnw6NvKio6IEPDoWxjdWxvIGRhIG1hdHJpeiBkZSBjb3JyZWxhw6fDo28gZGFzIHZhcmnDoXZlaXMgZW0gZXN0dWRvIHBhcmEgYSB2ZXJpZmljYcOnw6NvIGRvIGdyYXUgZGUgYXNzb2NpYcOnw6NvIGVudHJlIGFzIHZhcmnDoXZlaXMuIFBhcmEgdGVzdGFyIGEgY29udmVuacOqbmNpYSBkbyBtb2RlbG8gZmF0b3JpYWwsIHBvZGUtc2UgYXBsaWNhciBvIHRlc3RlIGRlIGVzZmVyaWNpZGFkZSBkZSBCYXJ0bGV0dCBwYXJhIHRlc3RhciBhIGhpcMOzdGVzZSBudWxhIGRlIHF1ZSBhcyB2YXJpw6F2ZWlzIG7Do28gc2VqYW0gY29ycmVsYWNpb25hZGFzIG5hIHBvcHVsYcOnw6NvLCBvdSBzZWphLCBxdWUgYSBtYXRyaXogZGUgY29ycmVsYcOnw6NvIGRhIHBvcHVsYcOnw6NvIMOpIHVtYSBtYXRyaXogZGUgaWRlbnRpZGFkZS4gT3V0cmEgZXN0YXTDrXN0aWNhIHV0aWxpemFkYSBwb2RlIHNlciBhIG1lZGlkYSBkZSBhZGVxdWFjaWRhZGUgZGEgYW1vc3RyYSBkZSBLYWlzZXItTWV5ZXItT2xraW4gKEtNTyksIHVtIMOtbmRpY2UgdXNhZG8gcGFyYSBhdmFsaWFyIGEgbWVkaWRhIGRlIGFkZXF1YWNpZGFkZSBkYSBhbW9zdHJhIGRhIGFuw6FsaXNlIGZhdG9yaWFsLiBWYWxvcmVzIGFsdG9zIChlbnRyZSAwLDUgZSAxLDApIGluZGljYW0gcXVlIGEgYW7DoWxpc2UgZmF0b3JpYWwgw6kgYXByb3ByaWFkYS4gQXNzaW0sIGEgcGFydGlyIGRlIHVtYSBhbsOhbGlzZSBkYSBtYXRyaXogZGUgY29ycmVsYcOnw6NvIGRhcyBkaXZlcnNhcyB2YXJpw6F2ZWlzLCDDqSBwb3Nzw612ZWwgb2J0ZXIgaW5kaWNhZG9yZXMgc2ludMOpdGljb3MsIG91LCB1dGlsaXphbmRvIG8gdGVybW8gdMOpY25pY28sIGVzY29yZXMgZmF0b3JpYWlzLCBxdWUgY29uc2lzdGVtIG51bWEgY29tYmluYcOnw6NvIGxpbmVhciBkYXMgdmFyacOhdmVpcyBvcmlnaW5haXMgcXVlIGFzIHNpbnRldGl6YW0gZSBleHBsaWNhbSAoS0FJU0VSIEUgUklDRSwgMTk3NCwgU1BTUywgMTk5OSkuDQoNCi0gICAqKk3DqXRvZG8gZGUgQW7DoWxpc2UqKjogRXNjb2xoYSBkbyBtw6l0b2RvIGRlIGFuw6FsaXNlIGZhdG9yaWFsIG1haXMgYXByb3ByaWFkbyBwYXJhIGV4dHJhw6fDo28gZG9zIGZhdG9yZXMgYSBzZXJlbSB1dGlsaXphZG9zIGV4aXN0ZW0gdsOhcmlvcyBkZW50cmUgb3MgbWFpcyB1c3VhaXMgc8OjbzogTcOpdG9kbyBkZSBDb21wb25lbnRlcyBQcmluY2lwYWlzLCBNw6l0b2RvIGRlIEFuw6FsaXNlIEZhdG9yaWFsIENvbXVtIGUgTcOpdG9kbyBkZSBNw6F4aW1hIFZlcm9zc2ltaWxoYW7Dp2EuDQoNCi0gICAqKkV4dHJhaXIgRmF0b3JlcyBJbmljaWFpcyoqOiBFeHRyYcOnw6NvIGRvcyBmYXRvcmVzIChjYXJnYXMgZmF0b3JpYWlzKSBtYWlzIHNpZ25pZmljYXRpdm9zIHF1ZSByZXByZXNlbnRhcsOjbyBvcyBkYWRvcywgYXRyYXbDqXMgZG8gbcOpdG9kbyBtYWlzIGFkZXF1YWRvLiBQb2RlbSBzZXI6IGEgcHJpb3JpLCBjb20gYmFzZSBlbSBhdXRvdmFsb3JlcywgY29tIGJhc2UgZW0gdW0gZ3LDoWZpY28gZGUgRGVjbGl2ZSAoU2NyZWUgUGxvdCksIG5hIHBlcmNlbnRhZ2VtIGRhIHZhcmnDom5jaWEuIEFxdWkgc2Ugc2FiZSBvIHF1w6NvIGJlbSBvIG1vZGVsbyByZXByZXNlbnRhIG9zIGRhZG9zIChIQUlSIGV0LiBhbCwgMjAwNSkuDQoNCi0gICAqKlJvdGHDp8OjbyBkb3MgRmF0b3JlcyoqOiBBcGxpY2FyIGFsZ3VtIHRpcG8gZGUgcm90YcOnw6NvIG5vcyBmYXRvcmVzIHBhcmEgZmFjaWxpdGFyIG8gZW50ZW5kaW1lbnRvIGRvcyBtZXNtb3MuIFBvZGVtIHNlcjogb3J0b2dvbmFsLCBxdWFuZG8gb3MgZWl4b3Mgc8OjbyBtYW50aWRvcyBlbSDDom5ndWxvIHJldG8gZSByb3Rhw6fDo28gb2Jsw61xdWEsIHF1YW5kbyBvcyBlaXhvcyBuw6NvIHPDo28gbWFudGlkb3MgZW0gw6JuZ3VsbyByZXRvLiAoR2VyYWxtZW50ZSwgdXRpbGl6YS1zZSByb3Rhw6fDo28gcGFyYSB0cmFuc2Zvcm1hciBhIG1hdHJpeiBkZSBmYXRvcmVzIGVtIHVtYSBtYXRyaXogbWFpcyBzaW1wbGVzIGUgbWFpcyBmw6FjaWwgZGUgaW50ZXJwcmV0YXIuIE8gbcOpdG9kbyBkZSByb3Rhw6fDo28gbWFpcyBjb211bWVudGUgdXNhZG8gw6kgbyBwcm9jZXNzbyB2YXJpbWF4IHF1ZSBvYmpldGl2YSBkaW1pbnVpciBvIG7Dum1lcm8gZGUgdmFyacOhdmVpcyBjb20gY2FyZ2FzIGZhdG9yaWFpcyBhbHRhcyBlbSB1bSBzw7MgZmF0b3IsIHJlc3VsdGFuZG8gZW0gZmF0b3JlcyBvcnRvZ29uYWlzLiBTZSBow6EgZmF0b3JlcyBhbHRhbWVudGUgY29ycmVsYWNpb25hZG9zIG5hIHBvcHVsYcOnw6NvIHBlc3F1aXNhZGEsIHBvZGUtc2UgdXNhciBhIHJvdGHDp8OjbyBvYmzDrXF1YSkuDQoNCi0gICAqKkludGVycHJldGHDp8OjbyBkZSBGYXRvcmVzKio6IMOJIGZhY2lsaXRhZGEgYXRyYXbDqXMgZGEgaWRlbnRpZmljYcOnw6NvIGRhcyB2YXJpw6F2ZWlzIHF1ZSBhcHJlc2VudGFtIGdyYW5kZXMgY2FyZ2FzIHNvYnJlIG8gbWVzbW8gZmF0b3IuIE8gZmF0b3IgcG9kZSBlbnTDo28gc2VyIGludGVycHJldGFkbyBlbSB0ZXJtb3MgZGFzIHZhcmnDoXZlaXMgcXVlIG8gcGVzYW0gZm9ydGVtZW50ZQ0KDQotICAgKipDw6FsY3VsbyBkb3MgRXNjb3JlcyBGYXRvcmlhaXMqKjogRXNjb3JlcyBmYXRvcmlhaSBzw6NvIGVzdGltYWRvcyBwYXJhIGNhZGEgb2JzZXJ2YcOnw6NvIG5vcyBmYXRvcmVzIGRlcml2YWRvcy4gQSByZWR1w6fDo28gZGUgZGFkb3MgcG9kZSBzZXIgY29uc2VndWlkYSBjYWxjdWxhbmRvIGVzY29yZXMgcGFyYSBjYWRhIGRpbWVuc8OjbyBsYXRlbnRlIGUgc3Vic3RpdHVpbmRvIGFzIHZhcmnDoXZlaXMgb3JpZ2luYWlzIHBlbG9zIG1lc21vcy4gQSBhbsOhbGlzZSBmYXRvcmlhbCBwb2RlIGF1eGlsaWFyIG5hIHNlbGXDp8OjbyBkZSB1bSBzdWJjb25qdW50byByZXByZXNlbnRhdGl2byBkZSB2YXJpw6F2ZWlzIG91IG1lc21vIGRhIGNyaWHDp8OjbyBkZSBub3ZhcyB2YXJpw6F2ZWlzIGNvbW8gc3Vic3RpdHV0YXMgZGFzIHZhcmnDoXZlaXMgb3JpZ2luYWlzLCBlIGFpbmRhIG1hbnRlbmRvIHNldSBjYXLDoXRlciBvcmlnaW5hbC4gDQoNCi0gICAqKkRldGVybWluYcOnw6NvIGRvIEFqdXN0ZSBkbyBNb2RlbG8qKjogQXMgZGlmZXJlbsOnYXMgZW50cmUgYXMgY29ycmVsYcOnw7VlcyBvYnNlcnZhZGFzIChtYXRyaXogZGUgZW50cmFkYSkgZSBhcyBjb3JyZWxhw6fDtWVzIHJlcHJvZHV6aWRhcyAoZXN0aW1hZGEgY29tIGJhc2UgbmEgbWF0cml6IGRlIGZhdG9yZXMpIHPDo28gY2hhbWFkYXMgZGUgcmVzw61kdW9zIGUgc2UgaMOhIG11aXRvcyByZXPDrWR1b3MgZ3JhbmRlcywgbyBtb2RlbG8gZmF0b3JpYWwgbsOjbyBkw6EgdW0gYm9tIGFqdXN0ZSBhb3MgZGFkb3MsIGUgZGV2ZSBzZXIgcmVjb25zaWRlcmFkby4NCg0KOjo6IHByb2dyZXNzDQo6Ojogey5wcm9ncmVzcy1iYXIgc3R5bGU9IndpZHRoOiAxMDAlOyJ9DQo6OjoNCjo6Og0KDQojIyAqKk3DqXRvZG8gZGUgRXh0cmHDp8OjbyBkb3MgRmF0b3JlcyoqDQoNCkjDoSBuYSBsaXRlcmF0dXJhIHbDoXJpb3MgbcOpdG9kb3MgcGFyYSBhIGVzdGltYcOnw6NvIGRlIGZhdG9yZXMgdGFpcyBjb21vOiANCg0KLSAgICoqTWV0aG9kIFVud2VpZ2h0ZWQgTGVhc3QgU3F1YXJlcyoqOiB1bSBkb3MgbcOpdG9kb3MgZGUgZXh0cmHDp8OjbyBxdWUgbWluaW1pemEgYSBzb21hIGRhcyBkaWZlcmVuw6dhcyBxdWFkcsOhdGljYXMgZW50cmUgYSBtYXRyaXogZGUgZGFkb3MgZSBhIG1hdHJpeiBkZSBjb3JyZWxhw6fDo28gcmVwcm9kdXppZGEsIGlnbm9yYW5kbyBhcyBkaWFnb25haXMuDQotICAgKipNZXRob2QgR2VuZXJhbGl6ZWQgTGVhc3QgU3F1YXJlcyoqOiBpZGVtIGFvIGFudGVyaW9yLCBtYXMgbmVzdGUgY2FzbyBhIGNvcnJlbGHDp8OjbyDDqSBwZXNhZGEgcGVsbyBpbnZlcnNvIGRhcyBzdWFzIHNpbmd1bGFyaWRhZGVzLCBhc3NpbSBjb21vIGFzIHZhcmnDoXZlaXMgY29tIGFsdGFzIHNpbmd1bGFyaWRhZGVzIHPDo28gdG9tYWRhcyBjb20gcGVzbyBtZW5vciBxdWUgYXF1ZWxhcyBjb20gbWVub3Igc2luZ3VsYXJpZGFkZXMuDQotICAgKipNZXRob2QgTWF4aW11biBMaWtlbGlob29kKio6IGVzdGUgY3JpYSBwYXLDom1ldHJvcyBlc3RpbWFkb3MgY29tbyBzZW5kbyBtYWlzIHByb3bDoXZlaXMgcGFyYSBwcm9kdXppciBhIG1hdHJpeiBkZSBjb3JyZWxhw6fDo28gb2JzZXJ2YWRhLCBzZSBhIGFtb3N0cmEgcG9kZSBzZXIgY2FyYWN0ZXJpemFkYSBwb3IgdW1hIGRpc3RyaWJ1acOnw6NvIG5vcm1hbCBtdWx0aXZhcmlhZGEuIEFzIGNvcnJlbGHDp8O1ZXMgc8OjbyBwZXNhZGFzIHBlbG8gaW52ZXJzbyBkYXMgc2luZ3VsYXJpZGFkZXMgZGFzIHZhcmnDoXZlaXMsIHBlbG8gZW1wcmVnbyBkZSB1bSBhbGdvcml0bW8g4oCcaXRlcmF0aXZv4oCdLiANCi0gICAqKk1ldGhvZCBQcmluY2lwYWwgQXhpcyBGYWN0b3JpbmcqKjogcGFydGUgZGEgbWF0cml6IGRlIGNvcnJlbGHDp8OjbyBvcmlnaW5hbCBjb20gb3MgY29lZmljaWVudGVzIGRlIGNvcnJlbGHDp8O1ZXMgbcO6bHRpcGxvcyBjb2xvY2Fkb3MgbmEgZGlhZ29uYWwgY29tbyBlc3RpbWF0aXZhcyBpbmljaWFpcyBkYXMgY29tdW5hbGlkYWRlcy4gDQotICAgKipNZXRob2QgUHJpbmNpcGFsIENvbXBvbmVudHMqKjogw6kgdXNhZGEgcGFyYSBvYnRlciB1bWEgY29tYmluYcOnw6NvIGxpbmVhciBuw6NvLWNvcnJlbGF0YSBkYXMgY29tYmluYcOnw7VlcyBkYXMgdmFyacOhdmVpcyBtZW5zdXJhZGFzLCBvYnRlbmRvLXNlIGFzIHNvbHXDp8O1ZXMgZG9zIGZhdG9yZXMsIGVsYSBwb2RlIHNlciB1c2FkYSBxdWFuZG8gYSBtYXRyaXogZGUgY29ycmVsYcOnw6NvIMOpIHNpbmd1bGFyLiANCi0gICAqKk1ldGhvZCBBbHBoYSBGYWN0b3JpbmcqKjogw6kgdW0gbcOpdG9kbyBkZSBleHRyYcOnw6NvIHF1ZSBjb25zaWRlcmEgYXMgdmFyacOhdmVpcyBuYSBhbsOhbGlzZSBjb21vIHVtYSBhbW9zdHJhIGRvIHVuaXZlcnNvIHBvdGVuY2lhbCBkZSB2YXJpw6F2ZWlzLiBFbGUgbWF4aW1pemEgYSBjb25maWFiaWxpZGFkZSBvdSBmaWRlZGlnbmlkYWRlIGFsZmEgKGRlIENyb25iYWNoKSBkb3MgZmF0b3Jlcw0KLSAgICoqTWV0aG9kIEltYWdlIEZhY3RvcmluZyoqOiDDqSB1bSBtw6l0b2RvIGZhdG9yaWFsIGRlIGV4dHJhw6fDo28gZGVzZW52b2x2aWRvIHBvciBHdXR0bWFuIGUgZXN0w6EgYmFzZWFkbyBuYSBUZW9yaWEgZGUgSW1hZ2Vucy4gQSBwYXJ0ZSBjb211bSBkYSB2YXJpw6JuY2lhLCBjaGFtYWRhIGRlIGltYWdlbSBwYXJjaWFsLCDDqSBkZWZpbmlkYSBjb21vIHVtYSByZWdyZXNzw6NvIGxpbmVhciBzb2JyZSBhcyByZXN0YW50ZXMsIHByZWZlcml2ZWxtZW50ZSBxdWUgYSBmdW7Dp8OjbyBkb3MgZmF0b3JlcyBoaXBvdMOpdGljb3MuDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyMgKipNw6l0b2RvIGRlIFJvdGHDp8OjbyBkb3MgRmF0b3JlcyoqDQoNClVtYSBmZXJyYW1lbnRhIGltcG9ydGFudGUgbmEgaW50ZXJwcmV0YcOnw6NvIGRlIGZhdG9yZXMgw6kgYSAqKnJvdGHDp8OjbyBmYXRvcmlhbCoqLiBPIHRlcm1vIHJvdGHDp8OjbyBzaWduaWZpY2EgZXhhdGFtZW50ZSBvIHF1ZSBzdWdlcmUuIEVzcGVjaWZpY2FtZW50ZSwgb3MgZWl4b3MgZGUgcmVmZXLDqm5jaWEgZG9zIGZhdG9yZXMgc8OjbyByb3RhY2lvbmFkb3MgZW0gdG9ybm8gZGEgb3JpZ2VtIGF0w6kgcXVlIGFsZ3VtYSBvdXRyYSBwb3Npw6fDo28gc2VqYSBhbGNhbsOnYWRhLiBBcyBzb2x1w6fDtWVzIGRlIGZhdG9yZXMgbsOjby1yb3RhY2lvbmFkYXMgZXh0cmFlbSBmYXRvcmVzIG5hIG9yZGVtIGRlIHN1YSBpbXBvcnTDom5jaWEuIA0KDQpPIHByaW1laXJvIGZhdG9yIHRlbmRlIGEgc2VyIHVtIGZhdG9yIGdlcmFsIGNvbSBxdWFzZSB0b2RhIGEgdmFyacOhdmVsIGNvbSBjYXJnYSBzaWduaWZpY2F0aXZhLCBlIGV4cGxpY2EgYSBxdWFudGlhIG1haW9yIGRlIHZhcmnDom5jaWEuIE8gc2VndW5kbyBmYXRvciBlIG9zIHNlZ3VpbnRlcyBzw6NvIGVudMOjbyBiYXNlYWRvcyBuYSBxdWFudGlhIHJlc2lkdWFsIGRlIHZhcmnDom5jaWEuIENhZGEgZmF0b3IgZXhwbGljYSBwb3LDp8O1ZXMgc3VjZXNzaXZhbWVudGUgbWVub3JlcyBkZSB2YXJpw6JuY2lhLiBPIGVmZWl0byBmaW5hbCBkZSByb3RhY2lvbmFyIGEgbWF0cml6IGZhdG9yaWFsIMOpIHJlZGlzdHJpYnVpciBhIHZhcmnDom5jaWEgZG9zIHByaW1laXJvcyBmYXRvcmVzIHBhcmEgb3Mgw7psdGltb3MgY29tIG8gb2JqZXRpdm8gZGUgYXRpbmdpciB1bSBwYWRyw6NvIGZhdG9yaWFsIG1haXMgc2ltcGxlcyBlIHRlb3JpY2FtZW50ZSBtYWlzIHNpZ25pZmljYXRpdm8uDQoNCk8gY2FzbyBtYWlzIHNpbXBsZXMgZGUgcm90YcOnw6NvIMOpIHVtYSAqKlJvdGHDp8OjbyBPcnRvZ29uYWwqKiwgbmEgcXVhbCBvcyBlaXhvcyBzw6NvIG1hbnRpZG9zIGEgOTDCui4gVGFtYsOpbSDDqSBwb3Nzw612ZWwgcm90YWNpb25hciBvcyBlaXhvcyBzZW0gbWFudGVyIG8gw6JuZ3VsbyBkZSA5MCBncmF1cyBlbnRyZSBvcyBlaXhvcyBkZSByZWZlcsOqbmNpYS4gUHJvY2VkaW1lbnRvIGRlIHJvdGHDp8OjbyBzZSBjaGFtYSAqKlJvdGHDp8OjbyBPYmzDrXF1YSouIA0KDQojIyMgKipSb3Rhw6fDo28gT3J0b2dvbmFsIGRvcyBGYXRvcmVzKioNCg0KUGFyYSByb3Rhw6fDo28gb3J0b2dvbmFsIGRvcyBmYXRvcmVzIGV4aXN0ZW0gdsOhcmlvcyB0aXBvcyBuYSBsaXRlcmF0dXJhIGNvbW86ICoqVmFyaW1heCoqIChtYWlzIHVzYWRvKSBxdWUgw6kgdW0gbcOpdG9kbyBkZSByb3Rhw6fDo28gb3J0b2dvbmFsIHF1ZSBtaW5pbWl6YSBvIG7Dum1lcm8gZGUgdmFyacOhdmVpcyBxdWUgY2FkYSBhZ3J1cGFtZW50byB0ZXLDoS4gRWxlIHNpbXBsaWZpY2EgYSBpbnRlcnByZXRhw6fDo28gZG9zIGZhdG9yZXMuIA0KDQoqKlF1YXJ0aW1heCoqIMOpIHVtIG3DqXRvZG8gcXVlIG1pbmltaXphIG8gbsO6bWVybyBkZSBmYXRvcmVzIG5lY2Vzc8OhcmlvcyBwYXJhIGV4cGxpY2FyIGNhZGEgdmFyacOhdmVsLiBFbGUgc2ltcGxpZmljYSBhIGludGVycHJldGHDp8OjbyBkYXMgdmFyacOhdmVpcyBvYnRpZGFzLiANCg0KTyAqKkVxdWFtYXgqKiDDqSB0YW1iw6ltIHVtIG3DqXRvZG8gcXVlIGJ1c2NhIHVtYSBjb21iaW5hw6fDo28gZG9zIG91dHJvcyAodmFyaW1heCBlIHF1YXJ0aW1heCkuIE8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzIG9idGlkbyB0ZXLDoSBjYXJnYSBmYXRvcmlhbCBtYWlvciBlIG8gbsO6bWVybyBkZSBmYXRvcmVzIHNlcsOhIG1pbmltaXphZG8uDQoNCiMjIyMgKipSb3Rhw6fDo28gVmFyaW1heCoqDQoNCkEgcm90YcOnw6NvIHZhcmltYXggw6kgdW1hIGRhcyByb3Rhw6fDtWVzIG9ydG9nb25haXMgbWFpcyB1dGlsaXphZGFzIGVtIGFuw6FsaXNlIGZhdG9yaWFsLiBJbnR1aXRpdmFtZW50ZSwgZWxhIGJ1c2NhIHNvbHXDp8O1ZXMgbmFzIHF1YWlzIHNlIGJ1c2NhIG1heGltaXphciBhcyBjb3JyZWxhw6fDtWVzIGRlIGNhZGEgdmFyacOhdmVsIGNvbSBhcGVuYXMgdW0gZmF0b3IuDQoNCk8gbcOpdG9kbyB2YXJpbWF4IMOpIHVtIHByb2Nlc3NvIGVtIHF1ZSBvcyBlaXhvcyBkZSByZWZlcsOqbmNpYSBkb3MgZmF0b3JlcyBzw6NvIHJvdGFjaW9uYWRvcyBlbSB0b3JubyBkYSBvcmlnZW0gYXTDqSBxdWUgYWxndW1hIG91dHJhIHBvc2nDp8OjbyBzZWphIGFsY2Fuw6dhZGEuIEludHVpdGl2YW1lbnRlLCBlbGEgYnVzY2Egc29sdcOnw7VlcyBuYXMgcXVhaXMgc2UgYnVzY2EgbWF4aW1pemFyIGFzIGNvcnJlbGHDp8O1ZXMgZGUgY2FkYSB2YXJpw6F2ZWwgY29tIGFwZW5hcyB1bSBmYXRvci4gTyBvYmpldGl2byDDqSByZWRpc3RyaWJ1aXIgYSB2YXJpw6JuY2lhIGRvcyBwcmltZWlyb3MgZmF0b3JlcyBwYXJhIG9zIGRlbWFpcyBlIGF0aW5naXIgdW0gcGFkcsOjbyBmYXRvcmlhbCBtYWlzIHNpbXBsZXMgZSB0ZW9yaWNhbWVudGUgbWFpcyBzaWduaWZpY2F0aXZvIChSRUlTLCAyMDAxOyBIQUlSLCAyMDA1KS4NCg0KVmFyaW1heCDDqSB1bSB0aXBvIGRlIHJvdGHDp8OjbyBvcnRvZ29uYWwgbmEgcXVhbCBtYW50w6ltIG9zIGZhdG9yZXMgcGVycGVuZGljdWxhcmVzIGVudHJlIHNpLCBvdSBzZWphLCBzZW0gY29ycmVsYcOnw6NvIGVudHJlIGVsZXMuIMOIIG8gdGlwbyBkZSByb3Rhw6fDo28gbWFpcyB1dGlsaXphZG8gZSBxdWUgdGVtIGNvbW8gY2FyYWN0ZXLDrXN0aWNhIG8gZmF0byBkZSBtaW5pbWl6YXIgYSBvY29ycsOqbmNpYSBkZSB1bWEgdmFyacOhdmVsIHBvc3N1aXIgYWx0YXMgY2FyZ2FzIGZhdG9yaWFpcyBwYXJhIGRpZmVyZW50ZXMgZmF0b3JlcywgcGVybWl0aW5kbyBxdWUgdW1hIHZhcmnDoXZlbCBzZWphIGZhY2lsbWVudGUgaWRlbnRpZmljYWRhIGNvbW8gw7puaWNvIGZhdG9yIChDT1JSQVIgZXQgYWwsIDIwMDcpLg0KDQojIyMgKipSb3Rhw6fDo28gT2Jsw61xdWEgZG9zIEZhdG9yZXMqKg0KDQpQYXJhIHJvdGHDp8OjbyBvYmzDrXF1YSBkb3MgZmF0b3JlcyBjaXRhLXNlOiAqKkRpcmVjdCBPYmxpbWluKiogdW0gbcOpdG9kbyBkaWZlcmVudGVtZW50ZSBkb3MgdHLDqnMgYW50ZXJpb3JlcyDDqSBvYmzDrXF1byAobsOjbyBvcnRvZ29uYWwpLiBRdWFuZG8gZGVsdGEgw6kgaWd1YWwgYSAwIChkZWZhdWx0KSwgYSBzb2x1w6fDo28gw6kgbWFpcyBvYmzDrXF1YS4gVG9tYW5kby1zZSBkZWx0YSBtYWlzIG5lZ2F0aXZvLCBvcyBmYXRvcmVzIGZpY2FyYW0gbWVub3Mgb2Jsw61xdW9zLiBJZ25vcmFuZG8tc2UgbyBkZWZhdWx0IGRlbHRhIGRlIDAsIGRldmUtc2UgdXNhciB1bSBuw7ptZXJvIG1lbm9yIG91IGlndWFsIGEgMCw4LiANCg0KTyAqKlByb21heCoqIHRhbWLDqW0gw6kgdW0gbcOpdG9kbyBvYmzDrXF1byBkZSByb3Rhw6fDo28sIG8gcXVhbCBwb3NzaWJpbGl0YSAgb3MgZmF0b3JlcyBjb3JyZWxhdG9zLiBFbGUgcG9kZSBzZXIgY2FsY3VsYWRvIG1haXMgcmFwaWRhbWVudGUgcXVlIGEgcm90YcOnw6NvIGRpcmVjdCBvYmxpbWluLiBBc3NpbSBlbGUgw6kgdXNhZG8gcGFyYSBncmFuZGVzIGdydXBvcyBkZSBkYWRvcy4gS2FwcGEgbmEgbWFpb3JpYSBkYXMgdmV6ZXMgw6kgdG9tYWRvIGNvbSBvIHZhbG9yIDQuIEV4aXN0ZW0gb3V0cm9zIG3DqXRvZG9zIGRlIHJvdGHDp8OjbyBvYmzDrXF1YSBuYSBsaXRlcmF0dXJhIGNvbW86IA0KDQotICAgKipDb3ZhcmltaW4qKjsNCi0gICAqKk9ibGltYXgqKjsNCi0gICAqKlF1YXJ0aW1pbioqDQoNCm1hcyBxdWUgbsOjbyBzw6NvIHTDo28gdXNhZG9zIGNvbW8gb3MgYW50ZXJpb3JlcyBtZW5zaW9uYWRvcy4NCg0KT3MgbWVzbW9zIHByaW5jw61waW9zIGdlcmFpcyBkZSByb3Rhw6fDtWVzIG9ydG9nb25haXMgc8OjbyBhcGxpY8OhdmVpcyBhIHJvdGHDp8O1ZXMgb2Jsw61xdWFzLiBPIG3DqXRvZG8gZGUgcm90YcOnw6NvIG9ibMOtcXVhIMOpIG1haXMgZmxleMOtdmVsLCBwb2lzIG9zIGVpeG9zIGZhdG9yaWFpcyBuw6NvIHByZWNpc2FtIHNlciBvcnRvZ29uYWlzLiBBbMOpbSBkaXNzbywgw6kgbWFpcyByZWFsaXN0YSBwb3JxdWUgYXMgZGltZW5zw7VlcyBpbmVyZW50ZXMgcXVlIHPDo28gdGVvcmljYW1lbnRlIGltcG9ydGFudGVzIG7Do28gc8OjbyBzdXBvc3RhcyBzZW0gY29ycmVsYcOnw7VlcyBlbnRyZSBzaS4gQSBzb2x1w6fDo28gb2Jsw61xdWEgZm9ybmVjZSBpbmZvcm1hw6fDtWVzIHNvYnJlIG8gZ3JhdSBlbSBxdWUgb3MgZmF0b3JlcyByZWFsbWVudGUgZXN0w6NvIGNvcnJlbGFjaW9uYWRvcyB1bSBjb20gbyBvdXRyby4NCg0KDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyMgKipNw6l0b2RvcyBkZSBFc2NvbGhhIGRvIE7Dum1lcm8gZGUgRmF0b3JlcyoqIA0KDQoNCkEgZXNjb2xoYSBkbyBuw7ptZXJvIGRlIGZhdG9yZXMgw6kgdW1hIGRhcyB0YXJlZmFzIG1haXMgaW1wb3J0YW50ZSBkZSB1bWEgYW7DoWxpc2UgZmF0b3JpYWwuIFF1YW5kbyBvIHBlc3F1aXNhZG9yIG9wdGEgcG9yIHVtIG7Dum1lcm8gbXVpdG8gcmVkdXppZG8sIGVsZSBwb2RlIG7Do28gaWRlbnRpZmljYXIgZXN0cnV0dXJhcyBpbXBvcnRhbnRlcyBleGlzdGVudGVzIG5vcyBkYWRvcyBlLCBwb3Igb3V0cm8gbGFkbywgc2UgbyBuw7ptZXJvIMOpIGV4Y2Vzc2l2bywgZWxlIHBvZGUgdmlyIGEgdGVyIHByb2JsZW1hcyBkZSBpbnRlcnByZXRhw6fDo28gZG9zIGZhdG9yZXMuIEV4aXN0ZW0sIG5hIGxpdGVyYXR1cmEsIHbDoXJpb3MgY3JpdMOpcmlvcyBxdWUgYXV4aWxpYW0gbmEgZGV0ZXJtaW5hw6fDo28gZG8gbsO6bWVybyBkZSBmYXRvcmVzIHF1ZSwgaW52YXJpYXZlbG1lbnRlLCBxdWFuZG8gZW1wcmVnYWRvcyBlbSB1bSBtZXNtbyBjb25qdW50byBkZSBkYWRvcywgY29uZHV6ZW0gYSByZXN1bHRhZG9zIGRpZmVyZW50ZXMgKCoqSEFJUiwgMTk5OCoqKS4NCg0KDQpPcyBtw6l0b2RvcyBkZSBlc2NvbGhhLCBxdWUgc2UgcGFzc291IGEgZGVzY3JldmVyLCB0w6ptIGNhcsOhdGVyIGFwZW5hcyBpbmRpY2F0aXZvLCBuw6NvIGV4aXN0aW5kbyB1bWEgaGllcmFycXVpYSBlbnRyZSBlbGVzLiANCg0KDQotICAgKipUw6ljbmljYSBkZSBSYWl6IExhdGVudGUgKENyaXTDqXJpbyBkZSBLYWlzZXIpKiogOiBFc3RhIHTDqWNuaWNhIHBhcnRlIGRvIHByaW5jw61waW8gZGUgcXVlIHF1YWxxdWVyIGZhdG9yIGluZGl2aWR1YWwgZGV2ZSBleHBsaWNhciBhIHZhcmnDom5jaWEgZGUgcGVsbyBtZW5vcyB1bWEgdmFyacOhdmVsIHBhcmEgcXVlIHNlamEgbWFudGlkbyBwYXJhIGludGVycHJldGHDp8Ojby4gQ2FkYSB2YXJpw6F2ZWwgY29udHJpYnVpIGNvbSB1bSB2YWxvciAxIGRvIGF1dG92YWxvciB0b3RhbC4gQ29tIGVmZWl0bywgYXBlbmFzIG9zIGZhdG9yZXMgcXVlIHTDqm0gcmHDrXplcyBsYXRlbnRlcyBvdSBhdXRvdmFsb3JlcyBtYWlvcmVzIHF1ZSAxIHPDo28gY29uc2lkZXJhZG9zIHNpZ25pZmljYW50ZXMgZSBvcyBkZW1haXMgZmF0b3JlcyBjb20gYXV0b3ZhbG9yZXMgbWVub3JlcyBkbyBxdWUgMSBzw6NvIGNvbnNpZGVyYWRvcyBpbnNpZ25pZmljYW50ZXMgZSBkZXNjYXJ0YWRvcyAoS0FJU0VSLCAxOTU4KS4NCg0KLSAgICoqQ3JpdMOpcmlvIGRhIFwlIGRhIFZhcmnDom5jaWEgRXhwbGljYWRhKiogOiBPIG7Dum1lcm8gw6kgZGV0ZXJtaW5hZG8gZGUgbW9kbyBxdWUgbyBjb25qdW50byBkZSBmYXRvcmVzIGNvbXVucyBleHBsaXF1ZSB1bWEgcG9yY2VudGFnZW0gcHLDqS1kZWZpbmlkYSBkYSB2YXJpYWJpbGlkYWRlIGdsb2JhbCwgcG9yIGV4ZW1wbG8sIGRlc2VqYW1vcyBleHBsaWNhciBwZWxvIG1lbm9zIDcwJSBkYSB2YXJpYWJpbGlkYWRlIHRvdGFsIGRvcyBkYWRvcy4gDQoNCg0KLSAgICoqQ3JpdMOpcmlvIFNjcmVlIFRlc3QqKiA6IMOIIGNvbXVtIHF1ZSBhIGRpZmVyZW7Dp2EgZGUgZXhwbGljYcOnw6NvIGVudHJlIG9zIHByaW1laXJvcyBmYXRvcmVzIGRlIHVtYSBBRiBzZWphIGdyYW5kZSBlIHF1ZSB0ZW5kYSBhIGRpbWludWlyIGNvbSBvIGF1bWVudG8gbm8gbsO6bWVybyBkZSBmYXRvcmVzLiBQb3IgZXN0ZSBjcml0w6lyaW8sIG8gbsO6bWVybyDDs3RpbW8gZGUgZmF0b3JlcyDDqSBvYnRpZG8gcXVhbmRvIGEgdmFyaWHDp8OjbyBkYSBleHBsaWNhw6fDo28gZW50cmUgZmF0b3JlcyBjb25zZWN1dGl2b3MgcGFzc2EgYSBzZXIgcGVxdWVuYS4gQ29tIGlzc28sIGRlIGFjb3JkbyBjb20gYSBGaWd1cmEgNSwgcG9kZS1zZSB2ZXJpZmljYXIgbWVsaG9yIG8gQ3JpdMOpcmlvIFNjcmVlIFRlc3QganVudG8gY29tIG8gQ3JpdMOpcmlvIGRhIFJhaXogTGF0ZW50ZSBvdSBkZSBLYWlzZXIuDQoNCg0KLSAgICoqTcOpdG9kb3MgSW5mZXJlbmNpYWlzKiogOiBPdXRyb3MgbcOpdG9kb3MgZm9yYW0gZGVzZW52b2x2aWRvcyBwYXJhIG9zIGNhc29zIGVtIHF1ZSBhcyB2YXJpw6F2ZWlzIG9yaWdpbmFpcyBzZWd1ZW0gdW1hIGRpc3RyaWJ1acOnw6NvIG5vcm1hbC4gRXNzZXMgbcOpdG9kb3MgY29uc2lzdGVtIG5vIGRlc2Vudm9sdmltZW50byBkZSB0ZXN0ZXMgZXN0YXTDrXN0aWNvcyBxdWUgc2UgYWxpY2Vyw6dhbSBuYSBzdXBvc2nDp8OjbyBkZSBub3JtYWxpZGFkZSBlLCBkZXNzYSBmb3JtYSwgbsOjbyBzw6NvLCBlbSBwcmluY8OtcGlvLCBhZGVxdWFkb3Mgw6AgYW7DoWxpc2UgZGEgbWFpb3JpYSBkYXMgZXNjYWxhcyBwc2ljb2zDs2dpY2FzLiBBcGVzYXIgZGlzc28sIGVzc2VzIG3DqXRvZG9zIHBvZGVtIHNlciB1dGlsaXphZG9zIGNvbSB1bSBmaW0gcHVyYW1lbnRlIGluZGljYXRpdm8sIHNlbmRvIHF1ZSBhIHNpZ25pZmljw6JuY2lhIG9idGlkYSBuZXNzYXMgc2l0dWHDp8O1ZXMgbsOjbyBjb3JyZXNwb25kZSDDoCByZWFsaWRhZGUuIERlbnRyZSBlc3NlcyB0ZXN0ZXMgZGVzdGFjYW1vcyBvIGRlIEJhcnRsZXR0IChKb2huc29uIGUgV2ljaGVybiwgMTk5MikgcXVlIHZlcmlmaWNhIGEgYWRlcXVhYmlsaWRhZGUgZG8gbW9kZWxvIGRlIEFGIGVzdGltYWRvIChwZWxvIG3DqXRvZG8gZGEgbcOheGltYSB2ZXJvc3NpbWlsaGFuw6dhKSBwYXJhIHJlcHJlc2VudGFyIGEgZXN0cnV0dXJhIGRlIGRlcGVuZMOqbmNpYSBkb3MgZGFkb3MuDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyMgKipUYW1hbmhvIGRlIEFtb3N0cmEgcGFyYSBBcGxpY2HDp8OjbyBkYSBBRioqDQoNClVtYSBBRiBlbnZvbHZlIGEgZXN0aW1hw6fDo28gZGUgdW0gZ3JhbmRlIG7Dum1lcm8gZGUgcGFyw6JtZXRyb3MgZSwgcGFyYSBxdWUgaXNzbyBzZWphIGZlaXRvIGNvbSB1bSBtw61uaW1vIGRlIHF1YWxpZGFkZSwgw6kgbmVjZXNzw6FyaW8gdW0gdGFtYW5obyBhbW9zdHJhbCByZWxhdGl2YW1lbnRlIGdyYW5kZSBlbSBjb21wYXJhw6fDo28gYW8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzIGVudm9sdmlkYXMuIEjDoSwgbmEgbGl0ZXJhdHVyYSBlc3RhdMOtc3RpY2EsIHVtYSBzw6lyaWUgZGUgc3VnZXN0w7VlcyBwYXJhIGEgZXNjb2xoYSBkZXNzZSB0YW1hbmhvIGFtb3N0cmFsLiANCg0KRW0gZ2VyYWwsIGVzc2FzIG9ww6fDtWVzIGJhc2VpYW0tc2UgbmEgZXhwZXJpw6puY2lhIHBlc3NvYWwgZG9zIGRpdmVyc29zIGF1dG9yZXMgcXVlLCBlbSBhbGd1bnMgY2Fzb3MsIHN1Z2VyZW0gdW0gdGFtYW5obyBhbW9zdHJhbCBkYSBvcmRlbSBkZSAqKjIwIHZlemVzIG8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzKiogZW52b2x2aWRhcyAodmVyIEhhaXIgZXQgYWwuLCAxOTk1KS4gDQoNClJlaXMgKDE5OTcpIGUgSGFpciBldCBhbC4gKDE5OTUpIHN1Z2VyZW0gcXVlIG8gbsO6bWVybyBkZSBvYnNlcnZhw6fDtWVzIGRldmEgc2VyIGRlIG5vIG3DrW5pbW8gKio1IHZlemVzIG8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzKiosIGFsw6ltIGRpc3NvLCBpbmRpY2FtIHF1ZSBwcmVmZXJlbmNpYWxtZW50ZSBhIGFuw6FsaXNlIHNlamEgZmVpdGEgY29tIHBlbG8gbWVub3MgMTAwIG9ic2VydmHDp8O1ZXMuIEhhaXIgZXQgYWwuICgyMDA1KSBlbmZhdGl6YSBxdWUgZWxhIG7Do28gZGV2ZSBzZXIgdXRpbGl6YWRhIGVtIGFtb3N0cmFzIGluZmVyaW9yZXMgYSA1MCBvYnNlcnZhw6fDtWVzLg0KDQo6OjogcHJvZ3Jlc3MNCjo6OiB7LnByb2dyZXNzLWJhciBzdHlsZT0id2lkdGg6IDEwMCU7In0NCjo6Og0KOjo6DQoNCiMjICoqTcOpdG9kb3MgZGUgRXN0aW1hw6fDo28gZG9zIEVzY29yZXMgRmF0b3JpYWlzKioNCg0KDQpRdWFuZG8gbyBvYmpldGl2byBmaW5hbCBkYSBhbsOhbGlzZSBkZSBkYWRvcyDDqSBhIGRlc2NyacOnw6NvIGUgbyBlbnRlbmRpbWVudG8gZGEgZXN0cnV0dXJhIGRlIGNvcnJlbGHDp8OjbyBkYXMgdmFyacOhdmVpcywgbyBxdWUgdmltb3Mgc29icmUgYW7DoWxpc2UgZmF0b3JpYWwgcG9kZSBsZXZhciDDoHMgcmVzcG9zdGFzIGRlc2VqYWRhcy4gT3V0cmFzIHZlemVzLCBlbnRyZXRhbnRvLCBvcyBvYmpldGl2b3MgZGEgcGVzcXVpc2EgcG9kZW0gZW52b2x2ZXIgYW7DoWxpc2VzIHBvc3RlcmlvcmVzIGFwbGljYWRhcyBhb3MgZmF0b3JlcyBpZGVudGlmaWNhZG9zIGFvcyBkYWRvcy4gw4ggc3Vwb3N0byBxdWUgY2FkYSB2YXJpw6F2ZWwgbmEgYW1vc3RyYSB0ZW5oYSB1bSB2YWxvciBwYXJhIGNhZGEgdW0gZG9zIEZhdG9yZXMgQ29tdW5zLCBxdWUsIGNvbW8gasOhIGZvaSBkaXRvLCBuw6NvIHPDo28gZGlyZXRhbWVudGUgb2JzZXJ2w6F2ZWlzLiBFc3NlcyB2YWxvcmVzIHPDo28gb3MgY2hhbWFkb3MgKipFc2NvcmVzIEZhdG9yaWFpcyoqIHF1ZSBwb3N0ZXJpb3JtZW50ZSBwb2RlbSBzZXIgdXRpbGl6YWRvcyBlbSBvdXRyYXMgYW7DoWxpc2VzIGNvbmp1bnRhbWVudGUuIChCQVJST1NPOyBBUlRFUywgMjAwMykuDQoNCg0KRXhpc3RlbSBuYSBsaXRlcmF0dXJhIHbDoXJpb3MgbcOpdG9kb3MgZGUgZXN0aW1hw6fDo28gZG9zIGVzY29yZXMgZmF0b3JpYWlzIHBhcmEgY2FkYSBlbGVtZW50byBhbW9zdHJhbCwgdGFpcyBjb21vOiANCg0KLSAgICoqTcOpdG9kbyBkb3MgTcOtbmltb3MgUXVhZHJhZG9zIFBvbmRlcmFkb3MqKjsNCi0gICAqKk3DqXRvZG8gZGUgQmFydGxldHQqKjsNCi0gICAqKk3DqXRvZG8gZGUgQW5kZXJzb24gUnViaW4qKjsNCi0gICAqKk3DqXRvZG8gZGUgUmVncmVzc8OjbyoqLiANCg0KU2VuZG8gbyBNw6l0b2RvIGRlIFJlZ3Jlc3PDo28gdXNhZG8gcGFyYSBlc3RpbWFyIG9zIGVzY29yZXMgZG9zIGNvZWZpY2llbnRlcyBkb3MgZmF0b3Jlcy4gT3MgZXNjb3JlcyBnZXJhZG9zIHTDqm0gbcOpZGlhIDAgZSB2YXJpw6JuY2lhIGlndWFsIGFvIHF1YWRyYWRvIGRhIGNvcnJlbGHDp8OjbyBtw7psdGlwbGEgZW50cmUgb3MgZXNjb3JlcyBkb3MgZmF0b3JlcyBlc3RpbWFkb3MgZSBvcyB2YWxvcmVzIHZlcmRhZGVpcm9zIGRvcyBmYXRvcmVzLiBPcyBlc2NvcmVzIGRldmVtIHNlciBpZ3VhbGFkb3MgY29tIG9zIGZhdG9yZXMgb3J0b2dvbmFpcy4gDQoNCkVtIHJlbGHDp8OjbyBhbyBNw6l0b2RvIGRlIEJhcnRsZXR0IHVzYWRvIHRhbWLDqW0gcGFyYSBlc3RpbWHDp8OjbyBkb3MgZXNjb3JlcyBkb3MgY29lZmljaWVudGVzIGRvcyBmYXRvcmVzLiBPcyBlc2NvcmVzIHByb2R1emlkb3MgdMOqbSBtw6lkaWEgZGUgemVyby4gQSBzb21hIGRvcyBxdWFkcmFkb3MgZGUgdW0gZmF0b3Igw6kgZmVpdGEgc29icmUgYSBleHRlbnPDo28gZGFzIHZhcmnDoXZlaXMgbWluaW1pemFkYXMuIErDoSBvIE3DqXRvZG8gZGUgQW5kZXJzb24gUnViaW4gw6kgc2ltaWxhciBhbyBkZSBCYXJ0bGV0dCBhIGRpZmVyZW7Dp2EgZXN0w6EgZW0gZ2FyYW50aXIgYSBvcnRvZ29uYWxpZGFkZSBkb3MgZmF0b3JlcyBlc3RpbWFkb3MuIE9zIGVzY29yZXMgZ2VyYWRvcyB0w6ptIHVtYSBtw6lkaWEgZGUgMCwgZGVzdmlvIHBhZHLDo28gZGUgMSwwIGUgc8OjbyBuw6NvIGNvcnJlbGF0b3MuDQoNCg0KIyMjICoqUGFkcm9uaXphw6fDo28gZG9zIEVzY29yZXMgRmF0b3JpYWlzKioNCg0KQW8gcmVhbGl6YXIgYSBhbsOhbGlzZSBzb2JyZSB1bSBjb25qdW50byBkZSBkYWRvcyBjb20gdmFyacOhdmVpcyBjb20gdmFyacOibmNpYXMgZGUgbWFnbml0dWRlcyBkaWZlcmVudGVzIChwcm92ZW5pZW50ZXMgZGUgZGl2ZXJzb3Mgc2V0b3JlcyksIHBvZGVtb3MgZXN0YXIgaW50cm9kdXppbmRvIGRpZmljdWxkYWRlcyBuYSBleHBsaWNpdGHDp8OjbyBkZXNzYSBkZXBlbmTDqm5jaWEuIE5vcyBjYXNvcyBxdWUgZXhpc3RlIHVtYSBncmFuZGUgZGlmZXJlbsOnYSBlbnRyZSBhcyB2YXJpw6JuY2lhcyBkYXMgdmFyacOhdmVpcyBvcmlnaW5haXMsIHN1Z2VyZS1zZSBxdWUgYSBhbsOhbGlzZSBzZWphIHJlYWxpemFkYSBzb2JyZSBhcyB2YXJpw6F2ZWlzIHBhZHJvbml6YWRhcyAoSm9obnNvbiwgMTk5OCkuIA0KDQpQYXJhIGZhY2lsaXRhciBhIGNvbXBhcmFiaWxpZGFkZSBkb3Mgw61uZGljZXMgZGUgdW0gbXVuaWPDrXBpbyBub3MgZGl2ZXJzb3MgZ3J1cG9zIHRyYXNmb3Jtb3Utc2UgYSBiYXNlIGRvcyDDrW5kaWNlcywgb3Ugc2VqYSwgbyBlc2NvcmUgZmF0b3JpYWwgZm9pIHBhZHJvbml6YWRvIHBhcmEgc2Ugb2J0ZXIgdmFsb3JlcyBwb3NpdGl2b3MgZG9zIGVzY29yZXMgb3JpZ2luYWlzIGUgcGVybWl0aXIgYSBoaWVyYXJxdWl6YcOnw6NvIGRvcyBtdW5pY8OtcGlvcywgZGUgdGFsIGZvcm1hIHF1ZSBvcyB2YWxvcmVzIGRvIMOtbmRpY2UgZXN0aW1hZG8gZXN0ZWphbSBzaXR1YWRvcyBlbnRyZSB6ZXJvIGUgdW0gKFNhbnRhbmEsIDIwMDcpLiANCg0KQSBmw7NybXVsYSDDqSBhIHNlZ3VpbnRlOg0KDQokJCBFc2NvcmVfeyhGYXRvcmlhbClfeyhwYWQpfX0gPVxsZWZ0KFxmcmFje0Zfe2l9LUZfe21pbn19e0Zfe21heH0gLSBGX3ttaW5pfX1ccmlnaHQpICAgJCQNCkVtIHF1ZSAkRl97bWlufSQgIGUgICRGX3ttYXh9JCBzw6NvIG9zIHZhbG9yZXMgZGUgbcOtbmltbyBlIG3DoXhpbW8gb2JzZXJ2YWRvIHBhcmEgb3MgZXNjb3JlcyBmYXRvcmlhaXMgYXNzb2NpYWRvcyBhb3MgbXVuaWPDrXBpb3MuDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyMgKipWaWFiaWxpZGFkZSBkYSBBbsOhbGlzZSBkZSBGYXRvcmVzKioNCg0KQXByZXNlbnRhbS1zZSBhbGd1bWFzIG1lZGlkYXMgYWRpY2lvbmFpcyBwYXJhIGFmZXJpciBhIHZpYWJpbGlkYWRlIGRhIGFwbGljYcOnw6NvIGRlIHVtYSBhbsOhbGlzZSBmYXRvcmlhbCBhIHVtIGNvbmp1bnRvIGRlIGRhZG9zLiBBcyBwcmluY2lwYWlzIG1lZGlkYXMgYXBsaWNhZGFzIGZvcmFtOiBNYXRyaXogQW50aS1JbWFnZW0sIFRlc3RlIGRlIEVzZmVyaWNpZGFkZSBkZSBCYXJ0bGV0dCwgVGVzdGUgZGUgS2Fpc2VyLU1leWVyLU9sa2luIChLTU8pIGUgTWVhc3VyZSBvZiBTYW1wbGluZyBBZGVxdWFjeSAoTVNBKS4NCg0KDQojIyMgKipNYXRyaXogQW50aS1pbWFnZW0qKg0KDQpVbWEgZGFzIHByZW1pc3NhcyBkZSB1bWEgYW7DoWxpc2UgZmF0b3JpYWwgw6kgcXVlIGV4aXN0YSB1bWEgZXN0cnV0dXJhIGRlIGRlcGVuZMOqbmNpYSBjbGFyYSBlbnRyZSBhcyB2YXJpw6F2ZWlzIGVudm9sdmlkYXMuIE5vIG1vZGVsbyBlc3R1ZGFkbywgZXNzYSBlc3RydXR1cmEgw6kgZXhwcmVzc2EgYXRyYXbDqXMgZGEgbWF0cml6IGRlIGNvdmFyacOibmNpYSBvdSBkZSBjb3JyZWxhw6fDo28uIEEgZXhpc3TDqm5jaWEgZGUgdGFsIGVzdHJ1dHVyYSBpbXBsaWNhIHF1ZSB1bWEgdmFyacOhdmVsIHBvZGUsIGRlbnRybyBkZSBjZXJ0b3MgbGltaXRlcywgc2VyIHByZXZpc3RhIHBlbGFzIGRlbWFpcy4gUGFyYSB2ZXJpZmljYXIgZXNzZSBmYXRvLCBwb2RlLXNlIGNhbGN1bGFyIG9zIGNvZWZpY2llbnRlcyBkZSBjb3JyZWxhw6fDo28gcGFyY2lhbCBlbnRyZSBvcyBwYXJlcyBkZSB2YXJpw6F2ZWlzLCBlbGltaW5hZG8gbyBlZmVpdG8gZGFzIGRlbWFpcyB2YXJpw6F2ZWlzLiBFc3BlcmEtc2UgcXVlIG9zIHZhbG9yZXMgb2J0aWRvcyBzZWphbSBiYWl4b3MuIEEgbWF0cml6IGFudGktaW1hZ2VtIMOpIGNvbnN0cnXDrWRhIGNvbSBlc3NlcyBjb2VmaWNpZW50ZXMgY29tIHNpbmFpcyBpbnZlcnRpZG9zLCBtdWl0YXMgdmV6ZXMsIGNvbG9jYS1zZSBuYSBkaWFnb25hbCBwcmluY2lwYWwgZGVzc2EgbWF0cml6IG9zIGluZGljYWRvcmVzIE1BUyAoKipNZWFzdXJlIG9mIFNhbXBsaW5nIEFkZXF1YWN5KE1TQSkqKikgKEJBUlJPU08gOyBBUlRFUywgMjAwMykuDQoNCg0KIyMjICoqVGVzdGUgZGUgRXNmZXJpY2lkYWRlIGRlIEJhcnRsZXR0KioNCg0KRXNzZSB0ZXN0ZSBhdmFsaWEgYSBzaWduaWZpY8OibmNpYSBnZXJhbCBkYSBtYXRyaXogZGUgY29ycmVsYcOnw6NvLCBvdSBzZWphLCB0ZXN0YSBzZSB0b2RhcyBhcyB2YXJpw6F2ZWlzIG9yaXVuZGFzIGRlIGRpdmVyc29zIHNldG9yZXMgcG9zc3VlbSB1bWEgcG9zc8OtdmVsIHJlbGHDp8OjbyBlbSBjb211bSAoRGlsbG9uOyBHb2xkc3RlaW4sIDE5ODQ7IFJlaXMsIDIwMDEpLg0KDQoNCk8gdGVzdGUgZGUgQmFydGxldHQgdGVzdGEgYXMgc2VndWludGVzIGhpcMOzdGVzZXMgbnVsYXMNCg0KJCQNCkhfezB9OiBSID0gSSBcXA0KSF97MX06IFxsYW1iZGFfezF9ID0gXGxhbWJkYV97Mn0gPSBcbGRvdHMgPSBcbGFtYmRhX3twfQ0KJCQNCg0KRSBhIGVzdGF0w61zdGljYSBkbyB0ZXN0ZQ0KDQoNCiQkXGNoaV57Mn0gPSAtIFtuLTEtXGZyYWN7MX17Nn0oMnArNSldXHN1bV97aT0xfV57cH0gbG58UnwkJA0KDQoNCkVtIHF1ZSAkfFJ8JCDDqSBvIGRldGVybWluYW50ZSBkYSBtYXRyaXogZGUgY29ycmVsYcOnw6NvIGFtb3N0cmFsLCAkXGxhbWJkYSQgIMOpIGEgdmFyacOibmNpYSBleHBsaWNhZGEgcG9yIGNhZGEgZmF0b3IsIG4gw6kgbyBuw7ptZXJvIGRlIG9ic2VydmHDp8O1ZXMgZSBwIMOpIG8gbsO6bWVybyBkZSB2YXJpw6F2ZWlzLiANCg0KQSBlc3RhdMOtc3RpY2EgdGVtIHVtYSBkaXN0cmlidWnDp8OjbyBhc3NpbnTDs3RpY2EgZGUgJFxjaGleezJ9JCBjb20gKDAsNXAocC0xKSkgZ3JhdXMgZGUgbGliZXJkYWRlLg0KDQoNCiMjIyAqKlRlc3RlIGRlIEthaXNlci1NZXllci1PbGtpbiAoS01PKSoqDQoNCkVzdGUgdGVzdGUgw6kgdXNhZG8gcGFyYSBjb21wYXJhIGFzIGNvcnJlbGHDp8O1ZXMgcGFyY2lhaXMgZW50cmUgb3MgcGFyZXMgZGUgdmFyacOhdmVpcyBzZW0gbyBlZmVpdG8gZGFzIGRlbWFpcywgb3Ugc2VqYSwgdGVzdGEgc2UgZHVhcyBhIGR1YXMgdmFyacOhdmVpcyBwb3NzdWVtIGFsZ3VtIHRpcG8gZGUgcmVsYcOnw6NvIGVudHJlIHNpIChEaWxsb247IEdvbGRzdGVpbiwgMTk4NDsgS2Fpc2VyLCAxOTcwOyBSZWlzLCAyMDAxKS4NCg0KDQokJCBLTU8gPSBcbGVmdChcZnJhY3tcc3VtX3tpfVxzdW1fe2p9cl97aWp9XnsyfX17XHN1bV97aX1cc3VtX3tqfXJfe2lqfV57Mn0rXHN1bV97aX0gXHN1bV97an1hX3tpan1eezJ9fVxyaWdodCkgJCQNCkVtIHF1ZSAkcl97aWp9JCDDqSBvIGNvZWZpY2llbnRlIGRlIGNvcnJlbGHDp8OjbyBvYnNlcnZhZG8gZW50cmUgYXMgdmFyacOhdmVpcyBpIGUgaiBlICRhX3tpan0kIMOpIG8gY29lZmljaWVudGUgZGUgY29ycmVsYcOnw6NvIHBhcmNpYWwgZW50cmUgYXMgbWVzbWFzIHZhcmnDoXZlaXMgcXVlIMOpLCBzaW11bHRhbmVhbWVudGUsIHVtYSBlc3RpbWF0aXZhIGRhcyBjb3JyZWxhw6fDtWVzIGVudHJlIG9zIGZhdG9yZXMsIGVsaW1pbmFkbyBvIGVmZWl0byBkYXMgZGVtYWlzIHZhcmnDoXZlaXMuIE9zICRhX3tpan0kIGRldmVyw6NvIGFzc3VtaXIgdmFsb3JlcyBwcsOzeGltb3MgZGUgemVybywgdW1hIHZleiBxdWUgc2UgcHJlc3N1cMO1ZSBxdWUgb3MgZmF0b3JlcyBzw6NvIG9ydG9nb25haXMgZW50cmUgc2kuDQoNCkNvbmZvcm1lLCAoS2Fpc2VyOyBSaWNlLCAxOTc0KSwgb3MgdmFsb3JlcyBkbyB0ZXN0ZSBzw6NvIGNsYXNzaWZpY2Fkb3MgZGEgc2VndWludGUgZm9ybWE6DQoNCg0KDQoqKlRhYmVsYSAxKiouIENsYXNzaWZpY2HDp8OjbyBHZXJhbCBkbyBUZXN0ZSBkZSBhZGVxdWFiaWxpZGFkZSBLTU8gc2VndW5kbyAoS2Fpc2VyOyBSaWNlLCAxOTc0KS4NCg0KfCAqKktNTyoqICAgICB8ICoqQ2xhc3NpZmljYcOnw6NvKiogfA0KfCA6LS0tLS0tLTogICB8ICAgIDotLS0tLS0tLS06ICAgIHwgDQp8IDAuOTAgLSAxLjAwIHwgICAgRXhjZWxlbnRlICAgICAgfCAgICANCnwgMC44MCDigJMgMC45MCB8ICAgIMOTdGltbyAgICAgICAgICB8ICAgDQp8IDAuNzAg4oCTIDAuODAgfCAgICBCb20gICAgICAgICAgICB8ICANCnwgMC42MCDigJMgMC43MCB8ICAgIFJlZ3VsYXIgICAgICAgIHwgICAgDQp8IDAuNTAg4oCTIDAuNjAgfCAgICBSdWltICAgICAgICAgICB8ICAgIA0KfCAwLjAwIOKAkyAwLjUwIHwgICAgSW5hZGVxdWFkbyAgICAgfA0KDQoNCiMjIyAqKk1lYXN1cmUgb2YgU2FtcGxpbmcgQWRlcXVhY3koTVNBKSoqDQoNCkVzc2EgbWVkaWRhIMOpIGJhc3RhbnRlIHNpbWlsYXIgYW8gS01PLiBOb3ZhbWVudGUsIGRlc2VqYS1zZSB2ZXJpZmljYXIgYSBwb3NzaWJpbGlkYWRlIGRlIGV4aXN0aXIgdW1hIGVzdHJ1dHVyYSBmYXRvcmlhbCBub3MgZGFkb3MuIE5hIHZlcmRhZGUsIGEsIE1TQSBkZXZlIHNlciBjYWxjdWxhZGEgc2VwYXJhZGFtZW50ZSBwYXJhIGNhZGEgdmFyacOhdmVsLiBPIG9iamV0aXZvIMOpIHZlcmlmaWNhciBzZSB1bWEgZGFkYSB2YXJpw6F2ZWwgcG9kZSBzZXIgZXhwbGljYWRhIHBlbGFzIGRlbWFpcyAobyBxdWUgw6kgZXNwZXJhZG8gbnVtIG1vZGVsbyBmYXRvcmlhbCkuIFZhbG9yZXMgYmFpeG9zIGRlIE1TQWkgc8OjbyBpbmTDrWNpb3MgZGUgcXVlIGEgcmVzcGVjdGl2YSB2YXJpw6F2ZWwgcG9kZSBzZXIgcmV0aXJhZGEgZGEgYW7DoWxpc2Ugc2VtIG1haW9yZXMgcHJlanXDrXpvcyAoQkFSUk9TTzsgQVJURVMsIDIwMDMpLg0KDQokJCBNU0Ffe2l9ID0gXGxlZnQoXGZyYWN7XHN1bV97aj0xfV57cH1yX3tpan1eezJ9fXtcc3VtX3tqPTF9XntwfXJfe2lqfV57Mn0gKyBcc3VtX3tqPTF9XntwfWFfe2lqfV57Mn19IFxyaWdodCkgICQkDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg0KIyAqKlJlZmVyw6puY2lhcyBCaWJsaW9ncsOhZmljYXMqKg0KDQoNCkFOREVSU09OLCBULiBXLiBBbiBJbnRyb2R1Y3Rpb24gTXVsdGl2YXJpYXRlIEFuYWx5c2lzLiBOZXcgWW9yazogSm9obiBXaWxleSwgMjAwMy4NCg0KQkFSUk9TTywgTC5QLjsgQVJURVMsIFIuIEFuw6FsaXNlIE11bHRpdmFyaWFkYS4gU8OjbyBQYXVsbzogSU1FLVVTUCwgMjAwMy4NCg0KRElMT04sIFcuUi47IEdPTERTVEVJTiwgTS4gTXVsdGl2YXJpYXRlIEFuYWx5c2lzOiBtZXRob2RzIGFuZCBhcHBsaWNhdGlvbnMuIE5ldyBZb3JrOiBKb2huIFdpbGV5ICYgU29uLCAxOTg0Lg0KDQpEUkFQRVIsIE4uUi47IFNNSVRILCBILiBBcHBsaWVkIFJlZ3Jlc3Npb24gQW5hbHlzaXMuIE5ldyBZb3JrOiBKb2huIFdpbGV5ICYgU29ucywgMTk4MS4NCg0KRUxJQU4sIFNpbHZhLiBOLiBBbsOhbGlzZSBkZSBSZWdyZXNzw6NvLiBTw6NvIFBhdWxvOiBJTUUsIDE5OTguDQoNCkdSRUVORSwgVy4gSC4gRWNvbm9tZXRyaWMgQW5hbHlzaXMuIDMuwqogRWQuIFByZW50aWNlIEhhbGwuIE5ldyBKZXJzZXksIDE5OTcuDQoNCkdPUlNVQ0gsIFIuIEwuIEZhY3RvciBBbmFseXNpcy4gTmV3IEplcnNleTogTGF3cmVuY2UgRXJsYmF1bSwgMTk4My4NCg0KR1VKQVJBVEksIERhbG1vZGFyLiBOLiBFY29ub21ldHJpYSBCw6FzaWNhLiBTw6NvIFBhdWxvOiBNYWtyb24gQm9vaywgMjAwMC4NCg0KSEFJUiBKUiwgSi5GLiwgQU5ERVJTT04sIFIuRS4sIFRBVEhBTSwgUi5MLiwgQkxBQ0ssIFcuQy4gQW7DoWxpc2UgTXVsdGl2YXJpYWRhIGRlIERhZG9zLiA1LiBlZC4gUG9ydG8gQWxlZ3JlOiBCb29rbWFuLCAyMDA1Lg0KDQpIQUlSIEpSLCBKLkYuLCBBTkRFUlNPTiwgUi5FLiwgVEFUSEFNLCBSLkwuLCBCTEFDSywgVy5DLiBNdWx0aXZhcmlhdGUgRGF0YSBBbmFseXNpcy4gTmV3IFlvcms6IFByZW50aWNlIEhhbGwsIDE5OTguDQoNCkpPSE5TT04sIFIuIEEuOyBXSUNIRVJOLCBELiBXLiBBcHBsaWVkIE11bHRpdmFyaWF0ZSBTdGF0aXN0aWNhbCBBbmFseXNpcy4gNC4gZWQuIE5vdmEgSmVyc2V5OiBQcmVudGljZSBIYWxsLCAxOTk4Lg0KDQpLQUlTRVIsIEguIEYuIFRoZSBWYXJpbWF4IENyaXRlaW9uIGZvciBBbmFsYXl0aWMgUm90YXRpb24gaW4gRmFjdG9yIEFuYXlzaXMuIFBzeWNob21ldHJpa2EsIDE5NTguDQoNCktBSVNFUiwgSC4gRi47IFJJQ0UsIEouIExpdHRsZSBKaWZmeSwgbWFyayBJVi4gRWR1Y2F0aW9uIGFuZCBQc3ljaG9sb2dpY2FsIE1lYXN1cmVtZW50LCAxOTc0Lg0KDQpORVRFUiwgSi47IFdBU1NFUk1BTiwgVy4gQXBwbGllZCBsaW5lYXIgc3RhdGlzdGljYWwgbW9kZWxzLiBJbGxpbm9pczogUmljaGFyZCBELiBJcndpbiwgMTk3NC4NCg0KUkVJUywgRS4gRXN0YXTDrXN0aWNhIE11bHRpdmFyaWFkYSBBcGxpY2FkYS4gMi4gZWQuIExpc2JvYTogU2lsYWJvLCAyMDAxLg0KDQpSRU5DSEVSLCBBLiBNZXRob2RzIG9mIE11bHRpdmFyaWF0ZSBBbmFseXNpcy4gMiBlZC4gTmV3IFlvcms6IEpvaG4gV2lsZXkgJiBTb24sIDIwMDIuDQoNClJPWVNUT04sIEouIEIuIFNvbWUgdGVjaG5pcXVlcyBmb3IgYXNzZXNzaW5nIG11bHRpdmFyaWF0ZSBiYXNlZCBvbiB0aGUgU2hhcGlyby1XaWxrIFcuIEFwcGxpZWQgU3RhdGlzdGljcywgTG9uZG9uLCB2LiAzMiwgbi4gMiwgcC4gMTIxLTEzMywgMTk4My4NCg0KU0FOVE9TLCBBLiBDLjsgRkVSUkVJUkEsIEQuIEYuIERlZmluacOnw6NvIGRvIHRhbWFuaG8gYW1vc3RyYWwgdXNhbmRvIHNpbXVsYcOnw6NvIE1vbnRlIENhcmxvIHBhcmEgbyB0ZXN0ZSBkZSBub3JtYWxpZGFkZSBiYXNlYWRvIGVtIGFzc2ltZXRyaWEgZSBjdXJ0b3NlOiBJSS4gQWJvcmRhZ2VtIG11bHRpdmFyaWFkYS4gQ2nDqm5jaWEgZSBBZ3JvdGVjbmxvZ2lhLCBMYXZyYXMsIHYuIDI0LCBuLiAxLCBwLiA2Mi02OSwgMjAwMy4NCg0KTUFIQUxBTk9CSVMsIFAuIEMuIE9uIHRoZSBHZW5lcmFsaXplZCBEaXN0YW5jZSBpbiBTdGF0aXN0aWNzLiBQcm9jZWVkaW5ncyBvZiB0aGUgTmF0aW9uYWwgSW5zdGl0dXRlIG9mIFNjaWVuY2Ugb2YgSW5kaWEsIDE5MzYuDQoNCk1BTEhPVFJBLCBOLiBLLiBNYXJrZXRpbmcgUmVzZWFyY2g6IEFuIEFwcGxpZWQgT3JpZW50YXRpb24uIE5ldyBKZXJzZXk6IFByZW50aWNlIEhhbGwsIDIwMDEuDQoNCk1JTkdPVEksIFMuQS4gQW7DoWxpc2UgZGUgRGFkb3MgQXRyYXbDqXMgZGUgTcOpdG9kb3MgZGUgRXN0YXTDrXN0aWNhIE11bHRpdmFyaWFkYTogVW1hIEFib3JkYWdlbSBBcGxpY2FkYS4gQmVsbyBIb3Jpem9udGU6IFVGTUcsIDIwMDUuIA0KDQoNCg0KDQoNCjo6OiBwcm9ncmVzcw0KOjo6IHsucHJvZ3Jlc3MtYmFyIHN0eWxlPSJ3aWR0aDogMTAwJTsifQ0KOjo6DQo6OjoNCg==