SlideShare une entreprise Scribd logo
1  sur  93
Télécharger pour lire hors ligne
Por que?
• Padronizados
• Integrados
• Estilos diferentes
Realidade

• Foco no visual
• Produção linear
• Refação
De quem é a culpa?
         Mas de quem é a culpa?
Site ≠ APP
Site - Foco em

• Estilo
• Diagramação
• Primeiro impacto
APP - Foco em

• Estilo
• Funcionalidades
• Condução
GRID 960
LESS Framework
  Foundation
  Golden Grid
   Semantic
   Skeleton
      Etc.
Nãããããããããã
ããããããããããã
ããããããããããã
ããããããããããã
ããããããããããã
ão.
Sei que agora muitos de
vocês estão me odiando…


#mimimimi
Diagramação do site engessa o código
Vamos voltar um pouquinho no tempo
HTML = conteúdo

  CSS = estilo
Por que então
vamos mudar isso?
O que não queremos ver

<div class=”grid_2 omega ">
     ...
</div>
Contras

• .Grid-4-12 = .texto-azul
• Manutenções dolorosas
• Orienta o Design e não o
  contrário
Ah! Mas e o
Semantic.gs?
Ah! Mas e os novos
    Mixins para
 Blueprint e Sass?
Contras

• .Grid-4-12 = .texto-azul
• Manutenções dolorosas
• Orienta o Design e não o
  contrário
• Dependência?
Framework agiliza
  a codificação
Usar slicer também
Recomendo GRIDs
  e Frameworks
para prototipagem
Crie seu próprio
  Framework
Eles criaram:
YUI, Twitter Bootstrap,
Abril Bootstrap, Peixe
  Urbano Bootstrap
O Negócio deles não é igual ao seu
Pensando no seu projeto
Evite utilizar herança
.widget h2 {}

.widget-tt {}
.nav a {}

.nav-link {}
Evite utilizar IDs
para estilização
#submit {}

.botao {}
<form role="search" method="get" id="searchform" action=“">
          <div>
                   <label class="screen-reader-text" for="s">Search for:</
label>
                   <input type="text" value="" name="s" id="s" />
                   <input type="submit" id="searchsubmit" value="Search” /
>
          </div>
</form>
Foque na função e
  não no estilo
Nem no conteúdo
.bloco-claro {}
.ultimos-pedidos {}
      .box {}
Pense em reutilização
Dicas para reutilização

• Classes globais
• Testar em outro local
• Testar variações
• Documentação
A inteligência do seu código
Class=“b”



   Class=“b b-pri”



  Class=“b b-small”



Class=“b b-small b-pri”
Tooltip




<div class="tooltip”>
   <hgroup class="tooltip-h">
      <h2 class="tooltip-tt">Reason:</h2>
   </hgroup>
   <section class="tooltip-body”></section>
</div>
Wizard




<ul class="steps">
   <li class="checked"><span>1</span> About your campaign</li>
   <li class="active"><span>2</span> Segmentation</li>
   <li><span>3</span> Set your budget</li>
   <li><span>4</span> Add your creatives</li>
  </ul>
Standards (padrões)

• Títulos e textos
• Navegações
• Tabs (abas)
• Objetos de formulário
Estudo de caso
Cenário - Petrobras

• 12 projetos simultâneos
• Mais de 40 programadores
• Equipe com 5 designers/
  front-end
Motivadores

• 50% formulário, 50% tabela
• Nenhum padrão de código ou
  classes
• Nenhuma reutilização
• Sem acesso ao Visual Studio
Objetivos

• Fácil diagramação
• Fácil customização por projeto
• Responsive ou fluido
• Boa documentação
Framework de
  Formulário
30k
downloads
DRY CSS
 Don’t Repeat Your CSS
DRY CSS

• Modularizado
• Facilmente integrado
• Vinculado ao estilo
• Vinculado ao ID
• Lowercase e Uppercase
OOCSS
Object oriented cascading style sheet
Objected Oriented CSS

• Separação da estrutura e do
  estilo
• Criação de elementos globais
• É um processo tácito
• Existe um framework com o
  mesmo nome
SMACSS
Scalable and Modular Architecture for CSS
SMACSS

• Categorização do CSS em: base,
  layout, modules, states e theme
• Módulos independentes
• Muito engessado
• Não está aberto
BEM
Block Element Modifier
BEM

• Módulos independentes
• Muito complexo
• Nomeclatura engessada e falha
  (menu__item_state_current)
LESS / SASS
Aplicações
1. @color, @lnk-color, @active-color, @em-
   color, @hover-bg, @active-bg,…
2. @spacing, @spacing-02, @spacing-h,
   @spacing-v, .sep, .box-sizing, .clear,…
3. .corner(@radius:
   4px), .transition(@transition-type:
   all), .sprite(@sprite-h, @sprite-v),…
Jeremy Clarke
   LESS e SASS criam fantásticos DRY-CSS


1. Foge dos padrões
2. Dependencia de uma biblioteca externa
3. Não é CSS
Reutilização sempre
Então…
1
Crie um arquivo externo
Standards

• Sempre atualizado
• Se um objeto for utilizado em mais
  de 2 lugares, transforme-o em um
  padrão
• Sempre dê um 360 nos padrões
2
Uma boa nomeclatura vale ouro
Harry Roberts
 Quebrar em mini classes como se tivesse
    pedindo um sanduiche no Subway


             #sanduiche

.pao.alface.queijo.tomate.maionese.

  Não gosta de tomate, é só remover
3
Envolva sua equipe no processo de padronização
4
Não deixe de inventar coisas
http://mzl.la/M0cLQC
5
Prototipe
Agora é com vocês!   Obrigado! @bernarddeluna

Contenu connexe

Tendances

Smacss e-css-faz-bem
Smacss e-css-faz-bemSmacss e-css-faz-bem
Smacss e-css-faz-bemJust Digital
 
Minicurso CSS: Definição e aplicação
Minicurso CSS: Definição e aplicaçãoMinicurso CSS: Definição e aplicação
Minicurso CSS: Definição e aplicaçãoVanessa Me Tonini
 
Aula 01 introdução css
Aula 01 introdução cssAula 01 introdução css
Aula 01 introdução cssJolvani Morgan
 
Material css parte I
Material css parte IMaterial css parte I
Material css parte IDenise Lima
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação webCentro Paula Souza
 
CSS´s Dinâmicos - InfoTech 2012
CSS´s Dinâmicos - InfoTech 2012CSS´s Dinâmicos - InfoTech 2012
CSS´s Dinâmicos - InfoTech 2012André Paulovich
 
SASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-endSASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-endAnderson Aguiar
 
Sass: Estilo levado à sério
Sass: Estilo levado à sérioSass: Estilo levado à sério
Sass: Estilo levado à sérioGabriel Nunes
 
SMACSS - Como estruturar CSS para projetos em larga escala
SMACSS - Como estruturar CSS para projetos em larga escalaSMACSS - Como estruturar CSS para projetos em larga escala
SMACSS - Como estruturar CSS para projetos em larga escalaRafael Lyra
 

Tendances (20)

Smacss e-css-faz-bem
Smacss e-css-faz-bemSmacss e-css-faz-bem
Smacss e-css-faz-bem
 
Curso de Desenvolvimento Web - Módulo 02 - CSS
Curso de Desenvolvimento Web - Módulo 02 - CSSCurso de Desenvolvimento Web - Módulo 02 - CSS
Curso de Desenvolvimento Web - Módulo 02 - CSS
 
Minicurso CSS: Definição e aplicação
Minicurso CSS: Definição e aplicaçãoMinicurso CSS: Definição e aplicação
Minicurso CSS: Definição e aplicação
 
Css completo(2)
Css   completo(2)Css   completo(2)
Css completo(2)
 
Css e iFrames
Css e iFramesCss e iFrames
Css e iFrames
 
Introdução CSS
Introdução CSSIntrodução CSS
Introdução CSS
 
HTML/CSS Patterns
HTML/CSS PatternsHTML/CSS Patterns
HTML/CSS Patterns
 
Css - por Nícolas Lazarte Kaqui
Css - por Nícolas Lazarte Kaqui Css - por Nícolas Lazarte Kaqui
Css - por Nícolas Lazarte Kaqui
 
Sass - Syntactically Awesome Style Sheets
Sass - Syntactically Awesome Style SheetsSass - Syntactically Awesome Style Sheets
Sass - Syntactically Awesome Style Sheets
 
Aula 01 introdução css
Aula 01 introdução cssAula 01 introdução css
Aula 01 introdução css
 
Slides Css3
Slides Css3 Slides Css3
Slides Css3
 
Material css parte I
Material css parte IMaterial css parte I
Material css parte I
 
Arquitetura CSS - SMACSS + OOCS + BEM
Arquitetura CSS - SMACSS + OOCS + BEMArquitetura CSS - SMACSS + OOCS + BEM
Arquitetura CSS - SMACSS + OOCS + BEM
 
Introdução ao CSS
Introdução ao CSSIntrodução ao CSS
Introdução ao CSS
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação web
 
Web design responsivo e adaptativo - HTML5/CSS3
Web design responsivo e adaptativo - HTML5/CSS3Web design responsivo e adaptativo - HTML5/CSS3
Web design responsivo e adaptativo - HTML5/CSS3
 
CSS´s Dinâmicos - InfoTech 2012
CSS´s Dinâmicos - InfoTech 2012CSS´s Dinâmicos - InfoTech 2012
CSS´s Dinâmicos - InfoTech 2012
 
SASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-endSASS + COMPASS - Alta Produtividade no Front-end
SASS + COMPASS - Alta Produtividade no Front-end
 
Sass: Estilo levado à sério
Sass: Estilo levado à sérioSass: Estilo levado à sério
Sass: Estilo levado à sério
 
SMACSS - Como estruturar CSS para projetos em larga escala
SMACSS - Como estruturar CSS para projetos em larga escalaSMACSS - Como estruturar CSS para projetos em larga escala
SMACSS - Como estruturar CSS para projetos em larga escala
 

Similaire à Modular CSS - Projetando CSS para aplicativos

Desenvolvimento Front End minicurso UNIDERP 2012
Desenvolvimento Front End minicurso UNIDERP 2012Desenvolvimento Front End minicurso UNIDERP 2012
Desenvolvimento Front End minicurso UNIDERP 2012Anderson de Castro
 
Componetização de CSS com o Compass (Front in Sampa 2013)
Componetização de CSS com o Compass (Front in Sampa 2013)Componetização de CSS com o Compass (Front in Sampa 2013)
Componetização de CSS com o Compass (Front in Sampa 2013)Guilherme Serrano
 
Práticas para Melhorar o seu Desenvolvimento Front-End
Práticas para Melhorar o seu Desenvolvimento Front-EndPráticas para Melhorar o seu Desenvolvimento Front-End
Práticas para Melhorar o seu Desenvolvimento Front-EndTatiane Aguirres Nogueira
 
Oficina de Planejamento Corte: Seu layout virando código - 15 EDTED
Oficina de Planejamento Corte: Seu layout virando código  - 15 EDTEDOficina de Planejamento Corte: Seu layout virando código  - 15 EDTED
Oficina de Planejamento Corte: Seu layout virando código - 15 EDTEDBunee.io - Hiring with Intelligence
 
SEO – A PEÇA CHAVE DO QUEBRA-CABEÇA
SEO –  A PEÇA CHAVE DO QUEBRA-CABEÇASEO –  A PEÇA CHAVE DO QUEBRA-CABEÇA
SEO – A PEÇA CHAVE DO QUEBRA-CABEÇALeonardo Ferreira
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsComunidade NetPonto
 
Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2Afonso Gomes
 
WordCamp SP 2014 - SEO para Desenvolvedores WordPress
WordCamp SP 2014 - SEO para Desenvolvedores WordPressWordCamp SP 2014 - SEO para Desenvolvedores WordPress
WordCamp SP 2014 - SEO para Desenvolvedores WordPressRuan Barbosa
 
Automatização Desenvolvimento Web com Gulp
Automatização Desenvolvimento Web com GulpAutomatização Desenvolvimento Web com Gulp
Automatização Desenvolvimento Web com GulpRicardo Costa
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel PetryTchelinux
 
don't repeat yourself front-ender
don't repeat yourself front-enderdon't repeat yourself front-ender
don't repeat yourself front-endertdc-globalcode
 
HTML & CSS - Aula 5
HTML & CSS - Aula 5HTML & CSS - Aula 5
HTML & CSS - Aula 5lucampos_si
 
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinhaTime de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinhaDeblyn Prado
 
2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdf2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdfRubenManhia
 
Construindo seu framework CSS
Construindo seu framework CSSConstruindo seu framework CSS
Construindo seu framework CSSDiego Eis
 

Similaire à Modular CSS - Projetando CSS para aplicativos (20)

Desenvolvimento Front End minicurso UNIDERP 2012
Desenvolvimento Front End minicurso UNIDERP 2012Desenvolvimento Front End minicurso UNIDERP 2012
Desenvolvimento Front End minicurso UNIDERP 2012
 
Componetização de CSS com o Compass (Front in Sampa 2013)
Componetização de CSS com o Compass (Front in Sampa 2013)Componetização de CSS com o Compass (Front in Sampa 2013)
Componetização de CSS com o Compass (Front in Sampa 2013)
 
Práticas para Melhorar o seu Desenvolvimento Front-End
Práticas para Melhorar o seu Desenvolvimento Front-EndPráticas para Melhorar o seu Desenvolvimento Front-End
Práticas para Melhorar o seu Desenvolvimento Front-End
 
Crystal
CrystalCrystal
Crystal
 
Oficina de Planejamento Corte: Seu layout virando código - 15 EDTED
Oficina de Planejamento Corte: Seu layout virando código  - 15 EDTEDOficina de Planejamento Corte: Seu layout virando código  - 15 EDTED
Oficina de Planejamento Corte: Seu layout virando código - 15 EDTED
 
SEO – A PEÇA CHAVE DO QUEBRA-CABEÇA
SEO –  A PEÇA CHAVE DO QUEBRA-CABEÇASEO –  A PEÇA CHAVE DO QUEBRA-CABEÇA
SEO – A PEÇA CHAVE DO QUEBRA-CABEÇA
 
Less - CSS Dynamic
Less - CSS DynamicLess - CSS Dynamic
Less - CSS Dynamic
 
Front end - the right way
Front end - the right wayFront end - the right way
Front end - the right way
 
Html 5 datainfo
Html 5   datainfoHtml 5   datainfo
Html 5 datainfo
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
 
Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2Aprender CSS (UFCD0154) v2
Aprender CSS (UFCD0154) v2
 
WordCamp SP 2014 - SEO para Desenvolvedores WordPress
WordCamp SP 2014 - SEO para Desenvolvedores WordPressWordCamp SP 2014 - SEO para Desenvolvedores WordPress
WordCamp SP 2014 - SEO para Desenvolvedores WordPress
 
Automatização Desenvolvimento Web com Gulp
Automatização Desenvolvimento Web com GulpAutomatização Desenvolvimento Web com Gulp
Automatização Desenvolvimento Web com Gulp
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
 
don't repeat yourself front-ender
don't repeat yourself front-enderdon't repeat yourself front-ender
don't repeat yourself front-ender
 
HTML & CSS - Aula 5
HTML & CSS - Aula 5HTML & CSS - Aula 5
HTML & CSS - Aula 5
 
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinhaTime de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
Time de Desenvolvimento: Trabalhando em equipe sem matar o coleguinha
 
2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdf2. Introdução ao CSSpptx.pdf
2. Introdução ao CSSpptx.pdf
 
Construindo seu framework CSS
Construindo seu framework CSSConstruindo seu framework CSS
Construindo seu framework CSS
 

Plus de Bunee.io - Hiring with Intelligence

[FrontinBH] Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna
[FrontinBH] Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna [FrontinBH] Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna
[FrontinBH] Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna Bunee.io - Hiring with Intelligence
 

Plus de Bunee.io - Hiring with Intelligence (20)

O que não lhe contaram sobre a carreira de DEV
O que não lhe contaram sobre a carreira de DEVO que não lhe contaram sobre a carreira de DEV
O que não lhe contaram sobre a carreira de DEV
 
Como fazer um Pitch Fantástico
Como fazer um Pitch FantásticoComo fazer um Pitch Fantástico
Como fazer um Pitch Fantástico
 
The BGs - Background CSS
The BGs - Background CSSThe BGs - Background CSS
The BGs - Background CSS
 
Pensando em Redesign
Pensando em RedesignPensando em Redesign
Pensando em Redesign
 
Como ser Único (sexy)?
Como ser Único (sexy)?Como ser Único (sexy)?
Como ser Único (sexy)?
 
A importância de Aprender Ensinando
A importância de Aprender EnsinandoA importância de Aprender Ensinando
A importância de Aprender Ensinando
 
Lean UX: Parem de criar produtos, comecem a criar experiências
Lean UX: Parem de criar produtos, comecem a criar experiênciasLean UX: Parem de criar produtos, comecem a criar experiências
Lean UX: Parem de criar produtos, comecem a criar experiências
 
Lean UX para aplicativos mobile
Lean UX para aplicativos mobileLean UX para aplicativos mobile
Lean UX para aplicativos mobile
 
Design behind scenes and layers
Design behind scenes and layersDesign behind scenes and layers
Design behind scenes and layers
 
Semântica: Uma jornada pelos componentes web
Semântica: Uma jornada pelos componentes webSemântica: Uma jornada pelos componentes web
Semântica: Uma jornada pelos componentes web
 
como pensar front para wordpress
como pensar front para wordpresscomo pensar front para wordpress
como pensar front para wordpress
 
Atenção: Dev no palco!
Atenção: Dev no palco!Atenção: Dev no palco!
Atenção: Dev no palco!
 
Layouts Responsivos
Layouts ResponsivosLayouts Responsivos
Layouts Responsivos
 
Surpresa
SurpresaSurpresa
Surpresa
 
Quero ser um ninja em xHTML, HTML5 e CSS3
Quero ser um ninja em xHTML, HTML5 e CSS3Quero ser um ninja em xHTML, HTML5 e CSS3
Quero ser um ninja em xHTML, HTML5 e CSS3
 
Design agil: Encaixando o Design no processo
Design agil: Encaixando o Design no processoDesign agil: Encaixando o Design no processo
Design agil: Encaixando o Design no processo
 
UX SUX
UX SUXUX SUX
UX SUX
 
Planejamento de um wireframe orientado para aplicativos
Planejamento de um wireframe orientado para aplicativosPlanejamento de um wireframe orientado para aplicativos
Planejamento de um wireframe orientado para aplicativos
 
[FrontinBH] Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna
[FrontinBH] Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna [FrontinBH] Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna
[FrontinBH] Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna
 
Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna
Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de LunaQuero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna
Quero ser um ninja em xHTML, HTML5 e CSS3 - Bernard de Luna
 

Modular CSS - Projetando CSS para aplicativos

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n
  111. \n
  112. \n
  113. \n
  114. \n
  115. \n
  116. \n
  117. \n
  118. \n
  119. \n
  120. \n
  121. \n
  122. \n
  123. \n
  124. \n
  125. \n
  126. \n
  127. \n
  128. \n
  129. \n
  130. \n
  131. \n
  132. \n
  133. \n
  134. \n
  135. \n
  136. \n
  137. \n
  138. \n
  139. \n
  140. \n
  141. \n
  142. \n
  143. \n
  144. \n
  145. \n
  146. \n
  147. \n
  148. \n
  149. \n
  150. \n
  151. \n
  152. \n
  153. \n
  154. \n
  155. \n
  156. \n