Inserção de Marca D Água em Imagens Digitais com particionamento do dicionário utilizando o algoritmo Harmony Search



Documentos relacionados
Comunicações Digitais Manual do Aluno Capítulo 7 Workboard PCM e Análise de Link

Projeto FlexiGrid IWA. Sistema de Armazenamento e Comunicação de Imagens

CLASSIFICAÇÃO AUTOMÁTICA DE PATENTES COM O MODELO VETORIAL DE REPRESENTAÇÃO DE DOCUMENTOS

Análise comparativa sobre bases de dados para armazenamento e consulta de dados não estruturados no formato JSON.

Inserção de Marca D água Digital em Imagens Digitais Utilizando Quantização Vetorial com Particionamento do Dicionário por PSO

Gerenciamento de memória

2 Classificação de Imagens de Sensoriamento Remoto

Modulação por Pulsos

Fila de Prioridade. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

Introdução. Capítulo. 1.1 Considerações Iniciais

GERAÇÃO DE NÚMEROS ALEATÓRIOS PARA A SIMULAÇÃO DE AMBIENTES

1 Problemas de transmissão

Relatório Trabalho Prático 2 : Colônia de Formigas para Otimização e Agrupamento

Inteligência Computacional Aplicada a Engenharia de Software

Quais as diferenças entre os formatos de imagem PNG, JPG, GIF, SVG e BMP?

Tecnologia de faixa para falha

4. Tarefa 16 Introdução ao Ruído. Objetivo: Método: Capacitações: Módulo Necessário: Análise de PCM e de links

MÓDULO 1. I - Estatística Básica

Problemas onde a busca da solução depende da avaliação de diversas combinações (ORDEM) dos elementos considerados

Marcelo Santos de Souza

DESENVOLVIMENTO DE UM MODELO COMPUTACIONAL DE EXPOSIÇÃO EXTERNA PARA ESTUDO DA DOSE DE ENTRADA NA PELE PARA RADIOGRAFIAS DE TÓRAX E COLUNA

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Sistema de Numeração e Códigos. CPCX UFMS Prof. Renato F. dos Santos

Vetor Quantização e Aglomeramento (Clustering)

Estudo de Casos Estudo de Caso 1: Velocidade Intervalar e Espessura da Camada

Técnicas metaheurísticas aplicadas na otimização de parâmetros em um modelo probabilístico de gestão de estoques

Programação em papel quadriculado

APLICATIVOS GRÁFICOS (AULA 4)

UMA HEURÍSTICA GRASP PARA O PROBLEMA ESTENDIDO DE SEQUENCIAMENTO DE CARROS

Análise e Projeto de Software

QGIS 2.4 Recorte de Raster em Lote (Clip Raster in Batch Mode)

Gerenciamento de memória

Segmentação de Imagens

PSO Algorithm Applied to Codebook Design for Channel-Optimized Vector Quantization

Análise e visualização de dados utilizando redes neurais artificiais auto-organizáveis

Um Método Simples e Eficiente para Detecção de Atividade de Voz Usando a Transformada Wavelet

FERRAMENTA PARA O ENSINO DE QUANTIZAÇÃO VETORIAL EM CURSOS DE ENGENHARIA ELÉTRICA

Informática Aplicada a Radiologia

Processamento Digital de Imagens

Universidade Federal de Alagoas Instituto de Matemática. Imagem. Prof. Thales Vieira

A EXPERIÊNCIA PIONEIRA DO LABORATÓRIO DE ARTE ELETRÔNICA: 20 ANOS DE CURIOSIDADE E INOVAÇÃO EM DESIGN DE MIDIA DIGITAL

CARTOGRAFIA TEMÁTICA: MÉTODOS DE CLASSIFICAÇÃO DOS DADOS GEOGRÁFICOS QUANTITATIVOS

Questão 1. Benefícios. Benefícios. Desafios. Desafios. 1. Quais são os desafios e benefícios em potencial da computação distribuída?

Aula 19. Conversão AD e DA Técnicas

COS767 - Modelagem e Análise Aula 2 - Simulação. Algoritmo para simular uma fila Medidas de interesse

2 Gerenciamento de Log 2.1 Definições básicas

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001

Redes Neurais Artificiais na Engenharia Nuclear 2 Aula-1 Ano: 2005

UNIVERSIDADE DE CAMPINAS INSTITUTO DE COMPUTAÇÃO MESTRADO PROFISSIONAL. DOUGLAS MARQUES JUNIA NEVES {damarques,

Redes Neurais. A IA clássica segue o paradigma da computação simbólica

Memória cache. Prof. Francisco Adelton

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO ESCOLA POLITÉCNICA

Classificação de Imagens

Métodos de mapeamento para fenômenos qualitativos e quantitativos

CDI Comunicação Digital

Processamento digital de imagens. introdução

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

Ajuste dos parâmetros de um controlador proporcional, integral e derivativo através de algoritmos genéticos

Documento Descritivo do Mecanismo de Busca. Preparação do Portal para indexação

Expansão de Imagem #2

Introdução às Redes Neurais Artificiais

Transformação de um Modelo de Empresa em Requisitos de Software

Tópicos sobre Teoria da informação e codificação de fonte

Comunicação Fim-a-Fim a Alta Vede em Redes Gigabit

3 Estratégia para o enriquecimento de informações

Sensoriamento Remoto

Problema de Otimização Combinatória

Arquitetura e Organização de Computadores

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação

Amostragem e PCM. Edmar José do Nascimento (Princípios de Comunicações) edmar.nascimento

Curso: Redes II (Heterogênea e Convergente)

Classificação da imagem (ou reconhecimento de padrões): objectivos Métodos de reconhecimento de padrões

SEGEMENTAÇÃO DE IMAGENS. Nielsen Castelo Damasceno

Técnicas de Computação Paralela Capítulo III Design de Algoritmos Paralelos

A limiarização é uma das abordagens mais importantes de segmentação de imagens. A limiarização é um caso específico de segmentação.

Organizaçãoe Recuperaçãode Informação GSI521. Prof. Dr. Rodrigo Sanches Miani FACOM/UFU

Probabilidade - aula I

Unidade 5: Sistemas de Representação

Transcrição Automática de Música

Bibliografia. Forouzan, Behrouz A. Comunicação de Dados e Redes de Computadores. 4. ed. McGraw-Hill, 2008.

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

4 Experimentos. 4.4 detalha os experimentos com os algoritmos V-Wrapper e NCE. 4.1

ALGORITMOS E FLUXOGRAMAS

Fundamentos de Imagens Digitais. Aquisição e Digitalização de Imagens. Aquisição e Digitalização de Imagens. Aquisição e Digitalização de Imagens

DEFINIÇÃO DE ÁREAS POTENCIAIS AO RISCO DE DESLIGAMENTO DE LINHAS DE TRANSMISSÃO DEVIDO A INCÊNDIOS - PLANEJAMENTO E CRITÉRIOS DE MANUTENÇÃO

4 Avaliação Experimental

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

01/05/2016. Danillo Tourinho Sancho da Silva, MSc ROTEIRIZAÇÃO TEORIA DOS GRAFOS MOTIVAÇÃO

PROJETO DE REDES

Classificação: Determinístico

Modelos de Caso de Administração

Universidade Federal de Pernambuco Centro de Informática Análise e Projeto de Sistemas IF768 Professor: Augusto Sampaio

Introdução à Tecnologia Web HTML HyperText Markup Language XHTML extensible HyperText Markup Language Formatos de Imagens

Universidade Federal de São João Del Rei - UFSJ

Fundamentos de Redes de Computadores

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Cálculo do conjunto paralelo

Passo a Passo do Cadastro Funcionários no SIGLA Digital

Transcrição:

Inserção de Marca D Água em Imagens Digitais com particionamento do dicionário utilizando o algoritmo Harmony Search L. K. S. Gomes, J. G. Araújo, F. Madeiro, E. A. O. Lima Universidade de Pernambuco Recife, Brasil madeiro@poli.br Resumo A preocupação com a segurança da informação motiva a criação de sistemas cada vez mais robustos para garantir a confiabilidade e segurança contra ataques aos dados. Nesse contexto, destaca-se o uso da Marca D Água Digital. Uma das técnicas para inserção da Marca D Água pode ser feita baseada em quantização vetorial, onde é feito o particionamento do dicionário em dois sub-dicionários a partir de uma chave e a escolha do sub-dicionário no momento da quantização vetorial dependerá do bit da Marca D Água a ser inserida. Um importante aspecto a se considerar é encontrar a melhor maneira de particionar o dicionário. Neste trabalho avaliamos o desempenho dos Algoritmos Genético e Harmony Search na geração das chaves empregadas na etapa do particionamento do dicionário para inserção da Marca D Água baseada na quantização vetorial em imagens digitais. Os resultados das simulações mostraram vantagens no uso do algoritmo Harmony Search, que utilizou aproximadamente 66% a menos de chamadas fitness para alcançar resultados de relação sinal-ruído de pico das imagens reconstruídas próximos aos obtidos quando utilizando o algoritmo genético aplicado ao mesmo dicionário. Palavra Chave Marca D água, Quantização Vetorial, Algoritmo Genético, Harmony Search. I. INTRODUÇÃO O conglomerado de redes em escala mundial de milhões de computadores (internet) aumentou signicativamente o uso de dados digitais. Isso pode ser obversado no crescente acesso a sites de redes sociais para compartilhamento de documentos, imagens, áudio e vídeos digitais [1]. Consequentemente, problemas relacionados à segurança de dados tem recebido considerável atenção por diversos setores da sociedade. Alguns desses problemas são a garantia da propriedade intelectual, autenticidade e integridade dos dados digitais [2] [3]. Uma solução potencial para superar o problema é a autenticação dos dados por meio da inclusão de um código identicador, a marca d água, como nome ou assinatura do autor, logotipo de uma empresa, números de série etc. em um documento digital [3] [4]. Em geral, a marca d água é comumente empregada no domínio espacial e no domínio das transformadas, onde destaca-se Transformada Discreta do Cosseno (DCT, do inglês, Discrete Cosine Transform), Transformada Discreta de Fourier (DFT, do inglês, Discrete Fourier Transform) e Transformada Discreta Wavelet (DWT, do inglês, Discrete Wavelet Transform). Feng-Hsing et al [5] propõem uma técnica de inserção de marca d água baseada em Quantização Vetorial (QV) utilizando a idéia de particionamento do dicionário, utilizando para isso Algoritmo Genético (AG). No presente artigo, apresentamos uma alternativa de melhoramento dessa técnica, acomodando o algoritmo Harmony Search (HS) [6] na etapa de particionamento do dicionário, focando em aplicações em imagens digitais. O restante desse artigo está organizado da seguinte forma: Na Seção 2 nós apresentamos uma breve revisão dos conceitos de QV e na Seção 3 do algoritmo Harmony Search. Na Seção 4 demonstramos a técnica de inserção e remoção de marca d água baseada em quantização vetorial. Na Seção 5 apresentamos os resultados das simulações. Finalmente, as conclusões desse artigo serão dadas na Seção 6. II. QUANTIZAÇÃO VETORIAL A QV [7] pode ser definida como um mapeamento de um vetor x em um vetor pertencente a um subconjunto finito chamado dicionário W. O dicionário W = {w i ; i=1,2,...,n} é o conjunto de vetorescódigo K-dimensionais, também denominados vetores de reconstrução e N o tamanho do dicionário, ou seja, a quantidade de vetores-código. Em codificação de imagens, a imagem a ser codificada é primeiramente dividida em blocos de tamanho d pixels. Para cada vetor de entrada, será feito o mapeamento para o vetorcódigo que apresente a menor distorção. O índice do vetorcódigo é então transferido para o receptor que possui a cópia do dicionário e realiza a decodificação. O esquema é apresentado na Fig. 1. A taxa de codificação do quantizador vetorial, que mede o número de bits por componente do vetor é medida por R = log 2 N K. (1) É importante inferir dessa fórmula que, mantendo o K fixo (constante), a taxa de codificação é diretamente proporcional ao tamanho do dicionário, ou seja, à medida que N aumenta, a taxa também aumenta. Em codificação de imagens, R é a taxa de compressão expressa em bits por pixel (bpp).

Figura 1. Codificação/decodificação em um sistema de codificação baseado em QV. III. Harmony Search Harmony Searh (HS) é um algoritmo de busca heurística inspirado no fenônemo artificial da harmonia musical para tentar otimizar (maximizar ou minimizar) uma função objetivo [6]. No algoritmo HS, cada instrumento gera uma nota e o conjunto de notas tocadas pela junção dos instrumentos forma a harmonia. As variáveis da função são representadas por instrumentos e seus valores correspondem a nota tocada pelo instrumento. Cada harmonia corresponde a uma possível solução dentro do espaço de busca e pode ser melhorada com a prática. No cenário musical, a harmonia é avaliada pela estética, assim como no HS, o objetivo é encontrar uma solução mais próxima possível do ótimo global. O HS armazena um conjunto das melhores harmonias em memória (HM), avaliadas através do valor do seu fitness. Considerando o HMS o tamanho do Harmony Memory (HM), Harmony Memory Considering Rate (HMCR) a probabilidade de se escolher um valor do HM na etapa de geração da nova harmonia, Pitch Adjusting Rate (PAR) a probabilidade de incrementar ou decrementar a nota e NI o número de iterações. O Algoritmo 1 descreve o pseudocódigo do HM e as sequências de passos é ilustrada pela Fig. 2. IV. MÉTODO DE INSERÇÃO E REMOÇÃO DE MARCA D ÁGUA BASEADO EM QUANTIZAÇÃO VETORIAL Em 2000, Lu and Sun [8] propuseram um algoritmo para inserção de marca D água baseado em Quantização Vetorial. Após, vários pesquisadores publicaram trabalhados sobre marca d água baseado em quantização vetorial [8] [9] [10] [11] [12]. Considerando o dicionário W contendo N palavras-código, a chave do usuário K = {k 1, k 2,...,k n k i { 0,1 }, 1 Figura 2. Diagrama de blocos do treinamento do HS. Algoritmo 1 Pseudocódigo do Harmony Memory. Define uma função objetivo. Define a taxa de HMCR. Define a taxa de PAR. Inicializa o HM de tamanho HMS com harmonias aleatórias. while t < NI do while i <= número de variáveis do if Valor aleatório < HMCR then Escolha um valor a partir do HM para a variável i. if Valor aleatório < PAR then Ajuste o valor adicionando uma certa quantidade. end if else Escolha um valor aleatório. end if end while Aceita a nova harmonia (solução) se melhor. end while Selecione a melhor solução corrente. i N} é utilizada para subdividir o dicionário em dois subdicionários C 0 e C 1, onde W = C 0 C 1 e C 0 C 1 =. Na etapa do particionamento do dicionário, cada palavra código c i passa a fazer parte do sub-dicionário C ki. Assim, as palavrascódigo utilizadas do dicionário C 0 esconderão o bit 0 e as palavras-código utilizadas do dicionário C 1 esconderão o bit 1.

A. Inserção da Marca D Água O algoritmo 2 apresenta a sequência de passos para inserção da marca d água de Feng-Hsing et al [5]. Algoritmo 2 Pseudocódigo da inserção da Marca D Água. Utilizando a chave K, particionar o dicionário em dois subdicionários, C 0 e C 1. Dividir a imagem de cobertura X em blocos de tamanho d pixels. Para cada vetor de entrada x i e o bit da marca que se deseja inserir y i {0,1} atribuir o índice do vetor-código do subdicionário C wi que possuir a mínima distância euclidiana. O vetor marcado será x i. Repetir até que se tenha inserido a marca em todos os pixels da imagem de cobertura. Reconstruir a imagem marcada unindo todos os vetores. O processo de inserção da marca d água baseada em quantização vetorial é apresentado na Fig. 3 Figura 3. Processo de inserção da marca d água B. Extração da Marca D Água O algoritmo 3 apresenta a sequência de passos para extrair a marca d água de uma imagem e esse processo é ilustrado na Fig. 4. Algoritmo 3 Pseudocódigo da extração da Marca D Água. Dividir a imagem de cobertura X em blocos de tamanho d pixels. Para cada vetor de entrada x i executar a busca pelo vetorcódigo no dicionário C que possuir a mínima distância euclidiana, considerando c j a palavra-código obtida, onde 1 j N. Buscar na chave o j-ésimo termo da chave, o bit escondido na marca d água será y i = k j {0,1}. Repetir os passos 2 e 3 até extrair todos os bits da marca d água. C. Particionamento do dicionário harmônico A forma como o particionamento do dicionário é feito tem papel primordial na imperceptibilidade da marca, isto é, na qualidade da imagem marcada. Assim, foi aplicado o algoritmo Figura 4. Processo de inserção da marca d água HS, buscando otimizar a forma como é feito o particionamento do dicionário. O algoritmo 4 apresenta os passos para o particionamento do dicionário utilizando HS. Algoritmo 4 Pseudocódigo do particionamento do dicionário harmônico Geração de S chaves {K 1,K 2,...,K S } com valores aleatórios para inicializar o HM. Inserir a marca d água Y na imagem de cobertura X usando as chaves {K 1,K 2,...,K S } do HM. Reconstruir a imagem marcada e avaliar a performace de cada chave através do cálculo do valor do PSNR entre a imagem original e marcada. Ordenar as chaves do HM de acordo com os valores das avaliações em ordem decrescente do fitness. Gerar uma nova chave. Se o valor do PSNR obtido através da inserção da marca utilizando a nova chave for maior que o menor PSNR do HM, faça a substituição da nova chave pela chave com menor valor de PSNR. Repita os passos 5 ao 6, até que o critério de parada seja satisfeito. V. RESULTADOS E DISCUSSÕES As simulações foram realizadas tendo como base o algoritmo LBG para o projeto dos dicionários. Todas as simulações foram feitas com imagens no formato pgm. A imagem LENA (Fig. 5a) de dimensão 512x512 pixels, originalmente codificadas a 8bpp (256 níveis de cinza) foi usada como imagem de cobertura. A imagem ROSE (Fig. 5b) de dimensão 128x128 pixels com 1 bpp foi usada como marca d água. Para o projeto do dicionário, utilizamos distorção e = 0.0001, tamanho N=256 e K = 16 (correspondente a blocos de imagens de 4X4 pixels). A imagem de cobertura foi decomposta em blocos 4x4. Para avaliar o desempenho dos algoritmos, foi utilizada como função fitness o valor do Sinal- Ruído-de-Pico(PSNR), de definição: P SNR = 10Log 10 ( v2 p ), (2) MSE

(a) (a) Figura 5. A imagem de cobertura (a) e a marca d água utilizada nos experimentos. em que v p corresponde ao valor de pico da amplitude do sinal de entrada e o MSE o erro quadrático médio. Para o particionamento do dicionário utilizando Algoritmo Genético (GA) adotamos os seguintes parâmetros, tamanho da população 10, 1000 iterações, taxa de seleção da população 100%, taxa de cruzamento de 50% e taxa de mutação de 0,1%. No particionamento utilizando o HS foram utilizados os seguintes parâmetros, HMS=5, HMCR=0,95 e PAR=0,001. Para observar o desempenho dos algoritmos foram realizados 1000 experimentos. A Fig. 6 ilustra os valores do PSNR dos 1000 experimentos. A Tabela I lista a perforce utilizando o AG e o HS na etapa de particionamento, onde o APSNR denota a média dos valores de PSNR e o BPSNR denota o melhor PSNR dos experimentos. Figura 7. Valores do PSNR durante as 1000 iterações do melhor resultado do GA e HS. O número total de bits inseridos na imagem foi de 16384, isto é, foi inserido um bit em cada bloco 4x4. Para o melhor resultado de PSNR, a quantidade de chamadas fitness necessárias foi de 3020 para o GA, enquanto para o HS conseguimos valores próximos de PSNR com 1005 chamadas fitness. VI. CONCLUSÃO (a) Figura 6. Resultado das 1000 simulações utilizando GA (a) e HS Tabela I COMPARATIVO DOS VALORES DE PSNR DAS TÉCNICAS ULITIZADAS Item AG HS APSNR 30,37db 30,33db BPSNR 30,43dB 30,38dB A Fig. 7 ilustra os valores do PSNR dos melhores resultados do GA e do HS ao longo das 1000 iterações, onde o PSNR na última iteração foi de 30,43dB no GA e de 30,38dB no HS. Neste artigo apresentamos uma alternativa para otimizar a técnica de inserção de marca d água baseada em QV utilizando técnicas de inteligência computacional. Foram aplicados o algoritmo Harmony Search e genético na geração de chaves para o particionamento do dicionário em sub-dicionários. Os valores de relação sinal-ruído de pico obtidos utilizando o algoritmo Harmony Search foram bastante próximos do algoritmo genético, em média 0,04dB de diferença, porém utilizando um quantitativo aproximadamente 2/3 menor de chamadas fitness, diminuindo assim a complexidade e tempo de processamento na inserção de Marcas D águas em imagens digitais. Concluímos nos resultados experimentais as vatagens da utilização do algoritmo Harmony Search na etapa do particionamento do dicionário. Como trabalhos futuros, pretende-se realizar uma avaliação da robustez e ataques da técnica de Marca D água bem como

avaliar outras técnicas de otimização para particionamento do dicionário. AGRADECIMENTOS Agradecimento ao Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq) pelo apoio financeiro. REFERÊNCIAS [1] N. Bhargava, M. Sharma, A. Garhwal, and M. Mathuria, Digital image authentication system based on digital watermarking, in Radar, Communication and Computing (ICRCC), 2012 International Conference on, 2012, pp. 185 189. [2] D. A. Zende and M. K. Chavan, Binary image authentication using zigzag ordering of watermark, in Advances in Technology and Engineering (ICATE), 2013 International Conference on, 2013, pp. 1 5. [3] N. Tiwari, M. Kumar Ramaiya, and M. Sharma, Digital watermarking using dwt and des, in Advance Computing Conference (IACC), 2013 IEEE 3rd International, 2013, pp. 1100 1102. [4] S. Katzenbeisser, On the integration of watermarks and cryptography, in Digital Watermarking, ser. Lecture Notes in Computer Science, T. Kalker, I. Cox, and Y. Ro, Eds. Springer Berlin Heidelberg, 2004, vol. 2939, pp. 50 60. [5] F.-H. Wang, L. C. Jain, and J.-S. Pan, Vq-based watermarking scheme with genetic codebook partition, Journal of Network and Computer Applications, vol. 30, no. 1, pp. 4 23, 2007. [6] Z. W. Geem, J. H. Kim, and G. Loganathan, A new heuristic optimization algorithm: Harmony search, SIMULATION, vol. 76, no. 2, pp. 60 68, 2001. [7] R. Gray, Vector quantization, ASSP Magazine, IEEE, vol. 1, no. 2, pp. 4 29, 1984. [8] Z. M. Lu and S. Sun, Digital image watermarking technique based on vector quantisation, Electronics Letters, vol. 36, no. 4, pp. 303 305, 2000. [9] I. J. Cox, M. Miller, and J. Bloom, Watermarking applications and their properties, in Information Technology: Coding and Computing, 2000. Proceedings. International Conference on, 2000, pp. 6 10. [10] Z.-M. Lu, J.-S. Pan, and S. he Sun, Vq-based digital image watermarking method, Electronics Letters, vol. 36, no. 14, pp. 1201 1202, 2000. [11] H. D. K. M. Lo, A digital image watermarking scheme based on vector quantisation, IEICE Trans. Inj Syst, vol. EWD, pp. 1054 1056, 2002. [12] J.-S. Pan, H.-C. Huang, and F.-H. Wang, A vq-based robust multiwatermarking algorithm, in TENCON 02. Proceedings. 2002 IEEE Region 10 Conference on Computers, Communications, Control and Power Engineering, vol. 1, 2002, pp. 117 120 vol.1.