389 lines
		
	
	
		
			No EOL
		
	
	
		
			18 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			389 lines
		
	
	
		
			No EOL
		
	
	
		
			18 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
 | 
						||
         
 | 
						||
         <p>Published version <code>1.4.0</code> of <a href="https://protesilaos.com/emacs/modus-themes">the Modus
 | 
						||
themes</a>.  The detailed release
 | 
						||
notes are provided below.  For a general overview of the project watch
 | 
						||
<a href="https://protesilaos.com/codelog/2021-05-19-modus-themes-status-update/">the status update of
 | 
						||
2021-05-19</a>.
 | 
						||
For any questions pertaining to this publication feel welcome to
 | 
						||
<a href="https://protesilaos.com/contact/">contact me</a>.</p>
 | 
						||
 | 
						||
<p>A patch to update the version of the themes that are shipped with Emacs
 | 
						||
will be prepared right after this announcement is published.  GNU ELPA
 | 
						||
syncs from emacs.git, so expect an update shortly thereafter.</p>
 | 
						||
 | 
						||
<hr />
 | 
						||
 | 
						||
<h2>Modus themes version 1.4.0</h2>
 | 
						||
 | 
						||
<p>By Protesilaos Stavrou <a href="mailto:info@protesilaos.com">info@protesilaos.com</a> on 2021-05-25</p>
 | 
						||
 | 
						||
<p>This entry records the changes made to the project since the release of
 | 
						||
version 1.3.0 on 2021-04-17.  There have been around 100 commits in the
 | 
						||
meantime, as is the norm.</p>
 | 
						||
 | 
						||
<p>If you are coming from older versions, please consult the change log
 | 
						||
entry for version 1.0.0 with regard to the breaking changes that were
 | 
						||
introduced.</p>
 | 
						||
 | 
						||
<p>Every colour-related modification is always done in accordance with the
 | 
						||
overarching accessibility objective of the themes for a minimum contrast
 | 
						||
ratio of 7:1 between background and foreground values in their given
 | 
						||
combination (the WCAG AAA standard).</p>
 | 
						||
 | 
						||
<p>URL of the official manual: <a href="https://protesilaos.com/emacs/modus-themes">https://protesilaos.com/emacs/modus-themes</a>.  Or
 | 
						||
read it with Emacs’ Info reader by evaluating this form:</p>
 | 
						||
 | 
						||
<pre><code>(info "(modus-themes) Top")
 | 
						||
</code></pre>
 | 
						||
 | 
						||
<p>Remember that the themes are built into Emacs version 28 (current
 | 
						||
development target), and are available on GNU ELPA, as well as other
 | 
						||
archives.</p>
 | 
						||
 | 
						||
<h2>Customisations variables</h2>
 | 
						||
 | 
						||
<ul>
 | 
						||
  <li>
 | 
						||
    <p>Redefined the style of <code>fg-only</code> that <code>modus-themes-diffs</code> accepts, so
 | 
						||
that it no longer uses a red-green colour coding, but applies a
 | 
						||
red-blue distinction instead.  The symbol <code>fg-only</code> is a deprecated
 | 
						||
alias for the more descriptive <code>fg-only-deuteranopia</code>.</p>
 | 
						||
 | 
						||
    <p>This is done because green text on a light background is one of the
 | 
						||
worst combinations for the purposes of legibility, as it does not
 | 
						||
stand out in its context and thus forces undesirable compromises.
 | 
						||
Whereas red and blue work well in this case, while making the style
 | 
						||
accessible to users with red-green colour deficiency (deuteranopia).
 | 
						||
To avoid inconsistencies between Modus Operandi and Modus Vivendi, we
 | 
						||
replace green with blue in both themes.  A full report is available in
 | 
						||
issue 183 which was created on April 21, 2021:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/183">https://gitlab.com/protesilaos/modus-themes/-/issues/183</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Introduced the boolean <code>modus-themes-success-deuteranopia</code> which
 | 
						||
replaces all instances of green with blue in contexts where a
 | 
						||
red-green colour coding is in effect (e.g. Org TODO vs DONE keywords,
 | 
						||
isearch current match…).</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Implemented <code>modus-themes-mail-citations</code> to control the colouration
 | 
						||
of cited text in email-related buffers, such as Gnus or message.el.
 | 
						||
It accepts values nil, <code>faint</code>, and <code>monochrome</code>.  By default (the nil
 | 
						||
value) the text of citations cycles through blue, green, red, yellow
 | 
						||
depending on the level of depth.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Expanded the set of options for <code>modus-themes-mode-line</code> to encompass
 | 
						||
the values <code>borderless-accented</code>, <code>borderless-accented-3d</code>, and
 | 
						||
<code>borderless-accented-moody</code>.  Those are variations of existing styles.
 | 
						||
The complete list:</p>
 | 
						||
 | 
						||
    <ul>
 | 
						||
      <li>nil (default)</li>
 | 
						||
      <li>3d</li>
 | 
						||
      <li>moody</li>
 | 
						||
      <li>borderless</li>
 | 
						||
      <li>borderless-3d</li>
 | 
						||
      <li>borderless-moody</li>
 | 
						||
      <li>accented</li>
 | 
						||
      <li>accented-3d</li>
 | 
						||
      <li>accented-moody</li>
 | 
						||
      <li>borderless-accented</li>
 | 
						||
      <li>borderless-accented-3d</li>
 | 
						||
      <li>borderless-accented-moody</li>
 | 
						||
    </ul>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Renamed the non-nil values that <code>modus-themes-org-blocks</code> accepts from
 | 
						||
<code>grayscale</code>, <code>rainbow</code> to <code>gray-background</code> and <code>tinted-background</code>,
 | 
						||
respectively.  The new symbols better describe their effect on Org
 | 
						||
source blocks, namely, that they affect the background of the block
 | 
						||
rather than the foreground.  The old symbols will still work but are
 | 
						||
considered deprecated aliases of the newer ones.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Altered the intensity of the <code>modus-themes-hl-line</code> option
 | 
						||
<code>accented-background</code> to a more noticeable shade of cyan/teal.  The
 | 
						||
old style was too subtle to have the desired effect.  The value
 | 
						||
<code>underline-accented</code> is not affected by this change, as it still uses
 | 
						||
the same subtle background it did before in combination with a more
 | 
						||
pronounced underline colour.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Deleted all deprecation warnings that concerned the transition from
 | 
						||
version 0.13.0 of the themes to 1.0.0.  Those had been in effect for
 | 
						||
several months, spanning four tagged releases.</p>
 | 
						||
  </li>
 | 
						||
</ul>
 | 
						||
 | 
						||
<h2>Faces or face groups</h2>
 | 
						||
 | 
						||
<ul>
 | 
						||
  <li>
 | 
						||
    <p>Reconsidered the use of colour in all email-related citation faces to
 | 
						||
avoid exaggerations and reduce complexity.  Colour values have been
 | 
						||
tweaked to tone down their overall intensity, while the number of
 | 
						||
colours has been reduced to four.  Gnus and Mu4e have faces for more
 | 
						||
levels of citation depth, though those will simply repeat the
 | 
						||
four-colour cycle.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Made the <code>message-mml</code> face look consistent with the rest of the
 | 
						||
buffer while composing an email by changing its foreground colour from
 | 
						||
a yellow to a cyan variant.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Refined several faces in the Notmuch group in the interest of harmony:</p>
 | 
						||
 | 
						||
    <ul>
 | 
						||
      <li>
 | 
						||
        <p>Individual message headers in <code>notmuch-show-mode</code> use bold text in
 | 
						||
addition to their existing subtle background to better stand out in
 | 
						||
their context. The face is <code>notmuch-message-summary-face</code>.</p>
 | 
						||
      </li>
 | 
						||
      <li>
 | 
						||
        <p>Tags are no longer set unconditionally to a bold typographic weight.
 | 
						||
They become such for unread threads in <code>notmuch-search-mode</code>
 | 
						||
buffers, as well as for headers of <code>notmuch-show-mode</code>.</p>
 | 
						||
      </li>
 | 
						||
      <li>
 | 
						||
        <p>Removal and addition of tags is now denoted by a strike-through and
 | 
						||
an underline effect, respectively, whereas before they both used
 | 
						||
underlines with the only difference being their colour.</p>
 | 
						||
      </li>
 | 
						||
      <li>
 | 
						||
        <p>The subject line in <code>notmuch-search-mode</code> buffers uses the main
 | 
						||
foreground instead of a dimmed one.  The field of matching authors
 | 
						||
has a tweaked foreground to keep the tabular view easy to read.</p>
 | 
						||
      </li>
 | 
						||
      <li>
 | 
						||
        <p>All cryptography-related faces are simplified to not show a coloured
 | 
						||
background but only use a foreground colour instead.</p>
 | 
						||
      </li>
 | 
						||
    </ul>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Removed direct support for <code>counsel-notmuch</code> as it already inherits
 | 
						||
from the relevant notmuch faces.  The package is thus considered
 | 
						||
indirectly supported.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Refrained from setting a background to the <code>csv-separator-face</code> as it
 | 
						||
would inevitably colourise the negative space in the tabular view
 | 
						||
created by <code>csv-align-mode</code>.  A red text colour is used instead, even
 | 
						||
though this is not common practice: it is easier to spot for small,
 | 
						||
single characters, such as a comma or a semicolon that is meant to
 | 
						||
have a special meaning.  Thanks to Kevin Fleming for reporting the
 | 
						||
problem and for offering feedback on the choice of colour in issue
 | 
						||
194: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/194">https://gitlab.com/protesilaos/modus-themes/-/issues/194</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Distinguished between ordinary links and widget buttons by removing
 | 
						||
the underline from the latter (the <code>widget-button</code> face) and altering
 | 
						||
the shade of its foreground colour.  Such widgets are used in Emacs’
 | 
						||
Custom interfaces and can also be found in the default Notmuch “hello”
 | 
						||
buffer that runs <code>notmuch-hello-mode</code>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Tweaked the Ediff current faces to be consistent with <code>diff-mode</code> and
 | 
						||
related.  In practice, this only applies when <code>modus-themes-diffs</code> is
 | 
						||
set to a value of <code>fg-only-deuteranopia</code>, as it adds a dim background
 | 
						||
to the current diff hunk.  All other styles of <code>modus-themes-diffs</code>
 | 
						||
look the same as before while using Ediff.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Simplified the faces of <code>corfu</code> to match the current state of the
 | 
						||
upstream project.  Thanks to Daniel Mendler (its developer) for
 | 
						||
reporting this in issue 184:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/184">https://gitlab.com/protesilaos/modus-themes/-/issues/184</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Refined all Eshell faces so that the output of <code>ls</code> is consistent with
 | 
						||
the overall aesthetic of the themes.  Also made <code>eshell-prompt</code>
 | 
						||
inherit from <code>comint-highlight-prompt</code> to look the same as other such
 | 
						||
prompts (all are configurable by <code>modus-themes-prompts</code>).</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Revised <code>eshell-prompt-extras</code> and <code>eshell-git-prompt</code> to use colours
 | 
						||
and typographic weight that better match the style of the various
 | 
						||
configurations they offer.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Simplified <code>eshell-syntax-highlighting</code> to inherit from the standard
 | 
						||
Eshell faces, where appropriate.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Adjusted the colour of <code>centaur-tabs-active-bar-face</code> and removed the
 | 
						||
bespoke <code>fg-tab-accent</code> colour from <code>modus-themes-operandi-colors</code> and
 | 
						||
<code>modus-themes-vivendi-colors</code> that was only used by it (and which
 | 
						||
should have never been introduced to begin with).</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Updated the <code>tab-bar-groups</code> faces to match changes upstream.  Thanks
 | 
						||
to Fritz Grabo (its developer) for the patch in merge request 35:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/35">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/35</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Changed the Ibuffer title and group faces to better differentiate
 | 
						||
between group titles and special or non-file-visiting buffers.  Thanks
 | 
						||
to Nicolas De Jaeghere for the patch in merge request 37:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/37">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/37</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Ensured that all faces that denote a “success” state, or which are
 | 
						||
expected to be coloured in green in a red-green binary, can use an
 | 
						||
appropriate blue colour (or colour combination that involves blue)
 | 
						||
instead when <code>modus-themes-success-deuteranopia</code> is set to a non-nil
 | 
						||
value.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Added support for the new <code>bookmark-face</code> in Emacs version 28.  This
 | 
						||
means that the built-in bookmark.el library is directly supported by
 | 
						||
the themes.  This face can be disabled by setting <code>bookmark-fontify</code>
 | 
						||
to nil.  Thanks to Mark Barton for reporting the presence of this new
 | 
						||
face and for providing feedback on its style in issue 189:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/189">https://gitlab.com/protesilaos/modus-themes/-/issues/189</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Aligned <code>hes-mode</code> (<code>highlight-escape-sequences</code>) with the standard
 | 
						||
font-lock faces for regexp grouping.  This means that it conforms with
 | 
						||
changes to the <code>modus-themes-syntax</code> variable.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Reconfigured the <code>org-quote</code> face to adapt its style depending on the
 | 
						||
value of <code>modus-themes-org-blocks</code>.  The default is a subtle blue/cold
 | 
						||
foreground colour against the main background.  When a value of
 | 
						||
<code>gray-background</code> is assigned to <code>modus-themes-org-blocks</code>, the text’s
 | 
						||
colour becomes that of the main foreground in order to maintain a good
 | 
						||
level of legibility.  Thanks to Rudolf Adamkovič for the feedback in
 | 
						||
issue 190: <a href="https://gitlab.com/protesilaos/modus-themes/-/issues/190">https://gitlab.com/protesilaos/modus-themes/-/issues/190</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Refashioned the <code>show-paren-match-expression</code> face to make it apply a
 | 
						||
bespoke background colour and not override the expression’s foreground
 | 
						||
colours.  This face is used by <code>show-paren-mode</code> when the
 | 
						||
customisation variable <code>show-paren-style</code> is set to the <code>expression</code>
 | 
						||
value.  Thanks to Rudolf Adamkovič for the feedback in issue 191:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/191">https://gitlab.com/protesilaos/modus-themes/-/issues/191</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Made headings level 8 use a fine shade of magenta by default instead
 | 
						||
of gray (notwithstanding user changes to <code>modus-themes-headings</code>).
 | 
						||
This should have a negligible difference in Org or Outline buffers,
 | 
						||
but is more noticeable when editing Elisp in Emacs28 while also using
 | 
						||
<code>outline-minor-mode</code> and with <code>outline-minor-mode-highlight</code> set to
 | 
						||
<code>override</code>.  That is because several top-level forms use that heading
 | 
						||
level with those configurations.</p>
 | 
						||
  </li>
 | 
						||
</ul>
 | 
						||
 | 
						||
<h2>Documentation (the manual)</h2>
 | 
						||
 | 
						||
<ul>
 | 
						||
  <li>
 | 
						||
    <p>Incorporated a sample configuration block with all customisation
 | 
						||
variables and with comment annotations of their available options, in
 | 
						||
an attempt to make it easier for users to discover what the themes
 | 
						||
provide.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Replaced all instances of “modeline” with “mode line” for consistency
 | 
						||
with the Emacs style.  Thanks to Rudolf Adamkovič for the patch that
 | 
						||
started this process in merge request 33:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/33">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/33</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Wrote note on setting mode line faces that indicate the state of
 | 
						||
<code>god-mode</code>.  Thanks to Rudolf Adamkovič for the feedback in issue 187:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/187">https://gitlab.com/protesilaos/modus-themes/-/issues/187</a>.  Also
 | 
						||
thanks to Rudolf for updating the applicable hook in merge request 34:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/merge_requests/34">https://gitlab.com/protesilaos/modus-themes/-/merge_requests/34</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Listed <code>org-mode</code> variables that affect fontification in blocks:
 | 
						||
<code>org-src-fontify-natively</code>, <code>org-fontify-whole-block-delimiter-line</code>,
 | 
						||
and <code>org-fontify-quote-and-verse-blocks</code>.  This complements the
 | 
						||
already documented variables <code>org-fontify-whole-heading-line</code> and
 | 
						||
<code>org-fontify-done-headline</code> that pertain to headings.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Included note on fontifying inline Latex expressions in Org buffers.
 | 
						||
Thanks to Rudolf Adamkovič for the feedback in issue 190:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/190">https://gitlab.com/protesilaos/modus-themes/-/issues/190</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Elaborated on the use of <code>face-remap-add-relative</code> by means of sample
 | 
						||
code that cycles through arbitrary colours for the <code>region</code> face.
 | 
						||
This is filed under the “Do It Yourself” (DIY) section.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Provided a DIY method for adapting the fontification of Org source
 | 
						||
block delimiter lines to the value of <code>modus-themes-org-blocks</code>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Expanded the DIY entry on overriding the saturation of the active
 | 
						||
theme’s colours with a method that combines the programmatic approach
 | 
						||
with manual overrides.  The user can thus specify the colour values
 | 
						||
they want to override and let the rest be handled by Elisp.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Introduced a section with answers to Frequently Asked Questions (FAQ)
 | 
						||
about the design of the themes as well as recommendations on how to
 | 
						||
ensure optimal reading conditions or start thinking about them.  The
 | 
						||
questions are:</p>
 | 
						||
 | 
						||
    <ul>
 | 
						||
      <li>Is the contrast ratio about adjacent colors?</li>
 | 
						||
      <li>What does it mean to avoid exaggerations?</li>
 | 
						||
      <li>Why are colors mostly variants of blue, magenta, cyan?</li>
 | 
						||
      <li>What is the best setup for legibility?</li>
 | 
						||
    </ul>
 | 
						||
  </li>
 | 
						||
</ul>
 | 
						||
 | 
						||
<h2>Miscellaneous</h2>
 | 
						||
 | 
						||
<ul>
 | 
						||
  <li>
 | 
						||
    <p>Removed superfluous code from internal functions and adapted their
 | 
						||
indentation to make them easier to read.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Recalibrated some values in <code>modus-themes-vivendi-colors</code> to ensure
 | 
						||
consistency in luminance with other colours that are used in their
 | 
						||
context.  Those are subtle changes that can only be discerned in
 | 
						||
side-by-side comparisons of the before and after states.  Thanks to
 | 
						||
André Alexandre Gomes for the feedback in issue 193:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/193">https://gitlab.com/protesilaos/modus-themes/-/issues/193</a>.</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Changed the saturation and hueness of the bespoke <code>fg-comment-yellow</code>
 | 
						||
in <code>modus-themes-operandi-colors</code> and <code>modus-themes-vivendi-colors</code> to
 | 
						||
better contrast with its context, while still keeping its luminance
 | 
						||
consistent with its role as a colour for comments in code.  This is
 | 
						||
used when <code>modus-themes-syntax</code> is configured appropriately (read its
 | 
						||
doc string or consult the manual).</p>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Attempted to add explicit support for the faces of the built-in
 | 
						||
pulse.el library, but ultimately opted against them as the doc string
 | 
						||
of <code>pulse-highlight-face</code> advises against customising it, even though
 | 
						||
it is not clear from the source code in emacs.git what the problem
 | 
						||
could be.  We shall reconsider this case for the next release cycle.
 | 
						||
Thanks to Gustavo Barros for the feedback on several aspects of this
 | 
						||
topic in issues 185 and 200:</p>
 | 
						||
 | 
						||
    <ul>
 | 
						||
      <li><a href="https://gitlab.com/protesilaos/modus-themes/-/issues/185">https://gitlab.com/protesilaos/modus-themes/-/issues/185</a></li>
 | 
						||
      <li><a href="https://gitlab.com/protesilaos/modus-themes/-/issues/200">https://gitlab.com/protesilaos/modus-themes/-/issues/200</a></li>
 | 
						||
    </ul>
 | 
						||
  </li>
 | 
						||
  <li>
 | 
						||
    <p>Took the feedback of John Haman in issue 199 as a reminder to complete
 | 
						||
the set of possible values for the <code>modus-themes-mode-line</code> variable:
 | 
						||
<a href="https://gitlab.com/protesilaos/modus-themes/-/issues/199">https://gitlab.com/protesilaos/modus-themes/-/issues/199</a>.</p>
 | 
						||
  </li>
 | 
						||
</ul>
 | 
						||
        
 | 
						||
       |