1 Prefácio


Este relatório foi planejado para gerar informações e contribuir para um melhor planejamento das Unidades Educacionais(centros DE Ensino Superior, faculdades e universidades), visando à melhoria de desempenho dos estudantes nas edições futuras do ENADE. Os conteúdos e resultados são oriundos dos documentos oficiais constantes nos microdados divulgados pelo Inep, que podem ser baixados do endereço (INEP, 2018).


No presente estudo, busca-se, modelar a probabilidade de acertos das questões (itens) que compõem a prova, considerando-se a proficiência do estudante a partir da dificuldade e capacidade de discriminação dos itens e da probabilidade de acerto casual. Por permitir uma avaliação do conhecimento efetivamente dominado pelo estudante em cada item, esta iniciativa possibilita intervenções e ações pontuais de correção no processo de ensino-aprendizagem, de modo a identificar lacunas que compreendam possíveis deficiências de aprendizagem.


Espera-se, portanto, contribuir com a área de educação em diversos cursos com a busca de instrumentos alternativos para aferição da situação atual do ensino superior no Pará, consubstanciada na avaliação do desempenho acadêmico dos estudantes (proficiência), de modo a avaliar, detalhadamente, a situação encontrada em cada tipo de conhecimento que integra os componentes dos cursos em análise.

2 Exame Nacional de Desempenho dos Estudantes (ENADE)

2.1 O Que é o ENADE?


O Exame Nacional de Desempenho dos Estudantes (ENADE) é um dos pilares da avaliação do sistema Nacional de Avaliação da Educação Superior (SINAES), criado pela Lei n°10.861, de 14 de abril 2004. Além do ENADE, os processos de avaliação de Cursos de graduação e de Avaliação Institucional constituem o tripé avaliativo do SINAES, os resultado desses instrumentos avaliativos, reunidos, permitem conhecer, em profundidade, o modo de funcionamento e a qualidade dos cursos e instituições de Educação Superior(IES) de todo o Brasil.

  • O ENADE é uma prova aplicada anualmente aos alunos (ingressantes e concluintes) de cursos de graduação, em areas definidas pelo Ministério da Educação(MEC) e é realizado pelo INEP.

  • O objetivo do ENADE e avaliar o desempenho dos estudantes com relação aos conteúdos programáticos das diretrizes curriculares dos curso de graduação e o desenvolvimento de competências e habilidades necessárias à formação geral e profissional.

  • A prova do ENADE/2018 de acordo com o art. 6° da Portaria Inep n°444, com duração de 4 horas, apresentou um componente de avaliação na Formação Geral(FG), comum aos cursos de todas as áreas e um Componente Específico(CE) de acada área.

  • A parte referente ao CE contribui com 75% da nora final, equanto a parcela, referente a FG, contribui com 25%, em consonância com o número de questões da prova, 30 e 10, respectivamente. Os conceitos utilizados no ENADE variam de 1 a 5, e, à medida que esse valor aumenta, melhor terá sido o desempenho no exame.

2.2 Componentes do ENADE

  • A nota final do estudante é obtida pela média ponderada das notas em cada componentes.

2.2.1 Formação Geral(FG)

  • 8 (oito) questões objetivas com peso idêntico, perfazendo 100%. Assim, a nota bruta das questões objetivas de FG é a proporção de acertos dessas questões.

  • 2 (duas) questões discursivas, cuja correção leva em consideração o conteúdo, com peso de 80%, e aspectos referentes à Lingua Portuguesa com peso de 20% distribuídos sa seguinte maneira: Aspectos Ortográficos (30%), Aspectos Textuais (20%), Aspectos Morfossintáticos e Vocabulares (50%). A nota das questões discursivas de Formação geral é a média simples das notas das duas questões discursivas.

2.2.2 Conhecimento Específico(CE)

  • 27 (vinte e sete) questões objetivas, com peso idêntico. Assim, a nota das questões de conhecimento específico é a proporção de acertos destas questões.
  • 3 (três) questões discursivas nas quais 100% da nota referem-se ao conteúdo. A nota das questões discursivas de conhecimento específico é a média simples das notas dessas 3 questões.

As notas dos dois componentes, de Formação Geral e de Conhecimento Específico, são então arredondadas à primeira casa decimal. Para a obtenção da nota final do estudante, as notas dos dois componentes foram ponderadas por pesos proporcionais ao número de questões: 25% para FG e 75% para CE. esta nota foi também arredondada a uma casa decimal.

3 TRI em Avaliação Educacional

3.1 Referencial Teórico

No brasil, alguns trabalhos abordaram a Teoria da Resposta ao Item (TRI) para avaliação da proficiência com microdados do ENADE.

  • Francisco(2005), realizou um estudo de caso por meio da aplicação da TRI, com a finalidade de verificar o desempenho dos alunos formandos do curso de Matemática da Universidade Estadual do Centro-Oeste (UNICENTRO), em Guarapuava-PR, no período de 2000 até 2003, no Exame Nacional de Cursos (ENC);1

  • Oliveira(2006), utilizou a TRI para proceder a uma anÁlise das propriedades psicométricas da prova do ENADE de 2004, aplicada aos alunos dos cursos de medicina;2

  • Nogueira (2008), aplicou a TRI para avaliar as questões da prova de formação geral (FG) do ENADE, em especial aquelas que envolvem conceitos estatísticos, visando estimar a proficiência dos estudantes nos conteúdos avaliados e o ajuste dos itens ao modelo de Rasch;3

  • Primi et al.(2010), aplicaram a TRI aos dados do ENADE de psicologia de 2006, para determinar os pontos de corte, formamando grupos de competências requeridas para a resolução de itens;4

  • Coelho et al.(2014), utilizaram três conjuntos de dados, dentre eles respostas do curso de estatística do ENADE de 2009 via TRI;5

  • Scher et al.(2014), analisaram a prova do ENADE de 2009 do curso de Administração por meio da TRI;6

  • Lopes e Vendramini (2015), avaliaram as propriedades psicométricas da prova de Pedagogia do ENADE, aplicada em 2005, com o modelo de Rasch da TRI;7

  • Camargo et al.(2016), mensuraram a proficiência dos estudantes do curso de Ciências Contábeis no ENADE utilizando TRI;8

  • Spenassato e Tezza (2019), apresentaram as vantagens da utilização da TRI, em conjunto com a análise das questões objetivas do ENADE 2014 para o curso de Engenharia da Computação, comparando a dificuldade com os índices de facilidade dos itens divulgado no relatório da área pelo INEP(2016).9

3.2 Escala e Interpretação da TRI

  • A especificação das habilidades na matriz de cada área possibilita realizar interpretações mais precisas sobre o desempenho dos avaliados. Para isso, é fundamental explicitar qual a magnitude e/ou escalados resultados, escolhendo alguns intervalos de proficiência para identificar as habilidades cognitivas absorvidas pelos candidatos naquele intervalo.

  • O termo “item”, em substituição ao “questão”, é o padrão em avaliações e estudos educacionais. Especificamente, um item deve ser preparado para avaliar uma única habilidade(em outras situações, denominada de tópico ou descritor).Portanto, os itens estão intrinsecamente ligados à matriz de referência do exame.

  • Assim como nas principais avaliações do Brasil e exterior, os resultados de desempenho dos avaliados no ENADE são obtidos apartir da utilização da Teoria da Resposta ao Item (TRI).

  • Essa teoria surgiu da necessidade de superar as limitações presentes na apresentação de resultados somente através de percentuais de acertos e médias desses percentuais, medidas adotadas na denominada Teoria Clássica dos Testes(TCT).

  • O foco na TRI passa a ser os itens,e não simplesmente o número ou percentual de acertos.Cada item do ENADE, além de medir uma única habilidade, deve ter características estatísticas boas, deforma que possam realmente mensurar melhor as proficiências dos examinados.

  • Também é importante explicitar que as respostas aos itens são dicotomizadas(certo/errado) para aplicação da TRI no ENAD, de forma que não faz diferença qual alternativa incorreta o candidato marque,o resultado será sempre o mesmo.

3.3 O Que é a TRI?

  • É uma metodologia estatística que modela a probabilidade(um valor entre zero e um) de um particular indivíduo responder corretamente a um determinado item, através de uma função em forma de “S”(denominada de função Logística).

  • Cada item tem suas próprias características, que denominaremos parâmetros; cada indivíduo tem um certo “valor” de proficiência na área avaliada,que será a sua nota TRI.

  • Assume-se basicamente que, quanto maior a proficiência, maior a probabilidade de acerto do item.

3.4 Modelo Estatístico da TRI

  • Neste estudo, é utilizado um modelo logístico unidimensional de 3 parâmetros (3pl), representado pelo traço latente Conhecimento em Curso de Graduação, considera-s euma única população, isto é, os alunos de graduação que realizará, a prova do ENADE/2018.

\[ P(Y_{ij}=1|\theta_{j}, \varsigma_{i})= c_{i}+(1-c_{i})\frac{1}{1+e^{-Da_{i}}(\theta_{j}-b_{i})}\] Com \(i=1,2,...,n\) onde:

  • \(Y_{ij}\): variável dicotômica que assume os valore 1(um), quando o indivíduo \(j\), no estudo em questão, responde corretamente o item, ou assume 0 (zero) caso contrário.

  • \(\theta_{j}\): representa o traço latente (parâmetro de habilidade) do j-ésimo aluno pesquisado;

  • Parâmetro de Discriminação(\(a_{1}\)): mede a capacidade que cada item possui para diferenciar aqueles participantes que sabem o conteúdo do item daqueles participantes que não o dominam, e está associado à inclinação da curva.

  • Parâmetro de Dificuldade(\(b_{i}\)): mede a dificuldade associada ao conteúdo do item, e quanto maior seu valor, mais difícil será o conteúdo do item. Ele é expresso na mesma escala da proficiência(habilidade). E muma prova de qualidade devemos ter itens de diferentes níveis de dificuldade para avaliar adequadamente os participantes em todos os níveis de conhecimento. Para valores de proficiência dos alunos apartir do valor de “\(b_{i}\)” do item, a probabilidade de acertar o item é maior do que a probabilidade de errar;

  • Parâmetro de Acerto Casual(\(c_{i}\)): em provas de múltipla escolha, um participante que não domina o conteúdo de um determinado item da prova pode responder corretamente a esse item por acerto casual. Com isso,esse parâmetro representa a probabilidade de um participante de baixa proficiência acertar o item de forma casual.

  • (\(D_{i}\)): é um faor de escala. igual a 1 se os parâmetros dos itens estimados na métrica da logística, igual a 1,7 se os paraâmetros dos itens são estimados na métrica da ogiva normal.

3.5 Etapas de Análise dos Dados

  • Obtenção da base pública (microdados) do ENADE/2018 no sítio do INEP;
  • Seleção dos Atributos (colunas);
  • Verificação dos dados, a fim de identificar dados nulos ou inválidos;
  • Remoção dos dados nulos ou considerados inválidos;
  • Análise dos dados, incluindo as estatísticas;
  • Geração de Gráficos e Mapas;

4 Desempenho do Curso de Direito

4.1 Objetivo Geral

Mensurar o Desempenho (proficiência) dos Estudantes do curso de DIREITO no ENADE por meio da Teoria da Resposta ao Item (TRI), indicando perspectivas de uso dos resultados para o aprimoramento do Projeto Político Pedagógico do CESUPA.

4.2 Objetivos Específicos

  • Identificar qual o conhecimento especificamente em Direito, dominado pelos alunos;
  • Comparar a dificuldade da prova em relação ao conhecimento (proficiência) do grupo de estudantes;
  • Comprar os Resultados do ENADE/2018 do curso de Direito CESUPA versus Brasil;
  • Discutir as contribuições da Avaliação em Larga Escala para o processo de formação dos estudantes dos cursos de graduação do CESUPA.

4.3 Participantes

A população do estudo é constituída pelos alunos concluintes do curso de graduação em Direito do CESUPA no Pará. Foram inscritos para aprova do ENADE/2018 um total de 250 estudantes, sendo a prova resolvida por 245 estudantes concluintes.

4.4 Instrumento Avaliativo

  • Para o estudo foram consideradas, exclusivamente, as questões objetivas, ou seja 35(trinta e cinco) questões, (oito de formação geral e vinte e sete de conhecimento específico).

  • Os microdados coletados forma dicotomizados, ou seja, como as resposta dos microdados disponibilizados pelo INEP são apresentados na forma de alternativas A, B, C, D ou E, estas foram comparadas ao gabarito. Assim, as respostas corretas receberam o valor 1(um) e as respostas erradas foram sisbustituídas por 0(zero).

4.5 Recursos Computacionais

Para mensuração do desempenho (proficiência) dos estudantes no ENADE foi implementada um script no software R-Project versão 4.0 e um ambiente de desenvolvimento integrado chamado Rstudio versão 1.1.5 com uso dos pacotes:

4.5.1 Carregando os Pacotes

4.5.1.1 Pacotes para TRI

Para Mensuração do Desempenho (proficiência via TRI) dos estudantes de Direito matriculados no CESUPA que fizeram a prova do ENADE EM 2018, foi necessário os seguintes pacotes.

library(mirt)    # Multidimensional Item Response Theory 
library(ltm)     # Latent Trait Models under IRT
library(irtoys)  # A Collection of Functions Related to Item Response Theory (IRT)
library(psych)   # Procedures for Psychological, Psychometric, and Personality Research

Para o desenvolvimento de um ambiente de viasualização dos resultados, foi utilizado os recursos do pacote RMarkdown com alguns recuros extras.

4.5.1.2 Pacotes para RMarkdown

library(dplyr)       # A Grammar of Data Manipulation 
library(DT)          # A Wrapper of the JavaScript Library 'DataTables' 
library(rstatix)     # Pipe-Friendly Framework for Basic Statistical Tests 
library(tinytex)     # Fazer Fórmulas via Latex  
library(knitr)       # A General-Purpose Package for Dynamic Report 
library(kableExtra)  # Construct Complex Table with 'kable' and Pipe Syntax 
library(formattable) # Create 'Formattable' Data Structures 
library(htmltools)   # Tools for HTML 
library(rmarkdown)   # Dynamic Documents for R
library(distill)     # RMarkdown Format for Scientific and Technical Writing 

4.5.1.3 Pacotes para Viasualização Gráfica

Para a visualização gráfica dos microdados sobre o Enade 2018, serão utilizados vários pacotes combinados.

library(ggplot2)    
library(plotly) 
library(ggpubr) 
library(gridExtra)
library(ggthemes)

4.6 Visualização Gráfica Nacional

  • A distribuição das notas dos alunos matriculados nos cursos de Direito em 2018, referentes aos microdados do Enade para todas as unidades de federação no Brasil, estão disstribuídos por Raça e Região.

4.6.1 Análise das Notas dos Alunos por Raças

4.7 Calibração dos Itens

  • A estimação dos parâmetros dos modelos baseados na Teoria da Resposta ao Item foi realizada pelo Método de Máxima Verossimilhança Marginal, com a aplicação conjunta de um processo interativo chamado de algoritmo Newton-Raphson ou Scoring de Fisher, conforme ANDRADE et al. 2000.

  • Para a comparações entre os modelos gerados utilizou-se o Teste da Razão de Verossimilhança por meio da Anova e os critérios AIC (Akaike Information Criterion) e BIC (Bayesian Information Criterion), além de serem produzidos os gráficos com as Curvas Características do Item, Curvas de Informação do Item e Função de Informação Total do Teste.

4.8 Aplicação: Enade 2018 no CESUPA

4.8.1 Análise dos Itens via TCT

  • Em avaliação educacional, TCT tem como elemento central a prova como um todo e seus resultados são expressos em escores bruto, ou seja, no número total ou no percentual de itens respondidos corretamente. As propriedades psicométricas dos itens de uma prova realacionam-se aos parâmetros a segui: índice de dificuldade, índice de discriminação e corelação biserrial BOTGATTO e ANDRADE, 2012

  • A análise do funcionamento de cada questão(item) em relação ao grupo de alunos respondentes, possibilitam:

    • Medir a qualidade e o funcionamento do item;
    • Verificar problemas teóricos-técnicos da avaliação/questões;
    • Traçar um perfil do aprendizado do grupo
    • Verificar o nível de dificuldade da questão em relação aqueles grupos
  • Apresenta-se alguns resultados importantes para a compreenção da posterior análise da prova do ENADE/2018 para o curso de graduação em Direito do CESUPA, de acordo com a tabela abaixo.

Tabela 01. Percentual de Resposta por Tipo de Alternativa na Prova do ENADE/2018 do curso de Direito.


Itens/Gabarito A B C D E
01-C 1.3 7.7 81.2 9.0 0.9
02-A 81.68 12.7 1.6 3.3 0.8
03-C 8.6 1.2 77.6 4.9 7.8
04-B 5.3 68.6 12.7 6.5 6.9
05-E
35-E

Tabela 02. Percentual de acertos por Tipo de Alternativa na Prova do ENADE/2018 do curso de Direito.


Itens Erros (\(n_{1}\)) Acertos (\(n_{2}\))
Q01 22.4 55 77,6 190
Q02 18,4 45 81,6 200
Q03 22,4 55 77,6 190
Q04 31,4 77 68,6 168
Q05 34,3 84 65,7 161
Q32 78,8 193 21,2 52
Q33 47,8 117 52,2 128
Q34 77,6 190 22,4 55
Q35 65,3 160 34,7 85

  • Nos resultados obtidos pelos respondentes (tabela 03), observa-se notas variando entre 9 a 27 acertos, de um total de 35 itens. Destaca-se que não ocorreu escore nulo (nenhum acerto), como também não existiram respondente que obtiveram escore total. A maioria acertou entre 16 e 21 questões.

Tabela 03. Descrição dos Escores Brutos para os itens na Prova do ENADE/2018 do curso de Direito.


Estatística Formação Geral Componente Específico Nota Bruta
Nº de Itens 8 27 35
Média 6.1 12.3 18.4
Moda 7 12 16
Mínimo 1(12.8%) 4(14.8%) 9(27.5%)
Máximo 8(100%) 19(70.4%) 27(77.1%)
1º Quartil 5(62.5%) 10(37%) 16(45.7%)
2º Quartil 7(87.5%) 14(51.9%) 21(60%)

  • As questõs aplicadas na prova do ENADE são avaliadas inicialmente quanto ao nível de facilidade. Para isso, verifica-se o percentual de acertos de cada questão da prova. A tabela 04 apresenta as classificações de questões segundo o percentual de acertos, considerando como Ìndide de Facilidade.

Tabela 04. Distribuição dos itens por Ìndice de Facilidade na Prova do ENADE/2018 do curso de Direito.


Classificação Indice de Facilidade Nº do Itens Nº de Amostra
Muito Fácil 0.91 ou mais 9 1 (2.9%)
Fácil 0.71 a 0.90 1,2,3,6,7,8,12,13,25 9 (25.7%)
Moderado 0.31 a 0.70 4,5,10,14,15,16,17,20,21,24,27,30,31,33,35 15 (42.9%)
Difícil 0.11 a 0.30 11,18,19,23,26,28,29,32,34 9(27.5%)
Muito Difícil 0.00 a 0.10 22 1(2.9%)

  • As questões objetivas aplicadas na prova do ENADE devem ter um nível mínimo de poder de discriminação. Para ser considerada apta a avaliar os alunos

Tabela 05. Distribuição dos itens por Ìndice de Discriminação na Prova do ENADE/2018 do curso de Direito.


Classificação Indice de Discrimnação Nº do Itens Nº de Amostra
Muito Bom 0.40 ou mais 15 1 (2.9%)
Bom 0.30 a 0.39 1,2,4,5,7,11,17,20,24,25,28 11 (31.43%)
Médio 0.20 a 0.29 3,12,13,14,27,29,31,33,34 9 (25.71%)
Fraco $ < 0.19$ 6,8,9,10,16,18,19,22,23,26,32,35 12(34,29%)

4.8.2 Análise dos Itens via TRI

4.8.2.1 Correlação Bisserial/Alpha de Cronbach

  • São apresentados os dados de correlação bisserial, sendo uma medida estatística da capacidade de discriminação do item, na medida em que verificar se um determinado item binário apresenta correlação significativa com o escore bruto resultante do conjunto dos itens do ENADE.

  • Para avaliar a qualidade do instrumento de medida (fidedignidade), foi aplicado o coeficiente alpha de Cronbach.

Tabela 06. Correlação Bisserial e Alpha de Cronbch para os itens na Prova do ENADE/2018 do curso de Direito.

Itens Correlação Bisserial \((r_{pb})\) Alpha de Cronbach \((\alpha_{i})\)
Q01 0.30 0.62
Q02 0.34 0.61
Q03 0.22 0.62
Q04 0.38 0.61
Q05 0.35 0.62
….. ……
Q32 0.14 0.62
Q33 0.28 0.62
Q34 0.23 0.62
Q35 0.17 0.63
  • Foram eliminados 2 dos 35 itens analisados, que apresentaram coeficientes de correlação bisserial muito baixos, impossibilitando a convergência na estimação do modelo, ou seja, não permitiram a realização da calibração de parâmetros da TRI.

4.8.2.2 Unidimensionalidade dos Itens

  • Os modelos da TRI pressupõem-se que todos os itens medem uma única habilidade. Apesar do desempenho humano ser multi-determinado, uma vez que mais de uma habilidade participa da execução de qualquer tarefa, para satisfazer o postulado da unidimensionalidade do teste, é suficiente admitir que haja um fator dominante responsável pelo desempenho de todos os itens do teste no ENADE (LORD e HAMBLETON, 1982).

  • A evidência de validade psicométrica de construto para a prova doi ENADE/2018, foi obtida a partir da Análise Fatorial(AF) dos 35 itens que compõem a prova. A medida de adequação da amostra de kaiser-Meyer-Olkin(KMO) para a AF, igual a 0.76, indicou um resultado satisfatório.

Tabela 07. Teste de Confiabilidade para os itens na Prova do ENADE/2018 do curso de Direito.

Testes Formação Geral Componente Específico Nota Brura
Alpha de Crombach 0.71 0.78 0.76
Teste de KMO 0.72 0.73 0.76
Teste de bartlett P-valor=0.001 P-valor=0.001 P-valor=0.001
MSA > 0.70 > 0.70 > 0.70
  • O teste de esfericidade de Bartlett que permite avaliar a hipótese de igualdade de variância-covariância no grupo estudado, isto é, que a matriz de correlação é uma matriz identidade, revelou que existe correlação entre as variáveis estudadas (HAIR et al, 2005)

  • A partir dos dados, análise da dimensionalidade do conjunto de itens foi realizada através da Análise Fatorial de Informação Completa (MATOS e RODRIGUES, 2019).

4.8.2.3 Visualização Gráficas dos Itens

4.8.2.3.1 Função de Informação do Teste
  • A Figura abaixo mostra a Curva de Informação do Teste, que é uma representação gráfica da Função de Informação do Teste. Esta função é representada pela soma do grupo de itens que compõe o teste, de modo que resume a contribuição de cada item deste para a informação total.

  • A quantidade total de informação fornecida por um grupo de itens para cada nível do traço latente está inversamente relacionada ao erro padrão associado com a estimativa do mesmo. Através da Curva de Informação do Teste pode-se verificar para qual intervalo do traço latente o teste funciona melhor.

4.8.2.3.2 Curva Característica dos Itens
  • A Figura abaixo mostra as curvas características dos itens, uma representação das relações entre a habilidade (ou traço latente) e a probabilidade de apresentar habilidade para cada item.

4.8.2.4 Curva de Informação dos Itens

  • A Figura abaixo mostra as curvas de Informação dos itens, para avaliar quais intens trazem mais informação para estimar a habilidade no curso de Direito em 2018.

4.8.2.4.1 Calibração e Equalização dos Itens
  • O processo de estimação dos itens foi realizado em vários passos, estratégia utilizada para manter o maior número possível de itens na prova do ENADE. A qualidade dos itens foi avaliada considerando-se, principalmente, os valores referentes às estimativas dos parãmetros de discriminação e de dificuldade.

  • a tabela 06 apresenta os parâmetros de discriminação \(a_{i}\), dificuldade \(b_{i}\) dos itens avaliados. Tais parâmetros foram estimados utilizando a TRI, com o método de Máxima verossimilhança Marginal e a convergência dos dados foi testada pelo algoritmo EM(Expection Maximization) e Newton Raphson.

Tabela 08. Estimação dos parâmetros dos itens para o Modelo logístico (3pl) da prova do ENADE/2018 no curso de Direito.

Itens Discriminação \(a_{i}\) Dificuldade \(b_{i}\)
Q01 0.682 -1.994
Q02 1.018 -1.750
Q03 0.471 -3.084
Q04 1.184 -1.094
Q05 0.690 -1.042
….. ……
Q32 0.085 15.433
Q33 0.432 -0.217
Q34 0.453 2.857
Q35 0.240 2.667
  • Os itens em que os alunos necessitam de mais conhecimento (dificuldade \(b_{i}\)) adquiridos para solucionar os problemas indicados nas situações problemas na parte específica da prova de Direito.
    • Item 32 (Direito Processual Penal)
    • Item 26 (Direito do Trabalho)
    • Item 22 (Direito Empresarial + Direito Adimistrativo)
    • Item 18 (Teoria Geral do Estado)
    • Item 19 (Direito Ambiental + Direito Processual Civil)
  • Os itens que conseguem separar (discriminação \(a_{i}\)) os alunos que possuem mais habilidaes dentro do estudo do Direito.
    • Item 15 (Direito Constitucional)
    • Item 11 (Direito Humanos)

Tabela 09. Comparativo dos Escores da TRI para 5 alunos com 23 acertos na prova do ENADE/2018 no curso de Direito.

Itens Conteúdo Aluno \(01\) Aluno \(02\) Aluno \(03\) Aluno \(04\) Aluno \(05\)
Q01 Transgênicos Acertou Acertou Acertou Acertou Errou
Q02 Economia Acertou Acertou Acertou Acertou Acertou
Q03 Arte/Ciência Acertou Acertou Acertou Acertou Acertou
Q04 Imigração Acertou Acertou Acertou Acertou Acertou
Q05 Àfrica Erro Acertou Errou Acertou Acertou
…. …. ….. ….. ….. ….. …..
Q32 Processual Penal Errou Erro Acertou Errou Errou
Q33 Direito Penal Acertou Acertou Errou Acertou Acertou
Q34 Constitucional Errou Errou Acertou Acertou Errou
Q35 Constitucional +PP Errou Acertou Errou Errou Errou
Score Bruto 23 23 23 23 23
Score TRI(50,10) 34.58 65.48 35.17 60.37 41.20

4.9 Referências Bibliográficas

4.9.1 Software’s

4.9.2 Packages

4.9.3 Books

5 Considerações Finais

  • Este estudo teve como objetivo mensurar o desempenho(proficiência) no ENDE/2018, dos estudantes de Direito matriculados no CESUPA, por meio TRI. Apartir da estimação realizada com o modelo logistico de 2 parâmetros nos 35 itens da prova objetiva, verificou-se que, a prova não apresentou nem op domínio cognitivo compreendido pela escala. Este Resultado corrobora o baixo desempenho dos estudantes, apontado aspectos de fragilidades de aprendizagem.

6 Sugestão Pedagógica

  • Os resultados das avaliações somativas como a Aplicação de Simulado dará base de como a gestão acadêmica irá retornar aos alunos as devolutivas de um resultado não observado em uma prova até alcançar aprendizagem plea.

  • Os objetivos disciplinares e interdisciplinares devem estar presentes nas habilidades dos professores, assim como, a Taxonomia de Bloom, mobilizando competências aos alunos.

7 Créditos

FATTOR CONSULTORIA EM ANÁLISE DE DADOS 2022.

LS0tDQp0aXRsZTogJyoqRU5BREUtMjAxOCAoQ0VTVVBBKTogRGlhZ27Ds3N0aWNvIGRlIERlc2VtcGVuaG8gZW0gRGlyZWl0byB2aWEgVFJJKionDQphdXRob3I6DQotIG5hbWU6IE3DgVJJTyBWQUxFTlRFDQotIG5hbWU6IENBUkxPUyBQQUlYw4NPDQotIG5hbWU6IEJFQVRSSVogU0FMSU0NCi0gbmFtZTogQVVSRUxJQU5PIFNBTlRPUw0KLSBuYW1lOiBIRUxJVE9OIFRBVkFSRVMNCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBoaWdobGlnaHQ6IHRleHRtYXRlDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0aGVtZTogY2VydWxlYW4NCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNQ0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogeWVzDQogICAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgcGRmX2RvY3VtZW50Og0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiAnNScNCmluc3RpdHV0ZTogRkFDVFRPUiBDT05TVUxUT1JJQSAyMDIxDQphYnN0cmFjdDogIiBGb2kgUmVhbGl6YWRvIHVtYSBhdmFpYcOnw6NvIGRlIERlc2VtcGVuaG8gZG9zIGFsdW5vcyBubyBDdXJzbyBkZSBEaXJlaXRvIG1hdHJpY3VsYWRvcyBubyBDRVNVUEEgZW0gMjAxOC4gT3MgY29udGXDumRvcyBlIHJlc3VsdGFkb3Mgc8OjbyBvcml1bmRvcyBkb3MgZG9jdW1lbnRvcyBvZmljaWFpcyBjb25zdGFudGVzIG5vcyBtaWNyb2RhZG9zIGRpdnVsZ2Fkb3MgcGVsbyBJTkVQLiBPIHJlbGF0w7NyaW8gdGVtIHBvciBvYmpldGl2byBhIGFwcmVzZW50YcOnw6NvIGRlIGluZm9ybWHDp8O1ZXMgYsOhc2ljYSwgbWFzIHF1ZSBwb3NzYW0gc2VyIHVzYWRhcyBwYXJhIGlkZW50aWZpY2FyIHBvbnRvcyBhIGFwcmltb3JhciBuYSBmb3JtYcOnw6NvIGRlIHNldXMgYWx1bm9zLiBQb3IgZmltLCBzw6NvIGFwcmVzZW50YWRhcyBhcyBpbmZvcm1hw6fDtWVzIHJlbGF0aXZhcyBhbyBkZXNlbXBlbmhvIGdlcmFsIGRvcyBlc3R1ZGFudGVzIGVtIG7DrXZlbCBCcmFzaWwgZSB0YW1iw6ltIG5hIHVuaWRhZGUgZXNjb2xhciwgdGFudG8gdXNhbmRvIG8gKipFc2NvcmUqKiBjb21vIGEgbm90YSB2aWEgKipUZW9yaWEgZGEgUmVzcG9zdGEgYW8gSXRlbSoqLCBkZW5vbWluYWRhIGRlICoqUHJvZmljacOqbmNpYSoqLCBlIGFzIHByb3BvcsOnw7VlcyBkZSBhY2VydG9zIHBvciBoYWJpbGlkYWRlIGUgY29tcGV0w6puY2lhcy4iDQotLS0NCg0KIyBQcmVmw6FjaW8NCg0KPGJyPg0KDQpFc3RlIHJlbGF0w7NyaW8gZm9pIHBsYW5lamFkbyBwYXJhIGdlcmFyIGluZm9ybWHDp8O1ZXMgZSBjb250cmlidWlyIHBhcmEgdW0gbWVsaG9yIHBsYW5lamFtZW50byBkYXMgVW5pZGFkZXMgRWR1Y2FjaW9uYWlzKGNlbnRyb3MgREUgRW5zaW5vIFN1cGVyaW9yLCBmYWN1bGRhZGVzIGUgdW5pdmVyc2lkYWRlcyksIHZpc2FuZG8gw6AgbWVsaG9yaWEgZGUgZGVzZW1wZW5obyBkb3MgZXN0dWRhbnRlcyBuYXMgZWRpw6fDtWVzIGZ1dHVyYXMgZG8gRU5BREUuIE9zIGNvbnRlw7pkb3MgZSByZXN1bHRhZG9zIHPDo28gb3JpdW5kb3MgZG9zIGRvY3VtZW50b3Mgb2ZpY2lhaXMgY29uc3RhbnRlcyBub3MgbWljcm9kYWRvcyBkaXZ1bGdhZG9zIHBlbG8gSW5lcCwgcXVlIHBvZGVtIHNlciBiYWl4YWRvcyBkbyBlbmRlcmXDp28gWyhJTkVQLCAyMDE4KV0oaHR0cHM6Ly93d3cuZ292LmJyL2luZXAvcHQtYnIvYWNlc3NvLWEtaW5mb3JtYWNhby9kYWRvcy1hYmVydG9zL21pY3JvZGFkb3MvZW5hZGUpLg0KDQo8YnI+DQoNCk5vIHByZXNlbnRlIGVzdHVkbywgYnVzY2Etc2UsIG1vZGVsYXIgYSBwcm9iYWJpbGlkYWRlIGRlIGFjZXJ0b3MgZGFzIHF1ZXN0w7VlcyAoaXRlbnMpIHF1ZSBjb21ww7VlbSBhIHByb3ZhLCBjb25zaWRlcmFuZG8tc2UgYSBwcm9maWNpw6puY2lhIGRvIGVzdHVkYW50ZSBhIHBhcnRpciBkYSBkaWZpY3VsZGFkZSBlIGNhcGFjaWRhZGUgZGUgZGlzY3JpbWluYcOnw6NvIGRvcyBpdGVucyBlIGRhIHByb2JhYmlsaWRhZGUgZGUgYWNlcnRvIGNhc3VhbC4gUG9yIHBlcm1pdGlyIHVtYSBhdmFsaWHDp8OjbyBkbyBjb25oZWNpbWVudG8gZWZldGl2YW1lbnRlIGRvbWluYWRvIHBlbG8gZXN0dWRhbnRlIGVtIGNhZGEgaXRlbSwgZXN0YSBpbmljaWF0aXZhIHBvc3NpYmlsaXRhIGludGVydmVuw6fDtWVzIGUgYcOnw7VlcyBwb250dWFpcyBkZSBjb3JyZcOnw6NvIG5vIHByb2Nlc3NvIGRlIGVuc2luby1hcHJlbmRpemFnZW0sIGRlIG1vZG8gYSBpZGVudGlmaWNhciBsYWN1bmFzIHF1ZSBjb21wcmVlbmRhbSBwb3Nzw612ZWlzIGRlZmljacOqbmNpYXMgZGUgYXByZW5kaXphZ2VtLg0KDQo8YnI+DQoNCkVzcGVyYS1zZSwgcG9ydGFudG8sIGNvbnRyaWJ1aXIgY29tIGEgw6FyZWEgZGUgZWR1Y2HDp8OjbyBlbSBkaXZlcnNvcyBjdXJzb3MgY29tIGEgYnVzY2EgZGUgaW5zdHJ1bWVudG9zIGFsdGVybmF0aXZvcyBwYXJhIGFmZXJpw6fDo28gZGEgc2l0dWHDp8OjbyBhdHVhbCBkbyBlbnNpbm8gc3VwZXJpb3Igbm8gUGFyw6EsIGNvbnN1YnN0YW5jaWFkYSBuYSBhdmFsaWHDp8OjbyBkbyBkZXNlbXBlbmhvIGFjYWTDqm1pY28gZG9zIGVzdHVkYW50ZXMgKHByb2ZpY2nDqm5jaWEpLCBkZSBtb2RvIGEgYXZhbGlhciwgZGV0YWxoYWRhbWVudGUsIGEgc2l0dWHDp8OjbyBlbmNvbnRyYWRhIGVtIGNhZGEgdGlwbyBkZSBjb25oZWNpbWVudG8gcXVlIGludGVncmEgb3MgY29tcG9uZW50ZXMgZG9zIGN1cnNvcyBlbSBhbsOhbGlzZS4gIA0KDQoNCiMgKipFeGFtZSBOYWNpb25hbCBkZSBEZXNlbXBlbmhvIGRvcyBFc3R1ZGFudGVzIChFTkFERSkqKiB7LnRhYnNldCAudGFic2V0LWZhZGV9DQojIyBPIFF1ZSDDqSBvIEVOQURFPw0KDQo8YnI+DQoNCk8gRXhhbWUgTmFjaW9uYWwgZGUgRGVzZW1wZW5obyBkb3MgRXN0dWRhbnRlcyAoRU5BREUpIMOpIHVtIGRvcyBwaWxhcmVzIGRhIGF2YWxpYcOnw6NvIGRvIHNpc3RlbWEgTmFjaW9uYWwgZGUgQXZhbGlhw6fDo28gZGEgRWR1Y2HDp8OjbyBTdXBlcmlvciAoU0lOQUVTKSwgY3JpYWRvIHBlbGEgKipMZWkgbsKwMTAuODYxKiosIGRlIDE0IGRlIGFicmlsIDIwMDQuIEFsw6ltIGRvIEVOQURFLCBvcyBwcm9jZXNzb3MgZGUgYXZhbGlhw6fDo28gZGUgQ3Vyc29zIGRlIGdyYWR1YcOnw6NvIGUgZGUgQXZhbGlhw6fDo28gSW5zdGl0dWNpb25hbCBjb25zdGl0dWVtIG8gdHJpcMOpIGF2YWxpYXRpdm8gZG8gU0lOQUVTLCBvcyByZXN1bHRhZG8gZGVzc2VzIGluc3RydW1lbnRvcyBhdmFsaWF0aXZvcywgcmV1bmlkb3MsIHBlcm1pdGVtIGNvbmhlY2VyLCBlbSBwcm9mdW5kaWRhZGUsIG8gbW9kbyBkZSBmdW5jaW9uYW1lbnRvIGUgYSBxdWFsaWRhZGUgZG9zIGN1cnNvcyBlIGluc3RpdHVpw6fDtWVzIGRlIEVkdWNhw6fDo28gU3VwZXJpb3IoSUVTKSBkZSB0b2RvIG8gQnJhc2lsLg0KDQotIE8gRU5BREUgw6kgdW1hIHByb3ZhIGFwbGljYWRhIGFudWFsbWVudGUgYW9zIGFsdW5vcyAoaW5ncmVzc2FudGVzIGUgY29uY2x1aW50ZXMpIGRlIGN1cnNvcyBkZSBncmFkdWHDp8OjbywgZW0gYXJlYXMgZGVmaW5pZGFzIHBlbG8gTWluaXN0w6lyaW8gZGEgRWR1Y2HDp8OjbyhNRUMpIGUgw6kgcmVhbGl6YWRvIHBlbG8gSU5FUC4NCg0KLSBPIG9iamV0aXZvIGRvIEVOQURFIGUgYXZhbGlhciBvIGRlc2VtcGVuaG8gZG9zIGVzdHVkYW50ZXMgY29tIHJlbGHDp8OjbyBhb3MgY29udGXDumRvcyBwcm9ncmFtw6F0aWNvcyBkYXMgZGlyZXRyaXplcyBjdXJyaWN1bGFyZXMgZG9zIGN1cnNvIGRlIGdyYWR1YcOnw6NvIGUgbyBkZXNlbnZvbHZpbWVudG8gZGUgY29tcGV0w6puY2lhcyBlIGhhYmlsaWRhZGVzIG5lY2Vzc8OhcmlhcyDDoCBmb3JtYcOnw6NvIGdlcmFsIGUgcHJvZmlzc2lvbmFsLg0KDQotIEEgcHJvdmEgZG8gRU5BREUvMjAxOCBkZSBhY29yZG8gY29tIG8gYXJ0LiA2wrAgZGEgUG9ydGFyaWEgSW5lcCBuwrA0NDQsIGNvbSBkdXJhw6fDo28gZGUgNCBob3JhcywgYXByZXNlbnRvdSB1bSBjb21wb25lbnRlIGRlIGF2YWxpYcOnw6NvIG5hICoqRm9ybWHDp8OjbyBHZXJhbChGRykqKiwgY29tdW0gYW9zIGN1cnNvcyBkZSB0b2RhcyBhcyDDoXJlYXMgZSB1bSAqKkNvbXBvbmVudGUgRXNwZWPDrWZpY28oQ0UpKiogZGUgYWNhZGEgw6FyZWEuDQoNCi0gQSBwYXJ0ZSByZWZlcmVudGUgYW8gKipDRSoqIGNvbnRyaWJ1aSBjb20gKio3NSUqKiBkYSBub3JhIGZpbmFsLCBlcXVhbnRvIGEgcGFyY2VsYSwgcmVmZXJlbnRlIGEgRkcsIGNvbnRyaWJ1aSBjb20gKioyNSUqKiwgZW0gY29uc29uw6JuY2lhIGNvbSBvIG7Dum1lcm8gZGUgcXVlc3TDtWVzIGRhIHByb3ZhLCAzMCBlIDEwLCByZXNwZWN0aXZhbWVudGUuIE9zIGNvbmNlaXRvcyB1dGlsaXphZG9zIG5vIEVOQURFIHZhcmlhbSBkZSAxIGEgNSwgZSwgw6AgbWVkaWRhIHF1ZSBlc3NlIHZhbG9yIGF1bWVudGEsIG1lbGhvciB0ZXLDoSBzaWRvIG8gZGVzZW1wZW5obyBubyBleGFtZS4gDQoNCg0KIyMgQ29tcG9uZW50ZXMgZG8gRU5BREUNCg0KLSBBIG5vdGEgZmluYWwgZG8gZXN0dWRhbnRlIMOpIG9idGlkYSBwZWxhIG3DqWRpYSBwb25kZXJhZGEgZGFzIG5vdGFzIGVtIGNhZGEgY29tcG9uZW50ZXMuDQoNCiMjIyBGb3JtYcOnw6NvIEdlcmFsKEZHKQ0KDQotIDggKG9pdG8pIHF1ZXN0w7VlcyBvYmpldGl2YXMgY29tIHBlc28gaWTDqm50aWNvLCBwZXJmYXplbmRvIDEwMCUuIEFzc2ltLCBhIG5vdGEgYnJ1dGEgZGFzIHF1ZXN0w7VlcyBvYmpldGl2YXMgZGUgRkcgw6kgYSBwcm9wb3LDp8OjbyBkZSBhY2VydG9zIGRlc3NhcyBxdWVzdMO1ZXMuDQoNCi0gMiAoZHVhcykgcXVlc3TDtWVzIGRpc2N1cnNpdmFzLCBjdWphIGNvcnJlw6fDo28gbGV2YSBlbSBjb25zaWRlcmHDp8OjbyBvIGNvbnRlw7pkbywgY29tIHBlc28gZGUgODAlLCBlIGFzcGVjdG9zIHJlZmVyZW50ZXMgw6AgTGluZ3VhIFBvcnR1Z3Vlc2EgY29tIHBlc28gZGUgMjAlIGRpc3RyaWJ1w61kb3Mgc2Egc2VndWludGUgbWFuZWlyYTogQXNwZWN0b3MgT3J0b2dyw6FmaWNvcyAoMzAlKSwgQXNwZWN0b3MgVGV4dHVhaXMgKDIwJSksIEFzcGVjdG9zIE1vcmZvc3NpbnTDoXRpY29zIGUgVm9jYWJ1bGFyZXMgKDUwJSkuIEEgbm90YSBkYXMgcXVlc3TDtWVzIGRpc2N1cnNpdmFzIGRlIEZvcm1hw6fDo28gZ2VyYWwgw6kgYSBtw6lkaWEgc2ltcGxlcyBkYXMgbm90YXMgZGFzIGR1YXMgcXVlc3TDtWVzIGRpc2N1cnNpdmFzLg0KDQoNCiMjIyBDb25oZWNpbWVudG8gRXNwZWPDrWZpY28oQ0UpDQoNCi0gMjcgKHZpbnRlIGUgc2V0ZSkgcXVlc3TDtWVzIG9iamV0aXZhcywgY29tIHBlc28gaWTDqm50aWNvLiBBc3NpbSwgYSBub3RhIGRhcyBxdWVzdMO1ZXMgZGUgY29uaGVjaW1lbnRvIGVzcGVjw61maWNvIMOpIGEgcHJvcG9yw6fDo28gZGUgYWNlcnRvcyBkZXN0YXMgcXVlc3TDtWVzLg0KLSAzICh0csOqcykgcXVlc3TDtWVzIGRpc2N1cnNpdmFzIG5hcyBxdWFpcyAxMDAlIGRhIG5vdGEgcmVmZXJlbS1zZSBhbyBjb250ZcO6ZG8uIEEgbm90YSBkYXMgcXVlc3TDtWVzIGRpc2N1cnNpdmFzIGRlIGNvbmhlY2ltZW50byBlc3BlY8OtZmljbyDDqSBhIG3DqWRpYSBzaW1wbGVzIGRhcyBub3RhcyBkZXNzYXMgMyBxdWVzdMO1ZXMuDQoNCg0KQXMgbm90YXMgZG9zIGRvaXMgY29tcG9uZW50ZXMsIGRlIEZvcm1hw6fDo28gR2VyYWwgZSBkZSBDb25oZWNpbWVudG8gRXNwZWPDrWZpY28sIHPDo28gZW50w6NvIGFycmVkb25kYWRhcyDDoCBwcmltZWlyYSBjYXNhIGRlY2ltYWwuIFBhcmEgYSBvYnRlbsOnw6NvIGRhIG5vdGEgZmluYWwgZG8gZXN0dWRhbnRlLCBhcyBub3RhcyBkb3MgZG9pcyBjb21wb25lbnRlcyBmb3JhbSBwb25kZXJhZGFzIHBvciBwZXNvcyBwcm9wb3JjaW9uYWlzIGFvIG7Dum1lcm8gZGUgcXVlc3TDtWVzOiAyNSUgcGFyYSBGRyBlIDc1JSBwYXJhIENFLiBlc3RhIG5vdGEgZm9pIHRhbWLDqW0gYXJyZWRvbmRhZGEgYSB1bWEgY2FzYSBkZWNpbWFsLg0KDQoNCiMgKipUUkkgZW0gQXZhbGlhw6fDo28gRWR1Y2FjaW9uYWwqKiANCiMjIFJlZmVyZW5jaWFsIFRlw7NyaWNvDQoNCk5vIGJyYXNpbCwgYWxndW5zIHRyYWJhbGhvcyBhYm9yZGFyYW0gYSBUZW9yaWEgZGEgUmVzcG9zdGEgYW8gSXRlbSAoVFJJKSBwYXJhDQphdmFsaWHDp8OjbyBkYSBwcm9maWNpw6puY2lhIGNvbSBtaWNyb2RhZG9zIGRvIEVOQURFLg0KDQotIEZyYW5jaXNjbygyMDA1KSwgcmVhbGl6b3UgdW0gZXN0dWRvIGRlIGNhc28gcG9yIG1laW8gZGEgYXBsaWNhw6fDo28gZGEgVFJJLCBjb20gYSBmaW5hbGlkYWRlIGRlDQp2ZXJpZmljYXIgbyBkZXNlbXBlbmhvIGRvcyBhbHVub3MgZm9ybWFuZG9zIGRvIGN1cnNvIGRlIE1hdGVtw6F0aWNhIGRhIFVuaXZlcnNpZGFkZQ0KRXN0YWR1YWwgZG8gQ2VudHJvLU9lc3RlIChVTklDRU5UUk8pLCBlbSBHdWFyYXB1YXZhLVBSLCBubyBwZXLDrW9kbyBkZSAyMDAwIGF0w6kgMjAwMywNCm5vIEV4YW1lIE5hY2lvbmFsIGRlIEN1cnNvcyAoRU5DKTtbMV0oaHR0cHM6Ly9hY2Vydm9kaWdpdGFsLnVmcHIuYnIvYml0c3RyZWFtL2hhbmRsZS8xODg0LzIzNDkvVFJJX0ZJTkFMLnBkZj9zZXF1ZW5jZT0xJmlzQWxsb3dlZD15KQ0KDQotIE9saXZlaXJhKDIwMDYpLCB1dGlsaXpvdSBhIFRSSSBwYXJhIHByb2NlZGVyIGEgdW1hIGFuw4FsaXNlIGRhcyBwcm9wcmllZGFkZXMgcHNpY29tw6l0cmljYXMNCmRhIHByb3ZhIGRvIEVOQURFIGRlIDIwMDQsIGFwbGljYWRhIGFvcyBhbHVub3MgZG9zIGN1cnNvcyBkZSBtZWRpY2luYTtbMl0oKQ0KDQoNCi0gTm9ndWVpcmEgKDIwMDgpLCBhcGxpY291IGEgVFJJIHBhcmEgYXZhbGlhciBhcyBxdWVzdMO1ZXMgZGEgcHJvdmEgZGUgZm9ybWHDp8OjbyBnZXJhbCAoRkcpDQpkbyBFTkFERSwgZW0gZXNwZWNpYWwgYXF1ZWxhcyBxdWUgZW52b2x2ZW0gY29uY2VpdG9zIGVzdGF0w61zdGljb3MsIHZpc2FuZG8gZXN0aW1hciBhIHByb2ZpY2nDqm5jaWEgZG9zIGVzdHVkYW50ZXMgbm9zIGNvbnRlw7pkb3MgYXZhbGlhZG9zIGUgbyBhanVzdGUgZG9zIGl0ZW5zIGFvIG1vZGVsbyBkZSBSYXNjaDtbM10oKQ0KDQoNCi0gUHJpbWkgZXQgYWwuKDIwMTApLCBhcGxpY2FyYW0gYSBUUkkgYW9zIGRhZG9zIGRvIEVOQURFIGRlIHBzaWNvbG9naWEgZGUgMjAwNiwgcGFyYSBkZXRlcm1pbmFyIG9zIHBvbnRvcyBkZSBjb3J0ZSwgZm9ybWFtYW5kbyBncnVwb3MgZGUgY29tcGV0w6puY2lhcyByZXF1ZXJpZGFzIHBhcmEgYSByZXNvbHXDp8OjbyBkZSBpdGVucztbNF0oKQ0KDQoNCi0gQ29lbGhvIGV0IGFsLigyMDE0KSwgdXRpbGl6YXJhbSB0csOqcyBjb25qdW50b3MgZGUgZGFkb3MsIGRlbnRyZSBlbGVzIHJlc3Bvc3RhcyBkbyBjdXJzbyBkZSBlc3RhdMOtc3RpY2EgZG8gRU5BREUgZGUgMjAwOSB2aWEgVFJJO1s1XSgpDQoNCi0gU2NoZXIgZXQgYWwuKDIwMTQpLCBhbmFsaXNhcmFtIGEgcHJvdmEgZG8gRU5BREUgZGUgMjAwOSBkbyBjdXJzbyBkZSBBZG1pbmlzdHJhw6fDo28gcG9yIG1laW8gZGEgVFJJO1s2XShodHRwczovL2NvcmUuYWMudWsvZG93bmxvYWQvcGRmLzMwNDA4MjQ3LnBkZikNCg0KDQotIExvcGVzIGUgVmVuZHJhbWluaSAoMjAxNSksIGF2YWxpYXJhbSBhcyBwcm9wcmllZGFkZXMgcHNpY29tw6l0cmljYXMgZGEgcHJvdmEgZGUgUGVkYWdvZ2lhIGRvIEVOQURFLCBhcGxpY2FkYSBlbSAyMDA1LCBjb20gbyBtb2RlbG8gZGUgUmFzY2ggZGEgVFJJO1s3XShodHRwczovL3d3dy5zY2llbG8uYnIvcGRmL2F2YWwvdjIwbjEvMTQxNC00MDc3LWF2YWwtMjAtMDEtMDAwMjcucGRmKQ0KDQoNCi0gQ2FtYXJnbyBldCBhbC4oMjAxNiksIG1lbnN1cmFyYW0gYSBwcm9maWNpw6puY2lhIGRvcyBlc3R1ZGFudGVzIGRvIGN1cnNvIGRlIENpw6puY2lhcyBDb250w6FiZWlzIG5vIEVOQURFIHV0aWxpemFuZG8gVFJJO1s4XShodHRwOi8vd3d3LnJlcGVjLm9yZy5ici9yZXBlYy9hcnRpY2xlL3ZpZXcvMTQwMS8xMTgzKQ0KDQotIFNwZW5hc3NhdG8gZSBUZXp6YSAoMjAxOSksIGFwcmVzZW50YXJhbSAgYXMgIHZhbnRhZ2VucyBkYSB1dGlsaXphw6fDo28gZGEgVFJJLCBlbSBjb25qdW50byBjb20gYSBhbsOhbGlzZSBkYXMgcXVlc3TDtWVzIG9iamV0aXZhcyBkbyBFTkFERSAyMDE0IHBhcmEgbyAgIGN1cnNvICAgZGUgRW5nZW5oYXJpYSAgIGRhICAgQ29tcHV0YcOnw6NvLCBjb21wYXJhbmRvIGEgZGlmaWN1bGRhZGUgY29tIG9zIMOtbmRpY2VzIGRlIGZhY2lsaWRhZGUgZG9zIGl0ZW5zIGRpdnVsZ2FkbyBubyByZWxhdMOzcmlvIGRhIMOhcmVhIHBlbG8gSU5FUCgyMDE2KS5bOV0oaHR0cHM6Ly9zZWVyLnVzY3MuZWR1LmJyL2luZGV4LnBocC9yZXZpc3RhX2luZm9ybWF0aWNhX2FwbGljYWRhL2FydGljbGUvdmlldy82OTg0LzMwNDkpDQoNCg0KIyMgRXNjYWxhIGUgSW50ZXJwcmV0YcOnw6NvIGRhIFRSSQ0KDQotIEEgZXNwZWNpZmljYcOnw6NvIGRhcyBoYWJpbGlkYWRlcyBuYSBtYXRyaXogZGUgY2FkYSDDoXJlYSBwb3NzaWJpbGl0YSByZWFsaXphciBpbnRlcnByZXRhw6fDtWVzIG1haXMgcHJlY2lzYXMgc29icmUgbyBkZXNlbXBlbmhvIGRvcyBhdmFsaWFkb3MuIFBhcmEgaXNzbywgw6kgZnVuZGFtZW50YWwgZXhwbGljaXRhciBxdWFsIGEgbWFnbml0dWRlIGUvb3UgZXNjYWxhZG9zIHJlc3VsdGFkb3MsIGVzY29saGVuZG8gYWxndW5zIGludGVydmFsb3MgZGUgcHJvZmljacOqbmNpYSBwYXJhIGlkZW50aWZpY2FyIGFzIGhhYmlsaWRhZGVzIGNvZ25pdGl2YXMgYWJzb3J2aWRhcyBwZWxvcyBjYW5kaWRhdG9zIG5hcXVlbGUgaW50ZXJ2YWxvLg0KDQotIE8gdGVybW8gIml0ZW0iLCBlbSBzdWJzdGl0dWnDp8OjbyBhbyAicXVlc3TDo28iLCDDqSBvIHBhZHLDo28gZW0gYXZhbGlhw6fDtWVzIGUgZXN0dWRvcyBlZHVjYWNpb25haXMuIEVzcGVjaWZpY2FtZW50ZSwgdW0gaXRlbSBkZXZlIHNlciBwcmVwYXJhZG8gcGFyYSBhdmFsaWFyIHVtYSDDum5pY2EgaGFiaWxpZGFkZShlbSBvdXRyYXMgc2l0dWHDp8O1ZXMsIGRlbm9taW5hZGEgZGUgdMOzcGljbyBvdSBkZXNjcml0b3IpLlBvcnRhbnRvLCBvcyBpdGVucyBlc3TDo28gaW50cmluc2VjYW1lbnRlIGxpZ2Fkb3Mgw6AgbWF0cml6IGRlIHJlZmVyw6puY2lhIGRvIGV4YW1lLg0KDQotIEFzc2ltIGNvbW8gbmFzIHByaW5jaXBhaXMgYXZhbGlhw6fDtWVzIGRvIEJyYXNpbCBlIGV4dGVyaW9yLCBvcyByZXN1bHRhZG9zIGRlIGRlc2VtcGVuaG8gZG9zIGF2YWxpYWRvcyBubyBFTkFERSBzw6NvIG9idGlkb3MgYXBhcnRpciBkYSB1dGlsaXphw6fDo28gZGEgKipUZW9yaWEgZGEgUmVzcG9zdGEgYW8gSXRlbSAoVFJJKSoqLg0KDQotIEVzc2EgdGVvcmlhIHN1cmdpdSBkYSBuZWNlc3NpZGFkZSBkZSBzdXBlcmFyIGFzIGxpbWl0YcOnw7VlcyBwcmVzZW50ZXMgbmEgYXByZXNlbnRhw6fDo28gZGUgcmVzdWx0YWRvcyBzb21lbnRlIGF0cmF2w6lzIGRlIHBlcmNlbnR1YWlzIGRlIGFjZXJ0b3MgZSBtw6lkaWFzIGRlc3NlcyBwZXJjZW50dWFpcywgbWVkaWRhcyBhZG90YWRhcyBuYSBkZW5vbWluYWRhICoqVGVvcmlhIENsw6Fzc2ljYSBkb3MgVGVzdGVzKFRDVCkqKi4NCg0KLSBPIGZvY28gbmEgVFJJIHBhc3NhIGEgc2VyIG9zIGl0ZW5zLGUgbsOjbyBzaW1wbGVzbWVudGUgbyBuw7ptZXJvIG91IHBlcmNlbnR1YWwgZGUgYWNlcnRvcy5DYWRhIGl0ZW0gZG8gRU5BREUsIGFsw6ltIGRlIG1lZGlyIHVtYSDDum5pY2EgaGFiaWxpZGFkZSwgZGV2ZSB0ZXIgY2FyYWN0ZXLDrXN0aWNhcyBlc3RhdMOtc3RpY2FzIGJvYXMsIGRlZm9ybWEgcXVlIHBvc3NhbSByZWFsbWVudGUgbWVuc3VyYXIgbWVsaG9yIGFzIHByb2ZpY2nDqm5jaWFzIGRvcyBleGFtaW5hZG9zLg0KDQoNCi0gVGFtYsOpbSDDqSBpbXBvcnRhbnRlIGV4cGxpY2l0YXIgcXVlIGFzIHJlc3Bvc3RhcyBhb3MgaXRlbnMgc8OjbyBkaWNvdG9taXphZGFzKGNlcnRvL2VycmFkbykgcGFyYSBhcGxpY2HDp8OjbyBkYSBUUkkgbm8gRU5BRCwgZGUgZm9ybWEgcXVlIG7Do28gZmF6IGRpZmVyZW7Dp2EgcXVhbCBhbHRlcm5hdGl2YSBpbmNvcnJldGEgbyBjYW5kaWRhdG8gbWFycXVlLG8gcmVzdWx0YWRvIHNlcsOhIHNlbXByZSBvIG1lc21vLg0KDQoNCiMjIE8gUXVlIMOpIGEgVFJJPw0KDQotIMOJIHVtYSBtZXRvZG9sb2dpYSBlc3RhdMOtc3RpY2EgcXVlIG1vZGVsYSBhIHByb2JhYmlsaWRhZGUodW0gdmFsb3IgZW50cmUgemVybyBlIHVtKSBkZSB1bSBwYXJ0aWN1bGFyIGluZGl2w61kdW8gcmVzcG9uZGVyIGNvcnJldGFtZW50ZSBhIHVtIGRldGVybWluYWRvIGl0ZW0sIGF0cmF2w6lzIGRlIHVtYSBmdW7Dp8OjbyBlbSBmb3JtYSBkZSAiUyIoZGVub21pbmFkYSBkZSBmdW7Dp8OjbyBMb2fDrXN0aWNhKS4NCg0KLSBDYWRhIGl0ZW0gdGVtIHN1YXMgcHLDs3ByaWFzIGNhcmFjdGVyw61zdGljYXMsIHF1ZSBkZW5vbWluYXJlbW9zIHBhcsOibWV0cm9zOyBjYWRhIGluZGl2w61kdW8gdGVtIHVtIGNlcnRvICJ2YWxvciIgZGUgcHJvZmljacOqbmNpYSBuYSDDoXJlYSBhdmFsaWFkYSxxdWUgc2Vyw6EgYSBzdWEgbm90YSBUUkkuDQoNCi0gQXNzdW1lLXNlIGJhc2ljYW1lbnRlIHF1ZSwgcXVhbnRvIG1haW9yIGEgcHJvZmljacOqbmNpYSwgbWFpb3IgYSBwcm9iYWJpbGlkYWRlIGRlIGFjZXJ0byBkbyBpdGVtLg0KDQojIyBNb2RlbG8gRXN0YXTDrXN0aWNvIGRhIFRSSSANCg0KLSBOZXN0ZSBlc3R1ZG8sIMOpIHV0aWxpemFkbyB1bSBtb2RlbG8gbG9nw61zdGljbyB1bmlkaW1lbnNpb25hbCBkZSAzIHBhcsOibWV0cm9zICgzcGwpLCByZXByZXNlbnRhZG8gcGVsbyB0cmHDp28gbGF0ZW50ZSAqKkNvbmhlY2ltZW50byBlbSBDdXJzbyBkZSBHcmFkdWHDp8OjbyoqLCBjb25zaWRlcmEtcyBldW1hIMO6bmljYSBwb3B1bGHDp8OjbywgaXN0byDDqSwgb3MgYWx1bm9zIGRlIGdyYWR1YcOnw6NvIHF1ZSByZWFsaXphcsOhLCBhIHByb3ZhIGRvIEVOQURFLzIwMTguIA0KDQoNCiQkIFAoWV97aWp9PTF8XHRoZXRhX3tqfSwgXHZhcnNpZ21hX3tpfSk9IGNfe2l9KygxLWNfe2l9KVxmcmFjezF9ezErZV57LURhX3tpfX0oXHRoZXRhX3tqfS1iX3tpfSl9JCQNCkNvbSAkaT0xLDIsLi4uLG4kIG9uZGU6DQoNCi0gKiokWV97aWp9JCoqOiB2YXJpw6F2ZWwgZGljb3TDtG1pY2EgcXVlIGFzc3VtZSBvcyB2YWxvcmUgMSh1bSksIHF1YW5kbyBvIGluZGl2w61kdW8gJGokLCBubyBlc3R1ZG8gZW0gcXVlc3TDo28sIHJlc3BvbmRlIGNvcnJldGFtZW50ZSBvIGl0ZW0sIG91IGFzc3VtZSAwICh6ZXJvKSBjYXNvIGNvbnRyw6FyaW8uIA0KDQotICoqJFx0aGV0YV97an0kOioqIHJlcHJlc2VudGEgbyB0cmHDp28gbGF0ZW50ZSAocGFyw6JtZXRybyBkZSBoYWJpbGlkYWRlKSBkbyBqLcOpc2ltbyBhbHVubyBwZXNxdWlzYWRvOw0KDQotICoqUGFyw6JtZXRybyBkZSBEaXNjcmltaW5hw6fDo28oJGFfezF9JCkqKjogbWVkZSBhIGNhcGFjaWRhZGUgcXVlIGNhZGEgaXRlbSBwb3NzdWkgcGFyYSBkaWZlcmVuY2lhciBhcXVlbGVzIHBhcnRpY2lwYW50ZXMgcXVlIHNhYmVtIG8gY29udGXDumRvIGRvIGl0ZW0gZGFxdWVsZXMgcGFydGljaXBhbnRlcyBxdWUgbsOjbyBvIGRvbWluYW0sIGUgZXN0w6EgYXNzb2NpYWRvIMOgIGluY2xpbmHDp8OjbyBkYSBjdXJ2YS4NCg0KLSAqKlBhcsOibWV0cm8gZGUgRGlmaWN1bGRhZGUoJGJfe2l9JCkqKjogbWVkZSBhIGRpZmljdWxkYWRlIGFzc29jaWFkYSBhbyBjb250ZcO6ZG8gZG8gaXRlbSwgZSBxdWFudG8gbWFpb3Igc2V1IHZhbG9yLCBtYWlzIGRpZsOtY2lsIHNlcsOhIG8gY29udGXDumRvIGRvIGl0ZW0uIEVsZSDDqSBleHByZXNzbyBuYSBtZXNtYSBlc2NhbGEgZGEgcHJvZmljacOqbmNpYShoYWJpbGlkYWRlKS4gRSBtdW1hIHByb3ZhIGRlIHF1YWxpZGFkZSBkZXZlbW9zIHRlciBpdGVucyBkZSBkaWZlcmVudGVzIG7DrXZlaXMgZGUgZGlmaWN1bGRhZGUgcGFyYSBhdmFsaWFyIGFkZXF1YWRhbWVudGUgb3MgcGFydGljaXBhbnRlcyBlbSB0b2RvcyBvcyBuw612ZWlzIGRlIGNvbmhlY2ltZW50by4gUGFyYSB2YWxvcmVzIGRlIHByb2ZpY2nDqm5jaWEgZG9zIGFsdW5vcyBhcGFydGlyIGRvIHZhbG9yIGRlICIkYl97aX0kIiBkbyBpdGVtLCBhIHByb2JhYmlsaWRhZGUgZGUgYWNlcnRhciBvIGl0ZW0gw6kgbWFpb3IgZG8gcXVlIGEgcHJvYmFiaWxpZGFkZSBkZSBlcnJhcjsNCg0KLSAqKlBhcsOibWV0cm8gZGUgQWNlcnRvIENhc3VhbCgkY197aX0kKSoqOiBlbSBwcm92YXMgZGUgbcO6bHRpcGxhIGVzY29saGEsIHVtIHBhcnRpY2lwYW50ZSBxdWUgbsOjbyBkb21pbmEgbyBjb250ZcO6ZG8gZGUgdW0gZGV0ZXJtaW5hZG8gaXRlbSBkYSBwcm92YSBwb2RlIHJlc3BvbmRlciBjb3JyZXRhbWVudGUgYSBlc3NlIGl0ZW0gcG9yIGFjZXJ0byBjYXN1YWwuIENvbSBpc3NvLGVzc2UgcGFyw6JtZXRybyByZXByZXNlbnRhIGEgcHJvYmFiaWxpZGFkZSBkZSB1bSBwYXJ0aWNpcGFudGUgZGUgYmFpeGEgcHJvZmljacOqbmNpYSBhY2VydGFyIG8gaXRlbSBkZSBmb3JtYSBjYXN1YWwuDQoNCi0gKiooJERfe2l9JCkqKjogw6kgdW0gZmFvciBkZSBlc2NhbGEuIGlndWFsIGEgMSBzZSBvcyBwYXLDom1ldHJvcyBkb3MgaXRlbnMgZXN0aW1hZG9zIG5hIG3DqXRyaWNhIGRhIGxvZ8Otc3RpY2EsIGlndWFsIGEgMSw3IHNlIG9zIHBhcmHDom1ldHJvcyBkb3MgaXRlbnMgc8OjbyBlc3RpbWFkb3MgbmEgbcOpdHJpY2EgZGEgb2dpdmEgbm9ybWFsLg0KDQoNCiMjIEV0YXBhcyBkZSBBbsOhbGlzZSBkb3MgRGFkb3MNCg0KLSBPYnRlbsOnw6NvIGRhIGJhc2UgcMO6YmxpY2EgKG1pY3JvZGFkb3MpIGRvIEVOQURFLzIwMTggbm8gc8OtdGlvIGRvIElORVA7DQotIFNlbGXDp8OjbyBkb3MgQXRyaWJ1dG9zIChjb2x1bmFzKTsNCi0gVmVyaWZpY2HDp8OjbyBkb3MgZGFkb3MsIGEgZmltIGRlIGlkZW50aWZpY2FyIGRhZG9zIG51bG9zIG91IGludsOhbGlkb3M7DQotIFJlbW/Dp8OjbyBkb3MgZGFkb3MgbnVsb3Mgb3UgY29uc2lkZXJhZG9zIGludsOhbGlkb3M7DQotIEFuw6FsaXNlIGRvcyBkYWRvcywgaW5jbHVpbmRvIGFzIGVzdGF0w61zdGljYXM7DQotIEdlcmHDp8OjbyBkZSBHcsOhZmljb3MgZSBNYXBhczsNCg0KIyAqKkRlc2VtcGVuaG8gZG8gQ3Vyc28gZGUgRGlyZWl0byoqIA0KIyMgT2JqZXRpdm8gR2VyYWwNCg0KTWVuc3VyYXIgbyBEZXNlbXBlbmhvIChwcm9maWNpw6puY2lhKSBkb3MgRXN0dWRhbnRlcyBkbyBjdXJzbyBkZSBESVJFSVRPIG5vIEVOQURFIHBvciBtZWlvIGRhIFRlb3JpYSBkYSBSZXNwb3N0YSBhbyBJdGVtIChUUkkpLCBpbmRpY2FuZG8gcGVyc3BlY3RpdmFzIGRlIHVzbyBkb3MgcmVzdWx0YWRvcyBwYXJhIG8gYXByaW1vcmFtZW50byBkbyBQcm9qZXRvIFBvbMOtdGljbyBQZWRhZ8OzZ2ljbyBkbyBDRVNVUEEuDQoNCiMjIE9iamV0aXZvcyBFc3BlY8OtZmljb3MNCg0KLSBJZGVudGlmaWNhciBxdWFsIG8gY29uaGVjaW1lbnRvIGVzcGVjaWZpY2FtZW50ZSBlbSBEaXJlaXRvLCBkb21pbmFkbyBwZWxvcyBhbHVub3M7DQotIENvbXBhcmFyIGEgZGlmaWN1bGRhZGUgZGEgcHJvdmEgZW0gcmVsYcOnw6NvIGFvIGNvbmhlY2ltZW50byAocHJvZmljacOqbmNpYSkgZG8gZ3J1cG8gZGUgZXN0dWRhbnRlczsNCi0gQ29tcHJhciBvcyBSZXN1bHRhZG9zIGRvIEVOQURFLzIwMTggZG8gY3Vyc28gZGUgRGlyZWl0byBDRVNVUEEgdmVyc3VzIEJyYXNpbDsNCi0gRGlzY3V0aXIgYXMgY29udHJpYnVpw6fDtWVzIGRhIEF2YWxpYcOnw6NvIGVtIExhcmdhIEVzY2FsYSBwYXJhIG8gcHJvY2Vzc28gZGUgZm9ybWHDp8OjbyBkb3MgZXN0dWRhbnRlcyBkb3MgY3Vyc29zIGRlIGdyYWR1YcOnw6NvIGRvIENFU1VQQS4NCg0KDQojIyBQYXJ0aWNpcGFudGVzDQpBIHBvcHVsYcOnw6NvIGRvIGVzdHVkbyDDqSBjb25zdGl0dcOtZGEgcGVsb3MgYWx1bm9zIGNvbmNsdWludGVzIGRvIGN1cnNvIGRlIGdyYWR1YcOnw6NvIGVtIERpcmVpdG8gZG8gQ0VTVVBBIG5vIFBhcsOhLiBGb3JhbSBpbnNjcml0b3MgcGFyYSBhcHJvdmEgZG8gRU5BREUvMjAxOCB1bSB0b3RhbCBkZSAyNTAgZXN0dWRhbnRlcywgc2VuZG8gYSBwcm92YSByZXNvbHZpZGEgcG9yIDI0NSBlc3R1ZGFudGVzIGNvbmNsdWludGVzLg0KDQojIyBJbnN0cnVtZW50byBBdmFsaWF0aXZvDQoNCi0gUGFyYSBvIGVzdHVkbyBmb3JhbSBjb25zaWRlcmFkYXMsIGV4Y2x1c2l2YW1lbnRlLCBhcyBxdWVzdMO1ZXMgb2JqZXRpdmFzLCBvdSBzZWphIDM1KHRyaW50YSBlIGNpbmNvKSBxdWVzdMO1ZXMsIChvaXRvIGRlIGZvcm1hw6fDo28gZ2VyYWwgZSB2aW50ZSBlIHNldGUgZGUgY29uaGVjaW1lbnRvIGVzcGVjw61maWNvKS4NCg0KLSBPcyBtaWNyb2RhZG9zIGNvbGV0YWRvcyBmb3JtYSBkaWNvdG9taXphZG9zLCBvdSBzZWphLCBjb21vIGFzIHJlc3Bvc3RhIGRvcyBtaWNyb2RhZG9zIGRpc3BvbmliaWxpemFkb3MgcGVsbyBJTkVQIHPDo28gYXByZXNlbnRhZG9zIG5hIGZvcm1hIGRlIGFsdGVybmF0aXZhcyBBLCBCLCBDLCBEIG91IEUsIGVzdGFzIGZvcmFtIGNvbXBhcmFkYXMgYW8gZ2FiYXJpdG8uIEFzc2ltLCBhcyByZXNwb3N0YXMgY29ycmV0YXMgcmVjZWJlcmFtIG8gdmFsb3IgMSh1bSkgZSBhcyByZXNwb3N0YXMgZXJyYWRhcyBmb3JhbSBzaXNidXN0aXR1w61kYXMgcG9yIDAoemVybykuDQoNCiMjIFJlY3Vyc29zIENvbXB1dGFjaW9uYWlzDQoNClBhcmEgbWVuc3VyYcOnw6NvIGRvIGRlc2VtcGVuaG8gKHByb2ZpY2nDqm5jaWEpIGRvcyBlc3R1ZGFudGVzIG5vIEVOQURFIGZvaSBpbXBsZW1lbnRhZGEgdW0gc2NyaXB0IG5vIHNvZnR3YXJlIFItUHJvamVjdCB2ZXJzw6NvIDQuMCBlIHVtIGFtYmllbnRlIGRlIGRlc2Vudm9sdmltZW50byBpbnRlZ3JhZG8gY2hhbWFkbyBSc3R1ZGlvIHZlcnPDo28gMS4xLjUgY29tIHVzbyBkb3MgcGFjb3RlczoNCg0KDQojIyMgQ2FycmVnYW5kbyBvcyBQYWNvdGVzDQojIyMjIFBhY290ZXMgcGFyYSBUUkkNCg0KUGFyYSBNZW5zdXJhw6fDo28gZG8gRGVzZW1wZW5obyAocHJvZmljacOqbmNpYSB2aWEgVFJJKSBkb3MgZXN0dWRhbnRlcyBkZSBEaXJlaXRvIG1hdHJpY3VsYWRvcyBubyBDRVNVUEEgcXVlIGZpemVyYW0gYSBwcm92YSBkbyBFTkFERSBFTSAyMDE4LCBmb2kgbmVjZXNzw6FyaW8gb3Mgc2VndWludGVzIHBhY290ZXMuDQoNCmBgYHtyIFBhY290ZXMxLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShtaXJ0KSAgICAjIE11bHRpZGltZW5zaW9uYWwgSXRlbSBSZXNwb25zZSBUaGVvcnkgDQpsaWJyYXJ5KGx0bSkgICAgICMgTGF0ZW50IFRyYWl0IE1vZGVscyB1bmRlciBJUlQNCmxpYnJhcnkoaXJ0b3lzKSAgIyBBIENvbGxlY3Rpb24gb2YgRnVuY3Rpb25zIFJlbGF0ZWQgdG8gSXRlbSBSZXNwb25zZSBUaGVvcnkgKElSVCkNCmxpYnJhcnkocHN5Y2gpICAgIyBQcm9jZWR1cmVzIGZvciBQc3ljaG9sb2dpY2FsLCBQc3ljaG9tZXRyaWMsIGFuZCBQZXJzb25hbGl0eSBSZXNlYXJjaA0KYGBgDQoNClBhcmEgbyBkZXNlbnZvbHZpbWVudG8gZGUgdW0gYW1iaWVudGUgZGUgdmlhc3VhbGl6YcOnw6NvIGRvcyByZXN1bHRhZG9zLCBmb2kgdXRpbGl6YWRvIG9zIHJlY3Vyc29zIGRvIHBhY290ZSBSTWFya2Rvd24gY29tIGFsZ3VucyByZWN1cm9zIGV4dHJhcy4NCg0KIyMjIyBQYWNvdGVzIHBhcmEgUk1hcmtkb3duDQpgYGB7ciBQYWNvdGVzMiwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoZHBseXIpICAgICAgICMgQSBHcmFtbWFyIG9mIERhdGEgTWFuaXB1bGF0aW9uIA0KbGlicmFyeShEVCkgICAgICAgICAgIyBBIFdyYXBwZXIgb2YgdGhlIEphdmFTY3JpcHQgTGlicmFyeSAnRGF0YVRhYmxlcycgDQpsaWJyYXJ5KHJzdGF0aXgpICAgICAjIFBpcGUtRnJpZW5kbHkgRnJhbWV3b3JrIGZvciBCYXNpYyBTdGF0aXN0aWNhbCBUZXN0cyANCmxpYnJhcnkodGlueXRleCkgICAgICMgRmF6ZXIgRsOzcm11bGFzIHZpYSBMYXRleCAgDQpsaWJyYXJ5KGtuaXRyKSAgICAgICAjIEEgR2VuZXJhbC1QdXJwb3NlIFBhY2thZ2UgZm9yIER5bmFtaWMgUmVwb3J0IA0KbGlicmFyeShrYWJsZUV4dHJhKSAgIyBDb25zdHJ1Y3QgQ29tcGxleCBUYWJsZSB3aXRoICdrYWJsZScgYW5kIFBpcGUgU3ludGF4IA0KbGlicmFyeShmb3JtYXR0YWJsZSkgIyBDcmVhdGUgJ0Zvcm1hdHRhYmxlJyBEYXRhIFN0cnVjdHVyZXMgDQpsaWJyYXJ5KGh0bWx0b29scykgICAjIFRvb2xzIGZvciBIVE1MIA0KbGlicmFyeShybWFya2Rvd24pICAgIyBEeW5hbWljIERvY3VtZW50cyBmb3IgUg0KbGlicmFyeShkaXN0aWxsKSAgICAgIyBSTWFya2Rvd24gRm9ybWF0IGZvciBTY2llbnRpZmljIGFuZCBUZWNobmljYWwgV3JpdGluZyANCmBgYA0KDQoNCiMjIyMgUGFjb3RlcyBwYXJhIFZpYXN1YWxpemHDp8OjbyBHcsOhZmljYQ0KDQpQYXJhIGEgdmlzdWFsaXphw6fDo28gZ3LDoWZpY2EgZG9zIG1pY3JvZGFkb3Mgc29icmUgbyBFbmFkZSAyMDE4LCBzZXLDo28gdXRpbGl6YWRvcyB2w6FyaW9zIHBhY290ZXMgY29tYmluYWRvcy4NCg0KYGBge3IgUGFjb3RlczMsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KGdncGxvdDIpICAgIA0KbGlicmFyeShwbG90bHkpIA0KbGlicmFyeShnZ3B1YnIpIA0KbGlicmFyeShncmlkRXh0cmEpDQpsaWJyYXJ5KGdndGhlbWVzKQ0KYGBgDQoNCg0KDQpgYGB7ciBMZWl0dXJhLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KDQpzZXR3ZCgiQzovVXNlcnMvbWFyaW8gRGhpZWdvL0RvY3VtZW50cy9FTkFERV8yMDE4X1JNYXJrZG93biIpDQpCYXNlX0NvbXBsZXRhPXJlYWQudGFibGUoIm1pY3JvZGFkb3NfZW5hZGVfMjAxOC50eHQiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXI9VFJVRSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgc2VwPSI7IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgZGVjPSIsIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgY29sQ2xhc3Nlcz1jKE5UX09CSl9GRz0ibnVtZXJpYyIpKQ0KYGBgDQoNCg0KYGBge3IgRmlsdHJvLCBlY2hvPSBGQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCkJhc2UgPSBCYXNlX0NvbXBsZXRhICU+JSBkcGx5cjo6c2VsZWN0IChOVF9PQkpfRkcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fR1JVUE8sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fUkVHSUFPX0NVUlNPLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFX0kwMiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19UVVJOT19HUkFEVUFDQU8sIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQX1NFWE8sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVfSURBREUpDQpESVJFSVRPID0gQmFzZSAlPiUgZmlsdGVyIChDT19HUlVQTyA9PSAyKQ0KRElSRUlUTyA9IERJUkVJVE8gJT4lIG11dGF0ZShDVVJTTyA9IGNhc2Vfd2hlbihDT19HUlVQTz09IDIgfiAiRGlyZWl0byIpKQ0KYGBgDQoNCg0KDQoNCmBgYHtyIFRyYW5zb3JtYWNhbywgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCkRJUkVJVE8gPSBESVJFSVRPICU+JSBtdXRhdGUoUkVHSUFPID0gY2FzZV93aGVuKENPX1JFR0lBT19DVVJTTyA9PSAxIH4gIk5vcnRlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX1JFR0lBT19DVVJTTyA9PSAyIH4gIk5vcmRlc3RlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX1JFR0lBT19DVVJTTyA9PSAzIH4gIlN1ZGVzdGUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fUkVHSUFPX0NVUlNPID09IDQgfiAiU3VsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX1JFR0lBT19DVVJTTyA9PSA1IH4gIkNlbnRyby1PZXN0ZSIpKQ0KDQpESVJFSVRPID0gRElSRUlUTyAlPiUgbXV0YXRlKFJBQ0EgPSBjYXNlX3doZW4oUUVfSTAyID09ICJBIiB+ICJCcmFuY2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFX0kwMiA9PSAiQiIgfiAiUHJldGEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFFX0kwMiA9PSAiQyIgfiAiQW1hcmVsYSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUVfSTAyID09ICJEIiB+ICJJbmRpZ2VuYSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUVfSTAyID09ICJFIiB+ICJORCIpKQ0KDQpESVJFSVRPID0gRElSRUlUTyAlPiUgbXV0YXRlKFRVUk5PID0gY2FzZV93aGVuKENPX1RVUk5PX0dSQURVQUNBTyA9PSAiMSIgfiAiTWF0dXRpbm8iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19UVVJOT19HUkFEVUFDQU8gPT0gIjIiIH4gIlZlc3BlcnRpbm8iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19UVVJOT19HUkFEVUFDQU8gPT0gIjMiIH4gIkludGVncmFsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fVFVSTk9fR1JBRFVBQ0FPID09ICI0IiB+ICJOb3R1cm5vIikpDQoNCkRJUkVJVE8gPSBESVJFSVRPICU+JSBtdXRhdGUoU0VYTyA9IGNhc2Vfd2hlbihUUF9TRVhPID09ICJGIiB+ICJGZW1pbmlubyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBfU0VYTyA9PSAiTSIgfiAiTWFzY3VsaW5vIikpDQpgYGANCg0KDQpgYGB7ciBSZW1vdmVuZG8sIGluY2x1ZGU9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCkRJUkVJVE8gPSBESVJFSVRPWywtYygyLDMsNCw1LDYpXQ0KbmFtZXMoRElSRUlUTylbMV0gPSAiTk9UQVMiDQoNCkRJUkVJVE8gJT4lIA0KICBzZWxlY3QoTk9UQVMpICU+JSANCiAgZ3JvdXBfYnkoTk9UQVMpICU+JSANCiAgc3VtbWFyaXNlKHRvdGFsID0gbigpKQ0KDQpESVJFSVRPICU+JSANCiAgc2VsZWN0KFJFR0lBTykgJT4lIA0KICBncm91cF9ieShSRUdJQU8pICU+JSANCiAgc3VtbWFyaXNlKHRvdGFsID0gbigpKQ0KDQpESVJFSVRPICU+JSANCiAgc2VsZWN0KFJBQ0EpICU+JSANCiAgZ3JvdXBfYnkoUkFDQSkgJT4lIA0KICBzdW1tYXJpc2UodG90YWwgPSBuKCkpDQoNCkRJUkVJVE8gJT4lIA0KICBzZWxlY3QoVFVSTk8pICU+JSANCiAgZ3JvdXBfYnkoVFVSTk8pICU+JSANCiAgc3VtbWFyaXNlKHRvdGFsID0gbigpKQ0KDQpESVJFSVRPICU+JSANCiAgc2VsZWN0KFNFWE8pICU+JSANCiAgZ3JvdXBfYnkoU0VYTykgJT4lIA0KICBzdW1tYXJpc2UodG90YWwgPSBuKCkpDQpgYGANCg0KDQoNCiMjIFZpc3VhbGl6YcOnw6NvIEdyw6FmaWNhIE5hY2lvbmFsDQoNCi0gQSBkaXN0cmlidWnDp8OjbyBkYXMgbm90YXMgZG9zIGFsdW5vcyBtYXRyaWN1bGFkb3Mgbm9zIGN1cnNvcyBkZSBEaXJlaXRvIGVtIDIwMTgsIHJlZmVyZW50ZXMgYW9zIG1pY3JvZGFkb3MgZG8gRW5hZGUgcGFyYSB0b2RhcyBhcyB1bmlkYWRlcyBkZSBmZWRlcmHDp8OjbyBubyBCcmFzaWwsIGVzdMOjbyBkaXNzdHJpYnXDrWRvcyBwb3IgUmHDp2EgZSBSZWdpw6NvLg0KDQoNCiMjIyBBbsOhbGlzZSBkYXMgTm90YXMgZG9zIEFsdW5vcyBwb3IgKipSYcOnYXMqKg0KDQoNCmBgYHtyIGdyYWZpY28xLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KZGFkb3M9RElSRUlUTw0KZ3JhZmljb19nZW9tX2RlbnNpdHkxPWdncGxvdChkYWRvcyxhZXMoTk9UQVMsZmlsbD1SQUNBKSkrDQogIGdlb21fZGVuc2l0eShhbHBoYT0wLjYpKw0KICB4bGFiKCJOb3RhIGRvcyBBbHVub3MiKSsNCiAgeWxhYigiRGVuc2lkYWRlIikrDQogIGdndGl0bGUoIkRlbnNpZGFkZSBkYXMgTm90YXMgZG9zIEFsdW5vcyBwb3IgUmHDp2FzIGUgUmVnacO1ZXMiKSsNCiAgZmFjZXRfZ3JpZCh+UkVHSUFPKQ0KZ2dwbG90bHkoZ3JhZmljb19nZW9tX2RlbnNpdHkxKQ0KYGBgDQoNCg0KDQoNCmBgYHtyIGdyYWZpY28yLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KZGFkb3M9RElSRUlUTw0KZ3JhZmljb19oaXN0b2dyYW1hMSA9IGdncGxvdChkYWRvcywgYWVzKHg9Tk9UQVMsZmlsbD1SQUNBKSkrIA0KICBnZW9tX2hpc3RvZ3JhbSgpICsNCiAgZ2d0aXRsZSgiSGlzdG9ncmFtYSBkYXMgTm90YXMgZG9zIEFsdW5vcyBwb3IgUmHDp2FzIGUgUmVnacO1ZXMtRnJlcXXDqm5jaWEgU2ltcGxlcyIpKw0KICB4bGFiKCJOb3RhcyIpICsNCiAgeWxhYigiRnJlcXXDqm5jaWEgc2ltcGxlcyIpICsNCiAgZmFjZXRfZ3JpZCh+UkVHSUFPKQ0KZ2dwbG90bHkoZ3JhZmljb19oaXN0b2dyYW1hMSkNCmBgYA0KDQoNCg0KDQpgYGB7ciBncmFmaWNvMywgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmRhZG9zPURJUkVJVE8NCmdyYWZpY29fYm94cGxvdDEgPSBnZ3Bsb3QoZGFkb3MsIGFlcyh4PVJBQ0EseT1OT1RBUyxmaWxsPVJBQ0EpKSArIA0KICBnZW9tX2JveHBsb3QoKSArDQogIGdndGl0bGUoIkJveC1wbG90IGRhcyBOb3RhcyBkb3MgQWx1bm9zIHBvciBSYcOnYXMgZSBSZWdpw7VlcyIpICsNCiAgeGxhYigiUmHDp2EiKSArDQogIHlsYWIoIk5vdGFzIikgKw0KICBmYWNldF9ncmlkKH5SRUdJQU8pDQpnZ3Bsb3RseShncmFmaWNvX2JveHBsb3QxKQ0KYGBgDQoNCg0KDQoNCg0KDQojIyBDYWxpYnJhw6fDo28gZG9zIEl0ZW5zDQoNCi0gQSBlc3RpbWHDp8OjbyBkb3MgcGFyw6JtZXRyb3MgZG9zIG1vZGVsb3MgYmFzZWFkb3MgbmEgVGVvcmlhIGRhIFJlc3Bvc3RhIGFvIEl0ZW0gZm9pIHJlYWxpemFkYSBwZWxvIE3DqXRvZG8gZGUgKipNw6F4aW1hIFZlcm9zc2ltaWxoYW7Dp2EgTWFyZ2luYWwqKiwgY29tIGEgYXBsaWNhw6fDo28gY29uanVudGEgZGUgdW0gcHJvY2Vzc28gaW50ZXJhdGl2byBjaGFtYWRvIGRlIGFsZ29yaXRtbyAqKk5ld3Rvbi1SYXBoc29uIG91IFNjb3JpbmcgZGUgRmlzaGVyKiosIGNvbmZvcm1lIFtBTkRSQURFIGV0IGFsLiAyMDAwXShodHRwczovL2RvY3MudWZwci5ici9+YWFuam9zL0NFMDk1L0xpdnJvVFJJX0RBTFRPTi5wZGYpLg0KDQotIFBhcmEgYSBjb21wYXJhw6fDtWVzIGVudHJlIG9zIG1vZGVsb3MgZ2VyYWRvcyB1dGlsaXpvdS1zZSBvIFRlc3RlIGRhIFJhesOjbyBkZSBWZXJvc3NpbWlsaGFuw6dhIHBvciBtZWlvIGRhICoqQW5vdmEqKiBlIG9zIGNyaXTDqXJpb3MgKipBSUMgKEFrYWlrZSBJbmZvcm1hdGlvbiBDcml0ZXJpb24pKiogZSAqKkJJQyAoQmF5ZXNpYW4gSW5mb3JtYXRpb24gQ3JpdGVyaW9uKSoqLCBhbMOpbSBkZSBzZXJlbSBwcm9kdXppZG9zIG9zIGdyw6FmaWNvcyBjb20gYXMgQ3VydmFzIENhcmFjdGVyw61zdGljYXMgZG8gSXRlbSwgQ3VydmFzIGRlIEluZm9ybWHDp8OjbyBkbyBJdGVtIGUgRnVuw6fDo28gZGUgSW5mb3JtYcOnw6NvIFRvdGFsIGRvIFRlc3RlLg0KDQoNCiMjIEFwbGljYcOnw6NvOiBFbmFkZSAyMDE4IG5vIENFU1VQQQ0KIyMjIEFuw6FsaXNlIGRvcyBJdGVucyB2aWEgVENUDQoNCi0gRW0gYXZhbGlhw6fDo28gZWR1Y2FjaW9uYWwsIFRDVCB0ZW0gY29tbyBlbGVtZW50byBjZW50cmFsIGEgcHJvdmEgY29tbyB1bSB0b2RvIGUgc2V1cyByZXN1bHRhZG9zIHPDo28gZXhwcmVzc29zIGVtIGVzY29yZXMgYnJ1dG8sIG91IHNlamEsIG5vIG7Dum1lcm8gdG90YWwgb3Ugbm8gcGVyY2VudHVhbCBkZSBpdGVucyByZXNwb25kaWRvcyBjb3JyZXRhbWVudGUuIEFzIHByb3ByaWVkYWRlcyBwc2ljb23DqXRyaWNhcyBkb3MgaXRlbnMgZGUgdW1hIHByb3ZhIHJlYWxhY2lvbmFtLXNlIGFvcyBwYXLDom1ldHJvcyBhIHNlZ3VpOiDDrW5kaWNlIGRlIGRpZmljdWxkYWRlLCDDrW5kaWNlIGRlIGRpc2NyaW1pbmHDp8OjbyBlIGNvcmVsYcOnw6NvIGJpc2VycmlhbCBbQk9UR0FUVE8gZSBBTkRSQURFLCAyMDEyXShodHRwOi8vd3d3LmZjYy5vcmcuYnIvcGVzcXVpc2EvcHVibGljYWNvZXMvZWFlL2FycXVpdm9zLzE3MzMvMTczMy5wZGYpDQoNCi0gQSBhbsOhbGlzZSBkbyBmdW5jaW9uYW1lbnRvIGRlIGNhZGEgcXVlc3TDo28oaXRlbSkgZW0gcmVsYcOnw6NvIGFvIGdydXBvIGRlIGFsdW5vcyByZXNwb25kZW50ZXMsIHBvc3NpYmlsaXRhbToNCiAgICAtICoqTWVkaXIgYSBxdWFsaWRhZGUgZSBvIGZ1bmNpb25hbWVudG8gZG8gaXRlbSoqOyANCiAgICAtICoqVmVyaWZpY2FyIHByb2JsZW1hcyB0ZcOzcmljb3MtdMOpY25pY29zIGRhIGF2YWxpYcOnw6NvL3F1ZXN0w7VlcyoqOyANCiAgICAtICoqVHJhw6dhciB1bSBwZXJmaWwgZG8gYXByZW5kaXphZG8gZG8gZ3J1cG8qKg0KICAgIC0gKipWZXJpZmljYXIgbyBuw612ZWwgZGUgZGlmaWN1bGRhZGUgZGEgcXVlc3TDo28gZW0gcmVsYcOnw6NvIGFxdWVsZXMgZ3J1cG9zKioNCg0KLSBBcHJlc2VudGEtc2UgYWxndW5zIHJlc3VsdGFkb3MgaW1wb3J0YW50ZXMgcGFyYSBhIGNvbXByZWVuw6fDo28gZGEgcG9zdGVyaW9yIGFuw6FsaXNlIGRhIHByb3ZhIGRvIEVOQURFLzIwMTggcGFyYSBvIGN1cnNvIGRlIGdyYWR1YcOnw6NvIGVtIERpcmVpdG8gZG8gQ0VTVVBBLCBkZSBhY29yZG8gY29tIGEgdGFiZWxhIGFiYWl4by4NCg0KDQoqKlRhYmVsYSAwMSoqLiBQZXJjZW50dWFsIGRlIFJlc3Bvc3RhIHBvciBUaXBvIGRlIEFsdGVybmF0aXZhIG5hIFByb3ZhIGRvIEVOQURFLzIwMTggZG8gY3Vyc28gZGUgRGlyZWl0by4NCg0KDQotLS0NCg0KIHwgKipJdGVucy9HYWJhcml0byAqKiB8ICoqQSoqICAgICAgfCAqKkIqKiAgICAgfCAqKkMqKiAgICAgfCAgICAgICoqRCoqIHwgICAgICoqRSoqIHwgDQogfCA6LS0tLTogICAgICAgICAgICAgIHwgOi0tLS06ICAgICB8Oi0tLS06ICAgICB8IDotLS0tOiAgICB8IDotLS0tOiAgICAgfCA6LS0tLTogICAgfA0KIHwgICAgYDAxLUNgICAgICAgICAgICB8ICAxLjMgICAgICAgfCAgNy43ICAgICAgfCAgKio4MS4yKiogfCAgIDkuMCAgICAgIHwgICAwLjkgICAgIHwNCiB8ICAgIGAwMi1BYCAgICAgICAgICAgfCAgKio4MS42OCoqIHwgIDEyLjcgICAgIHwgIDEuNiAgICAgIHwgICAzLjMgICAgICB8ICAgMC44ICAgICB8ICAgIA0KIHwgICAgYDAzLUNgICAgICAgICAgICB8ICA4LjYgICAgICAgfCAgMS4yICAgICAgfCAgKio3Ny42KiogfCAgIDQuOSAgICAgIHwgICA3LjggICAgIHwgDQogfCAgICBgMDQtQmAgICAgICAgICAgIHwgIDUuMyAgICAgICB8ICAqKjY4LjYqKiB8ICAxMi43ICAgICB8ICAgNi41ICAgICAgfCAgIDYuOSAgICAgfCANCiB8ICAgIGAwNS1FYCAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICB8IA0KIHwgICAgICAuLi4gICAgICAgICAgICB8ICAuLi4gICAgICAgfCAgLi4uICAgICAgfCAgLi4uICAgICAgfCAuLi4gICAgICAgIHwgLi4uICAgICAgIHwNCiB8ICAgIGAzNS1FYCAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICB8IA0KDQotLS0NCg0KKipUYWJlbGEgMDIqKi4gUGVyY2VudHVhbCBkZSBhY2VydG9zIHBvciBUaXBvIGRlIEFsdGVybmF0aXZhIG5hIFByb3ZhIGRvIEVOQURFLzIwMTggZG8gY3Vyc28gZGUgRGlyZWl0by4NCg0KLS0tDQoNCiB8ICoqSXRlbnMqKiAgICAgICAgICB8ICoqRXJyb3MqKiAgICAgfCAqKigkbl97MX0kKSoqIHwgKipBY2VydG9zKiogICAgfCAqKigkbl97Mn0kKSoqIHwgDQogfCA6LS0tLS0tLS0tLS0tOiAgICAgfCA6LS0tLS0tLS0tLS06IHw6LS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLTp8IA0KIHwgICAgYFEwMWAgICAgICAgICAgIHwgICAgICAyMi40ICAgICB8ICA1NSAgICAgICAgICAgfCAgNzcsNiAgICAgICAgICB8ICAgMTkwICAgICAgICAgfA0KIHwgICAgYFEwMmAgICAgICAgICAgIHwgICAgICAxOCw0ICAgICB8ICA0NSAgICAgICAgICAgfCAgODEsNiAgICAgICAgICB8ICAgMjAwICAgICAgICAgfCAgICAgICAgICANCiB8ICAgIGBRMDNgICAgICAgICAgICB8ICAgICAgMjIsNCAgICAgfCA1NSAgICAgICAgICAgIHwgIDc3LDYgICAgICAgICAgfCAgIDE5MCAgICAgICAgIHwgICANCiB8ICAgIGBRMDRgICAgICAgICAgICB8ICAgICAgMzEsNCAgICAgfCA3NyAgICAgICAgICAgIHwgNjgsNiAgICAgICAgICAgfCAgIDE2OCAgICAgICAgIHwgICANCiB8ICAgIGBRMDVgICAgICAgICAgICB8ICAgICAgMzQsMyAgICAgfCA4NCAgICAgICAgICAgIHwgNjUsNyAgICAgICAgICAgfCAgIDE2MSAgICAgICAgIHwgICAgDQogfCAgICAgIC4uLiAgICAgICAgICAgfCAgLi4uICAgICAgICAgIHwgIC4uLiAgICAgICAgICB8ICAuLi4gICAgICAgICAgIHwgLi4uICAgICAgICAgICB8IA0KIHwgICAgYFEzMmAgICAgICAgICAgIHwgICAgICA3OCw4ICAgICB8IDE5MyAgICAgICAgICAgfCAyMSwyICAgICAgICAgICB8ICAgNTIgICAgICAgICAgfCAgICAgICAgICAgICAgIA0KIHwgICAgYFEzM2AgICAgICAgICAgIHwgICAgIDQ3LDggICAgICB8IDExNyAgICAgICAgICAgfCA1MiwyICAgICAgICAgICB8ICAxMjggICAgICAgICAgfCAgICAgICAgICAgICAgIA0KIHwgICAgYFEzNGAgICAgICAgICAgIHwgICAgIDc3LDYgICAgICB8IDE5MCAgICAgICAgICAgfCAyMiw0ICAgICAgICAgICB8ICAgNTUgICAgICAgICAgfCAgICAgICAgICAgICAgDQogfCAgICBgUTM1YCAgICAgICAgICAgfCAgICAgNjUsMyAgICAgIHwgMTYwICAgICAgICAgICB8IDM0LDcgICAgICAgICAgIHwgICA4NSAgICAgICAgICB8ICAgICAgICAgICAgICANCi0tLQ0KDQoNCi0gTm9zIHJlc3VsdGFkb3Mgb2J0aWRvcyBwZWxvcyByZXNwb25kZW50ZXMgKHRhYmVsYSAwMyksIG9ic2VydmEtc2Ugbm90YXMgdmFyaWFuZG8gZW50cmUgOSBhIDI3IGFjZXJ0b3MsIGRlIHVtIHRvdGFsIGRlIDM1IGl0ZW5zLiBEZXN0YWNhLXNlIHF1ZSBuw6NvIG9jb3JyZXUgZXNjb3JlIG51bG8gKG5lbmh1bSBhY2VydG8pLCBjb21vIHRhbWLDqW0gbsOjbyBleGlzdGlyYW0gcmVzcG9uZGVudGUgcXVlIG9idGl2ZXJhbSBlc2NvcmUgdG90YWwuIEEgbWFpb3JpYSBhY2VydG91IGVudHJlIDE2IGUgMjEgcXVlc3TDtWVzLiANCg0KKipUYWJlbGEgMDMqKi4gRGVzY3Jpw6fDo28gZG9zIEVzY29yZXMgQnJ1dG9zIHBhcmEgb3MgaXRlbnMgbmEgUHJvdmEgZG8gRU5BREUvMjAxOCBkbyBjdXJzbyBkZSBEaXJlaXRvLg0KDQotLS0NCg0KIHwgKipFc3RhdMOtc3RpY2EgKiogICAgfCAqKkZvcm1hw6fDo28gR2VyYWwqKiB8ICoqQ29tcG9uZW50ZSBFc3BlY8OtZmljbyoqIHwgKipOb3RhIEJydXRhKiogfCANCiB8IDotLS0tOiAgICAgICAgICAgICAgfCAgICAgICAgIDotLS0tOiAgICAgfCAgICAgICAgICAgOi0tLS06ICAgICAgICAgIHwgICAgICA6LS0tLTogICAgfCAgICAgIA0KIHwgICAgYE7CuiBkZSBJdGVuc2AgICAgfCAgICAgICAgIDggICAgICAgICAgfCAgICAgICAgICAgICAyNyAgICAgICAgICAgIHwgICAgICAzNSAgICAgICAgfCAgIA0KIHwgICAgYE3DqWRpYWAgICAgICAgICAgfCAgICAgICAgNi4xICAgICAgICAgfCAgICAgICAgICAgIDEyLjMgICAgICAgICAgIHwgICAgICAxOC40ICAgICAgfCAgICAgICANCiB8ICAgIGBNb2RhYCAgICAgICAgICAgfCAgICAgICAgIDcgICAgICAgICAgfCAgICAgICAgICAgIDEyICAgICAgICAgICAgIHwgICAgICAxNiAgICAgICAgfCANCiB8ICAgIGBNw61uaW1vYCAgICAgICAgIHwgICAgICAgIDEoMTIuOCUpICAgIHwgICAgICAgICAgICA0KDE0LjglKSAgICAgICB8ICAgICAgOSgyNy41JSkgIHwgDQogfCAgICBgTcOheGltb2AgICAgICAgICB8ICAgICAgICA4KDEwMCUpICAgICB8ICAgICAgICAgICAgMTkoNzAuNCUpICAgICAgfCAgICAgIDI3KDc3LjElKSB8IA0KIHwgICAgYDHCuiBRdWFydGlsYCAgICAgfCAgICAgICAgNSg2Mi41JSkgICAgfCAgICAgICAgICAgIDEwKDM3JSkgICAgICAgIHwgICAgICAxNig0NS43JSkgfCANCiB8ICAgIGAywrogUXVhcnRpbGAgICAgIHwgICAgICAgIDcoODcuNSUpICAgIHwgICAgICAgICAgICAxNCg1MS45JSkgICAgICB8ICAgICAgMjEoNjAlKSAgIHwgDQoNCi0tLQ0KDQotIEFzIHF1ZXN0w7VzIGFwbGljYWRhcyBuYSBwcm92YSBkbyBFTkFERSBzw6NvIGF2YWxpYWRhcyBpbmljaWFsbWVudGUgcXVhbnRvIGFvIG7DrXZlbCBkZSBmYWNpbGlkYWRlLiBQYXJhIGlzc28sIHZlcmlmaWNhLXNlIG8gcGVyY2VudHVhbCBkZSBhY2VydG9zIGRlIGNhZGEgcXVlc3TDo28gZGEgcHJvdmEuIEEgdGFiZWxhIDA0IGFwcmVzZW50YSBhcyBjbGFzc2lmaWNhw6fDtWVzIGRlIHF1ZXN0w7VlcyBzZWd1bmRvIG8gcGVyY2VudHVhbCBkZSBhY2VydG9zLCBjb25zaWRlcmFuZG8gY29tbyAqKsOMbmRpZGUgZGUgRmFjaWxpZGFkZSoqLiANCg0KKipUYWJlbGEgMDQqKi4gRGlzdHJpYnVpw6fDo28gZG9zIGl0ZW5zIHBvciDDjG5kaWNlIGRlIEZhY2lsaWRhZGUgbmEgUHJvdmEgZG8gRU5BREUvMjAxOCBkbyBjdXJzbyBkZSBEaXJlaXRvLg0KIA0KIC0tLQ0KIA0KIHwgKipDbGFzc2lmaWNhw6fDo28gKiogfCAqKkluZGljZSBkZSBGYWNpbGlkYWRlKiogfCAqKk7CuiBkbyBJdGVucyoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICoqTsK6IGRlIEFtb3N0cmEqKiB8IA0KIHwgOi0tLS0tLS0tLS0tLTogICAgIHwgICA6LS0tLS0tLS0tLS0tOiAgICAgICAgIHwgICAgIDotLS0tLS0tLS0tLS06ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA6LS0tLS0tLS0tLS0tOiAgIHwgICAgICANCiB8ICAgIGBNdWl0byBGw6FjaWxgICAgfCAgICAgMC45MSBvdSBtYWlzICAgICAgICAgfCAgICAgICAgOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAxICgyLjklKSAgICAgfCAgIA0KIHwgICAgYEbDoWNpbGAgICAgICAgICB8ICAgICAwLjcxIGEgMC45MCAgICAgICAgICB8ICAxLDIsMyw2LDcsOCwxMiwxMywyNSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgIDkgKDI1LjclKSAgICB8ICAgICAgIA0KIHwgICAgYE1vZGVyYWRvYCAgICAgIHwgICAgIDAuMzEgYSAwLjcwICAgICAgICAgIHwgIDQsNSwxMCwxNCwxNSwxNiwxNywyMCwyMSwyNCwyNywzMCwzMSwzMywzNSB8ICAgICAgMTUgKDQyLjklKSAgIHwgDQogfCAgICBgRGlmw61jaWxgICAgICAgIHwgICAgIDAuMTEgYSAwLjMwICAgICAgICAgIHwgIDExLDE4LDE5LDIzLDI2LDI4LDI5LDMyLDM0ICAgICAgICAgICAgICAgICB8ICAgICAgOSgyNy41JSkgICAgIHwgDQogfCAgICBgTXVpdG8gRGlmw61jaWxgIHwgICAgIDAuMDAgYSAwLjEwICAgICAgICAgIHwgICAgICAgICAgICAyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgMSgyLjklKSAgICAgIHwgDQoNCi0tLQ0KDQotIEFzIHF1ZXN0w7VlcyBvYmpldGl2YXMgYXBsaWNhZGFzIG5hIHByb3ZhIGRvIEVOQURFIGRldmVtIHRlciB1bSBuw612ZWwgbcOtbmltbyBkZSBwb2RlciBkZSBkaXNjcmltaW5hw6fDo28uIFBhcmEgc2VyIGNvbnNpZGVyYWRhIGFwdGEgYSBhdmFsaWFyIG9zIGFsdW5vcw0KDQoNCg0KKipUYWJlbGEgMDUqKi4gRGlzdHJpYnVpw6fDo28gZG9zIGl0ZW5zIHBvciDDjG5kaWNlIGRlIERpc2NyaW1pbmHDp8OjbyBuYSBQcm92YSBkbyBFTkFERS8yMDE4IGRvIGN1cnNvIGRlIERpcmVpdG8uDQoNCi0tLQ0KDQogfCAqKkNsYXNzaWZpY2HDp8OjbyAqKiB8ICoqSW5kaWNlIGRlIERpc2NyaW1uYcOnw6NvKiogfCAqKk7CuiBkbyBJdGVucyoqICAgICAgICAgICAgICAgICAgICB8ICoqTsK6IGRlIEFtb3N0cmEqKiB8IA0KIHwgOi0tLS0tLS0tLS0tLTogICAgIHwgICA6LS0tLS0tLS0tLS0tOiAgICAgICAgICAgfCAgICAgOi0tLS0tLS0tLS0tLTogICAgICAgICAgICAgICAgIHwgIDotLS0tLS0tLS0tLS06ICAgfCAgICAgIA0KIHwgICAgYE11aXRvIEJvbWAgICAgIHwgICAgIDAuNDAgb3UgbWFpcyAgICAgICAgICAgfCAgICAgICAgMTUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAxICgyLjklKSAgICAgfCAgIA0KIHwgICAgYEJvbWAgICAgICAgICAgIHwgICAgIDAuMzAgYSAwLjM5ICAgICAgICAgICAgfCAgMSwyLDQsNSw3LDExLDE3LDIwLDI0LDI1LDI4ICAgICAgIHwgICAgIDExICgzMS40MyUpICAgfCAgICAgICANCiB8ICAgIGBNw6lkaW9gICAgICAgICAgfCAgICAgMC4yMCBhIDAuMjkgICAgICAgICAgICB8ICAzLDEyLDEzLDE0LDI3LDI5LDMxLDMzLDM0ICAgICAgICAgfCAgICAgIDkgKDI1LjcxJSkgICB8IA0KIHwgICAgYEZyYWNvYCAgICAgICAgIHwgICAgICQgPCAwLjE5JCAgICAgICAgICAgICAgfCAgNiw4LDksMTAsMTYsMTgsMTksMjIsMjMsMjYsMzIsMzUgIHwgICAgICAxMigzNCwyOSUpICAgfCANCg0KLS0tDQoNCg0KDQojIyMgQW7DoWxpc2UgZG9zIEl0ZW5zIHZpYSBUUkkNCiMjIyMgQ29ycmVsYcOnw6NvIEJpc3NlcmlhbC9BbHBoYSBkZSBDcm9uYmFjaA0KDQotIFPDo28gYXByZXNlbnRhZG9zIG9zIGRhZG9zIGRlIGNvcnJlbGHDp8OjbyBiaXNzZXJpYWwsIHNlbmRvIHVtYSBtZWRpZGEgZXN0YXTDrXN0aWNhIGRhIGNhcGFjaWRhZGUgZGUgZGlzY3JpbWluYcOnw6NvIGRvIGl0ZW0sIG5hIG1lZGlkYSBlbSBxdWUgdmVyaWZpY2FyIHNlIHVtIGRldGVybWluYWRvIGl0ZW0gYmluw6FyaW8gYXByZXNlbnRhIGNvcnJlbGHDp8OjbyBzaWduaWZpY2F0aXZhIGNvbSBvIGVzY29yZSBicnV0byByZXN1bHRhbnRlIGRvIGNvbmp1bnRvIGRvcyBpdGVucyBkbyBFTkFERS4NCg0KLSBQYXJhIGF2YWxpYXIgYSBxdWFsaWRhZGUgZG8gaW5zdHJ1bWVudG8gZGUgbWVkaWRhIChmaWRlZGlnbmlkYWRlKSwgZm9pIGFwbGljYWRvIG8gY29lZmljaWVudGUgYWxwaGEgZGUgQ3JvbmJhY2guIA0KDQoNCioqVGFiZWxhIDA2KiouIENvcnJlbGHDp8OjbyBCaXNzZXJpYWwgZSBBbHBoYSBkZSBDcm9uYmNoIHBhcmEgb3MgaXRlbnMgbmEgUHJvdmEgZG8gRU5BREUvMjAxOCBkbyBjdXJzbyBkZSBEaXJlaXRvLg0KDQogfCAqKkl0ZW5zKiogICAgfCAqKkNvcnJlbGHDp8OjbyBCaXNzZXJpYWwgJChyX3twYn0pJCoqIHwgICoqQWxwaGEgZGUgQ3JvbmJhY2ggJChcYWxwaGFfe2l9KSQqKiB8IA0KIHw6LS0tLS0tLS0tLS0tOnwgICAgICAgICAgOi0tLS0tLS0tLS0tOiAgICAgICAgICAgIHwgICAgICAgICAgICAgOi0tLS0tLS0tLS0tLTogICAgICAgICAgfA0KIHwgICAgICAgIGBRMDFgIHwgICAgICAgICAgIDAuMzAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMC42MiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIA0KIHwgICAgICAgIGBRMDJgIHwgICAgICAgICAgIDAuMzQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMC42MSAgICAgICAgICAgICAgICAgICAgfCAgICAgICANCiB8ICAgICAgICBgUTAzYCB8ICAgICAgICAgICAwLjIyICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIDAuNjIgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIA0KIHwgICAgICAgIGBRMDRgIHwgICAgICAgICAgIDAuMzggICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMC42MSAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIA0KIHwgICAgICAgIGBRMDVgIHwgICAgICAgICAgIDAuMzUgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMC42MiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgDQogfCAgICAgICAgICAuLi4gfCAgICAgICAgICAgLi4uLi4gICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAuLi4uLi4gICAgICAgICAgICAgICAgICB8DQogfCAgICAgICAgYFEzMmAgfCAgICAgICAgICAgMC4xNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAwLjYyICAgICAgICAgICAgICAgICAgICB8IA0KIHwgICAgICAgIGBRMzNgIHwgICAgICAgICAgIDAuMjggICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMC42MiAgICAgICAgICAgICAgICAgICAgfA0KIHwgICAgICAgIGBRMzRgIHwgICAgICAgICAgIDAuMjMgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMC42MiAgICAgICAgICAgICAgICAgICAgfA0KIHwgICAgICAgIGBRMzVgIHwgICAgICAgICAgIDAuMTcgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgMC42MyAgICAgICAgICAgICAgICAgICAgfA0KDQotIEZvcmFtIGVsaW1pbmFkb3MgMiBkb3MgMzUgaXRlbnMgYW5hbGlzYWRvcywgcXVlIGFwcmVzZW50YXJhbSBjb2VmaWNpZW50ZXMgZGUgY29ycmVsYcOnw6NvIGJpc3NlcmlhbCBtdWl0byBiYWl4b3MsIGltcG9zc2liaWxpdGFuZG8gYSBjb252ZXJnw6puY2lhIG5hIGVzdGltYcOnw6NvIGRvIG1vZGVsbywgb3Ugc2VqYSwgbsOjbyBwZXJtaXRpcmFtIGEgcmVhbGl6YcOnw6NvIGRhIGNhbGlicmHDp8OjbyBkZSBwYXLDom1ldHJvcyBkYSBUUkkuDQoNCiMjIyMgVW5pZGltZW5zaW9uYWxpZGFkZSBkb3MgSXRlbnMNCg0KLSBPcyBtb2RlbG9zIGRhIFRSSSBwcmVzc3Vww7VlbS1zZSBxdWUgdG9kb3Mgb3MgaXRlbnMgbWVkZW0gdW1hIMO6bmljYSBoYWJpbGlkYWRlLiBBcGVzYXIgZG8gZGVzZW1wZW5obyBodW1hbm8gc2VyIG11bHRpLWRldGVybWluYWRvLCB1bWEgdmV6IHF1ZSBtYWlzIGRlIHVtYSBoYWJpbGlkYWRlIHBhcnRpY2lwYSBkYSBleGVjdcOnw6NvIGRlIHF1YWxxdWVyIHRhcmVmYSwgcGFyYSBzYXRpc2ZhemVyIG8gcG9zdHVsYWRvIGRhIHVuaWRpbWVuc2lvbmFsaWRhZGUgZG8gdGVzdGUsIMOpIHN1ZmljaWVudGUgYWRtaXRpciBxdWUgaGFqYSB1bSBmYXRvciBkb21pbmFudGUgcmVzcG9uc8OhdmVsIHBlbG8gZGVzZW1wZW5obyBkZSB0b2RvcyBvcyBpdGVucyBkbyB0ZXN0ZSBubyBFTkFERSBbKExPUkQgZSBIQU1CTEVUT04sIDE5ODIpXShodHRwczovL2NvcmUuYWMudWsvZG93bmxvYWQvcGRmLzMxMTUzOTM3LnBkZikuDQoNCg0KLSBBIGV2aWTDqm5jaWEgZGUgdmFsaWRhZGUgcHNpY29tw6l0cmljYSBkZSBjb25zdHJ1dG8gcGFyYSBhIHByb3ZhIGRvaSBFTkFERS8yMDE4LCBmb2kgb2J0aWRhIGEgcGFydGlyIGRhICoqQW7DoWxpc2UgRmF0b3JpYWwoQUYpKiogZG9zIDM1IGl0ZW5zIHF1ZSBjb21ww7VlbSBhIHByb3ZhLiBBIG1lZGlkYSBkZSBhZGVxdWHDp8OjbyBkYSBhbW9zdHJhIGRlIGthaXNlci1NZXllci1PbGtpbihLTU8pIHBhcmEgYSBBRiwgaWd1YWwgYSAwLjc2LCBpbmRpY291IHVtIHJlc3VsdGFkbyBzYXRpc2ZhdMOzcmlvLg0KDQoNCg0KKipUYWJlbGEgMDcqKi4gVGVzdGUgZGUgQ29uZmlhYmlsaWRhZGUgcGFyYSBvcyBpdGVucyBuYSBQcm92YSBkbyBFTkFERS8yMDE4IGRvIGN1cnNvIGRlIERpcmVpdG8uDQoNCiB8ICAgICoqVGVzdGVzKiogICAgICAgICAgIHwgKipGb3JtYcOnw6NvIEdlcmFsKiogIHwgICAqKkNvbXBvbmVudGUgRXNwZWPDrWZpY28qKiB8ICAqKk5vdGEgQnJ1cmEqKiAgfA0KIHwgICAgOi0tLS0tLS0tLS0tLTogICAgICAgfCAgOi0tLS0tLS0tLS0tOiAgICAgIHwgICAgICAgIDotLS0tLS0tLS0tLS06ICAgICAgIHwgICA6LS0tLS0tLS0tLS0tOiB8DQogfCAgYEFscGhhIGRlIENyb21iYWNoYCAgICB8ICAgICAgICAgICAwLjcxICAgICAgfCAgICAgICAgICAgICAwLjc4ICAgICAgICAgICAgfCAgICAgICAwLjc2ICAgICAgIHwgDQogfCAgIGBUZXN0ZSBkZSBLTU9gICAgICAgICB8ICAgICAgICAgICAwLjcyICAgICAgfCAgICAgICAgICAgICAwLjczICAgICAgICAgICAgfCAgICAgICAwLjc2ICAgICAgIHwNCiB8ICAgYFRlc3RlIGRlIGJhcnRsZXR0YCAgIHwgICAgUC12YWxvcj0wLjAwMSAgICB8ICAgICAgIFAtdmFsb3I9MC4wMDEgICAgICAgICB8ICBQLXZhbG9yPTAuMDAxICAgfCAgDQogfCAgIGBNU0FgICAgICAgICAgICAgICAgICB8ICAgICAgICAgID4gMC43MCAgICAgfCAgICAgICAgICAgID4gMC43MCAgICAgICAgICAgfCAgICAgICAgPiAwLjcwICAgIHwNCiAgICANCg0KLSBPIHRlc3RlIGRlIGVzZmVyaWNpZGFkZSBkZSBCYXJ0bGV0dCBxdWUgcGVybWl0ZSBhdmFsaWFyIGEgaGlww7N0ZXNlIGRlIGlndWFsZGFkZSBkZSB2YXJpw6JuY2lhLWNvdmFyacOibmNpYSBubyBncnVwbyBlc3R1ZGFkbywgaXN0byDDqSwgcXVlIGEgbWF0cml6IGRlIGNvcnJlbGHDp8OjbyDDqSB1bWEgbWF0cml6IGlkZW50aWRhZGUsIHJldmVsb3UgcXVlIGV4aXN0ZSBjb3JyZWxhw6fDo28gZW50cmUgYXMgdmFyacOhdmVpcyBlc3R1ZGFkYXMgWyhIQUlSIGV0IGFsLCAyMDA1KV0oaHR0cHM6Ly9kbHNjcmliLmNvbS9kb3dubG9hZC9oYWlyLWotZi1hbi1hYWN1dGUtbGlzZS1tdWx0aXZhcmlhZGEtZGUtZGFkb3MtNi1vcmRmLWVkaS1jY2VkaWwtYXRpbGRlLW8tcGRmXzU4ZTY3NTNkZGMwZDYwMzAzNWRhOTdmOF9wZGYpDQoNCg0KLSBBIHBhcnRpciBkb3MgZGFkb3MsIGFuw6FsaXNlIGRhIGRpbWVuc2lvbmFsaWRhZGUgZG8gY29uanVudG8gZGUgaXRlbnMgZm9pIHJlYWxpemFkYSBhdHJhdsOpcyBkYSAqKkFuw6FsaXNlIEZhdG9yaWFsIGRlIEluZm9ybWHDp8OjbyBDb21wbGV0YSoqIFsoTUFUT1MgZSBST0RSSUdVRVMsIDIwMTkpXShodHRwczovL3JlcG9zaXRvcmlvLmVuYXAuZ292LmJyL2JpdHN0cmVhbS8xLzQ3OTAvMS9MaXZybyUyMEFuJUMzJUExbGlzZSUyMEZhdG9yaWFsLnBkZikuIA0KDQoNCg0KYGBge3IgTGVpdHVyYXRyaSwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0Kc2V0d2QoIkM6L1VzZXJzL21hcmlvIERoaWVnby9Eb2N1bWVudHMvRU5BREVfMjAxOF9STWFya2Rvd24iKQ0KQmFuY29fRGlyZWl0b19UUkk9cmVhZC5jc3YoIlByb3ZhX0RpcmVpdG9fMjAxOC5jc3YiLGhlYWRlcj1UUlVFLHNlcD0iOyIpDQpgYGANCg0KDQoNCmBgYHtyIGVzdGltYWNhbywgZWNobz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0NCm1pcnRfMnBsIDwtIG1pcnQoQmFuY29fRGlyZWl0b19UUkksIDEsIGl0ZW10eXBlID0gIjJQTCIsIHNlPSBUUlVFLCBzZS50eXBlID0gIkJMIikgDQpjb2VmKG1pcnRfMnBsLCBJUlRwYXJzID0gVFJVRSwgc2ltcGxpZnkgPSBUUlVFKSAjIHBhcmFtZXRyb3MgZG9zIGl0ZW5zDQpgYGANCg0KDQojIyMjIFZpc3VhbGl6YcOnw6NvIEdyw6FmaWNhcyBkb3MgSXRlbnMNCiMjIyMjIEZ1bsOnw6NvIGRlIEluZm9ybWHDp8OjbyBkbyBUZXN0ZQ0KDQotIEEgRmlndXJhIGFiYWl4byBtb3N0cmEgYSBDdXJ2YSBkZSBJbmZvcm1hw6fDo28gZG8gVGVzdGUsIHF1ZSDDqSB1bWEgcmVwcmVzZW50YcOnw6NvIGdyw6FmaWNhIGRhIEZ1bsOnw6NvIGRlIEluZm9ybWHDp8OjbyBkbyBUZXN0ZS4gRXN0YSBmdW7Dp8OjbyDDqSByZXByZXNlbnRhZGEgcGVsYSBzb21hIGRvIGdydXBvIGRlIGl0ZW5zIHF1ZSBjb21ww7VlIG8gdGVzdGUsIGRlIG1vZG8gcXVlIHJlc3VtZSBhIGNvbnRyaWJ1acOnw6NvIGRlIGNhZGEgaXRlbSBkZXN0ZSBwYXJhIGEgaW5mb3JtYcOnw6NvIHRvdGFsLiANCg0KLSBBIHF1YW50aWRhZGUgdG90YWwgZGUgaW5mb3JtYcOnw6NvIGZvcm5lY2lkYSBwb3IgdW0gZ3J1cG8gZGUgaXRlbnMgcGFyYSBjYWRhIG7DrXZlbCBkbyB0cmHDp28gbGF0ZW50ZSBlc3TDoSBpbnZlcnNhbWVudGUgcmVsYWNpb25hZGEgYW8gZXJybyBwYWRyw6NvIGFzc29jaWFkbyBjb20gYSBlc3RpbWF0aXZhIGRvIG1lc21vLiBBdHJhdsOpcyBkYSBDdXJ2YSBkZSBJbmZvcm1hw6fDo28gZG8gVGVzdGUgcG9kZS1zZSB2ZXJpZmljYXIgcGFyYSBxdWFsIGludGVydmFsbyBkbyB0cmHDp28gbGF0ZW50ZSBvIHRlc3RlIGZ1bmNpb25hIG1lbGhvci4gDQoNCg0KYGBge3IgcGxvdDEsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpwbG90KG1pcnRfMnBsLCB0eXBlID0iaW5mbyIgKQ0KYGBgDQoNCg0KIyMjIyMgQ3VydmEgQ2FyYWN0ZXLDrXN0aWNhIGRvcyBJdGVucw0KDQotIEEgRmlndXJhIGFiYWl4byBtb3N0cmEgYXMgY3VydmFzIGNhcmFjdGVyw61zdGljYXMgZG9zIGl0ZW5zLCB1bWEgcmVwcmVzZW50YcOnw6NvIGRhcyByZWxhw6fDtWVzIGVudHJlIGEgaGFiaWxpZGFkZSAob3UgdHJhw6dvIGxhdGVudGUpIGUgYSBwcm9iYWJpbGlkYWRlIGRlIGFwcmVzZW50YXIgaGFiaWxpZGFkZSBwYXJhIGNhZGEgaXRlbS4gDQoNCg0KYGBge3IgcGxvdDIsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpwbG90KG1pcnRfMnBsLCB0eXBlID0gInRyYWNlIikNCmBgYA0KDQoNCiMjIyMgQ3VydmEgZGUgSW5mb3JtYcOnw6NvIGRvcyBJdGVucw0KDQoNCi0gQSBGaWd1cmEgYWJhaXhvIG1vc3RyYSBhcyBjdXJ2YXMgZGUgSW5mb3JtYcOnw6NvIGRvcyBpdGVucywgcGFyYSBhdmFsaWFyIHF1YWlzIGludGVucyB0cmF6ZW0gbWFpcyBpbmZvcm1hw6fDo28gcGFyYSBlc3RpbWFyIGEgaGFiaWxpZGFkZSBubyBjdXJzbyBkZSBEaXJlaXRvIGVtIDIwMTguIA0KDQoNCmBgYHtyIHBsb3QzLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KcGxvdChtaXJ0XzJwbCwgdHlwZSA9ICJpbmZvdHJhY2UiKQ0KYGBgDQoNCg0KDQoNCiMjIyMjIENhbGlicmHDp8OjbyBlIEVxdWFsaXphw6fDo28gZG9zIEl0ZW5zDQoNCi0gTyBwcm9jZXNzbyBkZSBlc3RpbWHDp8OjbyBkb3MgaXRlbnMgZm9pIHJlYWxpemFkbyBlbSB2w6FyaW9zIHBhc3NvcywgZXN0cmF0w6lnaWEgdXRpbGl6YWRhIHBhcmEgbWFudGVyIG8gbWFpb3IgbsO6bWVybyBwb3Nzw612ZWwgZGUgaXRlbnMgbmEgcHJvdmEgZG8gRU5BREUuIEEgcXVhbGlkYWRlIGRvcyBpdGVucyBmb2kgYXZhbGlhZGEgY29uc2lkZXJhbmRvLXNlLCBwcmluY2lwYWxtZW50ZSwgb3MgdmFsb3JlcyByZWZlcmVudGVzIMOgcyBlc3RpbWF0aXZhcyBkb3MgcGFyw6NtZXRyb3MgZGUgZGlzY3JpbWluYcOnw6NvIGUgZGUgZGlmaWN1bGRhZGUuDQoNCg0KDQotIGEgdGFiZWxhIDA2IGFwcmVzZW50YSBvcyBwYXLDom1ldHJvcyBkZSBkaXNjcmltaW5hw6fDo28gJGFfe2l9JCwgZGlmaWN1bGRhZGUgJGJfe2l9JCBkb3MgaXRlbnMgYXZhbGlhZG9zLiBUYWlzIHBhcsOibWV0cm9zIGZvcmFtIGVzdGltYWRvcyB1dGlsaXphbmRvIGEgVFJJLCBjb20gbyBtw6l0b2RvIGRlIE3DoXhpbWEgdmVyb3NzaW1pbGhhbsOnYSBNYXJnaW5hbCBlIGEgY29udmVyZ8OqbmNpYSBkb3MgZGFkb3MgZm9pIHRlc3RhZGEgcGVsbyBhbGdvcml0bW8gKipFTShFeHBlY3Rpb24gTWF4aW1pemF0aW9uKSoqIGUgKipOZXd0b24gUmFwaHNvbioqLiANCg0KKipUYWJlbGEgMDgqKi4gRXN0aW1hw6fDo28gZG9zIHBhcsOibWV0cm9zIGRvcyBpdGVucyBwYXJhIG8gTW9kZWxvIGxvZ8Otc3RpY28gKDNwbCkgZGEgcHJvdmEgZG8gRU5BREUvMjAxOCBubyBjdXJzbyBkZSBEaXJlaXRvLg0KDQogfCAqKkl0ZW5zKiogICAgfCAqKkRpc2NyaW1pbmHDp8OjbyAkYV97aX0kKiogfCAgKipEaWZpY3VsZGFkZSAkYl97aX0kKiogfCANCiB8Oi0tLS0tLS0tLS0tLTp8IDotLS0tLS0tLS0tLTogICAgICAgICAgfDotLS0tLS0tLS0tLS06ICAgICAgICAgIHwNCiB8ICAgICAgICBgUTAxYCB8ICAgICAgICAgICAwLjY4MiAgICAgICAgfCAgICAgICAgICAtMS45OTQgICAgICAgIHwgICAgICAgICANCiB8ICAgICAgICBgUTAyYCB8ICAgICAgICAgICAxLjAxOCAgICAgICAgfCAgICAgICAgICAtMS43NTAgICAgICAgIHwgICAgICAgDQogfCAgICAgICAgYFEwM2AgfCAgICAgICAgICAgMC40NzEgICAgICAgIHwgICAgICAgICAgLTMuMDg0ICAgICAgICB8ICAgICAgICANCiB8ICAgICAgICBgUTA0YCB8ICAgICAgICAgICAxLjE4NCAgICAgICAgfCAgICAgICAgICAtMS4wOTQgICAgICAgIHwgICAgICAgICANCiB8ICAgICAgICBgUTA1YCB8ICAgICAgICAgICAwLjY5MCAgICAgICAgfCAgICAgICAgICAtMS4wNDIgICAgICAgIHwgICAgICAgIA0KIHwgICAgICAgICAgLi4uIHwgICAgICAgICAgIC4uLi4uICAgICAgICB8ICAgICAgICAgIC4uLi4uLiAgICAgICAgfA0KIHwgICAgICAgIGBRMzJgIHwgICAgICAgICAgIDAuMDg1ICAgICAgICB8ICAgICAgICAgICoqMTUuNDMzKiogICAgfCANCiB8ICAgICAgICBgUTMzYCB8ICAgICAgICAgICAwLjQzMiAgICAgICAgfCAgICAgICAgICAtMC4yMTcgICAgICAgIHwNCiB8ICAgICAgICBgUTM0YCB8ICAgICAgICAgICAwLjQ1MyAgICAgICAgfCAgICAgICAgICAgMi44NTcgICAgICAgIHwNCiB8ICAgICAgICBgUTM1YCB8ICAgICAgICAgICAwLjI0MCAgICAgICAgfCAgICAgICAgICAyLjY2NyAgICAgICAgIHwNCg0KDQotIE9zIGl0ZW5zIGVtIHF1ZSBvcyBhbHVub3MgbmVjZXNzaXRhbSBkZSBtYWlzIGNvbmhlY2ltZW50byAoKipkaWZpY3VsZGFkZSAkYl97aX0kKiopIGFkcXVpcmlkb3MgcGFyYSBzb2x1Y2lvbmFyIG9zIHByb2JsZW1hcyBpbmRpY2Fkb3MgbmFzIHNpdHVhw6fDtWVzIHByb2JsZW1hcyBuYSBwYXJ0ZSBlc3BlY8OtZmljYSBkYSBwcm92YSBkZSBEaXJlaXRvLg0KICAgIC0gKipJdGVtIDMyIChEaXJlaXRvIFByb2Nlc3N1YWwgUGVuYWwpKioNCiAgICAtICoqSXRlbSAyNiAoRGlyZWl0byBkbyBUcmFiYWxobykqKg0KICAgIC0gKipJdGVtIDIyIChEaXJlaXRvIEVtcHJlc2FyaWFsICsgRGlyZWl0byBBZGltaXN0cmF0aXZvKSoqDQogICAgLSAqKkl0ZW0gMTggKFRlb3JpYSBHZXJhbCBkbyBFc3RhZG8pKioNCiAgICAtICoqSXRlbSAxOSAoRGlyZWl0byBBbWJpZW50YWwgKyBEaXJlaXRvIFByb2Nlc3N1YWwgQ2l2aWwpKioNCiAgICANCi0gT3MgaXRlbnMgcXVlIGNvbnNlZ3VlbSBzZXBhcmFyICgqKmRpc2NyaW1pbmHDp8OjbyAkYV97aX0kKiopIG9zIGFsdW5vcyBxdWUgcG9zc3VlbSBtYWlzIGhhYmlsaWRhZXMgZGVudHJvIGRvIGVzdHVkbyBkbyBEaXJlaXRvLg0KICAgIC0gKipJdGVtIDE1IChEaXJlaXRvIENvbnN0aXR1Y2lvbmFsKSoqDQogICAgLSAqKkl0ZW0gMTEgKERpcmVpdG8gSHVtYW5vcykqKg0KDQoqKlRhYmVsYSAwOSoqLiBDb21wYXJhdGl2byBkb3MgRXNjb3JlcyBkYSBUUkkgcGFyYSA1IGFsdW5vcyBjb20gMjMgYWNlcnRvcyBuYSBwcm92YSBkbyBFTkFERS8yMDE4IG5vIGN1cnNvIGRlIERpcmVpdG8uDQoNCiB8ICoqSXRlbnMqKiAgICAgICAgICB8IENvbnRlw7pkbyAgICAgICAgICAgfCoqQWx1bm8gJDAxJCoqIHwgKipBbHVubyAkMDIkKiogfCAqKkFsdW5vICQwMyQqKiB8ICoqQWx1bm8gJDA0JCoqIHwgKipBbHVubyAkMDUkKiogfA0KIHw6LS0tLS06ICAgICAgICAgICAgIHwgOi0tLS0tOiAgICAgICAgICAgIHw6LS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS06IHwgOi0tLS0tLS0tLS0tLTogfCA6LS0tLS0tLS0tLS0tOiB8IDotLS0tLS0tLS0tLS06IHwNCiB8IGBRMDFgICAgICAgICAgICAgICB8IFRyYW5zZ8Oqbmljb3MgICAgICAgfCBBY2VydG91ICAgICAgIHwgQWNlcnRvdSAgICAgICAgfCBBY2VydG91ICAgICAgICB8IEFjZXJ0b3UgICAgICAgIHwgRXJyb3UgICAgICAgICAgfA0KIHwgYFEwMmAgICAgICAgICAgICAgIHwgRWNvbm9taWEgICAgICAgICAgIHwgQWNlcnRvdSAgICAgICB8IEFjZXJ0b3UgICAgICAgIHwgQWNlcnRvdSAgICAgICAgfCBBY2VydG91ICAgICAgICB8IEFjZXJ0b3UgICAgICAgIHwNCiB8IGBRMDNgICAgICAgICAgICAgICB8IEFydGUvQ2nDqm5jaWEgICAgICAgfCBBY2VydG91ICAgICAgIHwgQWNlcnRvdSAgICAgICAgfCBBY2VydG91ICAgICAgICB8IEFjZXJ0b3UgICAgICAgIHwgQWNlcnRvdSAgICAgICAgfA0KIHwgYFEwNGAgICAgICAgICAgICAgIHwgSW1pZ3Jhw6fDo28gICAgICAgICAgfCBBY2VydG91ICAgICAgIHwgQWNlcnRvdSAgICAgICAgfCBBY2VydG91ICAgICAgICB8IEFjZXJ0b3UgICAgICAgIHwgQWNlcnRvdSAgICAgICAgfA0KIHwgYFEwNWAgICAgICAgICAgICAgIHwgw4BmcmljYSAgICAgICAgICAgICB8IEVycm8gICAgICAgICAgfCBBY2VydG91ICAgICAgICB8IEVycm91ICAgICAgICAgIHwgQWNlcnRvdSAgICAgICAgfCBBY2VydG91ICAgICAgICB8DQogfCAgLi4uLiAgICAgICAgICAgICAgfCAuLi4uICAgICAgICAgICAgICAgfCAgLi4uLi4gICAgICAgIHwgIC4uLi4uICAgICAgICAgfCAgIC4uLi4uICAgICAgICB8ICAuLi4uLiAgICAgICAgIHwgLi4uLi4gICAgICAgICAgfA0KIHwgYFEzMmAgICAgICAgICAgICAgIHwgUHJvY2Vzc3VhbCBQZW5hbCAgIHwgRXJyb3UgICAgICAgICB8IEVycm8gICAgICAgICAgIHwgQWNlcnRvdSAgICAgICAgfCBFcnJvdSAgICAgICAgICB8IEVycm91ICAgICAgICAgIHwNCiB8IGBRMzNgICAgICAgICAgICAgICB8IERpcmVpdG8gIFBlbmFsICAgICB8IEFjZXJ0b3UgICAgICAgfCBBY2VydG91ICAgICAgICB8IEVycm91ICAgICAgICAgIHwgQWNlcnRvdSAgICAgICAgfCBBY2VydG91ICAgICAgICB8DQogfCBgUTM0YCAgICAgICAgICAgICAgfCBDb25zdGl0dWNpb25hbCAgICAgfCBFcnJvdSAgICAgICAgIHwgRXJyb3UgICAgICAgICAgfCBBY2VydG91ICAgICAgICB8IEFjZXJ0b3UgICAgICAgIHwgRXJyb3UgICAgICAgICAgfA0KIHwgYFEzNWAgICAgICAgICAgICAgIHwgQ29uc3RpdHVjaW9uYWwgK1BQIHwgRXJyb3UgICAgICAgICB8IEFjZXJ0b3UgICAgICAgIHwgRXJyb3UgICAgICAgICAgfCBFcnJvdSAgICAgICAgICB8IEVycm91ICAgICAgICAgIHwNCiB8IGBTY29yZSBCcnV0b2AgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IDIzICAgICAgICAgICAgfCAyMyAgICAgICAgICAgICB8IDIzICAgICAgICAgICAgIHwgMjMgICAgICAgICAgICAgfCAyMyAgICAgICAgICAgICB8IA0KIHwgYFNjb3JlIFRSSSg1MCwxMClgIHwgICAgICAgICAgICAgICAgICAgIHwgMzQuNTggICAgICAgICB8IDY1LjQ4ICAgICAgICAgIHwgMzUuMTcgICAgICAgICAgfCA2MC4zNyAgICAgICAgICB8IDQxLjIwICAgICAgICAgIHwgDQoNCg0KDQoNCg0KDQojIyBSZWZlcsOqbmNpYXMgQmlibGlvZ3LDoWZpY2FzDQojIyMgU29mdHdhcmUncw0KDQotIFIgREVWRUxPUE1FTlQgQ09SRSBURUFNLiBSNC4wOiBBIGxhbmd1YWdlIGFuZCBFbnZpb3JubWVudCBmb3IgU3RhdGlzdGljYWwgQ29tcHV0aW5nLCAyMDIwLiBodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy9iaW4vd2luZG93cy9iYXNlIA0KLSBSU1RVRElPLiBSc3R1ZGlvOiBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IGZvciBSICh2ZXJzw6NvIDEuMi41KS4NCmh0dHBzOi8vcnN0dWRpby5jb20vcHJvZHVjdHMvcnN0dWRpby9kb3dubG9hZC8jZG93bmxvYWQNCg0KDQojIyMgUGFja2FnZXMNCg0KLSBBbGxhaXJlLCBKSiwgUmljaCBJYW5ub25lLCBBbGlzb24gUHJlc21hbmVzIEhpbGwsIGFuZCBZaWh1aSBYaWUuIDIwMjAuICoqRGlzdGlsbDogUiBNYXJrZG93biBGb3JtYXQgZm9yIFNjaWVudGlmaWMgYW5kIFRlY2huaWNhbCBXcml0aW5nKiouIGh0dHBzOi8vQ1JBTi5SLXByb2plY3Qub3JnL3BhY2thZ2U9ZGlzdGlsbC4NCg0KLSBaaHUsIEhhby4gMjAyMC4gKiprYWJsZUV4dHJhOiBDb25zdHJ1Y3QgQ29tcGxleCBUYWJsZSB3aXRoIEthYmxlIGFuZCBQaXBlIFN5bnRheCoqLiBodHRwczovL0NSQU4uUi1wcm9qZWN0Lm9yZy9wYWNrYWdlPWthYmxlRXh0cmEuDQoNCg0KLSBIYWRsZXkgV2lja2hhbTsgUm9tYWluIEZyYW7Dp29pcztMaW9uZWwgSGVucnk7IEtpcmlsbCBNw7xsbGVyLiAqKmRwbHlyOiBBIEdyYW1tYXIgb2YgRGF0YSBNYW5pcHVsYXRpb24qKg0KaHR0cHM6Ly9jbG91ZC5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy9kcGx5ci9pbmRleC5odG1sLg0KDQoNCi0gQWxib3VrYWRlbCBLYXNzYW1iYXJhLiAqKnJzdGF0aXg6IFBpcGUtRnJpZW5kbHkgRnJhbWV3b3JrIGZvciBCYXNpYyBTdGF0aXN0aWNhbCBUZXN0cyoqDQpodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvcnN0YXRpeC9pbmRleC5odG1sLg0KDQoNCi0gSm9lIENoZW5nOyBDYXJzb24gU2lldmVydDsgV2luc3RvbiBDaGFuZzsgWWlodWkgWGllOyBKZWZmIEFsbGVuLiAqKmh0bWx0b29sczogVG9vbHMgZm9yIEhUTUwqKg0KaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvd2ViL3BhY2thZ2VzL2h0bWx0b29scy9pbmRleC5odG1sLg0KDQoNCi0gUGhpbCBDaGFsbWVyczsgSm9zaHVhIFByaXRpa2luOyBBbGV4YW5kZXIgUm9iaXR6c2NoOyBNYXRldXN6IFpvbHRhazsgS3dvbkh5dW4gS2ltOyBDYXJsIEYuIEZhbGs7IEFkYW0gTWVhZGU7IExlbm5hcnQgU2NobmVpZGVyOyBEYXZpZCBLaW5nOyBDaGVuLVdlaSBMaXU7IE9ncmVkZW4gT2d1emhhbi4gKiptaXJ0OiBNdWx0aWRpbWVuc2lvbmFsIEl0ZW0gUmVzcG9uc2UgVGhlb3J5KiogaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvd2ViL3BhY2thZ2VzL21pcnQvaW5kZXguaHRtbC4NCg0KLSBEaW1pdHJpcyBSaXpvcG91bG9zLioqbHRtOiBMYXRlbnQgVHJhaXQgTW9kZWxzIHVuZGVyIElSVCoqDQpodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvbHRtL2luZGV4Lmh0bWwuDQoNCi0gV2lsbGlhbSBSZXZlbGxlLiAqKnBzeWNoOiBQcm9jZWR1cmVzIGZvciBQc3ljaG9sb2dpY2FsLCBQc3ljaG9tZXRyaWMsIGFuZCBQZXJzb25hbGl0eSBSZXNlYXJjaCoqDQpodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvcHN5Y2gvaW5kZXguaHRtbC4NCg0KLSBJdmFpbG8gUGFydGNoZXY7IEd1bnRlciBNYXJpczsgVGFtYWtpIEhhdHRvcmkuICoqaXJ0b3lzOiBBIENvbGxlY3Rpb24gb2YgRnVuY3Rpb25zIFJlbGF0ZWQgdG8gSXRlbSBSZXNwb25zZSBUaGVvcnkgKElSVCkqKiBodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvaXJ0b3lzL2luZGV4Lmh0bWwuDQoNCiMjIyBCb29rcw0KDQotIEFORFJBREUsIEQuIEYuLCBUQVZBUkVTLCBILiBSLiwgVkFMTEUsIFIuIEMuICoqVGVvcmlhIGRhIHJlc3Bvc3RhIGFvIGl0ZW06IGNvbmNlaXRvcw0KZSBhcGxpY2HDp8O1ZXMqKi4gU8OjbyBQYXVsbywgMjAwMC4gaHR0cHM6Ly9kb2NzLnVmcHIuYnIvfmFhbmpvcy9DRTA5NS9MaXZyb1RSSV9EQUxUT04ucGRmDQogIA0KLSBCQUtFUiwgRi4gQi4gKipUaGUgQmFzaWNzIG9mIEl0ZW0gUmVzcG9uc2UgVGhlb3J5KiouIDIgZWQuIFVTQSwgMjAwMS4gaHR0cHM6Ly9lcmljLmVkLmdvdi8/aWQ9RUQ0NTgyMTkNCg0KLSBZaWh1aSBYaWUsIEouIEouIEFsbGFpcmUsIEdhcnJldHQgR3JvbGVtdW5kLiAqKlIgTWFya2Rvd246IFRoZSBEZWZpbml0aXZlIEd1aWRlKiouIGh0dHBzOi8vYm9va2Rvd24ub3JnL3lpaHVpL3JtYXJrZG93bi8uDQoNCi0gWWlodWkgWGllLiAqKkR5bmFtaWMgRG9jdW1lbnRzIHdpdGggUiBhbmQga25pdHIqKiwoQ2hhcG1hbiAmIEhhbGwvQ1JDIFRoZSBSIFNlcmllcykgMm5kIEVkaXRpb24uDQpodHRwczovL3lpaHVpLm9yZy9rbml0ci8uDQoNCi0gRmllbGQsIEEuIFAuLCBNaWxlcywgSi4sICYgRmllbGQsIFouICgyMDEyKS4gRGlzY292ZXJpbmcgc3RhdGlzdGljcyB1c2luZyBSLiBodHRwczovL2FlZG1vb2RsZS51ZnBhLmJyL3BsdWdpbmZpbGUucGhwLzQwMTg1Mi9tb2RfcmVzb3VyY2UvY29udGVudC81L01hdGVyaWFsX1BERi8xLkRpc2NvdmVyaW5nJTIwU3RhdGlzdGljcyUyMFVzaW5nJTIwUi5wZGYNCg0KDQojIENvbnNpZGVyYcOnw7VlcyBGaW5haXMNCg0KLSBFc3RlIGVzdHVkbyB0ZXZlIGNvbW8gb2JqZXRpdm8gbWVuc3VyYXIgbyBkZXNlbXBlbmhvKHByb2ZpY2nDqm5jaWEpIG5vIEVOREUvMjAxOCwgZG9zIGVzdHVkYW50ZXMgZGUgRGlyZWl0byBtYXRyaWN1bGFkb3Mgbm8gQ0VTVVBBLCBwb3IgbWVpbyBUUkkuIEFwYXJ0aXIgZGEgZXN0aW1hw6fDo28gcmVhbGl6YWRhIGNvbSBvIG1vZGVsbyBsb2dpc3RpY28gZGUgMiBwYXLDom1ldHJvcyBub3MgMzUgaXRlbnMgZGEgcHJvdmEgb2JqZXRpdmEsIHZlcmlmaWNvdS1zZSBxdWUsIGEgcHJvdmEgbsOjbyBhcHJlc2VudG91IG5lbSBvcCBkb23DrW5pbyBjb2duaXRpdm8gY29tcHJlZW5kaWRvIHBlbGEgZXNjYWxhLiBFc3RlIFJlc3VsdGFkbyBjb3Jyb2JvcmEgbyBiYWl4byBkZXNlbXBlbmhvIGRvcyBlc3R1ZGFudGVzLCBhcG9udGFkbyBhc3BlY3RvcyBkZSBmcmFnaWxpZGFkZXMgZGUgYXByZW5kaXphZ2VtLiANCg0KDQojIFN1Z2VzdMOjbyBQZWRhZ8OzZ2ljYSANCg0KLSBPcyByZXN1bHRhZG9zIGRhcyBhdmFsaWHDp8O1ZXMgc29tYXRpdmFzIGNvbW8gYSBBcGxpY2HDp8OjbyBkZSAqKlNpbXVsYWRvKiogZGFyw6EgYmFzZSBkZSBjb21vIGEgZ2VzdMOjbyBhY2Fkw6ptaWNhIGlyw6EgcmV0b3JuYXIgYW9zIGFsdW5vcyBhcyBkZXZvbHV0aXZhcyBkZSB1bSByZXN1bHRhZG8gbsOjbyBvYnNlcnZhZG8gZW0gdW1hIHByb3ZhIGF0w6kgYWxjYW7Dp2FyIGFwcmVuZGl6YWdlbSBwbGVhLg0KDQotIE9zIG9iamV0aXZvcyBkaXNjaXBsaW5hcmVzIGUgaW50ZXJkaXNjaXBsaW5hcmVzIGRldmVtIGVzdGFyIHByZXNlbnRlcyBuYXMgaGFiaWxpZGFkZXMgZG9zIHByb2Zlc3NvcmVzLCBhc3NpbSBjb21vLCBhICoqVGF4b25vbWlhIGRlIEJsb29tKiosIG1vYmlsaXphbmRvIGNvbXBldMOqbmNpYXMgYW9zIGFsdW5vcy4gIA0KDQoNCiMgQ3LDqWRpdG9zDQoNCioqRkFUVE9SIENPTlNVTFRPUklBIEVNIEFOw4FMSVNFIERFIERBRE9TIDIwMjIqKi4NCg0KDQoqIFtTaXRlXShodHRwczovL1dXVy5mYXR0b3Jjb25zdWx0b3JpYS5jb20uYnIpDQoqIFtmYWNlYm9va10oaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tL2ZhdHRvcmNvbnN1bHRvcmlhKQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg==