texlive[57496] Master: moderncv (22jan21)

commits+karl at tug.org commits+karl at tug.org
Fri Jan 22 23:31:33 CET 2021


Revision: 57496
          http://tug.org/svn/texlive?view=revision&revision=57496
Author:   karl
Date:     2021-01-22 23:31:33 +0100 (Fri, 22 Jan 2021)
Log Message:
-----------
moderncv (22jan21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/moderncv/CHANGELOG
    trunk/Master/texmf-dist/doc/latex/moderncv/KNOWN_BUGS
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncv.cls
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyi.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyii.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiii.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiv.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyv.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcollection.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblack.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblue.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorburgundy.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgreen.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgrey.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolororange.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorpurple.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorred.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcompatibility.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvdebugtools.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvfooti.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadi.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadii.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadiii.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadiv.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadv.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadvi.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsawesome.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsletters.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsmarvosym.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylebanking.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylecasual.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleclassic.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleempty.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylefancy.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleoldstyle.sty
    trunk/Master/texmf-dist/tex/latex/moderncv/tweaklist.sty
    trunk/Master/tlpkg/bin/deref-symlinks
    trunk/Master/tlpkg/libexec/ctan2tds

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/moderncv/LICENSE.txt
    trunk/Master/texmf-dist/doc/latex/moderncv/README.md
    trunk/Master/texmf-dist/doc/latex/moderncv/manual/
    trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.pdf
    trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.tex
    trunk/Master/texmf-dist/doc/latex/moderncv/picture.eps
    trunk/Master/texmf-dist/doc/latex/moderncv/picture.jpg
    trunk/Master/texmf-dist/doc/latex/moderncv/publications.bib
    trunk/Master/texmf-dist/doc/latex/moderncv/template.tex
    trunk/Master/texmf-dist/tex/latex/moderncv/moderncvskillmatrix.sty

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/moderncv/README
    trunk/Master/texmf-dist/doc/latex/moderncv/examples/

Modified: trunk/Master/texmf-dist/doc/latex/moderncv/CHANGELOG
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/CHANGELOG	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/CHANGELOG	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,3 +1,14 @@
+version 2.1.0 (21 Jan 2021)
+- maintainer change: now team maintained (https://github.com/moderncv), since
+ original repository is basically dead since 2016.
+- new \social options: Xing, Skype, GitLab, Bitbucket, stack overflow, ORCID,
+ ResearcherID, ResearchGate, Telegram and Google Scholar
+- hyperlinks in phone numbers
+- switch from l3regex to expl3
+- new skill matrix feature
+- move to fonawesome5 package
+- default to https
+
 version 2.0.0 (28 Jul 2015)
  - refactored the  code into heads, body, foot and icon substyles. All styles
  (classic, casual, banking and oldstyle) are just a combination of these and

Modified: trunk/Master/texmf-dist/doc/latex/moderncv/KNOWN_BUGS
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/KNOWN_BUGS	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/KNOWN_BUGS	2021-01-22 22:31:33 UTC (rev 57496)
@@ -9,7 +9,7 @@
   when used with bibentry, through the output is actually correct. Amongst other,
   this causes compilation by LyX to stop.
 - The space after a cventry gets eaten up when the last argument contains a nested
-  itemize environment. An ugly hack and uncomplete solution was implemented by
+  itemize environment. An ugly hack and incomplete solution was implemented by
   including a \strut in every item label, but this doesn't solve the problem for
-  multi-line items. Ideally, the strut should end the item, but there seem to be
+  multi-line items. Ideally, the strut should end the item, but there seems to be
   no way to do this.

Added: trunk/Master/texmf-dist/doc/latex/moderncv/LICENSE.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/LICENSE.txt	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/LICENSE.txt	2021-01-22 22:31:33 UTC (rev 57496)
@@ -0,0 +1,415 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c  2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+    Everyone is allowed to distribute verbatim copies of this
+    license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute.  This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work.  If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+   `Work'
+    Any work being distributed under this License.
+
+   `Derived Work'
+    Any work that under any applicable law is derived from the Work.
+
+   `Modification'
+    Any procedure that produces a Derived Work under any applicable
+    law -- for example, the production of a file containing an
+    original file associated with the Work or a significant portion of
+    such a file, either verbatim or with modifications and/or
+    translated into another language.
+
+   `Modify'
+    To apply any procedure that produces a Derived Work under any
+    applicable law.
+
+   `Distribution'
+    Making copies of the Work available from one person to another, in
+    whole or in part.  Distribution includes (but is not limited to)
+    making any electronic components of the Work accessible by
+    file transfer protocols such as FTP or HTTP or by shared file
+    systems such as Sun's Network File System (NFS).
+
+   `Compiled Work'
+    A version of the Work that has been processed into a form where it
+    is directly usable on a computer system.  This processing may
+    include using installation facilities provided by the Work,
+    transformations of the Work, copying of components of the Work, or
+    other activities.  Note that modification of any installation
+    facilities provided by the Work constitutes modification of the Work.
+
+   `Current Maintainer'
+    A person or persons nominated as such within the Work.  If there is
+    no such explicit nomination then it is the `Copyright Holder' under
+    any applicable law.
+
+   `Base Interpreter'
+    A program or process that is normally needed for running or
+    interpreting a part or the whole of the Work.
+
+    A Base Interpreter may depend on external components but these
+    are not considered part of the Base Interpreter provided that each
+    external component clearly identifies itself whenever it is used
+    interactively.  Unless explicitly specified when applying the
+    license to the Work, the only applicable Base Interpreter is a
+    `LaTeX-Format' or in the case of files belonging to the
+    `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1.  Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope.  In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2.  You may distribute a complete, unmodified copy of the Work as you
+received it.  Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3.  You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4.  If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work.  You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work.  Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5.  If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6.  If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition.  Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+  a. If a component of this Derived Work can be a direct replacement
+     for a component of the Work when that component is used with the
+     Base Interpreter, then, wherever this component of the Work
+     identifies itself to the user when used interactively with that
+     Base Interpreter, the replacement component of this Derived Work
+     clearly and unambiguously identifies itself as a modified version
+     of this component to the user when used interactively with that
+     Base Interpreter.
+
+  b. Every component of the Derived Work contains prominent notices
+     detailing the nature of the changes to that component, or a
+     prominent reference to another file that is distributed as part
+     of the Derived Work and that contains a complete and accurate log
+     of the changes.
+
+  c. No information in the Derived Work implies that any persons,
+     including (but not limited to) the authors of the original version
+     of the Work, provide any support, including (but not limited to)
+     the reporting and handling of errors, to recipients of the
+     Derived Work unless those persons have stated explicitly that
+     they do provide such support for the Derived Work.
+
+  d. You distribute at least one of the following with the Derived Work:
+
+       1. A complete, unmodified copy of the Work;
+          if your distribution of a modified component is made by
+          offering access to copy the modified component from a
+          designated place, then offering equivalent access to copy
+          the Work from the same or some similar place meets this
+          condition, even though third parties are not compelled to
+          copy the Work along with the modified component;
+
+       2. Information that is sufficient to obtain a complete,
+          unmodified copy of the Work.
+
+7.  If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8.  The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9.  Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+       provided that license itself honors the conditions listed in
+       Clause 6 above, in regard to the Work, though it does not have
+       to honor the rest of the conditions in this license.
+
+    b. If a Derived Work is distributed under a different license, that
+       Derived Work must provide sufficient documentation as part of
+       itself to allow each recipient of that Derived Work to honor the
+       restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12.  Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work.  Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose.  The entire risk as to the quality and performance
+of the Work is with you.  Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1.  Make a reasonable attempt to trace the Current Maintainer (and
+     the Copyright Holder, if the two differ) through the means of
+     an Internet or similar search.
+
+ 2.  If this search is successful, then enquire whether the Work
+     is still maintained.
+
+  a. If it is being maintained, then ask the Current Maintainer
+     to update their communication data within one month.
+
+  b. If the search is unsuccessful or no action to resume active
+     maintenance is taken by the Current Maintainer, then announce
+     within the pertinent community your intention to take over
+     maintenance.  (If the Work is a LaTeX work, this could be
+     done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+     maintenance of the Work to you, then this takes effect
+     immediately upon announcement.
+
+  b. If the Current Maintainer is not reachable and the Copyright
+     Holder agrees that maintenance of the Work be passed to you,
+     then this takes effect immediately upon announcement.
+
+ 4.  If you make an `intention announcement' as described in 2b. above
+     and after three months your intention is challenged neither by
+     the Current Maintainer nor by the Copyright Holder nor by other
+     people, then you may arrange for the Work to be changed so as
+     to name you as the (new) Current Maintainer.
+
+ 5.  If the previously unreachable Current Maintainer becomes
+     reachable once more within three months of a change completed
+     under the terms of 3b) or 4), then that Current Maintainer must
+     become or remain the Current Maintainer upon request provided
+     they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer.  You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license.  These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license.  You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license.  It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate.  Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component.  While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community.  It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one.  Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified.  Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+  %% pig.dtx
+  %% Copyright 2005 M. Y. Name
+  %
+  % This work may be distributed and/or modified under the
+  % conditions of the LaTeX Project Public License, either version 1.3
+  % of this license or (at your option) any later version.
+  % The latest version of this license is in
+  %   http://www.latex-project.org/lppl.txt
+  % and version 1.3 or later is part of all distributions of LaTeX
+  % version 2005/12/01 or later.
+  %
+  % This work has the LPPL maintenance status `maintained'.
+  %
+  % The Current Maintainer of this work is M. Y. Name.
+  %
+  % This work consists of the files pig.dtx and pig.ins
+  % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+   The LPPL requires that distributions of the Work contain all the
+   files of the Work.  It is therefore important that you provide a
+   way for the licensee to determine which files constitute the Work.
+   This could, for example, be achieved by explicitly listing all the
+   files of the Work near the copyright notice of each file or by
+   using a line such as:
+
+    % This work consists of all files listed in manifest.txt.
+
+   in that place.  In the absence of an unequivocal list it might be
+   impossible for the licensee to determine what is considered by you
+   to comprise the Work and, in such a case, the licensee would be
+   entitled to make reasonable conjectures as to which files comprise
+   the Work.


Property changes on: trunk/Master/texmf-dist/doc/latex/moderncv/LICENSE.txt
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/doc/latex/moderncv/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/README	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/README	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,16 +0,0 @@
-moderncv -- a modern curriculum vitae class
-
-Moderncv provides a documentclass for typesetting curricula vitae in various
-styles. Moderncv aims to be both straightforward to use and customizable,
-providing four ready-made styles (classic, casual, banking and oldstyle)
-and allowing one to define his own by modifying colors, fonts, icons, etc.
-
-Most commands are defined in such a way that arguments are optional.
-
-Until a decent manual is written, one can always look in the "examples"
-directory for some examples. Documents can be compiled into dvi, ps or pdf.
-
-
-Author: Xavier Danaux <xdanaux at gmail.com>
-Licence: The LaTeX Project Public Li­cense, version 1.3c
-URL: https://github.com/xdanaux/moderncv

Added: trunk/Master/texmf-dist/doc/latex/moderncv/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/README.md	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/README.md	2021-01-22 22:31:33 UTC (rev 57496)
@@ -0,0 +1,17 @@
+# moderncv
+
+## A modern curriculum vitae class for LaTeX
+
+**moderncv** provides a documentclass for typesetting curricula vitae in various styles. Moderncv aims to be both straightforward to use and customizable, providing five ready-made styles (classic, casual, banking, oldstyle and fancy) and allowing one to define his own by modifying colors, fonts, icons, etc.
+
+Most commands are defined in such a way that arguments are optional.
+
+Until a decent manual is written, one can always look in the `template.tex` file for an example. It can be compiled to pdf via `latexmk -pdf ./template.tex`.
+
+## Licence
+moderncv is licensed under the [LPPL-1.3c](https://spdx.org/licenses/LPPL-1.3c.html).
+
+## Origin
+Original author: Xavier Danaux <xdanaux at gmail.com><br/>
+Original repository: https://github.com/xdanaux/moderncv<br/>
+This repository is a fork aiming to maintain moderncv inside CTAN, since upstream is dead since 2016.


Property changes on: trunk/Master/texmf-dist/doc/latex/moderncv/README.md
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.pdf	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.pdf	2021-01-22 22:31:33 UTC (rev 57496)

Property changes on: trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.tex	2021-01-22 22:31:33 UTC (rev 57496)
@@ -0,0 +1,462 @@
+%% moderncv_userguide.tex (compiled with pdfLaTeX)
+%% Copyright 2007 Cristina Sambo
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+\documentclass[a4paper,11pt]{article}
+
+\title{\bfseries Moderncv -- v. 0.6}
+\author{Package by Xavier Danaux \\ \begin{small}Documentation by Cristina Sambo \end{small}}
+\date{}
+
+%language and encoding options
+\usepackage[english]{babel}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+
+%font options
+\usepackage{txfonts}
+\usepackage{marvosym}
+\usepackage{pifont}
+
+%margins, spacing and page layout
+\usepackage[pdftex,colorlinks=true]{hyperref} %(hyperref must be loaded before geometry)
+\usepackage[pdftex]{geometry}
+\geometry{top=2.5cm, bottom=3cm}
+\setlength{\parindent}{0pt} %(to soppress indentation when starting a new paragraph)
+\frenchspacing %(to soppress additional space after a full stop)
+
+%packages
+\usepackage[pdftex]{graphicx}
+\usepackage[pdftex]{xcolor}
+\usepackage[labelfont=sl,font=small,width=0.9\textwidth]{caption}
+\usepackage{marvosym}
+\usepackage{latexsym}
+
+%pdfLaTeX options
+\pdfpagewidth=\paperwidth
+\pdfpageheight=\paperheight
+\pdfimageresolution=150
+\pdfinfo{
+	/Title		(Moderncv -- v. 0.6)
+	/Author		(Cristina Sambo)
+	/Subject		(Moderncv package user's guide)
+	/Keywords	(curriculum vitae, LaTeX)
+}
+
+%my commands
+\definecolor{bluecv}{rgb}{0.25,0.5,0.75}
+\definecolor{greencv}{rgb}{0.55,0.85,0.35}
+\definecolor{redcv}{rgb}{1.00,0.30,0.30}
+\definecolor{orangecv}{rgb}{1,0.65,0.20}
+\definecolor{greycv}{rgb}{0.75,0.75,0.75}
+
+%==================
+% DOCUMENT BEGINNING
+%==================
+\begin{document}
+\maketitle
+
+\begin{abstract}
+\noindent \texttt{Moderncv}, as its author says in the readme file, provides a documentclass for typesetting modern curriculum vitaes in various styles. It is fairly customizable, allowing you to define your own style by changing the colors, the fonts, \dots\ and provides two default styles: classic and casual.
+\end{abstract}
+
+\section{Introduction}
+When I saw for the first time this class I was amazing: ``Here it is what I need'', I thought. Using the very clear examples, was easy to make my first curriculum. 
+Indeed the class is very simple to use, in this documentation I will only put together all the things to help users to have all on hand.
+
+\smallskip
+\texttt{Moderncv} requires the following packages: \texttt{ifthen}, \texttt{ifpdf}, \texttt{color}, \texttt{lmodern}, \texttt{marvosym}, \texttt{url}, \texttt{hyperref}, \texttt{longtable}, \texttt{graphicx}, \texttt{fancyhdr}, usually all just included in the \LaTeX\ distributions.
+
+\section{In the preamble}
+
+At the very beginning of your preamble (that is the part before \verb|\begin{document}|) insert:
+
+\begin{verbatim}
+\documentclass[<options>]{moderncv}
+\end{verbatim} 
+
+where the options are:
+
+\begin{description}
+ \item[paper size options:] \texttt{a4paper}, \texttt{a5paper}, \texttt{b5paper}, \texttt{letterpaper}, \texttt{legalpaper}, \texttt{ex\-ec\-u\-tive\-pa\-per}, \texttt{landscape}
+ \item[font size options:] \texttt{10pt}, \texttt{11pt}, \texttt{12pt}
+ \item[font option:] \texttt{nolmodern}, for people without the latin modern fonts
+ \item[color option:] \texttt{nocolor}, to have all in black and white
+ \item[draft/final options:] \texttt{draft}, \texttt{final}
+\end{description}
+
+The default options are: \texttt{a4paper}, \texttt{11pt}, \texttt{color}, \texttt{final}. 
+
+After the documentclass specification, choose the theme for your curriculum vit\ae:
+
+\begin{verbatim}
+\moderncvtheme[<options>]{casual}
+\end{verbatim} 
+
+which is the default theme, or
+
+\begin{verbatim}
+\moderncvtheme[<options>]{classic}
+\end{verbatim} 
+
+where the theme options are:
+
+\begin{description}
+ \item[color options:] you can choose between five color: 
+	\begin{itemize}
+	 \item[\texttt{blue}] {\color{bluecv}\rule{1cm}{2ex}} (default color)
+	 \item[\texttt{green}] {\color{greencv}\rule{1cm}{2ex}}
+	 \item[\texttt{red}] {\color{redcv}\rule{1cm}{2ex}}
+	 \item[\texttt{orange}] {\color{orangecv}\rule{1cm}{2ex}}
+	 \item[\texttt{grey}] {\color{greycv}\rule{1cm}{2ex}}
+	\end{itemize}
+ \item[roman option:] \texttt{roman}, for {\fontsize{11}{12} \usefont{T1}{lmr}{m}{n}\selectfont roman} fonts, instead of \fontsize{11}{12} \usefont{T1}{lmss}{m}{n}\selectfont sans serif fonts.
+\end{description}
+
+Then you have to specify the character encoding (utf8, latin1, and so on):
+
+\begin{verbatim}
+\usepackage[<your encoding>]{inputenc}
+\end{verbatim} 
+
+and you can adjust the page geometry:
+
+\begin{verbatim}
+\usepackage[<options>]{geometry}
+\recomputelengths
+\end{verbatim} 
+
+where \verb|\recomputelengths| is required when changes are made to page layout lengths.
+
+Now we can get into the part most related to our curriculum vit\ae: our personal data. They will be inserted in the header of the first page, in the classic theme, or in the footer of every page, in the case of casual theme.
+
+\begin{itemize}
+\item \verb|\firstname{John}|
+\item \verb|\familyname{Doe}|
+\item \verb|\title{Resum\'e title}|: optional
+\item \verb|\address{street and number}{postcode city}|: optional 
+\item \verb|\mobile{mobile}|: optional
+\item \verb|\phone{phone}|: optional
+\item \verb|\fax{fax}|: optional
+\item \verb|\email{email}|: optional
+\item \verb|\extrainfo{additional information}|: optional; here you can put, for example, the address of your website
+\item \verb|\photo[64pt]{picture}|: optional; \texttt{64pt} is the height the picture, you can set here the size you prefer; \texttt{picture} is the name of the picture file
+\item \verb|\quote{Some quote}|: optional
+\end{itemize} 
+
+Finally you can suppress automatic page numbering for CVs longer than one page:
+
+\begin{verbatim}
+\nopagenumbers{}
+\end{verbatim} 
+
+\subsection{Examples}
+
+In practice, you will type:
+
+\begin{verbatim}
+\documentclass[11pt,a4paper]{moderncv}
+
+% moderncv themes
+\moderncvtheme[green]{casual}
+
+% character encoding
+\usepackage[utf8]{inputenc}
+
+% adjust the page margins
+\usepackage[scale=0.8]{geometry}
+\recomputelengths
+
+% personal data 
+\firstname{John}
+\familyname{Doe}
+\title{Design enthusiast}
+\address{12 somestreet}{3456 somecity}
+\mobile{+123 456 7890}
+\phone{+12 (3)456 78 90}
+\fax{+12 (3)456 78 90}
+\email{jdoe at design.org}
+\extrainfo{\weblink{www.ctan.org}}
+\photo[64pt]{jdoe_picture}
+\quote{Any intelligent fool can make things bigger, more complex, 
+and more violent. It takes a touch of genius -- and a lot of courage -- to 
+move in the opposite direction.}
+
+\begin{document}
+\maketitle
+
+... <what you'll see in the next section>
+
+\end{document}
+\end{verbatim}
+
+to obtain a casual moderncv in green, as shown in figure \ref{fig:casual}, and you will substitute the line describing the theme with:
+
+\begin{verbatim}
+% moderncv themes
+\moderncvtheme[blue]{classic}
+\end{verbatim}
+
+to obtain a classic moderncv in blue, as shown in figure \ref{fig:classic}.
+
+
+\begin{figure}[p]
+ \centering
+ \fbox{\includegraphics[angle=90,width=\textwidth]{cv_casual.pdf}}
+ \caption{An example of casual moderncv in green.}
+ \label{fig:casual}
+\end{figure}
+
+\begin{figure}[p]
+ \centering
+ \fbox{\includegraphics[angle=90,width=\textwidth]{cv_classic.pdf}}
+ \caption{An example of classic moderncv in blue.}
+ \label{fig:classic}
+\end{figure}
+
+\section{Customize sections}
+
+Now we are ready to edit the part between \verb|\begin{document}| and \verb|\end{document}|.
+
+As you can seen in figure \ref{fig:casual} e \ref{fig:classic}, you can divide your CV into sections, each of them describing what you are, what you know and what you have done in your life. Every section is divide into items chosen from different flavours. More in details:
+
+\subsection{Section}
+
+The command to open a new section is: 
+
+\begin{verbatim}
+\section{<title>}
+\end{verbatim}
+
+and every section can be divided into subsections:
+
+\begin{verbatim}
+\subsection{<title>}
+\end{verbatim}
+
+If necessary, there is a command to close the section: 
+
+\begin{verbatim}
+\closesection{}
+\end{verbatim}
+
+and even one to create an empty section:
+
+\begin{verbatim}
+\emptysection{}
+\end{verbatim}
+
+An example of their usage can be the next one:
+
+\begin{verbatim}
+\section{Section with your own content}\closesection
+Your content here, inside the normal \LaTeX{} environment. 
+You can use any regular \LaTeX{} command, display mathematics
+\[e =m\,c^2,\]
+put some table or figure, \dots
+
+\emptysection{}
+\cvitem{Now}{Back to moderncv layout, without making a new section :-)}
+\end{verbatim}
+
+whose results is shown in figure \ref{fig:ex_sec}.
+
+\begin{figure}[!ht]
+ \centering
+ \fbox{\includegraphics[width=0.9\textwidth]{ex_sec}}
+ \caption{Example of usage of section commands.}
+ \label{fig:ex_sec}
+\end{figure}
+
+\subsection{Items}
+
+Inside sections, you can choose between different kind of items depending on the purpose:
+
+\begin{itemize}
+ \item in the sections describing your education or your job experiences, you can use:
+ \begin{verbatim}
+\cventry{years}{degree/job title}{institution/employer}
+{localization}{optional: grade/...}
+{optional: comment/job description}
+  \end{verbatim} 
+\vspace{-20pt}  
+where the last three arguments are optional
+ \item inside `language' cvsection environment, you can type every entry with:
+ \begin{verbatim}
+\cvlanguage{name}{level}{comment}
+ \end{verbatim}
+ \item inside `computer skills' cvsection environment, you can type every entry with:
+ \begin{verbatim}
+\cvcomputer{category}{programs}{category}{programs}
+ \end{verbatim}
+ \item to typeset lines with a hint on the left:
+ \begin{verbatim}
+\cvline{leftmark}{text}
+ \end{verbatim}
+ \item to typeset entry with a description on the left, but in two columns inside a cvsection:
+ \begin{verbatim}
+\cvdoubleitem{subtitle}{text}{subtitle}{text}
+ \end{verbatim}
+ \item to typeset lists on one column inside a cvsection:
+ \begin{verbatim}
+\cvlistitem{point1}
+ \end{verbatim}
+ \item to typeset lists on two columns inside a cvsection:
+ \begin{verbatim}
+\cvlistdoubleitem{point1}{point2}
+ \end{verbatim}
+ \item to add a section listing all your publications stored in a BibTeX file:
+ \begin{verbatim}
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{BibTeX_file}
+ \end{verbatim}
+\vspace{-20pt}
+ where the name of the section title can be changed by redefining the \texttt{refname} with  \verb|\renewcommand{\refname}{<new_name>}|
+\end{itemize}
+
+\subsubsection*{Example}
+
+Let's put all together and see in figure \ref{fig:sections} what is the result:
+
+\begin{verbatim}
+... preamble ...
+\begin{document}
+\section{Education}
+\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
+\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
+% 
+\section{Master thesis}
+\cvline{title}{\emph{Title}}
+\cvline{supervisors}{Supervisors}
+\cvline{description}{\small Short thesis abstract}
+% 
+\section{Experience}
+\subsection{Vocational}
+\cventry{year--year}{Job title}{Employer}{City}{}{Description}
+\cventry{year--year}{Job title}{Employer}{City}{}{Description}
+\subsection{Miscellaneous}
+\cventry{year--year}{Job title}{Employer}{City}{}%
+  {Description line 1\newline{}Description line 2}
+% 
+\section{Languages}
+\cvlanguage{language 1}{Skill level}{Comment}
+\cvlanguage{language 2}{Skill level}{Comment}
+% 
+\section{Computer skills}
+\cvcomputer{category 1}{XXX, YYY, ZZZ}{category 3}{XXX, YYY, ZZZ}
+\cvcomputer{category 2}{XXX, YYY, ZZZ}{category 4}{XXX, YYY, ZZZ}
+% 
+\section{Interests}
+\cvline{hobby 1}{\small Description}
+\cvline{hobby 2}{\small Description}
+\cvline{hobby 3}{\small Description}
+% 
+\closesection{}
+\pagebreak
+%
+\section{Extra}
+\cvlistitem{Item 1}
+\cvlistitem{Item 2}
+\cvlistitem{Item 3}
+%
+\section{Extra 2}
+\cvlistdoubleitem{Item 1}{Item 4}
+\cvlistdoubleitem{Item 2}{Item 5}
+\cvlistdoubleitem{Item 3}{}
+%
+% Publications from a BibTeX file
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{publications}  % 'publications' is the name of a BibTeX file 
+%
+\end{document}
+\end{verbatim} 
+
+\begin{figure}[!ht]
+ \centering
+ \fbox{\includegraphics[angle=90,width=\textwidth]{test_cvsection2.pdf}}\\
+ \fbox{\includegraphics[angle=90,width=\textwidth]{test_cvsection1.pdf}} 
+\caption{Example of usage of items inside cvsections.}
+ \label{fig:sections}
+\end{figure}
+
+\section{More customizations}
+
+You have some useful commands to personalize your CV further.
+
+\subsection*{Modifying the symbols}
+You can modify the symbols used for the personal data (phone number, the email, \ldots) redefining \texttt{phonesymbol}, \texttt{emailsymbol}, \texttt{addresssymbol}, \texttt{mobilesymbol}, \texttt{faxsymbol}.
+
+For example: if you want to use the dingbat fonts, load the \texttt{pifont} package in the preamble, then substitute the default symbol \Telefon\ with the dingbat symbol \ding{38}\ by:
+\begin{verbatim}
+\renewcommand{\phonesymbol}{\ding{38}}
+\end{verbatim} 
+
+You can change the symbol for lists in two way:
+\begin{itemize}
+ \item redefining the command \texttt{listitemsymbol}: \verb|\renewcommand{\listitemsymbol}{-}|
+ \item adding a specification for the label in \texttt{cvlistitem} and \texttt{cvlistdoubleitem}
+\end{itemize}
+
+For example: the  following code produces the result shown in figure \ref{fig:ex_items}.
+
+\begin{verbatim}
+\closesection{}                   % needed to renewcommands
+\renewcommand{\listitemsymbol}{-} % change the symbol for lists
+
+\section{Extra 1}
+\cvlistitem{Item 1}
+\cvlistitem{Item 2}
+\cvlistitem[+]{Item 3}            % optional other symbol
+
+\section{Extra 2}
+\cvlistdoubleitem[\Neutral]{Item 1}{Item 4}
+\cvlistdoubleitem[\Neutral]{Item 2}{Item 5}
+\cvlistdoubleitem[\Neutral]{Item 3}{}
+\end{verbatim} 
+
+\begin{figure}[!hbt]
+ \centering
+ \fbox{\includegraphics[width=.8\textwidth]{ex_items.png}}
+ \caption{Example of customization of the list labels.}
+ \label{fig:ex_items}
+\end{figure}
+
+\subsection*{Adjusting lenghts}
+The different lengths used by moderncv are customizable by
+\begin{verbatim}
+\setlength{<length>}{<new_dimensions>}
+\end{verbatim}
+where \texttt{<length>} are \texttt{quote\-width}, \texttt{sep\-a\-ra\-tor\-col\-umn\-width}, \texttt{main\-col\-umn\-width}, \texttt{doub\-le\-i\-tem\-main\-col\-umn\-width}, \texttt{list\-i\-tem\-sym\-bol\-width}, \texttt{list\-doub\-le\-i\-tem\-main\-col\-umn\-width}, 
+
+In particular, the first column, can be set to any width. You can do that in two way:
+\begin{itemize}
+ \item using \verb|\sethintscolumnlength{<length>}|, where  \texttt{<length>} is the desired length in a unit LaTeX understands
+ \item using \verb|\sethintscolumntowidth{<string>}|, where \texttt{<string>} is a string of the desired length (usually, the longest string that has to appear in the column)
+\end{itemize}
+
+\subsection*{Additional commands}
+There are commands to manage hypertextual links:
+\begin{itemize}
+ \item[-] \verb|\weblink[optional text]{link}|
+ \item[-] \verb|\httplink[optional text]{link}|
+ \item[-] \verb|\emaillink[optional text]{link}|
+\end{itemize}
+
+There is a \verb|\today| command, useful for example if you need to add the date the CV was produced.
+
+\subsection*{Putting things at the end of CV}
+Sometimes there is the need to add some lines at the end of the CV. For example, in Italy is necessary to add the permission to treat the personal data contained in the r\'esum\'e. You can do that dropping out of the layout of \texttt{moderncv} and pushing the lines at the end by the command \verb|\vfill|:
+\begin{verbatim}
+\emptysection{}\closesection
+\vfill
+\begin{center} 
+\textit{\small Ai sensi del D. Lgs. 196/2003 ...}
+\end{center}
+\end{verbatim}
+
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/moderncv/manual/moderncv_userguide.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/moderncv/picture.eps
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/picture.eps	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/picture.eps	2021-01-22 22:31:33 UTC (rev 57496)
@@ -0,0 +1,958 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: (ImageMagick)
+%%Title: (picture.eps)
+%%CreationDate: (2012-03-25T00:18:42-04:00)
+%%BoundingBox: 0 0 94 94
+%%HiResBoundingBox: 0 0 94 94
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 1
+%%Pages: 1
+%%EndComments
+
+%%BeginDefaults
+%%EndDefaults
+
+%%BeginProlog
+%
+% Display a color image.  The image is displayed in color on
+% Postscript viewers or printers that support color, otherwise
+% it is displayed as grayscale.
+%
+/DirectClassPacket
+{
+  %
+  % Get a DirectClass packet.
+  %
+  % Parameters:
+  %   red.
+  %   green.
+  %   blue.
+  %   length: number of pixels minus one of this color (optional).
+  %
+  currentfile color_packet readhexstring pop pop
+  compression 0 eq
+  {
+    /number_pixels 3 def
+  }
+  {
+    currentfile byte readhexstring pop 0 get
+    /number_pixels exch 1 add 3 mul def
+  } ifelse
+  0 3 number_pixels 1 sub
+  {
+    pixels exch color_packet putinterval
+  } for
+  pixels 0 number_pixels getinterval
+} bind def
+
+/DirectClassImage
+{
+  %
+  % Display a DirectClass image.
+  %
+  systemdict /colorimage known
+  {
+    columns rows 8
+    [
+      columns 0 0
+      rows neg 0 rows
+    ]
+    { DirectClassPacket } false 3 colorimage
+  }
+  {
+    %
+    % No colorimage operator;  convert to grayscale.
+    %
+    columns rows 8
+    [
+      columns 0 0
+      rows neg 0 rows
+    ]
+    { GrayDirectClassPacket } image
+  } ifelse
+} bind def
+
+/GrayDirectClassPacket
+{
+  %
+  % Get a DirectClass packet;  convert to grayscale.
+  %
+  % Parameters:
+  %   red
+  %   green
+  %   blue
+  %   length: number of pixels minus one of this color (optional).
+  %
+  currentfile color_packet readhexstring pop pop
+  color_packet 0 get 0.299 mul
+  color_packet 1 get 0.587 mul add
+  color_packet 2 get 0.114 mul add
+  cvi
+  /gray_packet exch def
+  compression 0 eq
+  {
+    /number_pixels 1 def
+  }
+  {
+    currentfile byte readhexstring pop 0 get
+    /number_pixels exch 1 add def
+  } ifelse
+  0 1 number_pixels 1 sub
+  {
+    pixels exch gray_packet put
+  } for
+  pixels 0 number_pixels getinterval
+} bind def
+
+/GrayPseudoClassPacket
+{
+  %
+  % Get a PseudoClass packet;  convert to grayscale.
+  %
+  % Parameters:
+  %   index: index into the colormap.
+  %   length: number of pixels minus one of this color (optional).
+  %
+  currentfile byte readhexstring pop 0 get
+  /offset exch 3 mul def
+  /color_packet colormap offset 3 getinterval def
+  color_packet 0 get 0.299 mul
+  color_packet 1 get 0.587 mul add
+  color_packet 2 get 0.114 mul add
+  cvi
+  /gray_packet exch def
+  compression 0 eq
+  {
+    /number_pixels 1 def
+  }
+  {
+    currentfile byte readhexstring pop 0 get
+    /number_pixels exch 1 add def
+  } ifelse
+  0 1 number_pixels 1 sub
+  {
+    pixels exch gray_packet put
+  } for
+  pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassPacket
+{
+  %
+  % Get a PseudoClass packet.
+  %
+  % Parameters:
+  %   index: index into the colormap.
+  %   length: number of pixels minus one of this color (optional).
+  %
+  currentfile byte readhexstring pop 0 get
+  /offset exch 3 mul def
+  /color_packet colormap offset 3 getinterval def
+  compression 0 eq
+  {
+    /number_pixels 3 def
+  }
+  {
+    currentfile byte readhexstring pop 0 get
+    /number_pixels exch 1 add 3 mul def
+  } ifelse
+  0 3 number_pixels 1 sub
+  {
+    pixels exch color_packet putinterval
+  } for
+  pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassImage
+{
+  %
+  % Display a PseudoClass image.
+  %
+  % Parameters:
+  %   class: 0-PseudoClass or 1-Grayscale.
+  %
+  currentfile buffer readline pop
+  token pop /class exch def pop
+  class 0 gt
+  {
+    currentfile buffer readline pop
+    token pop /depth exch def pop
+    /grays columns 8 add depth sub depth mul 8 idiv string def
+    columns rows depth
+    [
+      columns 0 0
+      rows neg 0 rows
+    ]
+    { currentfile grays readhexstring pop } image
+  }
+  {
+    %
+    % Parameters:
+    %   colors: number of colors in the colormap.
+    %   colormap: red, green, blue color packets.
+    %
+    currentfile buffer readline pop
+    token pop /colors exch def pop
+    /colors colors 3 mul def
+    /colormap colors string def
+    currentfile colormap readhexstring pop pop
+    systemdict /colorimage known
+    {
+      columns rows 8
+      [
+        columns 0 0
+        rows neg 0 rows
+      ]
+      { PseudoClassPacket } false 3 colorimage
+    }
+    {
+      %
+      % No colorimage operator;  convert to grayscale.
+      %
+      columns rows 8
+      [
+        columns 0 0
+        rows neg 0 rows
+      ]
+      { GrayPseudoClassPacket } image
+    } ifelse
+  } ifelse
+} bind def
+
+/DisplayImage
+{
+  %
+  % Display a DirectClass or PseudoClass image.
+  %
+  % Parameters:
+  %   x & y translation.
+  %   x & y scale.
+  %   label pointsize.
+  %   image label.
+  %   image columns & rows.
+  %   class: 0-DirectClass or 1-PseudoClass.
+  %   compression: 0-none or 1-RunlengthEncoded.
+  %   hex color packets.
+  %
+  gsave
+  /buffer 512 string def
+  /byte 1 string def
+  /color_packet 3 string def
+  /pixels 768 string def
+
+  currentfile buffer readline pop
+  token pop /x exch def
+  token pop /y exch def pop
+  x y translate
+  currentfile buffer readline pop
+  token pop /x exch def
+  token pop /y exch def pop
+  currentfile buffer readline pop
+  token pop /pointsize exch def pop
+  /Times-Roman findfont pointsize scalefont setfont
+  x y scale
+  currentfile buffer readline pop
+  token pop /columns exch def
+  token pop /rows exch def pop
+  currentfile buffer readline pop
+  token pop /class exch def pop
+  currentfile buffer readline pop
+  token pop /compression exch def pop
+  class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
+} bind def
+%%EndProlog
+%%Page:  1 1
+%%PageBoundingBox: 0 0 94 94
+userdict begin
+DisplayImage
+0 0
+94 94
+12
+94 94
+0
+0
+E8EBF0E8EBF0E8EBF0E8EBF0E8EBF2E7EAF1E6E9F0E6E9F0E6EBEFE5EAEEE4E9EDE4E9EDE4E9ED
+E3E8ECE2E7EBE0E5E9DFE3EEDEE2EDDEE2EDDDE1ECDEE2EDDDE1ECDBDFEADADEE9DBE0E6DBE0E6
+DADFE5DADFE5D9DEE4D8DDE3D7DCE2D7DCE2D2D8E4D2D8E4D1D7E3D0D6E2CFD5E1CED4E0CED4E0
+CDD3DFCBD3E0CAD2DFC8D0DDC7CFDCC7CFDCC7CFDCC6CEDBC5CDDAC8D0DDC7CFDCC5CDDAC5CDDA
+C5CDDAC4CCD9C3CBD8C1C9D6C1CBD5C0CAD4C0CAD4BFC9D5BEC8D4BDC7D3BCC5D4BBC4D3B9C1D6
+B9C1D6B8C0D5B7BFD6B6BED5B5BDD4B4BCD3B4BBD5B3BAD4B3BAD4B2B9D3B1B8D2B0B7D1B0B7D1
+AFB6D0AFB6D0ABB5D0AAB4CFA9B3CEA8B2CDA8B2CDA7B1CCA6B0CBA5AFCAA6B0CBA6AFCCA2ADCB
+A0ABC9A2ABC8A7AEC8EAEDF2EAEDF2EAEDF2EAEDF2EAEDF4E9ECF3E8EBF2E8EBF2E7ECF2E6EBF1
+E6EBF1E5EAF0E6EBF1E5EAF0E3E8EEE2E7EDE1E5F0E1E5F0E0E4EFE0E4EFE0E4EFDFE3EEDDE1EC
+DCE0EBD9DFEBD9DFEBD8DEEAD7DDE9D7DDE9D6DCE8D5DBE7D5DBE7D3D9E5D3D9E5D2D8E4D1D7E3
+D0D6E2CFD5E1CED4E0CED4E0CDD4E4CCD3E3CAD1E1CAD1E1CAD1E1CAD1E1C9D0E0C8CFDFC7CEE0
+C6CDDFC4CBDDC4CBDDC4CBDDC3CADCC2C9DBC0C7D9BCC7D9BCC7D9BBC6D8BAC5D7B9C4D8B8C3D7
+B7C2D6B7C2D6B6C0DBB6C0DBB5BFDAB4BED9B3BCD9B2BBD8B1BAD7B1BAD7AFB8D9AFB8D9AEB7D8
+ADB6D7ACB5D6ACB5D6ABB4D5ABB4D5AAB5D5A9B4D4A8B3D3A7B2D2A7B2D2A6B1D1A5B0D0A4AFCF
+A4AFCFA1AED09FACCF9DAACDA1ABCEA5AECDEBEEF3EBEEF3EBEEF3EBEEF5EBEEF5EAEDF4E9ECF5
+E9ECF5E8EDF3E7ECF2E6EBF1E6EBF1E6EBF1E5EAF0E3E8EEE2E7EDE2E6F1E1E5F0E0E4EFE0E4EF
+E0E4EFE0E4EFDEE2EDDDE1ECD9DEF2D8DDF1D8DDF1D7DCF0D6DBEFD5DAEED5DAEED5DAEED3D9E9
+D3D9E9D2D8E8D1D7E7D0D6E6CFD5E5CFD5E5CED4E4CED5E7CDD4E6CBD2E4CBD2E4CBD2E4CBD2E4
+C9D0E2C8CFE1C5CDE2C4CCE1C2CADFC2CADFC2CADFC1C9DEC0C8DDBFC7DCBAC6DEBAC6DEB9C5DF
+B8C4DEB7C3DDB6C1DDB5C0DCB5C0DCB5C0DEB4BFDDB3BEDCB2BDDBB1BCDCB0BBDBB0BBDBAFBADA
+ADB7DBADB7DBACB6DAABB5D9ABB5D9AAB4D8A9B3D7A9B3D7A7B5DAA6B4D9A4B2D7A4B2D7A4B2D7
+A3B1D6A2B0D5A0AED39FADD09EAED29DACD39AA9D09BABCFA1AED0E9ECF1E9ECF1E9ECF3E9ECF3
+E9ECF3E8EBF4E7EAF3E7EAF3E5E9F2E5E9F2E4E8F1E4E8F1E4E8F1E3E7F0E1E5EEE0E4EDDFE5F1
+DEE4F0DDE3EFDDE3EFDDE3EFDCE2EEDAE0ECD9DFEBD8DDF0D8DDF0D7DCEFD7DCEFD6DBEED5DAED
+D4D9ECD4D9ECD2D9EBD1D8EAD1D8EAD0D7E9CFD6E8CED5E7CDD4E6CDD4E6CCD3E6CBD2E5CAD1E4
+CAD1E4CAD1E4C9D0E3C8CFE2C6CDE0C5CCE6C4CBE5C2C9E3C2C9E3C2C9E3C1C8E2C0C7E1BEC5DF
+B9C7E1B8C6E0B8C6E0B7C5E0B6C4DFB5C3DEB4C2DDB4C2DFB3C1DCB2C0DBB1BFDAB1BFDCAFBDDA
+AFBDDAAEBBDBADBADAABB9DCABB9DCABB9DCAAB8DBA9B7DAA8B6D9A8B6D9A7B5D8A4B6DAA3B5D9
+A1B3D7A1B3D7A0B2D6A0B2D69EB0D49DAFD39CAFCF9CAFD09AAED197ABCE98ABCC9DAECCE8EBF2
+E8EBF2E8EBF2E8EBF2E8EBF4E7EAF3E6E9F2E6E9F2E4E8F1E3E7F0E2E6EFE2E6EFE2E6EFE2E6EF
+E0E4EDDFE3ECDDE3EFDCE2EEDBE1EDDBE1EDDBE1EDDBE1EDD9DFEBD8DEEAD7DFECD6DEEBD6DEEB
+D5DDEAD4DCE9D3DBE8D3DBE8D3DBE8D1D8EBD0D7EAD0D7EACFD6E9CED5E8CDD4E7CCD3E6CBD2E5
+CAD2E7C9D1E6C8D0E5C8D0E5C8D0E5C7CFE4C6CEE3C4CCE1C5CCE8C4CBE7C2C9E5C2C9E5C2C9E5
+C1C8E4C0C7E3BFC6E2B9C8DDB9C8DDB8C7DEB7C6DDB6C5DCB5C3DDB5C3DDB4C2DCB3C2D9B3C2D9
+B2C1D8B1C0D7B0BED8AFBDD7AEBCD6AEBCD6ACBBD8ACBBD8ABBAD7AAB9D6A9B8D5A9B8D5A8B7D4
+A8B7D4A4B7D7A2B5D5A1B4D4A0B3D3A0B3D3A0B3D39EB1D19DB0D09CB0CB9CB1CE9BB0CF97ACCB
+96ABC89BACC6E8EBF2E8EBF2E8EBF2E8EBF4E8EBF4E7EAF3E6E8F4E6E8F4E5E9F4E4E8F3E3E7F2
+E3E7F2E3E7F2E2E6F1E0E4EFDFE3EEDDE3EFDCE2EEDBE1EDDBE1EDDBE1EDDBE1EDD9DFEBD8DEEA
+D6DEE9D6DEE9D5DDE8D5DDE8D4DCE7D3DBE6D2DAE5D2DAE5D0D7EAD0D7EACFD6E9CED5E8CDD4E7
+CCD3E6CBD2E5CBD2E5CAD2E7C9D1E6C9D1E6C9D1E6C9D1E6C8D0E5C6CEE3C4CCE1C3CDE6C2CCE5
+C0CAE3C0CAE3C0CAE3BFC9E2BEC8E1BCC6DFBBC8DBBAC6DCB9C5DBB8C4DAB7C3D9B6C2DAB6C2DA
+B5C1D9B3C2D7B3C2D7B2C1D6B1C0D7B0BFD6AFBED5AEBDD4AEBCD6ABBBD5AABAD4AABAD4A9B9D3
+A8B8D2A8B8D2A7B7D1A7B7D1A5B6D2A4B5D1A3B4D0A2B3CFA2B3CFA1B2CEA0B1CD9FB0CC9EAFC9
+9DB1CC9CAFCD98ABC996AAC59BABC4E7EAF1E8EBF2E8EBF4E8EBF4E7EAF3E7E9F5E6E8F4E5E7F3
+E5E9F4E4E8F3E3E7F2E3E7F2E3E7F2E2E6F1E1E5F0DFE3EEDDE3F1DCE2F0DBE1EFDBE1EFDBE1EF
+DAE0EED9DFEDD7DDEBD6DEEBD5DDEAD5DDEAD4DCE9D3DBE8D3DBE8D2DAE7D2DAE7D0D9EACFD8E9
+CED7E8CDD6E7CCD5E6CBD4E5CBD4E5CAD3E4C9D1E6C9D1E6C8D0E5C9D1E6C9D1E6C8D0E5C6CEE3
+C4CCE1C2CDE3C1CCE2BFCAE0BFCAE0BFCAE0BEC9DFBDC8DEBBC6DCBBC5DEBBC5DEBAC4DFB9C3DE
+B8C2DDB7C1DCB6BFDCB6BFDCB4C0DAB4C0DAB3BFD9B2BDD9B1BCD8B0BBD7B0BBD9AFBAD8AAB9D6
+AAB9D6A9B8D5A8B7D4A8B7D4A7B6D3A6B5D2A6B5D2A6B5D6A5B4D5A3B2D3A3B2D3A3B2D3A2B1D2
+A1B0D19FAECF9DACCB9FAECF9EAED09AAACE9AA8CB9DABC8E6E9F0E6E9F2E7EAF3E7EAF3E6E9F2
+E5E7F3E5E7F3E4E6F2E4E8F4E3E7F3E2E6F2E2E6F2E2E6F2E2E6F2E0E4F0DEE2EEDBE3F0DAE2EF
+D9E1EED9E1EED9E1EED8E0EDD7DFECD5DDEAD6DDEFD5DCEED5DCEED4DBEDD3DAECD2D9EBD2D9EB
+D1D8EAD0D9EAD0D9EACFD8E9CED7E8CDD6E7CCD5E6CBD4E5CBD4E5C8D0E3C8D0E3C8D0E3C8D0E3
+C8D0E3C7CFE2C4CCDFC2CADDC1CCE0C0CBDFBEC9DDBEC9DDBEC9DDBDC8DCBCC7DBBAC5D9BEC5E2
+BEC4E4BDC3E3BCC2E2BBC1E1BAC0E2B9BFE1B9BFE1B4BFDFB3BEDEB2BDDDB1BCDCB0BADDAFB9DC
+AFB9DCAEB8DBABB8D8ABB8D8ABB8D8AAB7D7A9B6D6A8B5D5A8B5D5A7B4D4A7B3D9A6B2D8A4B0D6
+A4B0D6A4B0D6A3AFD5A2AED4A0ACD29CA8CE9FABD39FABD59CA8D29BA7CFA1A9CEE5E9F2E5E9F2
+E5E9F2E5E9F2E5E9F4E4E8F3E3E7F2E3E7F2E2E5F4E2E5F4E2E5F4E1E4F3E1E4F3E0E3F2E0E3F2
+DFE2F1DBE1EFDBE1EFDBE1EFDAE0EED9DFEDD9DFEDD8DEECD8DEECD6DCECD6DCECD5DBEBD5DBEB
+D4DAEAD3D9E9D2D8E8D2D8E8D1D8EAD0D7E9CFD6E8D0D7E9D1D8EAD1D8EACFD6E8CDD4E6C8D0E5
+CBD3E8CBD3E8C8D0E7C3CBE2C3CBE2C4CBE5C6CDE7C3D0E3C2CFE2C1CEE1BFCBE1BCC8DEBAC6DC
+BAC6DEBBC7DFBBC7E1B9C5DFB8C4DEB7C3DDB7C2DEB7C2DEB5C0DCB4BFDBB2C0DDB1BFDCB0BEDB
+AFBDDAAFBDDAAEBCD9ADBBD8ACBAD7AAB9D8AAB9D8A9B8D7A8B7D6A7B6D5A6B5D4A6B5D4A5B4D3
+A4B3D4A3B2D3A3B2D3A2B1D2A1B0D1A0AFD0A0AFD09FAECF9BADD59CAED29CACCD9BA9CC9CA8D0
+A0A9D2E4E8F1E4E8F1E4E8F1E4E8F1E4E8F3E3E7F2E2E6F1E2E6F1E2E5F4E2E5F4E1E4F3E1E4F3
+E0E3F2E0E3F2DFE2F1DFE2F1DBE1EFDBE1EFDAE0EEDAE0EED9DFEDD9DFEDD8DEECD8DEECD6DCEC
+D6DCECD5DBEBD4DAEAD4DAEAD3D9E9D2D8E8D2D8E8D1D8EBCFD6E9CED5E8CCD3E6CBD2E5CAD1E4
+C8CFE2C7CEE1C5CDE2C7CFE4CAD2E7CBD3EAC9D1E8C7CFE6C3CBE2C0C7E1BBC7DDBBC7DDBBC7DD
+BCC8DEBDC9E1BCC8E0BBC7DFB9C5DDBBC7E1B9C5DFB8C4DEB7C3DDB7C2DEB7C2DEB5C0DCB4BFDB
+B2C0DDB1BFDCB0BEDBAFBDDAAFBDDAAEBCD9ADBBD8ACBAD7AAB9D8AAB9D8A9B8D7A8B7D6A7B6D5
+A6B5D4A6B5D4A5B4D3A4B3D4A3B2D3A3B2D3A2B1D2A1B0D1A0AFD0A0AFD09FAECF9BADD59CAED2
+9CACCD9BA9CC9CA8D0A0A9D2E3E7F0E3E7F0E3E7F0E3E7F0E3E7F2E2E6F1E1E5F0E1E5F0E1E4F3
+E1E4F3E1E4F3E0E3F2E0E3F2DFE2F1DFE2F1DEE1F0DBE1EFDAE0EEDAE0EED9DFEDD9DFEDD8DEEC
+D8DEECD8DEECD6DCECD5DBEBD5DBEBD4DAEAD3D9E9D2D8E8D2D8E8D1D7E7CCD2E8CDD3E9CED4EA
+CDD3E9CDD3E9CDD3E9CED4EACED4EACAD2E5C6CEE1C1C9DEBFC7DCC0C8DDC3CBE2C5CDE4C7CFE6
+C1CCE2BFCAE0BDC7E0BDC7E0BEC8E1BEC8E3BDC7E2BBC5E0BAC6E0B9C5DFB8C4DEB7C3DDB7C2DE
+B6C1DDB5C0DCB4BFDBB2C0DDB1BFDCAFBDDAAFBDDAAFBDDAAEBCD9ADBBD8ABB9D6AAB9D8AAB9D8
+A9B8D7A8B7D6A7B6D5A6B5D4A5B4D3A5B4D3A3B2D3A3B2D3A2B1D2A2B1D2A1B0D1A0AFD0A0AFD0
+9FAECF9BADD59BADD19CACCD9BA9CC9CA8D0A0A9D2E2E6EFE3E7F0E3E7F0E3E7F0E2E6F1E2E6F1
+E1E5F0E0E4EFE1E4F3E0E3F2E0E3F2DFE2F1DFE2F1DEE1F0DEE1F0DEE1F0DAE0EEDAE0EEDAE0EE
+D9DFEDD8DEECD8DEECD7DDEBD7DDEBD5DBEBD5DBEBD4DAEAD3D9E9D3D9E9D2D8E8D1D7E7D1D7E7
+D1D7EDD2D8EED2D8EECFD5EBCBD1E7C8CEE4C7CDE3C8CEE4C5CDE0C5CDE0C8D0E3CBD3E6CBD3E8
+C8D0E5C4CCE1C3CBE0C4CEE7C2CCE5BEC8E1BCC6DFBBC5E0BCC6E1BDC7E2BEC8E3BAC6E0B9C5DF
+B7C3DDB7C3DDB7C2DEB6C1DDB5C0DCB3BEDAB2C0DDB1BFDCAFBDDAAFBDDAAEBCD9AEBCD9ACBAD7
+ABB9D6AAB9D8A9B8D7A9B8D7A8B7D6A7B6D5A6B5D4A5B4D3A5B4D3A3B2D3A3B2D3A2B1D2A1B0D1
+A1B0D1A0AFD09FAECF9FAECF9AACD49BADD19CACCD9AA8CB9BA7CFA0A9D2E2E6EFE3E7F0E3E7F0
+E3E7F0E2E6F1E1E5F0E1E5F0E0E4EFE0E3F2E0E3F2DFE2F1DFE2F1DEE1F0DDE0EFDDE0EFDDE0EF
+DAE0EED9DFEDD9DFEDD8DEECD8DEECD7DDEBD7DDEBD7DDEBD5DBEBD4DAEAD4DAEAD3D9E9D2D8E8
+D1D7E7D1D7E7D0D6E6CCD2E8CDD3E9CED4EACDD3E9CAD0E6C9CFE5CAD0E6CBD1E7CDD4E6C9D0E2
+C4CBDDC1C8DBBCC3D6BAC1D4BFC5DBC6CCE2BDC8DEBFCAE0C0CAE3BEC8E1BCC6DFBAC4DFBBC5E0
+BDC7E2BAC6E0B9C5DFB7C3DDB7C3DDB6C1DDB6C1DDB4BFDBB3BEDAB2C0DDB0BEDBAFBDDAAEBCD9
+AEBCD9AEBCD9ACBAD7ABB9D6AAB9D8A9B8D7A8B7D6A8B7D6A6B5D4A6B5D4A5B4D3A4B3D2A3B2D3
+A3B2D3A2B1D2A1B0D1A0AFD0A0AFD09FAECF9FAECF9AACD49BADD19CACCD9AA8CB9BA7CFA0A9D2
+E2E6EFE2E6EFE2E6EFE2E6EFE2E6F1E1E5F0E0E4EFE0E4EFDFE2F1DFE2F1DEE1F0DEE1F0DDE0EF
+DDE0EFDCDFEEDCDFEED9DFEDD9DFEDD8DEECD8DEECD7DDEBD7DDEBD6DCEAD6DCEAD4DAEAD4DAEA
+D3D9E9D2D8E8D2D8E8D1D7E7D0D6E6D0D6E6D1D8EBCFD6E9CCD3E6C9D0E3C7CEE1C7CEE1C9D0E3
+CBD2E5C2C9D9B3BACCA0A7B99198AA8A91A39097AAA3AABDB6BDD0B8C0D5BCC4D9C2CAE1C5CDE4
+C4CCE3C0C7E1BCC3DDBAC1DBBAC6E0B8C4DEB7C3DDB6C2DCB6C1DDB6C1DDB4BFDBB3BEDAB1BFDC
+B0BEDBAFBDDAAEBCD9AEBCD9ADBBD8ACBAD7ABB9D6A9B8D7A9B8D7A8B7D6A7B6D5A6B5D4A5B4D3
+A5B4D3A4B3D2A3B2D3A2B1D2A2B1D2A1B0D1A0AFD09FAECF9FAECF9EADCE9AACD49BADD19BABCC
+9AA8CB9BA7CF9FA8D1E1E5EEE1E5EEE1E5EEE1E5EEE1E5F0E0E4EFDFE3EEDFE3EEDFE2F1DEE1F0
+DEE1F0DDE0EFDDE0EFDCDFEEDCDFEEDBDEEDD9DFEDD9DFEDD8DEECD7DDEBD7DDEBD6DCEAD6DCEA
+D6DCEAD4DAEAD3D9E9D3D9E9D2D8E8D1D7E7D0D6E6D0D6E6CFD5E5D7DEEECDD4E4BEC5D5B0B7C7
+A6ADBDA2A9B9A1A8B8A1A8B8939AAA8A91A1838A9A8087997C83957A819381889B8A91A49CA4B7
+9FA7BAA8B0C3B3BBD0BCC4D9C0C8DDBDC5DCBAC2D9B9C5DFB8C4DEB7C3DDB6C2DCB6C1DDB5C0DC
+B4BFDBB3BEDAB1BFDCB0BEDBAEBCD9AEBCD9AEBCD9ADBBD8ACBAD7AAB8D5A9B8D7A9B8D7A8B7D6
+A7B6D5A6B5D4A5B4D3A4B3D2A4B3D2A2B1D2A2B1D2A1B0D1A1B0D1A0AFD09FAECF9FAECF9EADCE
+9AACD49AACD09BABCC9AA8CB9BA7CF9FA8D1E0E4EDE0E4EDE0E4EDE0E4EDE0E4EFDFE3EEDEE2ED
+DEE2EDDEE1F0DEE1F0DEE1F0DDE0EFDCDFEEDCDFEEDBDEEDDBDEEDD9DFEDD8DEECD8DEECD7DDEB
+D7DDEBD6DCEAD6DCEAD5DBE9D3D9E9D3D9E9D3D9E9D2D8E8D1D7E7D0D6E6D0D6E6CFD5E5B4BBCB
+A7AEBE949BAB848B9B7C83937B82927D84947F86968289997C83937B829280879781889A7E8597
+7E859782899B717A8B737C8D7C84979098ABA8B0C3B9C1D6BFC7DCBEC6DBB9C5DFB8C4DEB7C3DD
+B6C2DCB6C1DDB5C0DCB4BFDBB3BEDAB1BFDCB0BEDBAEBCD9AEBCD9AEBCD9ADBBD8ACBAD7AAB8D5
+A9B8D7A9B8D7A8B7D6A7B6D5A6B5D4A5B4D3A4B3D2A4B3D2A2B1D2A2B1D2A1B0D1A1B0D1A0AFD0
+9FAECF9EADCE9EADCE99ABD39AACD09BABCC99A7CA9AA6CE9FA8D1DEE3E9E0E4EDE0E4EDDDE4EE
+DCE3EDDEE4F0DDE3EFDAE2EFDBE1EDDBE1EDDBE1EDDAE0ECD9DFEBD9DFEBD8DEEAD8DEEAD6DCEC
+D6DCECD6DCECD5DBEBD5DBEBD4DAEAD4DAEAD3D9E9DAE1F3D4DBEDCCD3E5D2D9EBCCD3E3CDD4E4
+D1D8E8B2B9C9979DAB8B919F838997858B99878D9B8389977E84927E84927F85957F85957F8595
+7F85957F85957E84947D83937D83937D84967D84967C83957980927C83958B92A4A3AABCB6BDCF
+BAC5D9BBC6DCB4BFD5B8C4DCBAC6E0B6C1DDB7C2E0AEBCD9AFBDD8AEBCD7AEBCD7ADBBD8ACBAD7
+ABB9D6ABB8D8AAB7D7AAB9D6A9B8D5A9B8D7A8B7D6A7B6D5A6B5D6A5B4D5A5B4D5A2B0D3A2B0D3
+A1AFD2A1AFD2A0AED19FADD09FADD09EACCF98ABD599ADD299ACCD99A9CD9AA7D19EAAD2DDE2E8
+DFE3ECDFE3ECDCE3EDDBE2ECDDE3EFDCE2F0D9E1EEDAE0ECDAE0ECDAE0ECD9DFEBD8DEEAD8DEEA
+D7DDE9D7DDE9D6DCECD6DCECD5DBEBD5DBEBD4DAEAD4DAEAD3D9E9D3D9E9D5DCEED2D9EBC8CFE1
+CCD3E5D3DAEAD5DCECC2C9D99097A7868C9A7F85937D8391808694828896808694808694838997
+8086968086968086968086967F85957F85957E84947E84947E85977E85977C83957A8193798092
+7D8496848B9D8B92A496A1B5B1BCD0BBC6DCB7C1DAADB9D3ADB8D4B5C0DEAEB9D7AFBDD8AEBCD7
+AEBCD7ADBBD8ACBAD7ABB9D6ABB8D8AAB7D7A9B8D5A8B7D4A8B7D6A7B6D5A6B5D4A5B4D5A4B3D4
+A4B3D4A2B0D3A2B0D3A1AFD2A1AFD2A0AED19FADD09EACCF9EACCF98ABD599ADD299ACCD99A9CD
+9AA7D19EAAD2DCE0E9DEE2EBDEE2EBDAE1EBDAE0ECDCE2EEDBE1EFD8E0EDD9DFEDD9DFEDD9DFED
+D8DEECD7DDEBD7DDEBD6DCEAD6DCEAD5DBEBD5DBEBD5DBEBD4DAEAD4DAEAD3D9E9D3D9E9D2D8E8
+CBD2E4D5DCEED1D8EAD0D7E9D2D9E9CAD1E1AEB5C5818898828896808694818795838997808694
+7C82907E84928389978086968086968086968086968086967F85957E84947E84947C83957B8294
+7A81937B82947A8193798092757C8E72798B7C8799A0ABBFB7C2D8BCC6DFB4C0DAB1BCD8B7C2DE
+B2BDDBAEBCD7AEBCD7ADBBD6ADBBD8ACBAD7ABB9D6ABB8D8AAB7D7A8B7D4A8B7D4A7B6D5A6B5D4
+A5B4D3A4B3D4A3B2D3A3B2D3A2B0D3A2B0D3A1AFD2A0AED1A0AED19FADD09EACCF9EACCF97AAD4
+98ACD198ABCC98A8CC99A6D09DA9D1DBDFE8DDE1EADEE2EDDAE1EBDAE0ECDBE1EFDBE1EFD7DFEC
+D9DFEDD8DEECD8DEECD7DDEBD7DDEBD6DCEAD6DCEAD6DCEAD5DBEBD4DAEAD4DAEAD3D9E9D3D9E9
+D2D8E8D2D8E8D2D8E8C9D0E2D3DAECD4DBEDD1D8EAC9D0E0B3BACA989FAF868D9D858B99858B99
+868C9A868C9A8187957C82907D83918187957F85958086968086968086967F85957F85957E8494
+7D83937A8193798092787F917A81937B82947B8294798092777E9071798C81899C929DB1AEB9CF
+BAC4DDB4C0DAB2BDD9ABB6D2AEBCD7AEBCD7ADBBD6ACBAD7ACBAD7ABB9D6AAB7D7AAB7D7A8B7D4
+A7B6D3A7B6D5A6B5D4A5B4D3A4B3D4A3B2D3A3B2D3A2B0D3A2B0D3A1AFD2A0AED19FADD09FADD0
+9EACCF9EACCF95A8D296AACF96A9CA96A6CA98A5CF9CA8D0DBDFE8DDE1ECDEE2EDDAE0ECDAE0EC
+DBE1EFDAE0F0D7DEEED9DFEDD8DEECD8DEECD7DDEBD7DDEBD6DCEAD6DCEAD6DCEAD4DAEAD4DAEA
+D3D9E9D3D9E9D2D8E8D1D7E7D1D7E7D1D7E7D2D9EBCBD2E4CAD1E3CBD2E4BEC5D59CA3B3838A9A
+848B9B8187958187958288968389978288968086948086948187957E84947F85957F85957F8595
+7E84947D83937D83937C82927B82947A81937A8193798092787F917980927980927A8193737C8D
+727A8D777F92939EB2ADB8CEB4BED7B6C0DBACB8D2AEBCD7AEBCD7ADBBD6ACBAD7ABB9D6ABB9D6
+AAB7D7AAB7D7A8B7D4A8B7D4A7B6D5A6B5D4A5B4D3A4B3D4A3B2D3A3B2D3A2B0D3A1AFD2A1AFD2
+A0AED19FADD09EACCF9EACCF9DABCE96A9D397ABD097AACB97A7CB98A5CF9CA8D0DBDFEADDE1EC
+DDE1ECD9DFEBD9DFEDDBE1EFDAE0F0D7DEEED8DEEED8DEEED8DEEED7DDEDD6DCECD6DCECD5DBEB
+D5DBEBD3D9E9D3D9E9D2D8E8D2D8E8D1D7E7D1D7E7D0D6E6D0D6E6D3DAECCAD1E3CFD6E8C5CCDE
+A7AEBE868D9D787F8F868D9D8187958187958086948187958288968288968187958086947E8494
+7E84947E84947E84947E84947D83937C82927C8292787F917A81937C83957B8294798092787F91
+7980927A81937780917A8394747C8F7D859A8F9AB0A6B0C9B9C3DCB6C0DBAEBCD7ADBBD6ADBBD6
+ACBAD7ABB9D6AAB8D5AAB7D7A9B6D6A8B7D4A7B6D3A7B6D5A6B5D4A5B4D3A4B3D4A3B2D3A3B2D3
+A1AFD2A1AFD2A0AED1A0AED19FADD09EACCF9DABCE9DABCE97AAD498ACD198ABCC98A8CC99A6D0
+9DA9D1DADEE9DCE0EBDCE0ECD8DEEAD8DEECD9DFEFD9DFEFD6DDEDD7DDEDD7DDEDD6DCECD6DCEC
+D5DBEBD5DBEBD4DAEAD4DAEAD3D9E9D2D8E8D2D8E8D1D7E7D1D7E7D0D6E6D0D6E6CFD5E5CED5E7
+CCD3E5D3DAECB3BACC8990A07D84947D8494868D9D848A98848A98838997828896808694808694
+8086947F85937E84947E84947E84947E84947E84947D83937D83937C8292787F917A81937B8294
+7B82947B82947A81937A81937B8294737A8A7B8292737C8D6F778A747C918590A6A6B0C9B3BDD6
+ADBBD6ADBBD6ACBAD5ACBAD7ABB9D6AAB8D5AAB7D7A9B6D6A7B6D3A6B5D2A6B5D4A5B4D3A4B3D2
+A3B2D3A2B1D2A2B1D2A1AFD2A1AFD2A0AED19FADD09FADD09EACCF9DABCE9DABCE97AAD498ACD1
+98ABCC97A7CB98A5CF9BA7CFD9DDE8DBDFEADBDFEBD7DDE9D7DDEBD8DEEED8DEEED5DCECD6DCEC
+D6DCECD5DBEBD5DBEBD4DAEAD4DAEAD3D9E9D3D9E9D2D8E8D2D8E8D2D8E8D1D7E7D0D6E6D0D6E6
+CFD5E5CFD5E5D1D8EACAD1E3C6CDDF979EB0747B8B858C9C878E9E7A81917E8492808694818795
+7F85937D83917E84928086948187957F85957F85957F85957F85957F85957E84947D83937D8393
+7E85977C8395798092787F91777E90777E90777E90777E907A81917C8393778091788093737B90
+777F9698A2BBB4BED7ADBBD6ADBBD6ACBAD5ACBAD7ABB9D6AAB8D5A9B6D6A9B6D6A6B5D2A5B4D1
+A5B4D3A4B3D2A3B2D1A2B1D2A1B0D1A1B0D1A1AFD2A1AFD2A0AED19FADD09FADD09EACCF9DABCE
+9DABCE96A9D397ABD096A9CA95A5C995A2CC99A5CDD7DDE9DAE0EED8DEEED6DBEED8DFF1D6DDEF
+D3DAEAD7DFECD4DBEDD4DBEDD3DAECD3DAECD2D9EBD2D9EBD1D8EAD1D8EAD1D8EBD0D7EACED5E8
+CED5E8CDD4E7CDD4E7CDD4E7CCD3E6CACFE2D8DEEEB0B6C68C92A2848A9A818795858B99808694
+8187958187958187958187958086948086947F85937F85937F85957F85957E84947E84947E8494
+7D83937D83937D83937B82947A8193798092798092787F91787F91787F91798092788095777E91
+777E907A7F92757C8E71798C8590A4AAB6CCA7B5CFB0BED8A5B3CEAAB8D5AEBDDCA5B4D5A8B6D9
+A3B1D4A7B6D7A5B4D5A4B3D4A3B2D3A3B1D4A3B1D4A1AFD2A0AED19EAED29EAED29DADD19DADD1
+9CACD09BABCF9AAACE9AAACE95A8D298ACD193A6C798A8CC98A5CF96A2CAD6DCE8D9DFEDD6DCEC
+D5DAEDD7DEF0D5DCEED2D9E9D5DDEAD4DBEDD4DBEDD3DAECD3DAECD2D9EBD1D8EAD1D8EAD1D8EA
+D2D9ECD0D7EACED5E8CFD6E9D0D7EAD0D7EACDD4E7CAD1E4D0D5E8C9CFDF9FA5B5848A9A808696
+818795888E9C8389978187958187958187958086948086948086947F85937F85937F85957F8595
+7E84947E84947D83937D83937D83937D83937A81937A8193798092798092787F91787F91787F91
+787F91747C91757C8F757C8E787D90767D8F70788B7A8599919DB3A5B3CDB2C0DAA6B4CFA7B5D2
+AEBDDCA8B7D8A9B7DAA7B5D8A7B6D7A5B4D5A4B3D4A3B2D3A3B1D4A3B1D4A1AFD2A0AED19EAED2
+9EAED29DADD19DADD19CACD09BABCF9AAACE9AAACE95A8D298ACD193A6C798A8CC98A5CF96A2CA
+D5DBE7D8DEECD5DBEBD3D8EBD5DCEED4DBEDD1D8E8D4DCE9D3DAECD3DAECD3DAECD2D9EBD1D8EA
+D1D8EAD0D7E9D0D7E9D1D8EBCFD6E9CDD4E7CED5E8D0D7EAD0D7EACCD3E6C9D0E3CFD4E7B1B7C7
+8B91A17F85957F8595828896898F9D8288968187958187958187958086948086947F85937F8593
+7F85937E84947E84947E84947D83937D83937D83937C82927C82927A81937A8193798092787F91
+787F91787F91787F91787F91727A8F757C8F747B8D767B8E777E9071798C6E798D768298A0AEC8
+B4C2DCAAB8D3A5B3D0ADBCDBAAB9DAA7B5D8A8B6D9A6B5D6A5B4D5A4B3D4A3B2D3A3B1D4A3B1D4
+A1AFD2A0AED19EAED29EAED29DADD19CACD09BABCF9BABCF9AAACE9AAACE95A8D298ACD193A6C7
+98A8CC98A5CF95A1C9D4DAE6D7DDEBD4DAEAD3D8EBD5DCEED3DAECD0D7E7D3DBE8D2D9EBD2D9EB
+D2D9EBD1D8EAD1D8EAD0D7E9D0D7E9CFD6E8CDD4E7CDD4E7CCD3E6CCD3E6CDD4E7CCD3E6CCD3E6
+CBD2E5C4C9DC989EAE7F8595838999838999838997868C9A7D8391818795818795808694808694
+8086947F85937F85937F85937E84947E84947D83937D83937D83937C82927C82927C82927A8193
+7A8193798092787F91787F91787F91787F91787F91737B90787F92767D8F757A8D777E90747C8F
+6B768A69758B93A1BBB0BED8AFBDD8A6B4D1ABBAD9A8B7D8A2B0D3A7B5D8A6B5D6A5B4D5A3B2D3
+A3B2D3A3B1D4A2B0D3A1AFD2A0AED19EAED29DADD19DADD19CACD09BABCF9AAACE9AAACE9AAACE
+95A8D298ACD193A6C797A7CB98A5CF95A1C9D4DAE6D7DDEBD4DAEAD2D7EAD4DBEDD3DAECD0D7E7
+D3DBE8D2D9EBD1D8EAD1D8EAD0D7E9D0D7E9CFD6E8CFD6E8CFD6E8CBD2E5CDD4E7CDD4E7CCD3E6
+CAD1E4CAD1E4CCD3E6CFD6E9B6BBCE888E9E7C8292878D9D8389998288968389977D8391818795
+8086948086948086947F85937F85937F85937E84927D83937D83937D83937C82927C82927C8292
+7B81917B81917A8193798092798092787F91787F91777E90787F91787F91737B907A8194777E90
+73788B757C8E747C8F6E798D6B778D7F8DA79FADC7AEBCD7A8B6D3A9B8D7A7B6D7A0AED1A7B5D8
+A6B5D6A5B4D5A3B2D3A3B2D3A3B1D4A2B0D3A1AFD29FADD09DADD19DADD19DADD19CACD09BABCF
+9AAACE9AAACE99A9CD94A7D197ABD093A6C797A7CB98A5CF95A1C9D3D9E5D6DCEAD3D9E9D2D7EA
+D4DBEDD2D9EBCFD6E6D2DAE7D1D8EAD1D8EAD0D7E9D0D7E9CFD6E8CED5E7CED5E7CED5E7CCD3E6
+CED5E8CED5E8CCD3E6CAD1E4C9D0E3CCD3E6CED5E8A8ADC08288987E8494858B9B808696808694
+8187958288968086948086948086947F85937F85937F85937E84927E84927D83937D83937C8292
+7C82927C82927B81917B81917B8191798092798092787F91787F91777E90777E90777E90777E90
+71798E798093767D8F71768972798B727A8D6F7A8E707C926D7B958896B0A7B5D0AAB8D5A7B6D5
+A8B7D8A3B1D4A7B5D8A6B5D6A4B3D4A3B2D3A2B1D2A2B0D3A2B0D3A0AED19FADD09DADD19DADD1
+9CACD09CACD09BABCF9AAACE99A9CD99A9CD94A7D197ABD092A5C697A7CB97A4CE95A1C9D2D8E4
+D5DBE9D2D8E8D0D5E8D2D9EBD1D8EACED5E5D1D9E6D0D7E9D0D7E9D0D7E9CFD6E8CED5E7CED5E7
+CDD4E6CDD4E6CDD4E7CCD3E6CCD3E6CCD3E6CCD3E6CAD1E4C7CEE1C5CCDF999EB17F8595828898
+8389997F85958288967F85938389978086948086948086947F85937F85937E84927E84927E8492
+7C82927C82927C82927C82927B81917B81917A80907A8090798092798092787F91777E90777E90
+777E90777E90777E9070788D767D90737A8C71768972798B727A8D6E798D717D9367758F76849E
+9DABC6A9B7D4A6B5D4AAB9DAA5B3D6A4B2D5A5B4D5A4B3D4A3B2D3A2B1D2A2B0D3A2B0D3A0AED1
+9FADD09DADD19DADD19CACD09BABCF9AAACE9AAACE99A9CD99A9CD94A7D197ABD092A5C697A7CB
+97A4CE94A0C8D0D6E2D4DAE8D1D7E7CFD4E7D1D8EACFD6E8CDD4E4D0D8E5D0D7E9D0D7E9CFD6E8
+CFD6E8CED5E7CED5E7CDD4E6CDD4E6CDD4E7CAD1E4C8CFE2CAD1E4CDD4E7CAD1E4C2C9DCBAC1D4
+8E93A67D8393858B9B848A9A818797858B997D83918187958086948086948086947F85937F8593
+7E84927E84927E84927C82927C82927C82927B81917B81917B81917A80907A8090798092798092
+787F91777E90777E90777E90777E90777E9071798E747B8E72798B72778A757C8E727A8D6D788C
+6F7B916977916D7B9597A5C0A9B7D4A4B3D2ABBADBA4B2D59EACCFA5B4D5A4B3D4A3B2D3A2B1D2
+A2B0D3A1AFD2A0AED19FADD09DADD19DADD19CACD09BABCF9AAACE9AAACE99A9CD99A9CD94A7D1
+97ABD092A5C697A7CB97A4CE94A0C8CFD6E0D0D6E2CFD6E6D0D7E9D0D7EACFD6E9CDD6E7CCD5E6
+CDD5E8CDD5E8CCD4E7CCD4E7CCD4E7CBD3E6CBD3E6CBD3E6C8D0E3CAD2E5CAD2E5C9D1E4CBD2E4
+C9D0E2CDD4E69DA4B67F85958086968187978288988288988288988187978187977F85957F8595
+7E84947E84947D83937C82927C82927C82927A81937A81937A8193798092798092787F91787F91
+787F91787F92787F92787F92777E91767D90767D90757C8F757C8F737B8E737B8E727A8D71798C
+71798C70788B70788B70788B6F7B91707C9494A0BAAEBCD7AAB9D8A8B7D8A7B7D9A4B4D6A3B1D4
+A3B1D4A2B0D3A1AFD2A1AFD4A0AED39FADD29FADD29CABD29CABD29CABD29BAAD19AA9D099A8CF
+99A8CF98A7CE95A8D394A7CF94A6CA95A4CB96A3CF97A3CDCED5DFCFD5E1CED5E5CFD6E8CFD6E9
+CED5E8CCD5E6CBD4E5CCD4E7CCD4E7CBD3E6CBD3E6CBD3E6CAD2E5CAD2E5CAD2E5C9D1E4CAD2E5
+C8D0E3C6CEE1C9D0E2C6CDDFC6CDDF949BAD8086968086968187978187978187978086967F8595
+7E84947F85957E84947E84947D83937D83937C82927C82927C82927A81937A81937A8193798092
+798092787F91787F91787F91787F92787F92777E91777E91767D90767D90757C8F757C8F737B8E
+727A8D727A8D71798C71798C70788B70788B70788B6B778D67738B8692ACA2B0CBA3B2D1A0AFD0
+A1B1D39FAFD1A3B1D4A3B1D4A2B0D3A1AFD2A0AED3A0AED39FADD29FADD29CABD29CABD29BAAD1
+9BAAD19AA9D099A8CF98A7CE98A7CE94A7D293A6CE93A5C994A3CA95A2CE96A2CCCDD3DFCED4E2
+CDD4E4CED5E7CED5E8CDD4E7CBD4E5CAD3E4CBD3E6CBD3E6CAD2E5CAD2E5CAD2E5C9D1E4C9D1E4
+C9D1E4CCD4E9CBD3E6C8D0E3C7CFE2CAD1E4C6CDDFC6CDDF939AAC808696808696808696808696
+8086967F85957D83937C82927E84947E84947E84947D83937C82927C82927B81917B81917A8193
+7A8193798092798092798092787F91787F91787F91787F92777E91777E91767D90767D90757C8F
+757C8F747B8E727A8D727A8D727A8D71798C71798C70788B70788B6F778A737F9569758D7E8AA4
+A0AEC9A8B7D6A5B4D5A6B6D8A6B6D8A2B0D3A2B0D3A2B0D3A1AFD2A0AED39FADD29FADD29EACD1
+9CABD29CABD29BAAD19AA9D099A8CF99A8CF98A7CE98A7CE93A6D192A5CD92A4C893A2C994A1CD
+95A1CBCDD3DFCDD3E1CDD4E4CDD4E7CDD4E7CCD3E6CAD2E5CAD3E4CAD2E5CAD2E5CAD2E5C9D1E4
+C9D1E4C9D1E4C8D0E3C8D0E3C9D1E6C9D1E6C8D0E5C6CEE1C9D0E3C8CFE2CBD2E49AA1B37F8595
+7F85958086968086968086967F85957D83937D83937E84947D83937D83937C82927C82927B8191
+7B81917B81917A8193798092798092798092787F91787F91787F91777E90777E91777E91767D90
+767D90757C8F757C8F747B8E747B8E727A8D727A8D727A8D71798C70788B70788B6F778A6F778A
+707C92636F87707C9696A4BFA6B5D4A1B0D1A2B2D4A2B2D4A2B0D3A2B0D3A1AFD2A0AED19FADD2
+9FADD29EACD19EACD19BAAD19BAAD19AA9D09AA9D099A8CF98A7CE98A7CE97A6CD93A6D192A5CD
+92A4C893A2C994A1CD95A1CBCDD3DFCDD3E1CDD4E6CDD4E7CDD3E9CCD2E8CAD2E5CAD2E5CAD2E5
+CAD2E5CAD2E5C9D1E4C9D1E4C9D1E4C8D0E3C8D0E3C4CCE1C6CEE3C6CEE3C4CCE1C6CDE0C4CBDE
+CAD1E49DA4B77E84947F85957F85958086968086968086967F85957E84947D83937D83937C8292
+7C82927B81917B81917A80907A8090798092798092798092787F91787F91787F91777E90777E90
+777E91767D90767D90757C8F757C8F747B8E747B8E737A8D727A8D727A8D71798C71798C70788B
+6F778A6F778A6F778A6C788E626E8667738D919FBAA6B5D49FAECFA0B0D29EAED0A1AFD2A1AFD2
+A1AFD2A0AED19FADD29EACD19EACD19DABD09BAAD19AA9D09AA9D099A8CF98A7CE98A7CE97A6CD
+97A6CD93A6D192A5CD92A4C893A2C994A1CD95A1CBCCD2E0CDD3E3CCD3E5CDD4E7CDD3E9CCD2E8
+CAD2E5C9D1E4CAD2E5CAD2E5C9D1E4C9D1E4C9D1E4C8D0E3C8D0E3C8D0E3C6CEE5C8D0E5C7CFE4
+C5CDE2C6CCE2C3CADDC7CEE1979EB17D83937E84947F85958086968086968086967F85957F8595
+7D83937C82927C82927B81917B81917A80907A80907A8090798092798092798092787F91787F91
+777E90777E90777E90767D90767D90757C8F757C8F747B8E747B8E737A8D737A8D727A8D71798C
+71798C70788B70788B6F778A6F778A6F778A6E7A9069758D6A769092A0BBABBAD9A3B2D3A5B5D7
+A1B1D3A1AFD2A1AFD2A0AED19FADD09EACD19EACD19DABD09DABD09AA9D09AA9D099A8CF99A8CF
+98A7CE97A6CD96A5CC96A5CC93A6D192A5CD92A4C893A2C994A1CD95A1CBCBD1DFCCD2E2CBD2E4
+CCD2E8CBD1E7CBD1E7C9D1E6C8D0E3C9D1E4C9D1E4C8D0E3C8D0E3C7CFE2C7CFE2C7CFE2C7CFE2
+C8D0E7C7CFE6C6CEE3C5CDE2C9CFE5C4CAE0C1C8DB8B92A57D83937E84947F85957F85957F8595
+7E84947D83937D83937C82927C82927C82927B81917A80907A8090797F8F797F8F798092798092
+787F91787F91787F91777E90777E90777E90767D90757C8F757C8F747B8E747B8E737A8D737A8D
+737A8D71798C71798C71798C70788B70788B6F778A6F778A6E768968748A6B778F67738D8B99B4
+A4B3D29EADCEA3B3D59DADCFA1AFD2A0AED1A0AED19FADD09EACD19DABD09DABD09CAACF9AA9D0
+9AA9D099A8CF98A7CE97A6CD97A6CD96A5CC96A5CC92A5D091A4CC91A3C792A1C893A0CC94A0CA
+CAD0DECBD1E1CAD1E3CBD1E7CAD0E6CAD0E6C8D0E5C7CFE2C8D0E3C7CFE2C7CFE2C7CFE2C6CEE1
+C6CEE1C6CEE1C6CEE1C4CCE3C2CAE1C0C8DFC2CADFC9CFE5C3C9DFBAC1D47F86997E84947E8494
+7E84947E84947E84947D83937B81917A80907C82927C82927B81917B81917A80907A8090797F8F
+797F8F798092798092787F91787F91777E90777E90777E90777E90757C8F757C8F757C8F747B8E
+747B8E737A8D737A8D72798C71798C71798C71798C70788B70788B6F778A6E76896E768969758B
+707C9469758F8A98B3A2B1D09EADCEA5B5D79FAFD1A0AED1A0AED19FADD09FADD09EACD19DABD0
+9CAACF9CAACF9AA9D099A8CF99A8CF98A7CE97A6CD96A5CC96A5CC96A5CC91A4CF90A3CB90A2C6
+91A0C7929FCB939FC9C9D0E2C8D0E3C8D0E5C8D0E7C8D0E7C5D0E6C5D0E4C5D0E4C6D1E5C5D0E4
+C5D0E4C5D0E4C5D0E4C5D0E4C5D0E4C4CFE3BFCCDFC5D1E7BFCAE0C5CFE8BFCAE0C4CCE1BDC5D8
+7B84957D8496848B9D7D84967980927F86987B8294777E907C83957B82947B82947B82947B8294
+7A81937A8193798092798092787F92787F92787F92777E91767D90767D90757C8F757C8F737B8E
+737B8E737B8E737B8E727A8D727A8D727A8D727A8D6F7B8B6F7B8B6E7A8A6E7A8A6D788A6C7789
+6C77896C77896C789065748B75839D97A6C3A9B8D7A1B1D29BABCD9EB0D49EAED09EAED29DADD1
+9DADD19CACD09BAAD19AA9D09AA9D098AAD297A9D196A8D095A7CF94A6CE94A6CE94A6CE94A6CE
+8EA3D08EA4CD8DA3C88FA2CA8FA0CC929FCBC9D0E2C8D0E3C8D0E5C8D0E7C8D0E7C6D1E7C5D0E4
+C5D0E4C4CFE3C4CFE3C4CFE3C4CFE3C4CFE3C4CFE3C3CEE2C3CEE2C0CDE0C3CFE5BEC9DFC3CDE6
+BDC8DEC0C8DDBBC3D6818A9B777E907B82947E85977980927C8395808799798092787F917A8193
+7A81937A81937A8193798092798092798092787F91787F92787F92777E91777E91767D90767D90
+757C8F757C8F737B8E737B8E737B8E727A8D727A8D727A8D727A8D727A8D6F7B8B6F7B8B6E7A8A
+6E7A8A6D788A6C77896C77896C778969758D7180978694AE9CABC8A6B5D4A2B2D39FAFD19FB1D5
+9EAED09EAED29DADD19CACD09CACD09BAAD19AA9D09AA9D098AAD297A9D196A8D095A7CF94A6CE
+94A6CE94A6CE93A5CD8EA3D08EA4CD8DA3C88FA2CA8FA0CC929FCBC8CFE1C7CFE2C7CFE4C7CFE6
+C7CFE6C5D0E6C4CFE3C4CFE3C3CEE2C3CEE2C3CEE2C3CEE2C2CDE1C2CDE1C2CDE1C2CDE1C2CFE2
+C1CDE3BEC8E1C5CFE8BEC8E1BFC7DEBEC6D9949CAF7D8496777E90808799798092787F9182899B
+798092777E907A8193798092798092798092787F91787F91787F91777E90787F92777E91777E91
+767D90767D90757C8F757C8F747B8E737B8E737B8E727A8D727A8D727A8D727A8D727A8D727A8D
+6F7B8B6E7A8A6E7A8A6D788A6D788A6C77896C77896B768A6470887E8CA699A7C2A1B0CDA1B0CF
+A1B1D3A2B2D69EB0D49EAED09DADD19DADD19CACD09BABCF9AA9D09AA9D09AA9D097A9D197A9D1
+96A8D095A7CF94A6CE93A5CD93A5CD93A5CD8EA3D08EA4CD8DA3C88FA2CA8FA0CC919ECAC6CDDF
+C5CDE0C5CDE2C5CDE4C5CDE4C3CEE4C2CDE1C2CDE1C2CDE1C2CDE1C2CDE1C2CDE1C2CDE1C1CCE0
+C1CCE0C1CCE0C1CDE3BECAE0BDC7E0C5CFE8C0CAE3C1C9E0C3CBE0AAB2C58D94A6777E907F8698
+7A8193757C8E7F8698787F91798092798092798092798092787F91787F91787F91777E90777E90
+777E91777E91767D90767D90757C8F757C8F747B8E747B8E727A8D727A8D727A8D727A8D727A8D
+727A8D71798C71798C6E7A8A6E7A8A6E798B6D788A6C77896C778B6B768A6B768A616D858290AA
+A0AEC9A3B2CF9EADCE9EAED0A1B1D59DAFD39DADCF9DADD19CACD09CACD09BABCF9AA9D099A8CF
+99A8CF97A9D196A8D095A7CF94A6CE93A5CD93A5CD93A5CD93A5CD8EA3D08DA3CC8DA3C88EA1C9
+8FA0CC919ECAC6CDDFC5CDE0C5CDE2C5CDE4C5CDE4C3CEE4C2CDE1C2CDE1C2CDE3C2CDE3C2CDE3
+C2CDE3C1CCE2C1CCE2C1CCE2C1CCE2BFCBE1BBC7DFBCC6DFC2CCE7BEC8E1BFC7DEC2CADFB7BFD2
+939AAC757C8E777E907B8294787F917A8193767D8F7C83957A8193798092798092798092787F91
+787F91787F91777E90777E91767D90767D90757C8F757C8F747B8E747B8E737A8D727A8D727A8D
+727A8D727A8D727A8D71798C71798C71798C6E798B6E798B6D788A6D788A6C778B6C778B6B768A
+6B768A636F89818FA99FADC8A4B3D29FAECF9CACCE9EAED29CAED49DADCF9CACD09CACD09BABCF
+9AAACE99A8CF99A8CF99A8CF96A8D096A8D095A7CF94A6CE93A5CD92A4CC92A4CC92A4CC8DA2CF
+8DA3CC8DA3C88EA1C98E9FCB919ECAC7CEE0C6CEE1C6CEE3C6CEE5C6CEE5C4CFE5C3CEE2C3CEE2
+C1CCE2C1CCE2C1CCE2C1CCE2C1CCE2C0CBE1C0CBE1C0CBE1C1CDE3BDC9E1BFC9E4C1CBE6BDC7E2
+BEC5DFC0C8DDBCC4D9959CAE7E859772798B7B82947D8496777E90787F917B8294798092798092
+798092787F91787F91787F91777E90777E90767D90767D90757C8F757C8F747B8E747B8E737A8D
+737A8D727A8D727A8D727A8D71798C71798C71798C71798C71798C6E798B6E798B6D788A6D788C
+6C778B6B768A6B768A6B768C66728C818FAA9EACC9A4B3D2A0AFD09DADD19EADD49CAED49CACCE
+9CACD09BABCF9BABCF9AAACE99A8CF98A7CE98A7CE96A8D095A7CF94A6CE93A5CD92A4CC92A4CC
+92A4CC92A4CC8DA2CF8DA3CC8CA2C78EA1C98E9FCB919ECAC6CDDFC5CDE0C5CDE2C5CDE4C5CDE4
+C2CDE3C2CDE1C1CCE0C0CBE1C0CBE1C0CBE1C0CBE1BFCAE0BFCAE0BFCAE0BFCAE0C0CCE4BDC9E1
+C1CBE6BFC9E4BDC7E2C0C7E1BEC6DDBFC7DCA8AFC19CA3B5798092787F917D8496757C8E7D8496
+787F91787F91787F91787F91787F91777E90777E90767D8F767D8F767D90757C8F757C8F747B8E
+747B8E737A8D737A8D737A8D727A8D727A8D71798C71798C71798C71798C71798C71798C6E798B
+6D788A6D788C6C778B6C778B6B768A6B768C6A758B67738D8492AD9FADCAA2B1D09EACCF9FAFD3
+9FAED59AACD29CACCE9BABCF9BABCF9AAACE99A9CD99A8CF98A7CE98A7CE95A7CF95A7CF94A6CE
+93A5CD92A4CC91A3CB91A3CB91A3CB8DA2CF8DA3CC8CA2C78EA1C98E9FCB909DC9C3CADCC2CADD
+C3CBE0C3CBE2C3CBE2C0CBE1C0CBDFBFCADEBFCAE0BFCAE0BFCAE0BEC9DFBEC9DFBEC9DFBEC9DF
+BEC9DFBAC6DEB9C5DDBDC7E2BAC4DFB9C3DEBFC6E0BCC4DBBEC6DBC0C7D9BCC3D5848B9D767D8F
+798092737A8C81889A767D8F777E90777E90777E90777E90767D8F767D8F767D8F757C8E757C8F
+757C8F757C8F747B8E747B8E737A8D737A8D72798C727A8D727A8D71798C71798C71798C71798C
+71798C71798C6D788A6D788A6D788C6C778B6C778B6B768C6B768C6A758B66718D8795B0A2B0CD
+A0AFCE9BA9CC9FAFD3A0AFD697A9CF9CACCE9BABCF9BABCF9AAACE99A9CD98A7CE98A7CE97A6CD
+95A7CF94A6CE93A5CD92A4CC92A4CC91A3CB91A3CB91A3CB8DA2CF8DA3CC8CA2C78DA0C88E9FCB
+909DC9C5CCDEC3CBDEC2CAE1C2C9E3C1C8E4BFC9E4BFC9E2BFC9E2BECAE2BECAE2BFCBE3BECAE2
+BECAE2BDC9E1BDC9E1BCC8E0BBC7E1BBC7E1BBC7E1BBC7E1BBC7E1BAC6E0BAC6E0BAC6E0B4BFD5
+BCC7DD939BB070788D7A82957A8394747B8D767D8F777E91777E91777E91767D90767D90757C8F
+757C8F757C8F747C8F747C8F747C8F737B8E737B8E737B8E727A8D727A8D6F7A8C6F7A8C6F7A8C
+6E798B6E798B6D788A6D788A6D788A6E78916A758B6D788C6D788C6673866C788E6D7991616D85
+61708F8C9BBAA1B0D1A0AFD0A4B4D6A0B0D498A8CC9CACD099ABD398AAD298AAD297A9D196A8D0
+95A7CF95A7CF94A6CE94A6CE93A5CD93A5CD92A4CC91A3CB90A2CA90A2CA8FA1C98CA1D08BA1CA
+8AA0C78C9FC78C9DC88F9CC6C3CADCC2CADDC1C9E0C1C8E2C0C7E3BEC8E3BEC8E1BEC8E1BDC9E1
+BDC9E1BDC9E1BDC9E1BDC9E1BCC8E0BCC8E0BBC7DFBAC6E0BAC6E0BAC6E0BAC6E0B9C5DFB9C5DF
+B9C5DFB9C5DFB6C1D7BBC6DCA3AEC4747C917B8396777F92787F91787F91777E91777E91767D90
+767D90767D90757C8F757C8F757C8F737B8E737B8E737B8E727A8D727A8D727A8D71798C71798C
+6E798B6E798B6E798B6E798B6D788A6D788A6D788A6C77896D77906A758B6A75896B768A687588
+69758B69758D64708A6978978E9DBC9FAECF9EACCFA2B2D4A0B0D499A9CD9DACD398AAD298AAD2
+97A9D197A9D196A8D095A7CF95A7CF94A6CE93A5CD93A5CD92A4CC92A4CC91A3CB90A2CA90A2CA
+8FA1C98BA0CF8BA1CA8AA0C78C9FC78C9DC88F9CC6C2C9DBC1C9DCC0C8DFBFC6E0BFC6E2BDC7E2
+BDC7E0BDC7E0BCC8E0BCC8E0BCC8E0BCC8E0BCC8E0BBC7DFBAC6DEBAC6DEB9C5DFB9C5DFB8C4DE
+B8C4DEB8C4DEB8C4DEB8C4DEB8C4DEB8C2DBB4BED7B0BBD1778298767E9371798C757D90778091
+767D90767D90767D90767D90757C8F757C8F757C8F747B8E727A8D727A8D727A8D71798C71798C
+71798C70788B70788B6E798B6D788A6D788A6D788A6C77896C77896C77896B76886E798F6C778D
+6974886A75896A778A66728866728A6F7B957B8AA995A4C59FAECF9BABCD9FAFD19EAED299A8CF
+9AACD298AAD298AAD297A9D196A8D095A7CF95A7CF94A6CE94A6CE93A5CD93A5CD92A4CC91A3CB
+90A2CA90A2CA8FA1C98FA1C98BA0CF8BA1CA8AA0C78B9EC68C9DC88F9CC6C1C8DAC0C8DBBFC7DE
+BEC5DFBEC5E1BCC6E1BCC6DFBCC6DFBBC7DFBBC7DFBBC7DFBBC7DFBBC7DFBAC6DEB9C5DDB9C5DD
+B8C4DEB8C4DEB8C4DEB8C4DEB7C3DDB7C3DDB7C3DDB7C3DDBAC6E0ADB7D0B3BDD68893A9768195
+767E9370788B767E91767D90767D90757C8F757C8F757C8F747B8E747B8E747B8E727A8D727A8D
+727A8D71798C71798C70788B70788B70788B6D788A6D788A6C77896C77896B76886B76886B7688
+6B76886E798F707B916B768A6A75896B778D6470886C7892838EAA8F9EBF9EADCEA0B0D19BABCD
+9CACD09AACD096A8CE97A9CF97A9D197A9D197A9D196A8D095A7CF94A6CE94A6CE93A5CD92A4CC
+92A4CC92A4CC91A3CB90A2CA8FA1C98FA1C98EA0C88BA0CF8BA1CA8AA0C78B9EC68C9DC88F9CC6
+C1C8DAC0C8DBBFC7DEBEC5DFBEC5E1BCC6E1BCC6DFBCC6DFBBC7E1BBC7E1BBC7E1BBC7E1BBC7E1
+BAC6E0B9C5DFB9C5DFB8C4DEB8C4DEB7C3DDB7C3DDB7C3DDB7C3DDB7C3DDB7C3DDBCC8E2ADB9D3
+B3BFD7A9B3CC8E99AF8C97AB71798E757D92757C8F757C8F757C8F757C8F747B8E747B8E737A8D
+737A8D727A8D727A8D727A8D71798C71798C71798C70788B70788B6C77896C77896C77896B7688
+6B76886A75876A75876A75876C778D707B916C778B6A758968748A64708A76819D98A3C19CACCD
+A1B1D2A0B0D29BABCD99ABCF99ABD197A9CF97A9D197A9D197A9D196A8D095A7CF94A6CE94A6CE
+93A5CD93A5CD92A4CC92A4CC91A3CB90A2CA8FA1C98FA1C98EA0C88EA0C88BA0CF8AA0C98AA0C7
+8B9EC68C9DC88E9BC5C0C7D9BFC7DABEC6DDBDC4DEBDC4E0BBC5E0BBC5DEBBC5DEBAC6E0BAC6E0
+BAC6E0BAC6E0BAC6E0B9C5DFB8C4DEB8C4DEB7C3DDB7C3DDB7C3DDB6C2DCB6C2DCB6C2DCB6C2DC
+B6C2DCB8C3DFB0BBD7B3BFD9C0CCE4A9B3CCA4AFC57782986F7A8E757C8F757C8F747B8E747B8E
+747B8E737A8D737A8D737A8D727A8D727A8D727A8D71798C71798C70788B70788B70788B6C7789
+6C77896C77896B76886B76886A75876A75876A75876A758B6C778D6B768A687389636F8767738D
+818CAAA3AECE9FAFD09EAED09DADCF99ABCF99ABCF9AACD29AACD498ABD396A8D096A8D096A8D0
+95A7CF94A6CE93A5CD93A5CD92A4CC91A3CB91A3CB91A3CB90A2CA8FA1C98EA0C88EA0C88D9FC7
+8A9FCE8AA0C9899FC68B9EC68B9CC78E9BC5BFC6D8BDC5D8BDC5DCBCC3DDBCC3DFBAC4DFBAC4DD
+BAC4DDB9C5DFB9C5DFB9C5DFB9C5DFB8C4DEB8C4DEB7C3DDB7C3DDB6C2DCB5C1DBB5C1DBB5C1DB
+B5C1DBB5C1DBB5C1DBB5C1DBB2BDD9B4BFDBB0BBD7BDC9E3B6C0D9AEB8D1848FA56C778D747B8E
+747B8E747B8E747B8E737A8D737A8D737A8D72798C71798C71798C71798C70788B70788B70788B
+6F778A6F778A6C77896C77896C77896B76886B76886B76886A75876A75876A758B677286687387
+687389626E866E79958B96B4A4AED19FAFD19AAACC98ABCC9AACD098AAD099ABD199ACD498ABD3
+96A8D096A8D095A7CF94A6CE94A6CE93A5CD92A4CC92A4CC91A3CB91A3CB90A2CA8FA1C98FA1C9
+8EA0C88D9FC78D9FC78A9FCE8AA0C9899FC68A9DC58B9CC78E9BC5BEC5D7BCC4D7BCC4DBBBC2DC
+BBC2DEB8C2DDB9C3DCB9C3DCB8C4DEB8C4DEB8C4DEB8C4DEB7C3DDB7C3DDB6C2DCB5C1DBB4C0DA
+B4C0DAB4C0DAB4C0DAB4C0DAB4C0DAB3BFD9B3BFD9B0BEDBB8C3DFAEB9D5AFBBD5B6C2DAAEB8D1
+919CB26E798F747B8E747B8E747B8E737A8D737A8D737A8D72798C72798C70788B70788B70788B
+6F778A6F778A6F778A6E76896E76896C77896C77896C77896B76886B76886B76886A75876A7587
+6C778D646F8367728669748A647088747F9B929DBDA2ACCF9FAFD198A8CA97A9CD9AACD097A9CF
+95A9CE97AAD295A8D096A8D096A8D095A7CF94A6CE93A5CD93A5CD92A4CC92A4CC91A3CB91A3CB
+90A2CA8FA1C98EA0C88EA0C88D9FC78D9FC78A9FCE8AA0C9899FC68A9DC58B9CC78E9BC5C1C3D8
+B9C3DCB5C5DFB6C6E0BAC4DDBAC1DBB7C0DDB6C3E5B6C4DFB6C4DFB5C3DEB5C3DEB5C3DEB4C2DD
+B4C2DDB4C2DDB3C1DCB3C1DCB3C1DCB2C0DBB2C0DBB2C0DBB1BFDAB1BFDAB3BEDAB6C1DDABB6D4
+B3BEDCB1BCDAAFBAD6A5B1CB69758D757C8E737A8C687182737B8E6E798B6772847380916E7B8C
+6E798D6E798D6D788C6D788C6D788C6C778B6C778B6C778B6C778B6C778B6C778B6B768A6B768A
+6A75896A75896974886D788A6671856A768C69758F606E8B7885A597A6C79FADD09CABD49CABD4
+9BAAD39BAAD39AA9D29AA9D299A8D199A8D195A7CF94A6CE94A6CE93A5CD92A4CC92A4CC91A3CB
+91A3CB8FA2CC8FA2CC8FA2CC8EA1CB8DA0CA8C9FC98C9FC98B9EC8899DCF899EC9899FC68B9EC8
+8C9DC98F9CC8C1C3D8B9C3DCB5C5DFB6C6E0BAC4DDBAC1DBB7C0DDB6C3E5B5C3DEB5C3DEB4C2DD
+B4C2DDB4C2DDB3C1DCB3C1DCB3C1DCB2C0DBB2C0DBB2C0DBB1BFDAB1BFDAB1BFDAB0BED9B0BED9
+B3BEDAB5C0DCACB7D5B4BFDDB2BDDBAFBAD6AAB6D07A869E767E916F778A737B8E717C8E6C7789
+6C77896D7A8B6F7C8D6E798D6D788C6D788C6D788C6C778B6C778B6C778B6C778B6C778B6B768A
+6B768A6B768A6B768A6A75896A75896A75896B768A69748868748C64708A6573908190AF9CAACD
+9EACCF9BAAD39BAAD39AA9D29AA9D299A8D198A7D098A7D098A7D094A6CE94A6CE93A5CD92A4CC
+91A3CB91A3CB90A2CA90A2CA8FA2CC8FA2CC8EA1CB8EA1CB8DA0CA8C9FC98C9FC98B9EC8899DCF
+899EC9899FC68B9EC88C9DC98F9CC8C0C2D7B8C2DBB4C4DEB5C5DFB9C3DCB8BFD9B6BFDCB5C2E4
+B3C1DCB3C1DCB3C1DCB3C1DCB2C0DBB2C0DBB1BFDAB1BFDAB1BFDAB1BFDAB1BFDAB0BED9B0BED9
+B0BED9AFBDD8AFBDD8B4BFDBB4BFDDACB7D5B5C0E0B2BDDBAFBAD6B1BDD7929EB6767E93697186
+768195727D916D788C727D916774856E7B8C6D788C6D788C6D788C6C778B6C778B6C778B6B768A
+6B768A6A75896A75896A75896A75896A75896A75896A75896A75896873876A758B6470885E6C87
+707E9B8F9EBF9FADD09AAACE9AA9D29AA9D299A8D199A8D198A7D097A6CF97A6CF97A6CF93A5CD
+93A5CD92A4CC91A3CB90A2CA90A2CA8FA1C98FA1C98EA1CB8EA1CB8EA1CB8DA0CA8C9FC98C9FC9
+8B9EC88B9EC8899DCF899EC9899FC68B9EC88C9DC98F9CC8BEC0D5B6C0D9B2C2DCB3C3DDB7C1DA
+B6BDD7B4BDDAB3C0E2B3C1DCB3C1DCB2C0DBB2C0DBB1BFDAB1BFDAB1BFDAB1BFDAB1BFDAB1BFDA
+B0BED9B0BED9AFBDD8AFBDD8AFBDD8AFBDD8B2C0DBB0BEDBABB8D8B2BFDFAEBBDBACBAD7B2C0DA
+A4B2CC7B869C6772886C778B727D91727D91717C906774876B788B6D788C6D788C6C778B6C778B
+6B768A6B768A6B768A6B768A6974886974886A75896A75896A75896A75896A75896A7589657086
+657187616D8765738E7F8EAD98A6C99CACD098A8CC99A8D199A8D199A8D198A7D097A6CF97A6CF
+96A5CE96A5CE93A5CD92A4CC92A4CC91A3CB90A2CA8FA1C98FA1C98FA1C98DA0CA8DA0CA8DA0CA
+8DA0CA8C9FC98C9FC98B9EC88B9EC8899DCF899EC9899FC68B9EC88C9DC98F9CC8BEC0D5B6C0D9
+B1C1DBB3C3DDB6C0D9B6BDD7B4BDDAB2BFE1B2C0DBB2C0DBB2C0DBB2C0DBB1BFDAB1BFDAB0BED9
+B0BED9B1BFDAB0BED9B0BED9B0BED9AFBDD8AFBDD8AFBDD8AFBDD8B1BFDCAFBDDAACB9D9AFBCDC
+ACB9D9AAB8D5B0BED9AEBCD6919DB577839B636F87707C92727E946875886E798D6C778B6C778B
+6C778B6C778B6B768A6B768A6B768A6A75896A7589697488697488697488697488697488697488
+6A75896A7589647088636F8765738D7987A492A1C29CACCE9AA9D099A8CF99A8D199A8D199A8D1
+98A7D097A6CF97A6CF96A5CE96A5CE93A5CD93A5CD92A4CC91A3CB90A2CA90A2CA8FA1C98FA1C9
+8DA0CA8C9FC98C9FC98C9FC98C9FC98B9EC88B9EC88B9EC8899DCF899EC9899FC68B9EC88C9DC9
+8F9CC8BEC0D5B6C0D9B2C2DCB3C3DDB7C1DAB7BED8B4BDDAB3C0E2B2C0DBB2C0DBB1BFDAB1BFDA
+B0BED9B0BED9B0BED9B0BED9B0BED9B0BED9B0BED9AFBDD8AFBDD8AFBDD8AEBCD7AEBCD7AFBDDA
+AEBBDBADBADAACB9DBABB8D8A9B7D4ABB9D4AFBDD7A9B7D1909EB86F7B93707C946D798F647086
+737E926D788C6C778B6B768A6B768A6B768A6A75896A75896A75896A7589697488697488697488
+69748869748869748869748869748864708865718B74829D8E9DBC9EADCE9DADD19AA9D098AAD2
+99A8D199A8D198A7D098A7D097A6CF96A5CE96A5CE96A5CE93A5CD92A4CC92A4CC91A3CB90A2CA
+8FA1C98FA1C98FA1C98C9FC98C9FC98B9EC88B9EC88B9EC88B9EC88B9EC88B9EC8899DCF899EC9
+899FC68B9EC88C9DC98F9CC8BDBFD4B5BFD8B0C0DAB2C2DCB5BFD8B5BCD6B3BCD9B2BFE1B0BED9
+B0BED9B0BED9AFBDD8AFBDD8AFBDD8AEBCD7AEBCD7AFBDD8AFBDD8AFBDD8AEBCD7AEBCD7ADBBD6
+ADBBD6ADBBD6ACBAD7ADBADAADBADCA9B6D8AAB7D9ABB8D8A8B6D1ABB9D4AFBDD8A4B2CD8D9BB5
+77839B67738B69758B717C906B768A6B768A6B768A6B768A6A75896A75896A7589697488697488
+697488697488697488687387687387687387687387677286616D8767758F8593B09DACCB9EACCF
+9AAACE99ABD396A8D098A7D097A6CF97A6CF96A5CE96A5CE95A4CD95A4CD95A4CD92A4CC91A3CB
+91A3CB90A2CA8FA1C98FA1C98EA0C88EA0C88B9EC88B9EC88B9EC88B9EC88B9EC88B9EC88B9EC8
+8B9EC8899DCF899EC9899FC68B9EC88C9DC98F9CC8BABCD1B2BCD5AEBED8AFBFD9B3BDD6B3BAD4
+B1BAD7AFBCDEAFBDD8AFBDD8AFBDD8AEBCD7AEBCD7AEBCD7ADBBD6ADBBD6AEBCD7AEBCD7AEBCD7
+ADBBD6ADBBD6ACBAD5ACBAD5ACBAD5A9B8D5ABBAD9ACBBDCA7B6D7AAB9DAACBBDAA5B4D1A7B7D1
+A6B5D2A9B9D3A8B6D17D8BA5657189717D936D788C6671856B768A6B768A6B768A6A75896A7589
+6974886974886974886A75896974886974886873876873876772866772866772865B69836B7994
+8F9DBAA2B1D098A8CA97A6CD9BADD592A3CE97A6CF96A5CE96A5CE95A4CD95A4CD94A3CC94A3CC
+94A3CC91A3CB91A3CB90A2CA8FA1C98EA0C88EA0C88D9FC78D9FC78B9EC88B9EC88B9EC88B9EC8
+8B9EC88B9EC88B9EC88B9EC8899DCF899EC9899FC68B9EC88C9DC98F9CC8B3BED4B2BDD9B0BDDD
+AFBEDBAFBFD8AEBED5AFBDD8B1BBDEAFBDDAAFBDDAAFBDDAAEBCD9AEBCD9ADBBD8ADBBD8ADBBD8
+ACBBD8ACBBD8ACBBD8ACBBD8ACBBD8ABBAD7ABBAD7ABBAD7A9B8D7A9B8D7A9B8D7A9B8D7A8B7D6
+A8B7D6A8B7D6A8B7D6A5B5D7AAB9DAA5B3D07C86A16D788E6772866974886B788B6B768C6B768C
+6A758B6A758B69748A69748A69748A69748A687387687387677286677286677286677286677286
+67728662708B616F8C96A5C499A8C997A7CB97A9D197A8D397A8D494A6CE94A6CE94A6CE93A5CD
+92A4CC92A4CC91A3CB91A3CB8FA2CC8EA1CB8EA1CB8DA0CA8DA0CA8DA0CA8DA0CA8DA0CA8B9EC9
+8B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9899DCF899EC9899FC68B9EC88C9DC98F9CC8
+B2BDD3B1BCD8AFBCDCAEBDDAAEBED7ADBDD4AEBCD7B0BADDAFBDDAAFBDDAAEBCD9AEBCD9ADBBD8
+ADBBD8ADBBD8ADBBD8ACBBD8ABBAD7ABBAD7ABBAD7ABBAD7ABBAD7ABBAD7ABBAD7A9B8D7A9B8D7
+A9B8D7A8B7D6A8B7D6A8B7D6A8B7D6A8B7D69FAFD1A5B4D5A1AFCC78829D6C778D6A75896B768A
+6B788B6A758B6A758B6A758B6A758B69748A69748A69748A687389677286677286677286677286
+677286677286667185667185616F8A606E8993A2C19AA9CA98A8CC97A9D194A5D090A1CC94A6CE
+94A6CE93A5CD93A5CD92A4CC92A4CC91A3CB91A3CB8FA2CC8EA1CB8EA1CB8DA0CA8C9FC98C9FC9
+8DA0CA8DA0CA8B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9899DCF899EC9899FC6
+8B9EC88C9DC98F9CC8B1BCD2B0BBD7AEBBDBADBCDBADBDD6ACBCD3ADBBD8AFB9DCAEBCD9AEBCD9
+AEBCD9ADBBD8ADBBD8ACBAD7ACBAD7ACBAD7AAB9D8AAB9D8AAB9D8AAB9D8AAB9D8AAB9D8A9B8D7
+A9B8D7A8B7D6A8B7D6A8B7D6A8B7D6A8B7D6A7B6D5A7B6D5A7B6D5A1B1D3A8B7D6A3B1CC78829D
+6B768C6B768C6B768C68748A6A758B6A758B6A758B69748A69748A687389687389687389677288
+67728867728867728866718766718766718766718764728D62708B8E9DBA9BAACB98A8CC98AAD0
+95A6D191A2CD94A6CE93A5CD93A5CD92A4CC92A4CC91A3CB91A3CB91A3CB8EA1CB8EA1CB8DA0CA
+8C9FC98C9FC98C9FC98C9FC98C9FC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9
+899DCF899EC9899FC68B9EC88C9DC98F9CC8B1BBD4B0BBD7ADBADCACBBDAACBCD5ACBCD5ADBBD8
+AFB9DDADBBD8ADBBD8ADBBD8ACBAD7ACBAD7ACBAD7ABB9D6ABB9D6A9B8D7A9B8D7A9B8D7A9B8D7
+A9B8D7A8B7D6A8B7D6A8B7D6A7B6D5A7B6D5A7B6D5A7B6D5A7B6D5A7B6D5A6B5D4A6B5D4A1B1D2
+ABBAD9A6B4CF78829B69748A69748A6A758B6773896A758B69748A69748A69748A687389687389
+68738967728867728866718766718766718766718766718766718766718764728C63718C8897B4
+99A8C995A5C796A8CE98AAD296A7D293A5CD93A5CD93A5CD92A4CC91A3CB91A3CB90A2CA90A2CA
+8EA1CB8DA0CA8DA0CA8C9FC98C9FC98B9EC88C9FC98C9FC98B9EC98B9EC98B9EC98B9EC98B9EC9
+8B9EC98B9EC98B9EC9899DCF899EC9899FC68B9EC88C9DC98F9CC8B1BBD4B0BBD9ADBADCACBBDA
+ACBCD6ACBCD5ADBBD8AFB9DDADBADAACB9D9ACB9D9ACB9D9ABB8D8ABB8D8ABB8D8AAB7D7A8B7D6
+A8B7D6A8B7D6A8B7D6A8B7D6A8B7D6A7B6D5A7B6D5A7B6D5A7B6D5A6B5D4A6B5D4A6B5D4A6B5D4
+A6B5D4A6B5D49EAFCDA8B7D4A3B1CC7680996772886772886A748D6A768E69748A69748A69748A
+687389687389677288677288677288667187667187667187667187657086657086657086657086
+606E8863718C8493B09BAAC992A2C492A4CA95A7CF93A4CF93A5CD92A4CC92A4CC91A3CB91A3CB
+90A2CA90A2CA90A2CA8DA0CA8DA0CA8C9FC98B9EC88B9EC88B9EC88B9EC88B9EC88B9EC98B9EC9
+8B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9899DCF899EC9899FC68B9EC88C9DC98F9CC8B0BAD3
+AFBAD8ADBADCACBBDCACBCD6ABBBD4ACB9D9AEB8DCACB9D9ACB9D9ABB8D8ABB8D8AAB7D7AAB7D7
+AAB7D7AAB7D7A8B7D8A8B7D8A8B7D8A8B7D8A7B6D7A7B6D7A7B6D7A7B6D7A6B5D4A6B5D4A6B5D4
+A5B4D3A5B4D3A5B4D3A5B4D3A5B4D3A6B7D5A8B7D49FADC8757F9868728B66708967718A68748C
+69748A687389687389687389677288677288677288667187656F88656F88656F88656F88656F88
+656F88656F88646E875F6D8764728C8090AA9FAECD95A5C794A6CA93A5CD8EA0C892A4CC92A4CC
+91A3CB91A3CB90A2CA90A2CA8FA1C98FA1C98DA0CA8C9FC98C9FC98B9EC88B9EC88A9DC78B9EC8
+8B9EC88B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9899DCF899EC9899FC68B9EC8
+8C9DC98F9CC8AFB9D4AEB9D7ACB9DCABBADBAABAD4AABAD4ABB8D8ADB6DDABB8D8ABB8D8ABB8D8
+AAB7D7AAB7D7AAB7D7A9B6D6A9B6D6A8B7D8A8B7D8A8B7D8A8B7D8A7B6D7A7B6D7A7B6D7A7B6D7
+A5B4D3A5B4D3A5B4D3A5B4D3A5B4D3A4B3D2A4B3D2A4B3D2A7B8D69EADCA919FB96D779069738C
+67718A67718A67738D687389687389687389677288677288667187667187667187656F88656F88
+656F88656F88646E87646E87646E87646E875F6E85606E8873839D98A7C692A2C395A7CB96A8CE
+8EA0C892A4CC92A4CC91A3CB90A2CA90A2CA8FA1C98FA1C98FA1C98C9FC98C9FC98B9EC88B9EC8
+8A9DC78A9DC78A9DC78A9DC78B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9899DCF
+899EC9899FC68B9EC88C9DC98F9CC8AEB8D3ADB8D6ABB8DBAAB9DAA9B8D5A9B9D3AAB7D7ACB5DC
+ABB8D8ABB8D8AAB7D7AAB7D7AAB7D7A9B6D6A9B6D6A9B6D6A8B7D8A8B7D8A8B7D8A8B7D8A7B6D7
+A7B6D7A7B6D7A7B6D7A5B4D3A5B4D3A5B4D3A5B4D3A4B3D2A4B3D2A4B3D2A4B3D298A9C58A9AB4
+7B89A3616B8467718A6A748D6A748D6B7791687389687389677288677288677288667187667187
+667187656F88656F88656F88646E87646E87646E87646E87646E875D6C8358668062728C8A99B8
+8898B993A5C997A9CF90A2CA92A4CC91A3CB91A3CB90A2CA90A2CA8FA1C98FA1C98EA0C88C9FC9
+8C9FC98B9EC88A9DC78A9DC78A9DC78A9DC78A9DC78B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9
+8B9EC98B9EC9899DCF899EC9899FC68B9EC88C9DC98F9CC8AFB9D4ACB7D7A9B5DBA8B6DBA7B8D6
+A9B9D3A8B7D4A8B5D7A9B8D9A9B8D9A8B7D8A6B5D6A7B6D7AAB9DAABBADBA8B7D8A5B4D1A6B5D2
+A5B4D1A2B1CEA1B0CDA3B2CFA4B3D0A4B3D0A9B5DDACB8DEA8B4DAA0ADD0A0ADCFA5B2D2A1AFCC
+96A4C17F89A2717B9467718A69738C6D77906B758E67718A67718A67718A67718A667089667089
+667089656F88656F88656F8865718B64708A64708A64708A636F89636F89636F89636F89617087
+617087616F8964728D6B7A977A89A88C9BBA99A8C98EA0C88FA1C78EA0C68D9FC590A2CA92A3CE
+8FA0CC8A9BC98A9ACB8A9ACB8A9ACB8B9BCC8D9DCE8D9DCE8C9CCD8C9CCD8A9DC78A9DC78B9EC8
+8B9EC88B9EC88B9EC88A9DC78A9DC7889CCE8A9FCC8AA0C98A9DC78B9CC88F9CC8AEB8D3ABB6D6
+A8B4DAA7B5DAA6B7D5A8B8D2A7B6D3A7B4D6A8B7D8A9B8D9A8B7D8A6B5D6A5B4D5A6B5D6A5B4D5
+A2B1D2A9B8D7ABBAD9ABBAD9A8B7D6A7B6D5A7B6D5A6B5D4A4B3D29DAACDA0ADD0A2AFD1A3B0D2
+A4B1D19CAAC78694B16F7D98707A9368728B646E8767718A69738C667089646E8766708967718A
+67718A667089667089656F88656F88656F88656F8864708A64708A636F89636F89626E88626E88
+626E88626E8864738A606F865B69835765805968856473907584A38190AF8A9CC291A3C994A6CA
+90A2C68B9DC38B9DC58C9DC98D9ECC91A2CE90A1CD8E9FCB8C9DC98C9DC98B9CC88B9CC88B9CC8
+8B9EC88B9EC88B9EC88B9EC88B9EC88B9EC88B9EC88B9EC8889CCE8A9FCC8AA0C98B9EC88C9DC9
+909DC9ADB7D2AAB5D5A7B3D9A6B4D9A5B6D4A6B6D0A6B5D2A6B3D5A3B2D3A6B5D6A8B7D8A6B5D6
+A6B5D6A6B5D6A6B5D6A4B3D49FAECDA1B0CFA2B1D0A2B1D0A3B2D1A5B4D3A6B5D4A4B3D2ACB9D9
+A9B6D6A3B0D097A5C28593AE72809B62708A58668067718A656F8867718A6A748D69738C646E87
+646E8768728B667089667089667089656F88656F88656F88646E87646E87636F89636F89626E88
+626E88626E88616D87616D87616D875967815C6A845F6D87606E895D6C895C6B885C6B8A5C6B8A
+6E80A47B8DB1899BBF8FA2C38FA1C58D9FC58B9CC7899AC6879AC2889BC3899CC48B9EC68A9DC5
+899CC4879AC28699C18B9EC88B9EC88B9EC88A9DC78A9DC78B9EC88B9EC88B9EC8889CCE8A9FCC
+8AA0C98A9DC78C9DC9919ECAACB6D1AAB5D5A6B2D8A5B3D8A5B6D4A6B6D0A5B4D1A6B3D5A2B1D2
+A6B5D6A7B6D7A5B4D5A5B4D5A6B5D6A7B6D7A6B5D6A8B7D8A8B7D8A7B6D7A4B3D4A4B3D4A5B4D5
+A4B3D4A2B1D2A2ADC996A1BD8691AD77839D68748E606C846571896E7A9269738C69738C6A748D
+6C768F69738C656F88646E8767718A667089667089656F88656F88656F88646E87646E87646E87
+636F89626E88626E88626E88616D87616D87616D87606C86606E88606E885E6C875C6A85586882
+5867845A69865C6B8858688A6070926D7D9E7C8CAD8A9ABC91A1C591A0C98E9DC88B9EC98B9EC9
+8B9EC98B9EC98A9DC88B9EC98C9FCA8DA0CB8C9FC98B9EC88A9DC78A9DC78A9DC78A9DC78B9EC8
+8C9FC9889CCE8A9FCC8AA0C98A9DC78B9CC8909DC9ACB6D1AAB5D5A6B2D8A5B3D8A5B6D4A6B6D0
+A5B4D1A6B3D5A5B4D5A7B6D7A6B5D6A3B2D3A2B1D2A3B2D3A3B2D3A2B1D2A5B2D2A6B3D3A7B4D4
+A6B3D3A5B2D2A4B1D19FACCC9AA7C7828EA8707C94626E86626E8667738B69758D6A768C6C788E
+6B758E69738C68728B68728B67718A656F88646E87656F88656F88656F88656F88646E87646E87
+646E87636D86636D86636F89636F89626E88626E88626E88616D87616D87616D875E6C875E6C87
+5D6B865B69845969835968855B6A875C6B885B6A8B5867865867865F6E8D6D7C9D7D8BAE8A98BD
+919FC68FA1D18EA0D08C9ECE889ACA8698C88799C98A9CCC8D9FCF8C9DC88C9DC88C9DC88B9CC7
+8B9CC78C9DC88C9DC88C9DC8899DCF8A9FCC8AA0C9899CC68A9BC78F9CC8ACB6D1A9B4D4A6B2D8
+A5B3D8A4B5D3A5B5CFA5B4D1A5B2D4A4B3D4A5B4D5A4B3D4A3B2D3A4B3D4A7B6D7A6B5D6A3B2D3
+A1AFCCA1AFCC9FADCA9BA9C695A3C08D9BB88290AD7886A36F7B9367738B636F8767738B6A768E
+66728A626E86606C846A748D67718A656F88656F8866708967718A67718A667089656F88656F88
+646E87646E87646E87636D86636D86636D86636F89626E88626E88626E88616D87616D87616D87
+606C865866815B69845F6D88616F8A60708A5D6D875969835666805B6A875A6986586784566582
+5665825C6B8C6A789B7785AA798AB88091BF899AC88FA0CE90A1CF8E9FCD8B9CCA8A9BC98B9CC7
+8C9DC88C9DC88C9DC88C9DC88C9DC88C9DC88B9CC7899DCF8BA0CD8AA0C9899CC68A9BC78F9CC8
+ABB5D0A8B3D3A5B1D7A3B1D6A3B4D2A4B4CEA4B3D0A4B1D3A2B1D2A3B2D3A2B1D2A3B2D3A5B4D5
+A6B5D6A1B0D19BAACBA2B0CB9DABC692A0BB8593AE7A88A3707E9964728D5B6984636D86667089
+6A748D6A748D667089656F8868728B6C768F68728B67718A66708966708967718A68728B68728B
+67718A646E87646E87646E87646E87636D86636D86626C85626C85626E88616D87616D87616D87
+606C86606C86606C86606C8663718E606E8B5B69845866815767815969835D6D875F6F89596782
+5967825B69845A688355637E525F7F5562845C698C6170996C7BA47A89B28695BE8C9BC48E9DC6
+8F9EC78F9EC78A9BC68B9CC78C9DC88D9EC98D9EC98C9DC88B9CC78A9BC6899DCF8A9FCC8AA0C9
+8A9DC78B9CC8919ECAA9B3CEA7B2D2A4B0D6A2B0D5A2B3D1A3B3CDA3B2CFA3B0D2A5B4D5A4B3D4
+A2B1D2A0AFD0A0AFD09BAACB909FC08695B67984A0727D9967728E5F6A86606B8765708C697490
+69749068728B68728B667089656F8866708967718A66708B646E89646E8766708967718A667089
+646E87646E87646E87636D86646E87646E87646E87636D86636D86636D86626C85626C85616D87
+616D87606C86606C865F6B855F6B855F6B855F6B855A68855B69865C6A875D6B865D6D875B6B85
+5868825666805F6D8859678256647E5967815B69845A68855966865B688A526182536283546384
+5766875F6E8F6D7C9D7D8CAD8998B9899AC58B9CC78D9EC98E9FCA8E9FCA8D9EC98B9CC7899AC5
+889CCE8A9FCC8AA0C98A9DC78D9ECA94A1CDA6B3D5A3B2D3A0B3D49FB3D4A1B4D4A3B4D2A5B3CE
+A8B2CDACB7D3A0ABC7929DB98792AE7C87A3727D996E79956E799568728B68728B68728B68728B
+69738C69738C69738C69738C67718C67718C67718C67718C66708B66708B66708B66708B65718B
+65718B64708A64708A636F89636F89636F89636F89636C89636C89636C89626B88626B88626B88
+616A87616A87606B87606B87606B875F6A865F6A865F6A865F6A865F6A865B69865B69865B6986
+5B69865B69865A68855A68855A68855A68855A68855A68855A68855A68855A68855A68855A6885
+5966885966885A67895A67895B688A5C698B5C698B5D6A8C6776977382A37987AA7D8BB08896BD
+909DC78F9CC68F9CC88C9ECC899BC98B9CC894A3CE8996C094A0C8A9B6D8A1B0D199ACCD9AAECF
+9FB2D2A2B3D1A5B0CCA5AFCA838EAA76819D6A759167728E68738F66718D616C885F6A86667089
+66708966708966708966708966708966708966708967718A67718A67718A667089667089667089
+667089667089647088647088647088647088636F87636F87636F87626E86636D88636D88636D88
+626C87626C87616B86616B86616B86606B87606B875F6A865F6A865F6A865F6A865F6A865F6A86
+5B69865B69865B69865B69865A68855A68855A68855A68855A68855A68855A68855A68855A6885
+5A68855A68855A68855764845764845764845865855865855865855865855865855261805A6988
+5C6B8C5E6D8E6A789B7987AC8795BC94A2C98B9EC98C9FCA8B9CC892A0CD8A97C1939FC7A6B0D3
+A4B3D4A1B1D39DB0D1A1B4D4A4B3D296A1BD828CA76E7A9266728A616D85626E8667738B69758D
+68748C68748C67718A67718A67718A67718A667089667089667089667089667187667187667187
+667187667187667187657086657086647086647086647086636F85636F85626E84626E84626E84
+636D88626C87626C87626C87616B86616B86616B86606A855F6A865F6A865F6A865F6A865F6A86
+5E69855E69855E69855B69865B69865B69865B69865A68855A68855A68855A68855A68855A6885
+5A68855A68855A68855A68855A68855A68855B69865A68855A6885596784596784586683586683
+57658255657F57678152617E4F5E7B5362815D6C8D6F7E9F8493B4899CC690A3CE8B9CC88F9DCA
+8C99C5939FC79EA8CBA8B5D7A6B6D89AADCE9CAFCFA1B0CF8893AF646B8766728868748A6A768C
+68748A64708664708668748A6D798F67718A67718A67718A67718A667089667089667089656F88
+667187667187667187667187657086657086657086657086647086636F85636F85636F85626E84
+626E84626E84616D83626C85626C85626C85616B84616B84606A83606A83606A835F6A865F6A86
+5E69855E69855E69855E69855E69855E69855B69865B69865A68855A68855A68855A68855A6885
+5A68855A68855A68855A68855A68855A68855A68855A68855A68855D6B865C6A855C6A855B6984
+5B69845A68835A68835967825E6E875F6F885A6A8357678155657F52617E5A69866B7A978194BC
+8FA2CC8A9BC78D9BC88E9BC794A0C8A3ADD0A3B0D29EAED097AACB98A8C992A1C07D88A4666D89
+65708669748A6B768C687389626D83606B81636E84677288656F88656F88646E87646E87646E87
+636D86636D86636D86657086657086657086657086657086657086646F85646F85646F85646F85
+646F85636E84636E84626D83626D83626D83626C87616B86616B86616B86606A85606A85606A85
+5F69845E69855E69855E69855E69855D68845D68845D68845D68845A67875A67875A67875A6787
+5A67875A67875966865966865A67875A67875A67875A67875A67875A67875A67875A6787596782
+59678259678259678259678259678259678259678257657F5967815967815C6A855F6D88596782
+576580606E897589AC8A9EC38A9BC68F9DCA8E9BC895A1CBAAB2D69BA8CA9AA8CBA5B5D79BABCC
+7D8AAA69728F69708C6A758B69748A6772886671876873896B768C687389646F85656F88656F88
+656F88656F88646E87646E87646E87646E87656F88656F88656F88646E87646E87646E87646E87
+646E87646E87636D86636D86636D86626C85626C85626C85616B84616A87616A87616A87606986
+6069865F68855F68855F68855E69855E69855D68845D68845D68845D68845D68845D68845A6787
+5A67875A67875A67875966865966865966865966865A67875A67875A67875A67875A67875A6787
+5A67875A6787586683586683586683586683596784596784596784596784576582596784586683
+5A68855E6C895A6885556380586683677B9C7F93B68A9BC692A0CD8C99C694A0CAA6AED29BA5C8
+9EACCFAABADC97A7C86E7B9B5C6582666B88667089656F88636D86626C856670896A748D68728B
+626C85667089667089667089667089667089667089667089667089646D8A646D8A646D8A646D8A
+646D8A646D8A636C89636C89636C89636C89636C89626B88626B88616A87616A87616A87616A89
+6069886069886069885F68875F68875F68875F68875D68845D68845D68845D68845D68845C6783
+5C67835C67835A67875A67875A67875A67875966865966865966865966865A67875A67875A6787
+5A67875A67875A67875A67875A67875966865966865A67875A67875A67875A67875A67875B6888
+5D6A8C606D8F5C698B5764845966865865855461815562825A6F8C7488AB899AC595A3D28996C3
+919DC79FA7CB9DA7CA9EACCF9BABCD8494B5697696626B886C718E636D8867718C69738E656F8A
+626C87646E8966708B656F8A636D86646E87646E87646E87656F88656F88656F88656F88646D8A
+646D8A646D8A646D8A646D8A636C89636C89636C89636C89636C89626B88626B88626B88616A87
+616A87616A8760698A60698A60698A60698A5F68895F68895E67885E67885D68845D68845D6884
+5D68845C67835C67835C67835C67835A67875A67875A6787596686596686596686596686596686
+5A67875A67875A67875A67875A67875A67875A67875A6787596688596688596688596688596688
+5966885966885966885862865F698D5C668A5660845A64875E688B5E688B5F698C5368856D81A2
+899BC397A5D48591C18E9AC4A1ADC59FADCAA1B0D199A8C78898AF617181657285667187656F88
+656F88646E87646E87646E87646E87646E87646E87646E89646E89646E89646E89646E89646E89
+646E89646E89636E84636E84636E84626D83626D83626D83626D83626D83616C82616C82616C82
+616C82616C82616C82616C82606B81616C82616C82606B81606B81606B815F6A805F6A805F6A80
+58687F58687F58687F58687F58687F58687F58687F58687F57687C57687C57687C57687C57687C
+57687C57687C57687C57687C57687C57687C57687C57687C57687C57687C57687C57687C57687C
+57687C57687C57687C57687C57687C57687C57677E57677E57677E57677E57677E57677E57677E
+57677E546873677C91889BBC8B9FC2869AB58FA1B59CAAC49CA9C99EACCF95A4C58292AB5D6C7F
+616E81636D86657189657189657189647088647088647088647088647088616D87616D87616D87
+616D87616D87616D87616D87616D87636F87636F87626E86626E86626E86626E86626E86626E86
+616D85616D85616D85616D85616D85606C84606C84606C84606C84606C84606C84606C845F6B83
+5F6B835E6A825E6A825B6B845B6B845B6B845B6B845B6B845B6B845B6B845B6B845C6C835C6C83
+5C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C83
+5C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C855C6C855C6C855C6C85
+5C6C855C6C855C6C855C6C8556687C6B7C9A8A9BC68FA0CC8A9CC093A4C09CAAC59AA9CA9CACD0
+94A4C67B8CA65A6B7F626E86636F89606C84606C84606C84606C845F6B835F6B835F6B835F6B83
+616D87616D87616D87616D87616D87616D87616D87616D875E69855D68845D68845D68845D6884
+5D68845D68845D68845C67835C67835B66825B66825B66825B66825B66825B66825B66825B6682
+5A65815A65815A6581596480596480596480556380556380556380556380556380556380556380
+556380576580576580576580576580576580576580576580576580576580576580576580576580
+576580576580576580576580576580576580576580576580576580576580576580576580576580
+57658057658057658057658057658057658057658054638067759C8896C78C9CCF8B99C693A1C6
+9CAAC79AA9CA9AA9D094A4C67687A15B6B82647088646F8B67738B67738B67738B67738B67738B
+66728A66728A66728A616D85616D85616D85616D85616D85616D85616D85616D8565708C65708C
+646F8B646F8B646F8B646F8B646F8B646F8B636E8A626D89626D89626D89626D89626D89626D89
+616C88626D89626D89616C88616C88616C88606B87606B87606B875E69895E69895E69895E6989
+5E69895E69895E69895E69895E69855E69855E69855E69855E69855E69855E69855E69855E6985
+5E69855E69855E69855E69855E69855E69855E69855E69855E69855E69855E69855E69855E6985
+5E69855E69855E69875E69875E69875E69875E69875E69875E69875E698752607D627097838FC1
+8B98CC8A97C4919EC19BA9C499A6C698A6CB94A3C471819A5D6C81657187646E875F6C7F5F6C7F
+5F6C7F5F6C7F5F6C7F5F6C7F5E6B7E5E6B7E616D83616D83616D83616D83616D83616D83616D83
+616D835D69835D69835D69835D69835C68825C68825C68825C68825B67815B67815B67815B6781
+5B67815A66805A66805A66805B66825A65815A65815A658159648059648059648058637F5C6584
+5C65845C65845C65845C65845C65845C65845C65845B64815B64815B64815B64815B64815B6481
+5B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B6481
+5B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B6481
+59657B6873938692BC8E9BC78F9CBF97A2BEA0ABC19BA6C297A4C498A6C37281966471816D7588
+6870856E77886E77886D76876D76876D76876D76876D76876D7687687083687083687083687083
+6870836870836870836870836C748B6C748B6C748B6B738A6B738A6B738A6B738A6B738A6B738A
+6B738A6B738A6A72896A72896A72896A72896A72896A718B6A718B6A718B69708A69708A686F89
+686F89686F896A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B
+6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B
+6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A72896A72896A72896A72896A7289
+6A72896A72896A7289616D796C788E8993B6919EC1949FBB9BA6BA
+
+end
+%%PageTrailer
+%%Trailer
+%%EOF

Added: trunk/Master/texmf-dist/doc/latex/moderncv/picture.jpg
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/moderncv/picture.jpg
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/picture.jpg	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/picture.jpg	2021-01-22 22:31:33 UTC (rev 57496)

Property changes on: trunk/Master/texmf-dist/doc/latex/moderncv/picture.jpg
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/moderncv/publications.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/publications.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/publications.bib	2021-01-22 22:31:33 UTC (rev 57496)
@@ -0,0 +1,44 @@
+%% start of file `publications.bib'.
+%% Copyright 2006-2012 Xavier Danaux (xdanaux at gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+ at BOOK{book1,
+  author = {John Doe and Author 1},
+  title = {Title},
+  publisher = {Publisher},
+  edition = {edition},
+  year = {year},
+}
+
+ at BOOK{book2,
+  author = {John Doe and Author 2},
+  title = {Title},
+  publisher = {Publisher},
+  edition = {edition},
+  year = {year},
+}
+
+ at MISC{misc1,
+  author = {John Doe},
+  title = {Title},
+  year = {year},
+}
+
+ at MISC{misc2,
+  author = {John Doe and Author 3},
+  title = {Title},
+  year = {year},
+}
+
+ at MISC{misc3,
+  author = {John Doe},
+  title = {Title},
+  year = {year},
+}
+
+
+%% end of file `publications.bib'.


Property changes on: trunk/Master/texmf-dist/doc/latex/moderncv/publications.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/moderncv/template.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/moderncv/template.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/moderncv/template.tex	2021-01-22 22:31:33 UTC (rev 57496)
@@ -0,0 +1,237 @@
+%% start of file `template.tex'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+\documentclass[11pt,a4paper,sans]{moderncv}        % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman')
+
+% moderncv themes
+\moderncvstyle{casual}                             % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy'
+\moderncvcolor{blue}                               % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red'
+%\renewcommand{\familydefault}{\sfdefault}         % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name
+%\nopagenumbers{}                                  % uncomment to suppress automatic page numbering for CVs longer than one page
+
+% character encoding
+%\usepackage[utf8]{inputenc}                       % if you are not using xelatex ou lualatex, replace by the encoding you are using
+%\usepackage{CJKutf8}                              % if you need to use CJK to typeset your resume in Chinese, Japanese or Korean
+
+% adjust the page margins
+\usepackage[scale=0.75]{geometry}
+%\setlength{\hintscolumnwidth}{3cm}                % if you want to change the width of the column with the dates
+%\setlength{\makecvheadnamewidth}{10cm}            % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks...
+
+
+% personal data
+\name{John}{Doe}
+\title{Resumé title}                               % optional, remove / comment the line if not wanted
+\address{street and number}{postcode city}{country}% optional, remove / comment the line if not wanted; the "postcode city" and "country" arguments can be omitted or provided empty
+\phone[mobile]{+1~(234)~567~890}                   % optional, remove / comment the line if not wanted; the optional "type" of the phone can be "mobile" (default), "fixed" or "fax"
+\phone[fixed]{+2~(345)~678~901}
+\phone[fax]{+3~(456)~789~012}
+\email{john at doe.org}                               % optional, remove / comment the line if not wanted
+\homepage{www.johndoe.com}                         % optional, remove / comment the line if not wanted
+
+% Social icons
+\social[linkedin]{john.doe}                        % optional, remove / comment the line if not wanted
+\social[xing]{john\_doe}                           % optional, remove / comment the line if not wanted
+\social[twitter]{jdoe}                             % optional, remove / comment the line if not wanted
+\social[github]{jdoe}                              % optional, remove / comment the line if not wanted
+\social[gitlab]{jdoe}                              % optional, remove / comment the line if not wanted
+\social[stackoverflow]{0000000/johndoe}            % optional, remove / comment the line if not wanted
+\social[bitbucket]{jdoe}                           % optional, remove / comment the line if not wanted
+\social[skype]{jdoe}                               % optional, remove / comment the line if not wanted
+\social[orcid]{0000-0000-000-000}                  % optional, remove / comment the line if not wanted
+\social[researchgate]{jdoe}                        % optional, remove / comment the line if not wanted
+\social[researcherid]{jdoe}                        % optional, remove / comment the line if not wanted
+\social[telegram]{jdoe}                            % optional, remove / comment the line if not wanted
+\social[googlescholar]{googlescholarid}                % optional, remove / comment the line if not wanted
+
+
+\extrainfo{additional information}                 % optional, remove / comment the line if not wanted
+\photo[64pt][0.4pt]{picture}                       % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 0.4pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file
+\quote{Some quote}                                 % optional, remove / comment the line if not wanted
+
+% bibliography adjustments (only useful if you make citations in your resume, or print a list of publications using BibTeX)
+%   to show numerical labels in the bibliography (default is to show no labels)
+%\makeatletter\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}\makeatother
+\renewcommand*{\bibliographyitemlabel}{[\arabic{enumiv}]}
+%   to redefine the bibliography heading string ("Publications")
+%\renewcommand{\refname}{Articles}
+
+% bibliography with mutiple entries
+%\usepackage{multibib}
+%\newcites{book,misc}{{Books},{Others}}
+%----------------------------------------------------------------------------------
+%            content
+%----------------------------------------------------------------------------------
+\begin{document}
+%\begin{CJK*}{UTF8}{gbsn}                          % to typeset your resume in Chinese using CJK
+%-----       resume       ---------------------------------------------------------
+\makecvtitle
+
+\section{Education}
+\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}  % arguments 3 to 6 can be left empty
+\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
+
+\section{Master thesis}
+\cvitem{title}{\emph{Title}}
+\cvitem{supervisors}{Supervisors}
+\cvitem{description}{Short thesis abstract}
+
+\section{Experience}
+\subsection{Vocational}
+\cventry{year--year}{Job title}{Employer}{City}{}{General description no longer than 1--2 lines.\newline{}
+Detailed achievements:
+\begin{itemize}
+\item Achievement 1
+\item Achievement 2 (with sub-achievements)
+  \begin{itemize}
+  \item Sub-achievement (a);
+  \item Sub-achievement (b), with sub-sub-achievements (don't do this!);
+    \begin{itemize}
+    \item Sub-sub-achievement i;
+    \item Sub-sub-achievement ii;
+    \item Sub-sub-achievement iii;
+    \end{itemize}
+  \item Sub-achievement (c);
+  \end{itemize}
+\item Achievement 3
+\item Achievement 4
+\end{itemize}}
+\cventry{year--year}{Job title}{Employer}{City}{}{Description line 1\newline{}Description line 2\newline{}}
+\subsection{Miscellaneous}
+\cventry{year--year}{Job title}{Employer}{City}{}{Description}
+
+\section{Languages}
+\cvitemwithcomment{Language 1}{Skill level}{Comment}
+\cvitemwithcomment{Language 2}{Skill level}{Comment}
+\cvitemwithcomment{Language 3}{Skill level}{Comment}
+\cvitemwithcomment{Language 4}{Skill level}{Comment}
+
+\section{Computer skills}
+\cvdoubleitem{category 1}{XXX, YYY, ZZZ}{category 4}{XXX, YYY, ZZZ}
+\cvdoubleitem{category 2}{XXX, YYY, ZZZ}{category 5}{XXX, YYY, ZZZ}
+\cvdoubleitem{category 3}{XXX, YYY, ZZZ}{category 6}{XXX, YYY, ZZZ}
+
+\section{Skill matrix}
+\cvitem{Skill matrix}{Alternatively, provide a skill matrix to show off your skills}
+%% Skill matrix as an alternative to rate one's skills, computer or other. 
+
+%% Adjusts width of skill matrix columns. 
+%% Usage \setcvskillcolumns[<width>][<factor>][<exp_width>]
+%% <width>, <exp_width> should be lengths smaller than \textwidth, <factor> needs to be between 0 and 1.
+%% Examples:
+% \setcvskillcolumns[5em][][]%    adjust first column. Same as \setcvskillcolumns[5em]
+% \setcvskillcolumns[][0.45][]%   adjust third (skill) column. Same as \setcvskillcolumns[][0.45]
+% \setcvskillcolumns[][][\widthof{``Year''}]%     adjust fourth (years) column.
+% \setcvskillcolumns[][0.45][\widthof{``Year''}]%
+% \setcvskillcolumns[\widthof{``Languag''}][0.48][]
+% \setcvskillcolumns[\widthof{``Languag''}]%
+
+%% Adjusts width of legend columns. Usage \setcvskilllegendcolumns[<width>][<factor>]
+%% <factor> needs to be between 0 and 1. <width> should be a length smaller than \textwidth
+%% Examples:
+% \setcvskilllegendcolumns[][0.45]
+% \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]
+% \setcvskilllegendcolumns[0ex][0.46]% this is usefull for the banking style
+
+%% Add a legend if you are using \cvskill{<1-5>} command or \cvskillentry
+%% Usage \cvskilllegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
+% \cvskilllegend % insert default legend without lines
+\cvskilllegend*[1em]{}% adjust post spacing
+% \cvskilllegend*{Legend}%  Alternatively add a description string
+%% adjust the legend entries for other languages, here German
+% \cvskilllegend[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte\,/\,Spezialist]{Legende}
+
+%% Alternative legend style with the first three skill levels in one column
+%% Usage \cvskillplainlegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
+% \setcvskilllegendcolumns[][0.6]%  works for classic, casual, banking
+% \setcvskilllegendcolumns[][0.55]%  works better for oldstyle and fancy
+% \cvskillplainlegend{}
+% \cvskillplainlegend[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende}
+
+%% Add a head of the skill matrix table with descriptions.
+%% Usage \cvskillhead[<post_padding>][<Level>][<Skill>][<Years>][<Comment>]%
+\cvskillhead[-0.1em]%   this inserts the standard legend in english and adjust padding
+%% Adjust head of the skill matrix for other languages
+% \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung]
+
+%% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}% 
+%% Example usages:
+\cvskillentry*{Language:}{3}{Python}{2}{I'm so experienced in Python and have realised a million projects. At least.}
+\cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man, I'm the best!}
+\cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX}
+\cvskillentry*{OS:}{3}{Linux}{2}{I only use Archlinux btw}% notice the use of the starred command and the optional 
+\cvskillentry*[1em]{Methods}{4}{SCRUM}{8}{SCRUM master for 5 years}
+%% \cvskill{<0-5>} command
+% \cvitem{\textbackslash{cvskill}:}{Skills can be visually expressed by the \textbackslash{cvskill} command, e.g. \cvskill{2}}
+
+\section{Interests}
+\cvitem{hobby 1}{Description}
+\cvitem{hobby 2}{Description}
+\cvitem{hobby 3}{Description}
+
+\section{Extra 1}
+\cvlistitem{Item 1}
+\cvlistitem{Item 2}
+\cvlistitem{Item 3. This item is particularly long and therefore normally spans over several lines. Did you notice the indentation when the line wraps?}
+
+\section{Extra 2}
+\cvlistdoubleitem{Item 1}{Item 4}
+\cvlistdoubleitem{Item 2}{Item 5\cite{book2}}
+\cvlistdoubleitem{Item 3}{Item 6. Like item 3 in the single column list before, this item is particularly long to wrap over several lines.}
+
+\section{References}
+\begin{cvcolumns}
+  \cvcolumn{Category 1}{\begin{itemize}\item Person 1\item Person 2\item Person 3\end{itemize}}
+  \cvcolumn{Category 2}{Amongst others:\begin{itemize}\item Person 1, and\item Person 2\end{itemize}(more upon request)}
+  \cvcolumn[0.5]{All the rest \& some more}{\textit{That} person, and \textbf{those} also (all available upon request).}
+\end{cvcolumns}
+
+% Publications from a BibTeX file without multibib
+%  for numerical labels: \renewcommand{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}% CONSIDER MERGING WITH PREAMBLE PART
+%  to redefine the heading string ("Publications"): \renewcommand{\refname}{Articles}
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{publications}                        % 'publications' is the name of a BibTeX file
+
+% Publications from a BibTeX file using the multibib package
+%\section{Publications}
+%\nocitebook{book1,book2}
+%\bibliographystylebook{plain}
+%\bibliographybook{publications}                   % 'publications' is the name of a BibTeX file
+%\nocitemisc{misc1,misc2,misc3}
+%\bibliographystylemisc{plain}
+%\bibliographymisc{publications}                   % 'publications' is the name of a BibTeX file
+
+\clearpage
+%-----       letter       ---------------------------------------------------------
+% recipient data
+\recipient{Company Recruitment team}{Company, Inc.\\123 somestreet\\some city}
+\date{January 01, 1984}
+\opening{Dear Sir or Madam,}
+\closing{Yours faithfully,}
+\enclosure[Attached]{curriculum vit\ae{}}          % use an optional argument to use a string other than "Enclosure", or redefine \enclname
+\makelettertitle
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ullamcorper neque sit amet lectus facilisis sed luctus nisl iaculis. Vivamus at neque arcu, sed tempor quam. Curabitur pharetra tincidunt tincidunt. Morbi volutpat feugiat mauris, quis tempor neque vehicula volutpat. Duis tristique justo vel massa fermentum accumsan. Mauris ante elit, feugiat vestibulum tempor eget, eleifend ac ipsum. Donec scelerisque lobortis ipsum eu vestibulum. Pellentesque vel massa at felis accumsan rhoncus.
+
+Suspendisse commodo, massa eu congue tincidunt, elit mauris pellentesque orci, cursus tempor odio nisl euismod augue. Aliquam adipiscing nibh ut odio sodales et pulvinar tortor laoreet. Mauris a accumsan ligula. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse vulputate sem vehicula ipsum varius nec tempus dui dapibus. Phasellus et est urna, ut auctor erat. Sed tincidunt odio id odio aliquam mattis. Donec sapien nulla, feugiat eget adipiscing sit amet, lacinia ut dolor. Phasellus tincidunt, leo a fringilla consectetur, felis diam aliquam urna, vitae aliquet lectus orci nec velit. Vivamus dapibus varius blandit.
+
+Duis sit amet magna ante, at sodales diam. Aenean consectetur porta risus et sagittis. Ut interdum, enim varius pellentesque tincidunt, magna libero sodales tortor, ut fermentum nunc metus a ante. Vivamus odio leo, tincidunt eu luctus ut, sollicitudin sit amet metus. Nunc sed orci lectus. Ut sodales magna sed velit volutpat sit amet pulvinar diam venenatis.
+
+Albert Einstein discovered that $e=mc^2$ in 1905.
+
+\[ e=\lim_{n \to \infty} \left(1+\frac{1}{n}\right)^n \]
+
+\makeletterclosing
+
+%\clearpage\end{CJK*}                              % if you are typesetting your resume in Chinese using CJK; the \clearpage is required for fancyhdr to work correctly with CJK, though it kills the page numbering by making \lastpage undefined
+\end{document}
+
+
+%% end of file `template.tex'.
+


Property changes on: trunk/Master/texmf-dist/doc/latex/moderncv/template.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncv.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncv.cls	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncv.cls	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncv.cls'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{moderncv}[2015/07/28 v2.0.0 modern curriculum vitae and letter document class]
+\ProvidesClass{moderncv}[2021/01/21 v2.1.0 modern curriculum vitae and letter document class]
 
 
 %-------------------------------------------------------------------------------
@@ -95,21 +95,34 @@
     \xetexorluatexfalse
   \fi
 \fi
-% automatic loading of latin modern fonts
-%\ifxetexorluatex
-%  \RequirePackage{fontspec}
-%  \defaultfontfeatures{Ligatures=TeX}
-%  \RequirePackage{unicode-math}
-%  \setmainfont{Latin Modern}
-%  \setsansfont{Latin Modern Sans}
-%  \setmathfont{Latin Modern Math}
-%\else
-  \RequirePackage[T1]{fontenc}
-  \IfFileExists{lmodern.sty}%
-    {\RequirePackage{lmodern}}%
-    {}
-%\fi
 
+% do not use inputenc and do not automatically load lmodern to avoid problems with German 
+% charactes, see
+% https://tex.stackexchange.com/questions/496630/lualatex-problems-with-german-characters
+\ifxetexorluatex
+%     \RequirePackage{fontspec}
+%     \defaultfontfeatures{Ligatures=TeX}
+%     \RequirePackage{unicode-math}
+%     \setmainfont{Latin Modern}
+%     \setsansfont{Latin Modern Sans}
+%     \setmathfont{Latin Modern Math}
+%     \ifluatex
+%         \usepackage{luatextra}
+%         \usepackage{lualatex-math} %loads fontspec
+%         \usepackage{shellesc} % fix a bug for lualatex shellescape
+%     \fi
+\else
+    \RequirePackage[utf8]{inputenc}
+%     \RequirePackage[utf8]{inputenx}
+%     %additions for utf8
+%     \input{ix-utf8enc.dfu}
+    \RequirePackage[T1]{fontenc}
+    % loading lmodern can cause issues with certain special characters. avoid. 
+%     \IfFileExists{lmodern.sty}%
+%         {\RequirePackage{lmodern}}%
+%         {}
+%     \fi
+\fi
 % hyper links (hyperref is loaded at the end of the preamble to pass options required by loaded packages such as CJK)
 \newcommand*\pdfpagemode{UseNone}% do not show thumbnails or bookmarks on opening (on supporting browsers); set \pdfpagemode to "UseOutlines" to show bookmarks
 \RequirePackage{url}
@@ -129,8 +142,8 @@
     bookmarksdepth= 2,% to show sections and subsections
     pdfauthor     = {\@firstname{}~\@lastname{}},
     pdftitle      = {\@firstname{}~\@lastname{}\notblank{\@title}{ -- \@title}{}},
-    pdfsubject    = {Resum\'{e} of \@firstname{}~\@lastname{}},
-    pdfkeywords   = {\@firstname{}~\@lastname{}, curriculum vit\ae{}, resum\'{e}}}}
+    pdfsubject    = {R\'{e}sum\'{e} of \@firstname{}~\@lastname{}},
+    pdfkeywords   = {\@firstname{}~\@lastname{}, curriculum vit\ae{}, r\'{e}sum\'{e}}}}
 
 % graphics
 \RequirePackage{graphicx}
@@ -155,13 +168,13 @@
           \settowidth{\pagenumberwidth}{\color{color2}\addressfont\itshape\strut\thepage/\pageref{lastpage}}%
           \fancypagestyle{plain}{%
             \fancyfoot[r]{\parbox[b]{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\pageref{lastpage}}}}% the parbox is required to ensure alignment with a possible center footer (e.g., as in the casual style)
-          \pagestyle{plain}}{}}%
-      \AtEndDocument{\label{lastpage}}\else\fi}}
+          \pagestyle{plain}}{}}\fi}%
+  \AtEndDocument{\label{lastpage}}}
 \pagestyle{plain}
 
 % reduced list spacing
 % package providing hooks into lists
-%   originally developped by Jakob Schiøtz (see http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty)
+%   originally developped by Jakob Schiotz (see http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty)
 %   modified and distributed with moderncv(not available otherwise on ctan)
 \RequirePackage{tweaklist}
 \renewcommand*{\itemhook}{%
@@ -191,6 +204,7 @@
 % compatibility package with older versions of moderncv
 \RequirePackageWithOptions{moderncvcompatibility}
 
+\RequirePackage{expl3}
 
 %-------------------------------------------------------------------------------
 %                class definition
@@ -247,20 +261,39 @@
 % usage: \phone[<optional type>]{<number>}
 % where <optional type> should be either "fixed" (default), "mobile" or "fax
 \collectionnew{phones}
-\newcommand*{\phone}[2][fixed]{\collectionadd[#1]{phones}{#2}}
+\NewDocumentCommand{\phone}{O{fixed}m}{%
+  \ifthenelse{\equal{#1}{fax}}%
+    {\collectionadd[#1]{phones}{#2}}
+    {\collectionadd[#1]{phones}{\protect\tellink{#2}}}
+    }
 
+
+% http://latex.org/forum/viewtopic.php?t=12239
+\def\SplitMyMacro#1/#2{#2}
+    
+    
 % adds a social link to one's personal information (optional)
 % usage: \social[<optional type>][<optional url>]{<account name>}
-% where <optional type> should be either "linkedin", "twitter" or "github"
+% where <optional type> should be either "linkedin", "xing", "twitter", "github", "gitlab", "bitbucket" or "skype"
 \collectionnew{socials}
 \NewDocumentCommand{\social}{O{}O{}m}{%
   \ifthenelse{\equal{#2}{}}%
     {%
-      \ifthenelse{\equal{#1}{linkedin}}{\collectionadd[linkedin]{socials}{\protect\httplink[#3]{www.linkedin.com/in/#3}}}{}%
-      \ifthenelse{\equal{#1}{twitter}} {\collectionadd[twitter]{socials} {\protect\httplink[#3]{www.twitter.com/#3}}}    {}%
-      \ifthenelse{\equal{#1}{github}}  {\collectionadd[github]{socials}  {\protect\httplink[#3]{www.github.com/#3}}}     {}%
-    }
-    {\collectionadd[#1]{socials}{\protect\httplink[#3]{#2}}}}
+      \ifthenelse{\equal{#1}{linkedin}}     {\collectionadd[linkedin]{socials}     {\protect\httpslink[#3]{www.linkedin.com/in/#3}}}               {}%
+      \ifthenelse{\equal{#1}{xing}}         {\collectionadd[xing]{socials}         {\protect\httpslink[#3]{www.xing.com/profile/#3}}}              {}%
+      \ifthenelse{\equal{#1}{twitter}}      {\collectionadd[twitter]{socials}      {\protect\httpslink[#3]{www.twitter.com/#3}}}                   {}%
+      \ifthenelse{\equal{#1}{github}}       {\collectionadd[github]{socials}       {\protect\httpslink[#3]{www.github.com/#3}}}                    {}%
+      \ifthenelse{\equal{#1}{gitlab}}       {\collectionadd[gitlab]{socials}       {\protect\httpslink[#3]{www.gitlab.com/#3}}}                    {}%
+      \ifthenelse{\equal{#1}{stackoverflow}}{\collectionadd[stackoverflow]{socials}{\protect\httpslink[#3]{stackoverflow.com/users/#3}}}           {}%
+      \ifthenelse{\equal{#1}{bitbucket}}    {\collectionadd[bitbucket]{socials}    {\protect\httpslink[#3]{www.bitbucket.org/#3}}}                  {}%
+      \ifthenelse{\equal{#1}{skype}}        {\collectionadd[skype]{socials}        {#3}}                                                           {}%
+      \ifthenelse{\equal{#1}{orcid}}        {\collectionadd[orcid]{socials}        {\protect\httpslink[#3]{orcid.org/#3}}}                         {}%
+      \ifthenelse{\equal{#1}{researchgate}} {\collectionadd[researchgate]{socials} {\protect\httpslink[#3]{www.researchgate.net/profile/#3}}}      {}%
+      \ifthenelse{\equal{#1}{researcherid}} {\collectionadd[researcherid]{socials} {\protect\httpslink[#3]{www.researcherid.com/rid/#3}}}          {}%
+      \ifthenelse{\equal{#1}{telegram}}     {\collectionadd[telegram]{socials}     {\protect\httpslink[#3]{t.me/#3}}}                              {}%
+      \ifthenelse{\equal{#1}{googlescholar}}{\collectionadd[googlescholar]{socials}{\protect\httpslink[#3]{scholar.google.com/citations?user=#3}}} {}%                        {}%
+      }
+    {\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}
 
 % defines additional personal information (optional)
 % usage: \extrainfo{<text>}
@@ -288,16 +321,26 @@
 \renewcommand{\theenumiv}          {\@Alph\c at enumiv}
 
 % other symbols
-\newcommand*{\listitemsymbol}      {\labelitemi~}
-\newcommand*{\addresssymbol}       {}
-\newcommand*{\mobilephonesymbol}   {}
-\newcommand*{\fixedphonesymbol}    {}
-\newcommand*{\faxphonesymbol}      {}
-\newcommand*{\emailsymbol}         {}
-\newcommand*{\homepagesymbol}      {}
-\newcommand*{\linkedinsocialsymbol}{}
-\newcommand*{\twittersocialsymbol} {}
-\newcommand*{\githubsocialsymbol}  {}
+\newcommand*{\listitemsymbol}           {\labelitemi~}
+\newcommand*{\addresssymbol}            {}
+\newcommand*{\mobilephonesymbol}        {}
+\newcommand*{\fixedphonesymbol}         {}
+\newcommand*{\faxphonesymbol}           {}
+\newcommand*{\emailsymbol}              {}
+\newcommand*{\homepagesymbol}           {}
+\newcommand*{\linkedinsocialsymbol}     {}
+\newcommand*{\xingsocialsymbol}         {}
+\newcommand*{\twittersocialsymbol}      {}
+\newcommand*{\githubsocialsymbol}       {}
+\newcommand*{\gitlabsocialsymbol}       {}
+\newcommand*{\stackoverflowsocialsymbol}{}
+\newcommand*{\bitbucketsocialsymbol}    {}
+\newcommand*{\skypesocialsymbol}        {}
+\newcommand*{\orcidsocialsymbol}        {}
+\newcommand*{\researchgatesocialsymbol} {}
+\newcommand*{\researchidsocialsymbol}   {}
+\newcommand*{\googlescholarsocialsymbol}{}
+\newcommand*{\telegramsocialsymbol}     {}
 
 % other
 %------
@@ -312,34 +355,39 @@
 % usage: \makefooter
 \newcommand*{\makefooter}{}%
 
+\newcommand*{\@loadmoderncvpackage}[3][]{%
+  \begingroup\edef\x{\endgroup%
+    \noexpand\RequirePackage[#1]{moderncv#2\ifcase#3\or i\or ii\or iii\or iv\or v\or vi\or vii\or viii\or ix\or x\fi}%
+  }\x}
+
 % loads a style variant (a combination of header, body and footer)
 % usage: \moderncvstyle{<style variant name>}
-\newcommand*{\moderncvstyle}[2][]{
+\newcommand*{\moderncvstyle}[2][]{%
   \RequirePackage[#1]{moderncvstyle#2}}
 
 % loads a header variant
 % usage: \moderncvhead[<optional head option>]{<header variant number>}
-\newcommand*{\moderncvhead}[2][]{
-  \expandafter\RequirePackage\expandafter[\expandafter#1\expandafter]{\expandafter moderncvhead\romannumeral #2}}
+\newcommand*{\moderncvhead}[2][]{%
+  \@loadmoderncvpackage[#1]{head}{#2}}
 
 % loads a body variant
 % usage: \moderncvbody[<optional body option>]{<body variant number>}
-\newcommand*{\moderncvbody}[2][]{
-  \expandafter\RequirePackage\expandafter[\expandafter#1\expandafter]{\expandafter moderncvbody\romannumeral #2}}
+\newcommand*{\moderncvbody}[2][]{%
+  \@loadmoderncvpackage[#1]{body}{#2}}
 
 % loads a footer variant
-% usage: \moderncvfoot{<footer variant number>}
-\newcommand*{\moderncvfoot}[1]{
-  \expandafter\RequirePackage\expandafter{\expandafter moderncvfoot\romannumeral #1}}
+% usage: \moderncvfoot[<optional foot option>]{<foot variant number>}
+\newcommand*{\moderncvfoot}[2][]{%
+  \@loadmoderncvpackage[#1]{foot}{#2}}
   
 % loads a color scheme
 % usage: \moderncvcolor{<color scheme name>}
-\newcommand*{\moderncvcolor}[1]{
+\newcommand*{\moderncvcolor}[1]{%
   \RequirePackage{moderncvcolor#1}}
 
 % loads an icons set
 % usage: \moderncvicons{<icon set name>}
-\newcommand*{\moderncvicons}[1]{
+\newcommand*{\moderncvicons}[1]{%
   \RequirePackage{moderncvicons#1}}
 
 % recomputes all automatic lengths
@@ -481,7 +529,7 @@
 \newcommand*{\link}[2][]{%
   \ifthenelse{\equal{#1}{}}%
     {\href{#2}{#2}}%
-    {\href{#2}{#1}}}
+    {\href{#2}{\detokenize{#1}}}}
 
 % makes a http hyperlink
 % usage: \httplink[optional text]{link}
@@ -488,15 +536,39 @@
 \newcommand*{\httplink}[2][]{%
   \ifthenelse{\equal{#1}{}}%
     {\href{http://#2}{#2}}%
-    {\href{http://#2}{#1}}}
+    {\href{http://#2}{\detokenize{#1}}}}
 
+
+% makes an https hyperlink
+% usage: \httpslink[optional text]{link}
+\newcommand*{\httpslink}[2][]{%
+  \ifthenelse{\equal{#1}{}}%
+    {\href{https://#2}{#2}}%
+    {\href{https://#2}{\detokenize{#1}}}}
+
 % makes an email hyperlink
 % usage: \emaillink[optional text]{link}
 \newcommand*{\emaillink}[2][]{%
   \ifthenelse{\equal{#1}{}}%
     {\href{mailto:#2}{#2}}%
-    {\href{mailto:#2}{#1}}}
+    
+    {\href{mailto:#2}{\detokenize{#1}}}}
+% makes a tel hyperlink
+% usage: \tellink[optional text]{link}
+\newcommand*{\tellink}[2][]{%
+  \ifthenelse{\equal{#1}{}}%
+    {\expandafter\onlynumberslink\expandafter{#2}{#2}}%
+    {\expandafter\onlynumberslink\expandafter{#2}{#1}}}
 
+\ExplSyntaxOn
+\tl_new:N \l_onlynumberslink_tl
+\cs_new:Npn \onlynumberslink #1 #2  {
+    \tl_set:Nn \l_onlynumberslink_tl {#1}
+    \regex_replace_all:nnN {[^0-9+]} {} \l_onlynumberslink_tl
+    \href{ tel\token_to_str:N : \tl_use:N \l_onlynumberslink_tl}{ #2 }
+}
+\ExplSyntaxOff
+
 % cvcolumns environment, where every column is created through \cvcolumn
 % usage: \begin{cvcolumns}
 %          \cvcolumn[width]{head}{content}

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyi.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyi.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyi.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvbodyi.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,14 +10,16 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyi}[2015/07/28 v2.0.0 modern curriculum vitae and letter body variant: 1]
+\ProvidesPackage{moderncvbodyi}[2021/01/21 v2.1.0 modern curriculum vitae and letter body variant: 1]
 
 
 %-------------------------------------------------------------------------------
 %                required packages
 %-------------------------------------------------------------------------------
+% provides the commands for the skillmatrix as well as the command 
+% \recompute at cvskillmatrix@lengths
+\RequirePackage[moderncvbodyi]{moderncvskillmatrix}
 
-
 %-------------------------------------------------------------------------------
 %                overall body definition
 %-------------------------------------------------------------------------------
@@ -59,9 +61,11 @@
   \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
   \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
   \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+  \recompute at cvskillmatrix@lengths
   % regular lengths
   \setlength{\parskip}{0\p@}}
 
+
 \@initializelength{\baseletterheight}
 \settoheight{\baseletterheight}{\sectionstyle{o}}
 \setlength{\baseletterheight}{\baseletterheight-0.95ex}

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyii.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyii.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyii.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvbodyi.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,14 +10,16 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyi}[2015/07/28 v2.0.0 modern curriculum vitae and letter body variant: 1]
+\ProvidesPackage{moderncvbodyi}[2021/01/21 v2.1.0 modern curriculum vitae and letter body variant: 1]
 
 
 %-------------------------------------------------------------------------------
 %                required packages
 %-------------------------------------------------------------------------------
+% provides the commands for the skillmatrix as well as the command 
+% \recompute at cvskillmatrix@lengths
+\RequirePackage[moderncvbodyi]{moderncvskillmatrix}
 
-
 %-------------------------------------------------------------------------------
 %                overall body definition
 %-------------------------------------------------------------------------------
@@ -59,9 +61,11 @@
   \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
   \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
   \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+  \recompute at cvskillmatrix@lengths
   % regular lengths
   \setlength{\parskip}{0\p@}}
 
+
 \@initializelength{\baseletterheight}
 \settoheight{\baseletterheight}{\sectionstyle{o}}
 \setlength{\baseletterheight}{\baseletterheight-0.95ex}

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiii.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiii.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiii.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvbodyiii.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyiii}[2015/07/28 v2.0.0 modern curriculum vitae and letter body variant: 3]
+\ProvidesPackage{moderncvbodyiii}[2021/01/21 v2.1.0 modern curriculum vitae and letter body variant: 3]
 
 % rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
 \@initializeif{\if at fullrules}\@fullrulesfalse
@@ -37,8 +37,10 @@
 %-------------------------------------------------------------------------------
 %                required packages
 %-------------------------------------------------------------------------------
+% provides the commands for the skillmatrix as well as the command 
+% \recompute at cvskillmatrix@lengths
+\RequirePackage[moderncvbodyiii]{moderncvskillmatrix}
 
-
 %-------------------------------------------------------------------------------
 %                overall body definition
 %-------------------------------------------------------------------------------
@@ -96,6 +98,7 @@
   \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
   \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
   \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+  \recompute at cvskillmatrix@lengths
   % regular lengths
   \setlength{\parskip}{0\p@}}
 
@@ -143,13 +146,13 @@
   \renewcommand*{\subsectionrule}{}\fi
 
 \renewcommand*{\cvitem}[3][.25em]{%
-  \ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}%
+  \ifstrempty{#2}{}{\hintstyle{#2}: }{#3}%
   \par\addvspace{#1}}
 
 \renewcommand*{\cvdoubleitem}[5][.25em]{%
   \begin{minipage}[t]{\doubleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
   \hfill% fill of \separatorcolumnwidth
-  \begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}%
+  \begin{minipage}[t]{\doubleitemcolumnwidth}\ifstrempty{#4}{}{\hintstyle{#4}: }#5\end{minipage}%
   \par\addvspace{#1}}
 
 \renewcommand*{\cvlistitem}[2][.25em]{%
@@ -159,14 +162,20 @@
 \renewcommand*{\cvlistdoubleitem}[3][.25em]{%
   \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
   \hfill% fill of \separatorcolumnwidth
-  \ifthenelse{\equal{#3}{}}%
+  \ifstrempty{#3}%
     {}%
     {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
 
 \renewcommand*{\cventry}[7][.25em]{
   \begin{tabular*}{\maincolumnwidth}{l@{\extracolsep{\fill}}r}%
-    {\bfseries #4} & {\bfseries #5}\\%
-    {\itshape #3\ifthenelse{\equal{#6}{}}{}{, #6}} & {\itshape #2}\\%
+    % skip the company name and location line if both are empty, allowing one to show multiple roles within the same company without repeating it
+    \ifboolexpr{%
+      test {\ifstrempty{#4}}
+      and
+      test {\ifstrempty{#5}}}%
+      {}%
+      {{\bfseries #4} & {\bfseries #5}\\}%
+    {\itshape #3\ifstrempty{#6}{}{, #6}} & {\itshape #2}\\%
   \end{tabular*}%
   \ifx&#7&%
   \else{\\%
@@ -179,7 +188,7 @@
 \@initializelength{\cvitemwithcommentmainlength}
 \@initializelength{\cvitemwithcommentcommentlength}
 \renewcommand*{\cvitemwithcomment}[4][.25em]{%
-  \savebox{\cvitemwithcommentmainbox}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3}%
+  \savebox{\cvitemwithcommentmainbox}{\ifstrempty{#2}{}{\hintstyle{#2}: }#3}%
   \setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
   \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
   \begin{minipage}[t]{\cvitemwithcommentmainlength}\usebox{\cvitemwithcommentmainbox}\end{minipage}%

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiv.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiv.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyiv.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvbodyiv.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,14 +10,16 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyiv}[2015/07/28 v2.0.0 modern curriculum vitae and letter body variant: 4]
+\ProvidesPackage{moderncvbodyiv}[2021/01/21 v2.1.0 modern curriculum vitae and letter body variant: 4]
 
 
 %-------------------------------------------------------------------------------
 %                required packages
 %-------------------------------------------------------------------------------
+% provides the commands for the skillmatrix as well as the command 
+% \recompute at cvskillmatrix@lengths
+\RequirePackage[moderncvbodyiv]{moderncvskillmatrix}
 
-
 %-------------------------------------------------------------------------------
 %                overall body definition
 %-------------------------------------------------------------------------------
@@ -57,6 +59,7 @@
   \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
   \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
   \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+  \recompute at cvskillmatrix@lengths
   % regular lengths
   \setlength{\parskip}{0\p@}}
 

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyv.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyv.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvbodyv.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvbodyv.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,14 +10,16 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyv}[2015/07/28 v2.0.0 modern curriculum vitae and letter body variant: 5]
+\ProvidesPackage{moderncvbodyv}[2021/01/21 v2.1.0 modern curriculum vitae and letter body variant: 5]
 
 
 %-------------------------------------------------------------------------------
 %                required packages
 %-------------------------------------------------------------------------------
+% provides the commands for the skillmatrix as well as the command 
+% \recompute at cvskillmatrix@lengths
+\RequirePackage[moderncvbodyv]{moderncvskillmatrix}
 
-
 %-------------------------------------------------------------------------------
 %                overall style definition
 %-------------------------------------------------------------------------------
@@ -61,6 +63,7 @@
   \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
   \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
   \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+  \recompute at cvskillmatrix@lengths
   % regular lengths
   \setlength{\parskip}{0\p@}}
 
@@ -84,7 +87,15 @@
   \nobreak\@afterheading\@aftersectiontrue\ignorespaces}
 
 \renewcommand*{\cvitem}[3][.5ex]{%
-  \@cvitem[#1]{}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}}}
+  \@cvitem[#1]{}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}}%
+  }
+% \RenewDocumentCommand{\cvitem}{+O{.5ex} +m +m}{%
+%     \IfNoValueTF{#2}{%
+%         \@cvitem[#1]{}{#3}%
+%     }{%
+%         \@cvitem[#1]{}{\hintstyle{#2}: {#3}}%
+%     }%
+% }
 
 % underlying command to implement \cvitem, \subsection and \section
 \newcommand*{\@cvitem}[3][.5ex]{%

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcollection.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcollection.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcollection.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvcollection.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcollection}[2015/07/28 v2.0.0 moderncv collections]
+\ProvidesPackage{moderncvcollection}[2021/01/21 v2.1.0 moderncv collections]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblack.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblack.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblack.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvcolorblack.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorblack}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: black]
+\ProvidesPackage{moderncvcolorblack}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: black]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblue.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblue.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorblue.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvcolorblue.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorblue}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: blue]
+\ProvidesPackage{moderncvcolorblue}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: blue]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorburgundy.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorburgundy.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorburgundy.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvcolorburgundy.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorburgundy}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: burgundy]
+\ProvidesPackage{moderncvcolorburgundy}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: burgundy]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgreen.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgreen.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgreen.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvcolorgreen.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorgreen}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: green]
+\ProvidesPackage{moderncvcolorgreen}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: green]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgrey.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgrey.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorgrey.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvcolorgrey.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorgrey}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: grey]
+\ProvidesPackage{moderncvcolorgrey}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: grey]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolororange.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolororange.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolororange.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvcolororange.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolororange}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: orange]
+\ProvidesPackage{moderncvcolororange}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: orange]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorpurple.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorpurple.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorpurple.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvcolorpurple.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorpurple}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: purple]
+\ProvidesPackage{moderncvcolorpurple}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: purple]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorred.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorred.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcolorred.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvcolorred.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorred}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: red]
+\ProvidesPackage{moderncvcolorred}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: red]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcompatibility.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcompatibility.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvcompatibility.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvcompatibility.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcompatibility}[2015/07/28 v2.0.0 modern curriculum vitae and letter compatibility patches]
+\ProvidesPackage{moderncvcompatibility}[2021/01/21 v2.1.0 modern curriculum vitae and letter compatibility patches]
 
 
 %-------------------------------------------------------------------------------
@@ -97,7 +97,10 @@
 \newcommand*{\mobilesymbol}{\mobilephonesymbol}
 \newcommand*{\faxsymbol}{\faxphonesymbol}
 
+% compatibility with versions <= 1.5.1
+\newcommand*{\makecvtitlenamewidth}{\makecvheadnamewidth} % only used in header variants 1 and 4, themself used by the classic and oldstyle styles
 
+
 \endinput
 
 

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvdebugtools.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvdebugtools.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvdebugtools.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvdebugtools.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvdebugtools}[2015/07/28 v2.0.0 modern curriculum vitae and letter debug tools]
+\ProvidesPackage{moderncvdebugtools}[2021/01/21 v2.1.0 modern curriculum vitae and letter debug tools]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvfooti.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvfooti.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvfooti.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvfooti.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvfooti}[2015/07/28 v2.0.0 modern curriculum vitae and letter footer variant: 1]
+\ProvidesPackage{moderncvfooti}[2021/01/21 v2.1.0 modern curriculum vitae and letter footer variant: 1]
 
 
 %-------------------------------------------------------------------------------
@@ -88,7 +88,7 @@
         \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
           \addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
         \ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
-        \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httplink{\@homepage}}}%
+        \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httpslink{\@homepage}}}%
         \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
           \addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
         \ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}%
@@ -119,7 +119,7 @@
         \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
           \addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
         \ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
-        \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httplink{\@homepage}}}%
+        \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httpslink{\@homepage}}}%
         \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
           \addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
         \ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}%

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadi.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadi.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadi.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvheadi.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadi}[2015/07/28 v2.0.0 modern curriculum vitae and letter header variant: 1]
+\ProvidesPackage{moderncvheadi}[2021/01/21 v2.1.0 modern curriculum vitae and letter header variant: 1]
 
 % details options: "details" (default) or "nodetails"
 \@initializeif{\if at details}\@detailsfalse
@@ -54,8 +54,7 @@
 %-------------------------------------------------------------------------------
 % lengths
 \@initializelength{\quotewidth}
-% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
-\@initializelength{\makecvheadnamewidth}
+\@initializelength{\makecvheadnamewidth}% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
 \renewcommand*{\recomputecvheadlengths}{%
   \setlength{\quotewidth}{0.65\textwidth}}
 
@@ -81,7 +80,7 @@
           \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
         \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
         \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
-        \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
+        \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
         \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict
         \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
       \end{tabular}
@@ -159,7 +158,7 @@
         \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
           \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
         \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
-        \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
+        \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
         \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
     \end{minipage}\\[1em]
   % recipient block

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadii.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadii.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadii.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvheadii.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadii}[2015/07/28 v2.0.0 modern curriculum vitae and letter header variant: 2]
+\ProvidesPackage{moderncvheadii}[2021/01/21 v2.1.0 modern curriculum vitae and letter header variant: 2]
 
 % details options: "details" or "nodetails" (default)
 \@initializeif{\if at details}\@detailsfalse
@@ -93,8 +93,6 @@
 %-------------------------------------------------------------------------------
 % lengths
 \@initializelength{\quotewidth}
-% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
-\@initializelength{\makecvheadnamewidth}
 \renewcommand*{\recomputecvheadlengths}{%
   \setlength{\makeheaddetailswidth}{\textwidth}%
   \setlength{\quotewidth}{0.65\textwidth}}
@@ -145,7 +143,7 @@
     \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
       \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
     \ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
-    \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httplink{\@homepage}}}%
+    \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httpslink{\@homepage}}}%
     \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
       \addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
     \ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadiii.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadiii.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadiii.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvheadiii.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadiii}[2015/07/28 v2.0.0 modern curriculum vitae and letter header variant: 3]
+\ProvidesPackage{moderncvheadiii}[2021/01/21 v2.1.0 modern curriculum vitae and letter header variant: 3]
 
 % details options: "details" (default) or "nodetails"
 \@initializeif{\if at details}\@detailsfalse
@@ -70,10 +70,11 @@
     \@firstmakeheaddetailselementfalse\fi}
 %   internal command to flush the makehead
 \@initializecommand{\flushmakeheaddetails}{%
-  \strut\usebox{\makeheaddetailsbox}%
-  \savebox{\makeheaddetailsbox}{}%
-  \savebox{\makeheaddetailstempbox}{}%
-  \setlength{\makeheaddetailsboxwidth}{0pt}}
+  \ifnum\makeheaddetailsboxwidth>0%
+    \strut\usebox{\makeheaddetailsbox}%
+    \savebox{\makeheaddetailsbox}{}%
+    \savebox{\makeheaddetailstempbox}{}%
+    \setlength{\makeheaddetailsboxwidth}{0pt}\fi}
 \@initializecommand{\makehead}{%
   \setlength{\makeheaddetailswidth}{0.8\textwidth}%
   \hfil%
@@ -81,9 +82,10 @@
     \centering%
     % name and title
     \namestyle{\@firstname~\@lastname}%
-    \ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}\\% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title) 
+    \ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title) 
     % optional detailed information
     \if at details{%
+      \\%
       \addressfont\color{color2}%
       \ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
         \ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
@@ -92,11 +94,11 @@
       \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
         \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
       \ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
-      \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httplink{\@homepage}}}%
+      \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httpslink{\@homepage}}}%
       \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
         \addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
       \ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
-    \flushmakeheaddetails}\fi}\\[2.5em]}% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
+      \flushmakeheaddetails}\fi}\\[2.5em]}% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadiv.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadiv.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadiv.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvheadiv.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadiv}[2015/07/28 v2.0.0 modern curriculum vitae and letter header variant: 4]
+\ProvidesPackage{moderncvheadiv}[2021/01/21 v2.1.0 modern curriculum vitae and letter header variant: 4]
 
 % details options: "details" (default) or "nodetails"
 \@initializeif{\if at details}\@detailsfalse
@@ -49,6 +49,7 @@
 %-------------------------------------------------------------------------------
 % lengths
 \@initializelength{\quotewidth}
+\@initializelength{\makecvheadnamewidth}% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
 \setlength{\marginparwidth}{0\p@}
 \setlength{\marginparsep}{0\p@}
 \renewcommand*{\recomputecvheadlengths}{%
@@ -86,7 +87,9 @@
       \framebox{\includegraphics[width=\@photowidth]{\@photo}}}}%
   % name and optional title
   \newlength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
-  \newlength{\makecvheadnamewidth}\setlength{\makecvheadnamewidth}{\textwidth-\makecvheadpicturewidth}%
+  \ifthenelse{\lengthtest{\makecvheadnamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvheadnamewidth=0pt)
+    {\setlength{\makecvheadnamewidth}{\textwidth-\makecvheadpicturewidth}}%
+    {}%
   \begin{minipage}[b]{\makecvheadnamewidth}%
     \namestyle{\@firstname\ \@lastname}%
     \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
@@ -107,7 +110,7 @@
       \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
         \makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
       \ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
-      \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~\httplink{\@homepage}}%
+      \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~\httpslink{\@homepage}}%
       \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
         \makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}%
       \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi}
@@ -153,7 +156,7 @@
         \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
           \makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
         \ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
-        \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~\httplink{\@homepage}}%
+        \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~\httpslink{\@homepage}}%
         \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
           \makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}%
         \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}}%

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadv.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadv.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadv.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvheadv.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadv}[2015/07/28 v2.0.0 modern curriculum vitae and letter header variant: 5]
+\ProvidesPackage{moderncvheadv}[2021/01/21 v2.1.0 modern curriculum vitae and letter header variant: 5]
 
 % details options: "details" (default) or "nodetails"
 \@initializeif{\if at details}\@detailsfalse
@@ -48,8 +48,6 @@
 %-------------------------------------------------------------------------------
 % lengths
 \@initializelength{\quotewidth}
-% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
-\@initializelength{\makecvheadnamewidth}
 \renewcommand*{\recomputecvheadlengths}{%
   \setlength{\quotewidth}{0.65\textwidth}}
 
@@ -84,7 +82,7 @@
         \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
           \makenewline\csname\collectionloopkey phonesymbol\endcsname~\collectionloopitem}%
         \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol~\emaillink{\@email}}%
-        \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~\httplink{\@homepage}}%
+        \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~\httpslink{\@homepage}}%
         \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
           \makenewline\csname\collectionloopkey socialsymbol\endcsname~\collectionloopitem}%
         \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}\fi}%
@@ -142,7 +140,7 @@
         \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
           \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
         \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
-        \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
+        \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
         \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
     \end{minipage}\\[1em]
   % recipient block

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadvi.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadvi.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvheadvi.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvheadvi.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadvi}[2015/07/28 v2.0.0 modern curriculum vitae and letter header: 6]
+\ProvidesPackage{moderncvheadvi}[2021/01/21 v2.1.0 modern curriculum vitae and letter header: 6]
 
 % details options: "details" (default) or "nodetails"
 \@initializeif{\if at details}\@detailsfalse
@@ -115,7 +115,7 @@
     \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
       \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
     \ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
-    \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httplink{\@homepage}}}%
+    \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httpslink{\@homepage}}}%
     \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
       \addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
     \ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsawesome.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsawesome.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsawesome.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncviconsawesome.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,34 +10,45 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsawesome}[2015/07/28 v2.0.0 modern curriculum vitae and letter icons: awesome]
+\ProvidesPackage{moderncviconsawesome}[2021/01/21 v2.1.0 modern curriculum vitae and letter icons: awesome]
 
 %-------------------------------------------------------------------------------
 %                required packages
 %-------------------------------------------------------------------------------
 % Font Awesome font
-\RequirePackage{fontawesome}
+\RequirePackage{fontawesome5}
+% Package for academic icons
+\RequirePackage{academicons}
 
 
 %-------------------------------------------------------------------------------
 %                symbols definition
 %-------------------------------------------------------------------------------
-\renewcommand*{\labelitemi}          {\strut\textcolor{color1}{\tiny\faCircleO}}
+\renewcommand*{\labelitemi}          {\strut\textcolor{color1}{\tiny\faCircle}}
 %\renewcommand*{\labelitemii}         {\strut\textcolor{color1}{\large\bfseries-}}            % no change from default in moderncv.cls
 %\renewcommand*{\labelitemiii}        {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% no change from default in moderncv.cls
 %\renewcommand*{\labelitemiv}         {\labelitemiii}                                         % no change from default in moderncv.cls
 
-\renewcommand*{\addresssymbol}       {}
-\renewcommand*{\mobilephonesymbol}   {{\Large\faMobile}~}
-\renewcommand*{\fixedphonesymbol}    {\faPhone~}
-\renewcommand*{\faxphonesymbol}      {{\small\faFax}~}                % alternative: \faPrint
-\renewcommand*{\emailsymbol}         {{\small\faEnvelopeO}~}          % alternative: \faInbox
-\renewcommand*{\homepagesymbol}      {{\small\faGlobe}~}              % alternative: \faHome
-\renewcommand*{\linkedinsocialsymbol}{{\small\faLinkedin}~}           % alternative: \faLinkedinSquare
-\renewcommand*{\twittersocialsymbol} {{\small\faTwitter}~}            % alternative: \faTwitterSquare
-\renewcommand*{\githubsocialsymbol}  {{\small\faGithub}~}             % alternative: \faGithubSquare, \faGithubSquare
+\renewcommand*{\addresssymbol}            {}
+\renewcommand*{\mobilephonesymbol}        {{\small\faMobile}~}
+\renewcommand*{\fixedphonesymbol}         {{\small\faPhone}~}
+\renewcommand*{\faxphonesymbol}           {{\small\faFax}~}                % alternative: \faPrint
+\renewcommand*{\emailsymbol}              {{\small\faEnvelope}~}           % alternative: \faInbox
+\renewcommand*{\homepagesymbol}           {{\small\faGlobe}~}              % alternative: \faHome
+\renewcommand*{\linkedinsocialsymbol}     {{\small\faLinkedin}~}           % alternative: \faLinkedinSquare
+\renewcommand*{\xingsocialsymbol}         {{\small\faXing}~}               % alternative: \faXingSquare
+\renewcommand*{\twittersocialsymbol}      {{\small\faTwitter}~}            % alternative: \faTwitterSquare
+\renewcommand*{\githubsocialsymbol}       {{\small\faGithub}~}             % alternative: \faGithubSquare, \faGithubSquare
+\renewcommand*{\gitlabsocialsymbol}       {{\small\faGitlab}~}
+\renewcommand*{\stackoverflowsocialsymbol}{{\small\faStackOverflow}~}
+\renewcommand*{\bitbucketsocialsymbol}    {{\small\faBitbucket}~}
+\renewcommand*{\skypesocialsymbol}        {{\small\faSkype}~}
+\renewcommand*{\orcidsocialsymbol}        {{\small\aiOrcid}~}
+\renewcommand*{\researchgatesocialsymbol} {{\small\aiResearchGate}~}
+\renewcommand*{\researchidsocialsymbol}   {{\small\aiResearcherID}~}
+\renewcommand*{\telegramsocialsymbol}     {{\small\faTelegram}~}
+\renewcommand*{\googlescholarsocialsymbol}{{\small\aiGoogleScholar}~}
 
-
 \endinput
 
 

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsletters.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsletters.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsletters.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncviconsletters.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsletters}[2015/07/28 v2.0.0 modern curriculum vitae and letter icons: letters]
+\ProvidesPackage{moderncviconsletters}[2021/01/21 v2.1.0 modern curriculum vitae and letter icons: letters]
 
 
 %-------------------------------------------------------------------------------
@@ -34,15 +34,25 @@
 %\renewcommand*{\labelitemiii}        {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% no change from default in moderncv.cls
 %\renewcommand*{\labelitemiv}         {\labelitemiii}                                         % no change from default in moderncv.cls
 
-\renewcommand*{\addresssymbol}       {}
-\renewcommand*{\mobilephonesymbol}   {\textbf{M}~}
-\renewcommand*{\fixedphonesymbol}    {\textbf{T}~}
-\renewcommand*{\faxphonesymbol}      {\textbf{F}~}
-\renewcommand*{\emailsymbol}         {\textbf{E}~}
-\renewcommand*{\homepagesymbol}      {\textbf{W}~}
-\renewcommand*{\linkedinsocialsymbol}{\textbf{in}~}
-\renewcommand*{\twittersocialsymbol} {\textbf{tw}~}
-\renewcommand*{\githubsocialsymbol}  {\textbf{gh}~}
+\renewcommand*{\addresssymbol}            {}
+\renewcommand*{\mobilephonesymbol}        {\textbf{M}~}
+\renewcommand*{\fixedphonesymbol}         {\textbf{T}~}
+\renewcommand*{\faxphonesymbol}           {\textbf{F}~}
+\renewcommand*{\emailsymbol}              {\textbf{E}~}
+\renewcommand*{\homepagesymbol}           {\textbf{W}~}
+\renewcommand*{\linkedinsocialsymbol}     {\textbf{in}~}
+\renewcommand*{\xingsocialsymbol}         {\textbf{xi}~}
+\renewcommand*{\twittersocialsymbol}      {\textbf{tw}~}
+\renewcommand*{\githubsocialsymbol}       {\textbf{gh}~}
+\renewcommand*{\gitlabsocialsymbol}       {\textbf{gl}~}
+\renewcommand*{\stackoverflowsocialsymbol}{\textbf{so}~}
+\renewcommand*{\bitbucketsocialsymbol}    {\textbf{bb}~}
+\renewcommand*{\skypesocialsymbol}        {\textbf{sk}~}
+\renewcommand*{\orcidsocialsymbol}        {\textbf{orcid}~}
+\renewcommand*{\researchgatesocialsymbol} {\textbf{rg}~}
+\renewcommand*{\researchidsocialsymbol}   {\textbf{ri}~}
+\renewcommand*{\telegramsocialsymbol}     {\textbf{tg}~}
+\renewcommand*{\googlescholarsocialsymbol}{\textbf{gs}~}
 
 \renewcommand*{\listitemsymbol}      {\labelitemi~}
 

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsmarvosym.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsmarvosym.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncviconsmarvosym.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncviconsmarvosym.sty'.
-%% Copyright 2013-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2013-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsmarvosym}[2015/07/28 v2.0.0 modern curriculum vitae and letter icons: marvosym]
+\ProvidesPackage{moderncviconsmarvosym}[2021/01/21 v2.1.0 modern curriculum vitae and letter icons: marvosym]
 
 
 %-------------------------------------------------------------------------------
@@ -86,6 +86,7 @@
       \protect\end{scope}%
     \protect\end{tikzpicture}}%
   ~}
+\renewcommand*{\xingsocialsymbol}{}
 \renewcommand*{\twittersocialsymbol} {%
   \protect\raisebox{0em}{%
     \protect\begin{tikzpicture}[x=0.08em, y=0.08em, xscale=0.005, yscale=-0.005, inner sep=0pt, outer sep=0pt]
@@ -222,6 +223,47 @@
       \protect\end{scope}%
     \protect\end{tikzpicture}}%
   ~}
+\renewcommand*{\gitlabsocialsymbol}{}
+\renewcommand*{\stackoverflowsocialsymbol}{}
+\renewcommand*{\googlescholarsocialsymbol}{}
+\renewcommand*{\telegramsocialsymbol}{}
+\renewcommand*{\orcidsocialsymbol}{}
+\renewcommand*{\researchgatesocialsymbol}{}
+\renewcommand*{\researchidsocialsymbol}{}
+\renewcommand*{\bitbucketsocialsymbol}{}
+\renewcommand*{\skypesocialsymbol}  {%
+  \protect\raisebox{-0.15em}{%
+    \protect\begin{tikzpicture}[y=0.08em, x=0.08em, xscale=0.020, yscale=-0.020, inner sep=0pt, outer sep=0pt]
+      \protect\begin{scope}[shift={(507,387)}]
+        \protect\path[fill=color2,even odd rule]
+          (487.6550,288.9690) .. controls (489.0610,278.5690) and (489.8700,267.9960) ..
+          (489.8700,257.2330) .. controls (489.8700,128.0770) and (384.5990,23.3610) ..
+          (254.7670,23.3610) .. controls (241.8630,23.3610) and (229.2120,24.4210) .. 
+          (216.9010,26.4410) .. controls (194.8280,12.0570) and (168.5590,3.6740) ..
+          (140.2880,3.6740) .. controls (62.7660,3.6740) and (0.0000,66.4820) ..
+          (0.0000,143.9800) .. controls (0.0000,172.1780) and (8.2990,198.3740) ..
+          (22.5900,220.3690) .. controls (20.6650,232.3860) and (19.6810,244.6920) ..
+          (19.6810,257.2290) .. controls (19.6810,386.4050) and (124.8980,491.1100) ..
+          (254.7660,491.1100) .. controls (269.4230,491.1100) and (283.6930,489.6840) ..
+          (297.5620,487.1780) .. controls (319.1120,500.5470) and (344.4960,508.3260) ..
+          (371.7080,508.3260) .. controls (449.2100,508.3260) and (512.0010,445.5020) ..
+          (512.0010,368.0120) .. controls (511.9980,338.7190) and (503.0410,311.4840) ..
+          (487.6550,288.9690) -- cycle(276.7400,429.5960) .. controls (202.0340,433.4870) and (167.0750,416.9590) .. (135.0500,386.9050) .. controls (99.2850,353.3370) and (113.6520,315.0500) ..
+          (142.7900,313.1040) .. controls (171.9120,311.1590) and (189.3980,346.1160) ..
+          (204.9410,355.8400) .. controls (220.4650,365.5280) and (279.5340,387.6000) ..
+          (310.7350,351.9320) .. controls (344.7100,313.1040) and (288.1410,293.0120) ..
+          (246.6760,286.9300) .. controls (187.4730,278.1640) and (112.7260,246.1370) ..
+          (118.5410,183.0230) .. controls (124.3580,119.9490) and (172.1230,87.6090) ..
+          (222.3910,83.0470) .. controls (286.4680,77.2300) and (328.1820,92.7540) ..
+          (361.1760,120.9070) .. controls (399.3270,153.4360) and (378.6840,189.8010) ..
+          (354.3770,192.7270) .. controls (330.1660,195.6360) and (302.9730,139.2230) ..
+          (249.5860,138.3750) .. controls (194.5590,137.5110) and (157.3690,195.6360) ..
+          (225.3000,212.1590) .. controls (293.2660,228.6640) and (366.0500,235.4450) ..
+          (392.2610,297.5760) .. controls (418.4900,359.7130) and (351.5070,425.7010) ..
+          (276.7400,429.5960) -- cycle;
+      \protect\end{scope}%
+    \protect\end{tikzpicture}}%
+  ~}
 
 
 \endinput

Added: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvskillmatrix.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvskillmatrix.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvskillmatrix.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -0,0 +1,1051 @@
+%% start of file `moderncvskillmatrix.sty'.
+%% Copyright 2021 David Seus (cryptointerest at posteo.de).
+%
+% This package provides a skill matrix template for the moderncv package.
+% Some recruiting firms require applicants to rate their skills, computer 
+% skills, management tools, or similar in a table involving a graphical 
+% illustration of their skill level. This package implements this idea 
+% and provides the following commands to use within the moderncv 
+% package:
+% 
+% 
+% PUBLIC COMMANDS
+%     \cvskill{<1-5>}
+%         Illustrate skill level with little colored boxes.
+%         By default five skill levels are predefined.   
+% 
+%         Input: 
+%             input_1:    integer between 0 and 5
+% 
+%         Example usages: 
+%             \cvskill{3}
+% 
+% 
+%     \cvskilllegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
+%         Print legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
+% 
+%         Input:
+%             asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style. 
+%                                 For the fancy style, the asterix has no meaning.
+%             input_1 (optional): padding length appended to the legend, default: <0.25em>
+%             input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
+%             input_3 (optional): string describing meaning of \cvskill{2}, default: <intermediate knowledge with some project experience>
+%             input_4 (optional): string describing meaning of \cvskill{3}, default: <extensive project experience>
+%             input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
+%             input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
+%             input_7:            string giving a name to the legend, default: <>
+% 
+%         Example usages:
+%             \cvskilllegend{}    print default legend
+%             \cvskilllegend[0.5em]{Legend}   print default legend, but adjust post padding and display the word ``Legend''.
+%             \cvskilllegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende}     Fully adjust legend to German example and including dashed lines
+% 
+%         Note:
+%             -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
+%             -The design of the table is such that the <second_level> entry stands in the first column but 
+%             occupies rows two and three. This has been done to accomodate english and german defaults.
+%             An alternative is provided by \cvskillplainlegend
+% 
+% 
+%     \cvskillplainlegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
+%         Print alternative legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
+%         In this legend, the first three skill levels are in one column
+% 
+%         Input:
+%             asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style. 
+%                                 For the fancy style, the asterix has no meaning.
+%             input_1 (optional): padding length appended to the legend, default: <0.25em>
+%             input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
+%             input_3 (optional): string describing meaning of \cvskill{2}, default: <intermediate knowledge with some project experience>
+%             input_4 (optional): string describing meaning of \cvskill{3}, default: <extensive project experience>
+%             input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
+%             input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
+%             input_7:            string giving a name to the legend, default: <>
+% 
+%         Example usages:
+%             \cvskillplainlegend{}    print default legend
+%             \cvskillplainlegend[0.5em]{Legend}   print default legend, but adjust post padding and display the word ``Legend''.
+%             \cvskillplainlegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende}     Fully adjust legend to German example and including dashed lines
+% 
+%         Note:
+%             -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
+% 
+% 
+%     \cvskillhead[<post_padding>][<Level>][<Skill>][<Years>][<Comment>]%
+%         add skill matrix line acting as header explaining the meaning of columns.
+% 
+%         Input:
+%             input_1 (optional): padding length appended to the legend, default: <0.25em>
+%             input_2 (optional): string naming the level column (2nd column), default: <Level>
+%             input_3 (optional): string naming the skill column (3nd column), default: <Skill>
+%             input_4 (optional): string naming the experience-in-years column (4th column), default: <Years>
+%             input_5 (optional): string naming the comment column (5th column), default: <Comment>
+% 
+%         Example usages:
+%             \cvskillhead    print default head.
+%             \cvskillhead[0.5em]   print default head, but adjust post padding.
+%             \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung]     Fully adjust head to German example
+% 
+%         Note:   
+%             - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
+% 
+% 
+%     \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
+%         add cvskill matrix row.
+% 
+%         Input:
+%             asterix (optional): include horizontal (dashed) line above the entered line. This behaviour depends on the body style. 
+%                                 For the fancy style, the asterix has no meaning.
+%             input_1 (optional): padding length appended to the legend, default: <0.25em>
+%             input_2: string, naming skill cathegory, default: <>
+%             input_3: integer between 0 and 5, describing level of skill. \cvskill{input_2} is called internally, default: <>
+%             input_4: string, naming the skill, default: <>
+%             input_5: positive real number, stating the number of years of experience with this skill , default: <>
+%             input_6: string, explaining details w.r.t. that particual skill default: <>
+% 
+%         Example usages:
+%             \cvskillentry*{Language:}{3}{Python}{2}{I have done a million projects with Python}
+%             \cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man I'm the best!}
+%             \cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX}
+%             \cvskillentry*[1.5em]{OS:}{3}{Linux}{2}{I only use Archlinux}
+% 
+%         Note:   
+%             - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
+% 
+% 
+%     \setcvskillcolumns[<width>][<factor>][<exp_width>]
+%         adjust column width of skill table
+% 
+%         The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns 
+%         based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned 
+%         and actually yield a decent looking table. The defaults depend on the style used and are chosen reasonably.
+%         However, depending on the user input and the style that is used some of the columns might need adjustments. 
+%         The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth 
+%         skill matrix column. The second column containg the output of \cvskill remains fixed width. The last column,
+%         the comment column gets recalculated according to the setting of the other columns.
+% 
+%         Input
+%             Input_1 (optional):     width smaller than \textwidth,  default <\skillmatrix at hintscolumnwidth>
+%             Input_2 (optional):     float between 0 and 1 adjusting how much percent of the table width without 
+%                                     the first column is used columns two, three and four. Through this parameter
+%                                     the width of the 3rd column (skill name) can be adjusted,   default <\skillmatrix at columnwidth>
+%             Input_3 (optional):     width smaller than \textwidth, setting the width of the 4th column 
+%                                     (Years of experience), default <\cvskill at experiencewidth>
+% 
+%         Example usage
+%             \setcvskillcolumns[5em][][]%    adjust first column. Same as \setcvskillcolumns[5em]
+%             \setcvskillcolumns[][0.45][]%   adjust third (skill) column. Same as \setcvskillcolumns[][0.45]
+%             \setcvskillcolumns[][][\widthof{``Year''}]%     adjust fourth (years) column.
+%             \setcvskillcolumns[\widthof{``Language''}][0.48][]%     adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45]    
+%             \setcvskillcolumns[\widthof{``Management Tools''}][0.6][3em]%   ajust all at once.
+% 
+%         Note
+%             - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
+%                 it aligns with the rest of the entries. A readjustment of the first column should therefor 
+%                 be avoided. It is recomended to only use \setcvskillcolumns in the form of 
+%                 \setcvskillcolumns[][<factor>][<width>], thereby leaving the defaults in place for the first column.
+% 
+% 
+%     \setcvskilllegendcolumns[<width>][<factor>]
+%         adjust column width of legend
+% 
+%         The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix 
+%         such that the default english and german examples look good. 
+%         However, depending on the user input (translation) and the style that is used some adjustment might be needed. 
+%         The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing 
+%         \cvskill commands. The second column containg the output of \cvskill remains fixed width. The last column,
+%         the comment column gets recalculated according to the setting of the other columns.
+% 
+%         Input
+%             Input_1 (optional):     length smaller than \textwidth influencing the width of the first column 
+%                                     where depending on the style the legend_string gets printed. In case the 
+%                                     string is left empty adjusting this width allows moving the legend horizontally.  
+%                                     Default <\skilllegend at hintscolumnwidth>
+%             Input_2 (optional):     float between 0 and 1 influencing the width of the left legend descritor column, 
+%                                     aka \cvskilllegend at leftdescriptorwidth. The desriptor column on the right, 
+%                                     \cvskilllegend at rightdescriptorwidth is influenced by the factor 1-<factor>.
+%                                     Default <\skilllegend at leftdesriptorfactor>
+% 
+%         Example usage
+%             \setcvskilllegendcolumns[][0.45]%%    adjust left desriptor column.
+%             \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]%   adjust both left descriptor column and string column
+% 
+%         Note
+%             - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv) 
+%                 the first optional variable has no effect in this case.
+%             - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
+%                 it aligns with the rest of the entries. A readjustment of the first column should therefor 
+%                 be avoided. It is recomended to only use \cvskilllegend in the form of 
+%                 \cvskilllegend[][<factor>], thereby leaving the defaults in place for the first column.
+%             - For style 'banking' the first column is set to align with the rest of the \cvskillentry entries
+%                 Therefor adjusting the first column can be used to widen the table while moving it around. If no 
+%                 legend string is used, setting \cvskilllegend[0em] maximises the real enstate for the legend.
+% 
+% 
+% PRIVATE COMMANDS
+% 
+%    \recompute at cvskillmatrix@lengths
+%         compute all lengths necessary for the skill matrix depending on 
+%         the moderncv style (moderncvbody)
+%         
+%         Input:  none
+%         
+%         Example usage (only internally in moderncvbody<i-v>.sty)
+%             \recompute at cvskillmatrix@lengths 
+% 
+% 
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+%                identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvskillmatrix}[2021/01/21 v2.1.0 modern curriculum vitae and letter skill matrix]
+
+% The definitions need to be adjusted depending on which moderncvbody<i-v>.sty style is usde. 
+% body type options: "moderncvbodyi" (default), "moderncvbodyii", "moderncvbodyiii", "moderncvbodyiv" or "moderncvbodyv" 
+\@initializeif{\if at moderncvbodyi}\@moderncvbodyifalse
+\DeclareOption{moderncvbodyi}{\@moderncvbodyitrue\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvfalse}
+\@initializeif{\if at moderncvbodyii}\@moderncvbodyiifalse % this option is added in case moderncvbodyii gets implemented standalone
+\DeclareOption{moderncvbodyii}{\@moderncvbodyifalse\@moderncvbodyiitrue\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvfalse}
+\@initializeif{\if at moderncvbodyiii}\@moderncvbodyiiifalse
+\DeclareOption{moderncvbodyiii}{\@moderncvbodyifalse\@moderncvbodyiifalse\@moderncvbodyiiitrue\@moderncvbodyivfalse\@moderncvbodyvfalse}
+\@initializeif{\if at moderncvbodyiv}\@moderncvbodyivfalse
+\DeclareOption{moderncvbodyiv}{\@moderncvbodyifalse\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivtrue\@moderncvbodyvfalse}
+\@initializeif{\if at moderncvbodyv}\@moderncvbodyvfalse
+\DeclareOption{moderncvbodyv}{\@moderncvbodyifalse\@moderncvbodyiifalse\@moderncvbodyiiifalse\@moderncvbodyivfalse\@moderncvbodyvtrue}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{moderncvbodyi}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+%-------------------------------------------------------------------------------
+%                required packages
+%-------------------------------------------------------------------------------
+\RequirePackage{tikz}
+\RequirePackage{multirow}
+% package arydshln is needed for the dashed lines but is incompatible with fancy style
+\if at moderncvbodyv%
+%     \RequirePackage{arydshln} % incompatible with fancy style
+\else%
+    \RequirePackage{arydshln} % incompatible with fancy style
+\fi
+
+% %-------------------------------------------------------------------------------
+% %                \cvskill command
+% %-------------------------------------------------------------------------------
+% The code for the Skilllevel illustration with the little boxes.
+% This is idea stolen from the limecv package, see https://github.com/opieters/limecv.git
+\@initializelength{\cvSkill at RectangleSize}
+\setlength{\cvSkill at RectangleSize}{1.2ex}
+\newcount\my at repeat@count
+\DeclareDocumentCommand{\cvskill}{m}{%
+%   Illustrate skill level with little colored boxes.
+%   By default five skill levels are predefined.   
+% 
+%   Input: 
+%       integer between 0 and 5
+%   Example usage: 
+%       \cvskill{3}
+    \begingroup
+        \my at repeat@count=\z@
+        \@whilenum\my at repeat@count<#1\do{\tikz\filldraw[color1] (0, 0) rectangle (\cvSkill at RectangleSize, \cvSkill at RectangleSize);\advance%
+        \my at repeat@count\@ne\,}%
+        \my at repeat@count=\numexpr5-\z@\relax
+        \@whilenum\my at repeat@count>#1\do{\tikz\filldraw[color2!30] (0, 0) rectangle (\cvSkill at RectangleSize, \cvSkill at RectangleSize);\advance%
+        \my at repeat@count\m at ne\,}%
+    \endgroup
+}% end \cvskill
+
+% %-------------------------------------------------------------------------------
+% %                \recompute at cvskillmatrix@lengths
+% %-------------------------------------------------------------------------------
+
+% initialise lengths needed for the skillmatrix
+\@initializelength{\cvskill at width}
+\@initializelength{\cvskill at descriptorwidth}
+\@initializelength{\cvskill at experiencewidth}
+\@initializelength{\skillmatrix at columnwidth}
+\@initializelength{\skillmatrix at commentwidth}
+\@initializelength{\skillmatrix at padding}
+\@initializelength{\skillmatrix at hintscolumnwidth}
+\@initializelength{\skillmatrix at bodylength}
+\@initializelength{\cvskilllegend at leftdescriptorwidth}
+\@initializelength{\cvskilllegend at rightdescriptorwidth}
+\@initializelength{\skilllegend at hintscolumnwidth}
+\@initializelength{\skilllegend at padding}
+\@initializelength{\skilllegend at bodylength}
+
+% \separatorrulewidth is defined in moderncvbodyv.sty and we need to 
+% define it to not throw an error in the other cases
+\if at moderncvbodyv%
+% 
+\else%
+    \@initializelength{\separatorrulewidth}
+    \setlength{\separatorrulewidth}{1ex}
+\fi
+
+\DeclareDocumentCommand{\skilllegend at leftdesriptorfactor}{}{}%
+%% DEFINITION \recompute at cvskillmatrix@lengths
+% declare the command \recompute at cvskillmatrix@lengths empty
+\DeclareDocumentCommand{\recompute at cvskillmatrix@lengths}{}{}%
+%   compute all lengths necessary for the skill matrix depending on 
+%   the moderncv style (moderncvbody)
+%   
+%   Input:  none
+%   
+%   Example usage (only internally in moderncvbody<i-v>.sty)
+%       \recompute at cvskillmatrix@lengths 
+
+% Definition of \recompute at cvskillmatrix@lengths for moderncvbodyi
+\if at moderncvbodyi%
+    \RenewDocumentCommand{\recompute at cvskillmatrix@lengths}{}{%
+        \setlength{\skillmatrix at padding}{1ex}%
+        \setlength{\skillmatrix at hintscolumnwidth}{\hintscolumnwidth}%
+        \setlength{\cvskill at width}{\widthof{\cvskill{5}}}%
+        \setlength{\cvskill at experiencewidth}{\widthof{``Year''}}%
+        \setlength{\skillmatrix at bodylength}{\maincolumnwidth}%
+        \setlength{\skillmatrix at columnwidth}{0.45\skillmatrix at bodylength}%
+        \setlength{\cvskill at descriptorwidth}{\skillmatrix at columnwidth-\cvskill at width-\cvskill at experiencewidth}%
+        \setlength{\skillmatrix at commentwidth}{\skillmatrix at bodylength-\skillmatrix at columnwidth-3\skillmatrix at padding}%
+        % lengths and definitions needed for the legends
+        % note that \skillmatrix at padding also affects the appearance of legends
+        \setlength{\skilllegend at padding}{0.25ex}%
+        \setlength{\skilllegend at hintscolumnwidth}{\hintscolumnwidth}%
+        \setlength{\skilllegend at bodylength}{\skillmatrix at bodylength}%
+        \RenewDocumentCommand{\skilllegend at leftdesriptorfactor}{}{0.5}%
+    }
+\fi
+% Definition of \recompute at cvskillmatrix@lengths for moderncvbodyiii
+\if at moderncvbodyiii%
+    \RenewDocumentCommand{\recompute at cvskillmatrix@lengths}{}{%
+        \setlength{\skillmatrix at padding}{1ex}%
+        \setlength{\separatorcolumnwidth}{\skillmatrix at padding}%
+        \setlength{\skillmatrix at hintscolumnwidth}{\widthof{``Language''}}%
+        \setlength{\cvskill at width}{\widthof{\cvskill{5}}}%
+        \setlength{\cvskill at experiencewidth}{\widthof{``Year''}}%
+        \setlength{\skillmatrix at bodylength}{\maincolumnwidth-\skillmatrix at hintscolumnwidth-\separatorcolumnwidth}%
+        \setlength{\skillmatrix at columnwidth}{0.45\skillmatrix at bodylength}%
+        \setlength{\cvskill at descriptorwidth}{\skillmatrix at columnwidth-\cvskill at width-\cvskill at experiencewidth}%
+        \setlength{\skillmatrix at commentwidth}{\skillmatrix at bodylength-\skillmatrix at columnwidth-3\skillmatrix at padding}%
+        % lengths and definitions needed for the legends
+        % note that \skillmatrix at padding also affects the appearance of legends      
+        \setlength{\skilllegend at padding}{0.25ex}%
+        \setlength{\skilllegend at hintscolumnwidth}{\skillmatrix at hintscolumnwidth}%
+        \setlength{\skilllegend at bodylength}{\skillmatrix at bodylength}%
+        \RenewDocumentCommand{\skilllegend at leftdesriptorfactor}{}{0.5}%
+    }
+\fi
+% Definition of \recompute at cvskillmatrix@lengths for moderncvbodyiv
+\if at moderncvbodyiv%
+    \RenewDocumentCommand{\recompute at cvskillmatrix@lengths}{}{%
+        \setlength{\skillmatrix at padding}{1ex}
+        \setlength{\separatorcolumnwidth}{\skillmatrix at padding}
+        \setlength{\skillmatrix at hintscolumnwidth}{\widthof{``Languagi''}}
+        \setlength{\cvskill at width}{\widthof{\cvskill{5}}}
+        \setlength{\cvskill at experiencewidth}{\widthof{``Year''}}
+        \setlength{\skillmatrix at bodylength}{\maincolumnwidth-\skillmatrix at hintscolumnwidth-\separatorcolumnwidth}
+        \setlength{\skillmatrix at columnwidth}{0.45\skillmatrix at bodylength}%
+        \setlength{\cvskill at descriptorwidth}{\skillmatrix at columnwidth-\cvskill at width-\cvskill at experiencewidth}
+        \setlength{\skillmatrix at commentwidth}{\skillmatrix at bodylength-\skillmatrix at columnwidth-3\skillmatrix at padding}%
+        % lengths and definitions needed for the legends
+        % note that \skillmatrix at padding also affects the appearance of legends    
+        \setlength{\skilllegend at padding}{0.25ex}
+        \setlength{\skilllegend at hintscolumnwidth}{0ex}%\skillmatrix at hintscolumnwidth
+        \setlength{\skilllegend at bodylength}{\maincolumnwidth}
+        \RenewDocumentCommand{\skilllegend at leftdesriptorfactor}{}{0.45}%
+    }
+\fi
+% Definition of \recompute at cvskillmatrix@lengths for moderncvbodyv
+\if at moderncvbodyv%
+    \RenewDocumentCommand{\recompute at cvskillmatrix@lengths}{}{%
+        \setlength{\skillmatrix at padding}{1ex}%
+        \setlength{\skillmatrix at hintscolumnwidth}{\widthof{``Languages''}}%
+        \setlength{\cvskill at width}{\widthof{\cvskill{5}}}%
+        \setlength{\cvskill at experiencewidth}{\widthof{``Year''}}%
+        \setlength{\skillmatrix at bodylength}{\maincolumnwidth-\skillmatrix at hintscolumnwidth-\skillmatrix at padding}%\skillmatrix at hintscolumnwidth
+        \setlength{\skillmatrix at columnwidth}{0.45\skillmatrix at bodylength}%
+        \setlength{\cvskill at descriptorwidth}{\skillmatrix at columnwidth-\cvskill at width-\cvskill at experiencewidth}%
+        \setlength{\skillmatrix at commentwidth}{\skillmatrix at bodylength-\skillmatrix at columnwidth-3\skillmatrix at padding}%
+        % lengths and definitions needed for the legends
+        % note that \skillmatrix at padding also affects the appearance of legends   
+        \setlength{\skilllegend at padding}{0.25ex}%
+        \setlength{\skilllegend at hintscolumnwidth}{\skillmatrix at hintscolumnwidth}%
+        \setlength{\skilllegend at bodylength}{\maincolumnwidth}%
+        \RenewDocumentCommand{\skilllegend at leftdesriptorfactor}{}{0.48}%
+    }%
+\fi
+
+% %-------------------------------------------------------------------------------
+% %                \setcvskillcolumns and \setcvskilllegendcolumns
+% %-------------------------------------------------------------------------------
+% \setcvskillcolumns[<width>][<factor>][<exp_width>]
+\DeclareDocumentCommand{\setcvskillcolumns}{+O{\skillmatrix at hintscolumnwidth} +O{\skillmatrix at columnwidth} +O{\cvskill at experiencewidth}}{%
+%   adjust column width of skill table
+% 
+%   The \cvskillentry command comes with default FIXED width definitions of the kill matrix for the columns 
+%   based on the author's own skill matrix. This is necessary to ensure that the entries are nicely aligned 
+%   and actually yield a decent looking table. The defaults depend on the style used and are chosen reasonably.
+%   However, depending on the user input and the style that is used some of the columns might need adjustments. 
+%   The \setcvskillcolumns command provides means to influence the width of the first, the third and the fourth 
+%   skill matrix column. The second column containg the output of \cvskill remains fixed width. The last column,
+%   the comment column gets recalculated according to the setting of the other columns.
+% 
+%   Input
+%       Input_1 (optional):     width smaller than \textwidth,  default <\skillmatrix at hintscolumnwidth>
+%       Input_2 (optional):     float between 0 and 1 adjusting how much percent of the table width without 
+%                               the first column is used columns two, three and four. Through this parameter
+%                               the width of the 3rd column (skill name) can be adjusted,   default <\skillmatrix at columnwidth>
+%       Input_3 (optional):     width smaller than \textwidth, setting the width of the 4th column 
+%                               (Years of experience), default <\cvskill at experiencewidth>
+% 
+%   Example usage
+%       \setcvskillcolumns[5em][][]%    adjust first column. Same as \setcvskillcolumns[5em]
+%       \setcvskillcolumns[][0.45][]%   adjust third (skill) column. Same as \setcvskillcolumns[][0.45]
+%       \setcvskillcolumns[][][\widthof{``Year''}]%     adjust fourth (years) column.
+%       \setcvskillcolumns[\widthof{``Language''}][0.48][]%     adjust 1st and 3rd columns. Same as \setcvskillcolumns[\widthof{``Language''}][0.45]    
+%       \setcvskillcolumns[\widthof{``Management Tools''}][0.6][3em]%   ajust all at once.
+% 
+%   Note
+%       - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
+%         it aligns with the rest of the entries. A readjustment of the first column should therefor 
+%         be avoided. It is recomended to only use \setcvskillcolumns in the form of 
+%         \setcvskillcolumns[][<factor>][<width>], thereby leaving the defaults in place for the first column.
+% 
+    \def\arg at new@hintscolumnwidth{#1}% <-- all these terminal % signs are necessary for the fancy style to not show weird spaces!!!
+    \def\arg at new@bodyLengthFactor{#2}% 
+    \def\arg at new@experienceWidth{#3}% 
+    % Check for empty arguments. Defaults are given. Thus a call of \setcvskillcolumns 
+    % without any arguments leads to nonempty arguments \arg at new@hintscolumnwidth and
+    % \def\arg at new@bodyLengthFactor{#2}. However, we need to take care of calls like 
+    % \setcvskillcolumns[], \setcvskillcolumns[][], \setcvskillcolumns[][][] or even 
+    % \setcvskillcolumns[<somelength>][], \setcvskillcolumns[][<somefactor>]  \setcvskillcolumns[][][<length>]
+    \ifdefempty{\arg at new@hintscolumnwidth}{%
+        % Case \setcvskillcolumns[], \setcvskillcolumns[][] or \setcvskillcolumns[][<somefactor>]
+        \ifdefempty{\arg at new@bodyLengthFactor}{%
+            % Case \setcvskillcolumns[][] do nothing here and check if third argument is empty
+            \ifdefempty{\arg at new@experienceWidth}{%
+                % Case \setcvskillcolumns[][][] do nothing here
+            }{%
+                % Case \setcvskillcolumns[][][<length>]. reset \cvskill at experiencewidth and
+                % \cvskill at descriptorwidth accordingly
+                \setlength{\cvskill at experiencewidth}{\arg at new@experienceWidth}%
+                \setlength{\cvskill at descriptorwidth}{\skillmatrix at columnwidth-\cvskill at width-\cvskill at experiencewidth}%
+            }%
+        }{%
+            % Case \setcvskillcolumns[][<somefactor>], \setcvskillcolumns[][<somefactor>][<possilly length>]
+            \setlength{\skillmatrix at columnwidth}{\arg at new@bodyLengthFactor\skillmatrix at bodylength}%
+            \ifdefempty{\arg at new@experienceWidth}{%
+                % Case \setcvskillcolumns[][<somefactor>][] do nothing here
+            }{%
+                % Case \setcvskillcolumns[][<somefactor>][<length>]. reset \cvskill at experiencewidth and
+                % \cvskill at descriptorwidth accordingly
+                \setlength{\cvskill at experiencewidth}{\arg at new@experienceWidth}%
+                \setlength{\cvskill at descriptorwidth}{\skillmatrix at columnwidth-\cvskill at width-\cvskill at experiencewidth}%
+            }%            
+            \setlength{\cvskill at descriptorwidth}{\skillmatrix at columnwidth-\cvskill at width-\cvskill at experiencewidth}%
+            \setlength{\skillmatrix at commentwidth}{\skillmatrix at bodylength-\skillmatrix at columnwidth-3\skillmatrix at padding}%
+        }%
+        % Case \setcvskillcolumns[] nothing needs to be done here recalculate lengths affected by the change
+    }{% 
+        % Case \setcvskillcolumns, \setcvskillcolumns[<width>], \setcvskillcolumns[<width>][] 
+        % or \setcvskillcolumns[<width>][<somefactor>]
+        \setlength{\skillmatrix at hintscolumnwidth}{\arg at new@hintscolumnwidth}%
+        \setlength{\skillmatrix at bodylength}{\maincolumnwidth-\skillmatrix at hintscolumnwidth-\separatorcolumnwidth}%
+        % in case second argument is given but left empty use default
+        \ifdefempty{\arg at new@bodyLengthFactor}{%
+            % Case \setcvskillcolumns[<width>][] do nothing here and use default
+            % \skillmatrix at columnwidth and check third argument
+            \ifdefempty{\arg at new@experienceWidth}{%
+                % Case \setcvskillcolumns[<width>][][] do nothing here
+            }{%
+                % Case \setcvskillcolumns[<width>][][<length>]. reset \cvskill at experiencewidth and
+                % \cvskill at descriptorwidth accordingly
+                \setlength{\cvskill at experiencewidth}{\arg at new@experienceWidth}%
+%                 \setlength{\cvskill at descriptorwidth}{\skillmatrix at columnwidth-\cvskill at width-\cvskill at experiencewidth}%
+            }%
+        }{%
+            % Case \setcvskillcolumns, \setcvskillcolumns[<width>], \setcvskillcolumns[<width>][<somefactor>]
+            \setlength{\skillmatrix at columnwidth}{\arg at new@bodyLengthFactor\skillmatrix at bodylength}%
+            \ifdefempty{\arg at new@experienceWidth}{%
+                % Case \setcvskillcolumns[<width>][<somefactor>][] do nothing here
+            }{%
+                % Case \setcvskillcolumns[<width>][<somefactor>][<length>]. reset \cvskill at experiencewidth and
+                % \cvskill at descriptorwidth accordingly
+                \setlength{\cvskill at experiencewidth}{\arg at new@experienceWidth}%
+%                 \setlength{\cvskill at descriptorwidth}{\skillmatrix at columnwidth-\cvskill at width-\cvskill at experiencewidth}%
+            }%
+        }%
+        \setlength{\cvskill at descriptorwidth}{\skillmatrix at columnwidth-\cvskill at width-\cvskill at experiencewidth}%
+        \setlength{\skillmatrix at commentwidth}{\skillmatrix at bodylength-\skillmatrix at columnwidth-3\skillmatrix at padding}%
+    }%
+}%
+% 
+% \setcvskilllegendcolumns[<width>][<factor>]
+\DeclareDocumentCommand{\setcvskilllegendcolumns}{+O{\skilllegend at hintscolumnwidth} +O{\skilllegend at leftdesriptorfactor}}{%
+%   adjust column width of legend
+% 
+%   The \cvskilllegend command comes with default FIXED width definitions for the columns of the legend matrix 
+%   such that the default english and german examples look good. 
+%   However, depending on the user input (translation) and the style that is used some adjustment might be needed. 
+%   The \setcvskilllegendcolumns command provides means to influence all columns except the ones containing 
+%   \cvskill commands. The second column containg the output of \cvskill remains fixed width. The last column,
+%   the comment column gets recalculated according to the setting of the other columns.
+% 
+%   Input
+%       Input_1 (optional):     length smaller than \textwidth influencing the width of the first column 
+%                               where depending on the style the legend_string gets printed. In case the 
+%                               string is left empty adjusting this width allows moving the legend horizontally.  
+%                               Default <\skilllegend at hintscolumnwidth>
+%       Input_2 (optional):     float between 0 and 1 influencing the width of the left legend descritor column, 
+%                               aka \cvskilllegend at leftdescriptorwidth. The desriptor column on the right, 
+%                               \cvskilllegend at rightdescriptorwidth is influenced by the factor 1-<factor>.
+%                               Default <\skilllegend at leftdesriptorfactor>
+% 
+%   Example usage
+%       \setcvskilllegendcolumns[][0.45]%%    adjust left desriptor column.
+%       \setcvskilllegendcolumns[\widthof{``Legend''}][0.45]%   adjust both left descriptor column and string column
+% 
+%   Note
+%       - Due to implementation of \cvskilllegend for style 'fancy' (moderncvbodyv) 
+%         the first optional variable has no effect in this case.
+%       - For the styles 'classic' and 'casual' the first column is set to hintscolumnwidth such that
+%         it aligns with the rest of the entries. A readjustment of the first column should therefor 
+%         be avoided. It is recomended to only use \cvskilllegend in the form of 
+%         \cvskilllegend[][<factor>], thereby leaving the defaults in place for the first column.
+%       - For style 'banking' the first column is set to align with the rest of the \cvskillentry entries
+%         Therefor adjusting the first column can be used to widen the table while moving it around. If no 
+%         legend string is used, setting \cvskilllegend[0em] maximises the real enstate for the legend.
+%
+    \def\arg at new@legend at hintscolumnwidth{#1}%
+    \def\arg at new@legend at leftDescriptorFactor{#2}%
+    % Check for empty arguments. See explanation above
+    \ifdefempty{\arg at new@legend at hintscolumnwidth}{%
+        % Case \setcvskilllegendcolumns[], \setcvskilllegendcolumns[][] or \setcvskilllegendcolumns[][<somefactor>]
+        \ifdefempty{\arg at new@legend at leftDescriptorFactor}{%
+%             % Case \setcvskilllegendcolumns[][] do nothing here, i.e. leave default values unaltered
+        }{%
+            % Case \setcvskilllegendcolumns[][<somefactor>], \setcvskilllegendcolumns[][<somefactor>]
+            \RenewDocumentCommand{\skilllegend at leftdesriptorfactor}{}{\arg at new@legend at leftDescriptorFactor}%
+        }%
+%         % Case \setcvskilllegendcolumns[] nothing needs to be done here i.e. leave default values unaltered
+    }{% 
+        % Case \setcvskilllegendcolumns, \setcvskilllegendcolumns[<width>], \setcvskilllegendcolumns[<width>][] 
+        % or \setcvskilllegendcolumns[<width>][<somefactor>]
+        \setlength{\skilllegend at hintscolumnwidth}{\arg at new@legend at hintscolumnwidth}%
+        \if at moderncvbodyi%
+            \setlength{\skilllegend at bodylength}{\textwidth-\skilllegend at hintscolumnwidth-\separatorcolumnwidth}%
+        \fi%
+        \if at moderncvbodyiii%
+            \setlength{\skilllegend at bodylength}{\textwidth-\skilllegend at hintscolumnwidth-\separatorcolumnwidth}%
+        \fi%
+        \if at moderncvbodyiv%
+            \setlength{\skilllegend at bodylength}{\maincolumnwidth-\skilllegend at hintscolumnwidth-\separatorcolumnwidth}%
+        \fi%
+        % in case second argument is given but left empty use default
+        \ifdefempty{\arg at new@legend at leftDescriptorFactor}{%
+            % Case \setcvskilllegendcolumns[<width>][] do nothing here and leave default values unaltered
+        }{%
+            % Case \setcvskilllegendcolumns, \setcvskilllegendcolumns[<width>], \setcvskilllegendcolumns[<width>][<somefactor>]
+            \RenewDocumentCommand{\skilllegend at leftdesriptorfactor}{}{\arg at new@legend at leftDescriptorFactor}%
+        }%
+    }%
+}%
+% 
+% %-------------------------------------------------------------------------------
+% %                \cvskilllegend 
+% %-------------------------------------------------------------------------------
+% default legend style
+% \cvskilllegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
+\NewDocumentCommand\skillLegend at FontSize{}{\scriptsize}
+\DeclareDocumentCommand\cvskilllegend{s +O{} +O{} +O{} +O{} +O{} +O{} +m}{}%
+%   Print legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
+% 
+%   Input:
+%       asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style. 
+%                           For the fancy style, the asterix has no meaning.
+%       input_1 (optional): padding length appended to the legend, default: <0.25em>
+%       input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
+%       input_3 (optional): string describing meaning of \cvskill{2}, default: <intermediate knowledge with some project experience>
+%       input_4 (optional): string describing meaning of \cvskill{3}, default: <extensive project experience>
+%       input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
+%       input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
+%       input_7:            string giving a name to the legend, default: <>
+% 
+%   Example usages:
+%       \cvskilllegend{}    print default legend
+%       \cvskilllegend[0.5em]{Legend}   print default legend, but adjust post padding and display the word ``Legend''.
+%       \cvskilllegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende}     Fully adjust legend to German example and including dashed lines
+% 
+%   Note:
+%       -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
+%       -The design of the table is such that the <second_level> entry stands in the first column but 
+%       occupies rows two and three. This has been done to accomodate english and german defaults.
+%       An alternative is provided by \cvskillplainlegend
+
+% declare default legend entries
+\NewDocumentCommand\skillLegend at defaultLevelOne{}{basic knowledge}
+\NewDocumentCommand\skillLegend at defaultLevelTwo{}{intermediate knowledge with some project experience}
+\NewDocumentCommand\skillLegend at defaultLevelThree{}{extensive project experience}
+\NewDocumentCommand\skillLegend at defaultLevelFour{}{deepened expert knowledge}
+\NewDocumentCommand\skillLegend at defaultLevelFive{}{expert\,/\,specialist}
+% Redefinition of \cvskilllegend valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii
+\RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend at defaultLevelOne} +O{\skillLegend at defaultLevelTwo} +O{\skillLegend at defaultLevelThree} +O{\skillLegend at defaultLevelFour} +O{\skillLegend at defaultLevelFive} +m}{%
+    \IfBooleanTF#1{% if a star is given, add dashed line
+        \begingroup%
+            \arrayrulecolor{color1}%
+            % calculate descriptor widths
+            \setlength{\cvskilllegend at leftdescriptorwidth}{\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-3\skilllegend at padding}%
+            \setlength{\cvskilllegend at rightdescriptorwidth}{\skilllegend at bodylength-\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-3\skilllegend at padding}%
+            \begin{tabular}{@{}p{\skilllegend at hintscolumnwidth}%
+                            @{\hspace{\separatorcolumnwidth}}%
+                            p{\cvskill at width}@{\hspace{\skilllegend at padding}};{.6pt/1pt}%%
+                            p{2\skilllegend at padding}p{\cvskilllegend at leftdescriptorwidth}@{}@{\hspace{2\skillmatrix at padding}}%
+                            p{\cvskill at width}@{\hspace{\skilllegend at padding}};{.6pt/1pt}%
+                            p{2\skilllegend at padding}%
+                            p{\cvskilllegend at rightdescriptorwidth}@{}}%
+                \raggedleft\hintstyle{#8}  & \cvskill{1}& & {\skillLegend at FontSize #3} & \cvskill{3}& &{\skillLegend at FontSize #5 } \\%
+                            %
+                        & \cvskill{2} & & \multirow{2}{\cvskilllegend at leftdescriptorwidth}{{\skillLegend at FontSize #4}} & \cvskill{4}& & {\skillLegend at FontSize #6 } \\%
+                    %         
+                        &  & &  & \cvskill{5}& & {\skillLegend at FontSize #7 }%
+            \end{tabular}%
+        \endgroup
+        \par\addvspace{#2}}{%
+        % if no star is given, do not add dashed line. We need less padding in this case
+        \begingroup%
+            % calculate descriptor columns width. note the adjusted padding
+            \setlength{\cvskilllegend at leftdescriptorwidth}{\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-1\skilllegend at padding}%
+            \setlength{\cvskilllegend at rightdescriptorwidth}{\skilllegend at bodylength-\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-1\skilllegend at padding}%
+            \begin{tabular}{@{}p{\skilllegend at hintscolumnwidth}%
+                            @{\hspace{\separatorcolumnwidth}}%
+                            p{\cvskill at width}@{\hspace{\skilllegend at padding}}%
+                            p{\cvskilllegend at leftdescriptorwidth}@{\hspace{2\skillmatrix at padding}}%
+                            p{\cvskill at width}@{\hspace{\skilllegend at padding}}%
+                            p{\cvskilllegend at rightdescriptorwidth}@{}}%
+                \raggedleft\hintstyle{#8}  & \cvskill{1}\, & \,{\skillLegend at FontSize #3} & \cvskill{3}\, &\,{\skillLegend at FontSize #5 } \\%
+                            %
+                        & \cvskill{2}\, & \,\multirow{2}{\cvskilllegend at leftdescriptorwidth}{{\skillLegend at FontSize #4}} & \cvskill{4}\,  &\,{\skillLegend at FontSize #6 } \\%
+                    %         
+                        &  &   & \cvskill{5}\, &\,{\skillLegend at FontSize #7 }%
+            \end{tabular}%
+        \endgroup%
+        \par\addvspace{#2}%
+    }%
+}%
+% Redefinition of \cvskilllegend valid for moderncvbodyiv
+\if at moderncvbodyiv%
+    \RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend at defaultLevelOne} +O{\skillLegend at defaultLevelTwo} +O{\skillLegend at defaultLevelThree} +O{\skillLegend at defaultLevelFour} +O{\skillLegend at defaultLevelFive} +m}{%
+        \def\arg at legendString{#8}%
+        \ifdefempty{\arg at legendString}{%
+        }{%
+            \cvitem[0.25em]{\hintstyle{#8}}{}%
+        }%
+        \IfBooleanTF#1{% if a star is given, add dashed line
+            \begingroup%
+                % recalculate desrciptor widths on the fly. Allows for different padding 
+                % in the stared and nonstared case
+                \setlength{\cvskilllegend at leftdescriptorwidth}{\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-4\skilllegend at padding}%
+                \setlength{\cvskilllegend at rightdescriptorwidth}{\skilllegend at bodylength-\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-4\skilllegend at padding}%
+                \arrayrulecolor{color1}
+                \begin{tabular}{@{}p{\skilllegend at hintscolumnwidth}
+                                @{\hspace{\separatorcolumnwidth}}p{\cvskill at width}@{\hspace{\skilllegend at padding}};{.6pt/1pt}%
+                                p{2\skilllegend at padding}%
+                                p{\cvskilllegend at leftdescriptorwidth}@{\hspace{\skillmatrix at padding}}%
+                                p{\cvskill at width}@{\hspace{\skilllegend at padding}};{.6pt/1pt}%
+                                p{2\skilllegend at padding}p{\cvskilllegend at rightdescriptorwidth}@{}}%
+                    \raggedleft\hintstyle{}  & \cvskill{1} & & {\skillLegend at FontSize #3} & \cvskill{3} & & {\skillLegend at FontSize #5 } \\
+                                %
+                            & \cvskill{2} & & \multirow{2}{\cvskilllegend at leftdescriptorwidth}{{\skillLegend at FontSize #4}} & \cvskill{4} &  &{\skillLegend at FontSize #6 } \\
+                        %         
+                            & & &   & \cvskill{5}& & {\skillLegend at FontSize #7 } 
+                \end{tabular}%
+            \endgroup%
+            \par\addvspace{#2}}{
+            \begingroup%
+                % oddly enough, we should only need to subtract 2 paddings in the descritorwidths. 
+                % but while testing I got overflow of text into the margin
+                \setlength{\cvskilllegend at leftdescriptorwidth}{\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-4\skilllegend at padding}%
+                \setlength{\cvskilllegend at rightdescriptorwidth}{\skilllegend at bodylength-\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-5\skilllegend at padding}%
+                \begin{tabular}{@{}p{\skilllegend at hintscolumnwidth}
+                                @{\hspace{\separatorcolumnwidth}}p{\cvskill at width}@{\hspace{2\skilllegend at padding}}%
+                                p{\cvskilllegend at leftdescriptorwidth}@{\hspace{2\skillmatrix at padding}}%
+                                p{\cvskill at width}@{\hspace{2\skilllegend at padding}}%
+                                p{\cvskilllegend at rightdescriptorwidth}@{}}%
+                    \raggedleft\hintstyle{}  & \cvskill{1} & {\skillLegend at FontSize #3} & \cvskill{3} & {\skillLegend at FontSize #5 } \\
+                                %
+                            & \cvskill{2} & \multirow{2}{\cvskilllegend at leftdescriptorwidth}{{\skillLegend at FontSize #4}} & \cvskill{4} &{\skillLegend at FontSize #6 } \\
+                        %         
+                            & &   & \cvskill{5} & {\skillLegend at FontSize #7 } 
+                \end{tabular}%
+            \endgroup%
+            \par\addvspace{#2}
+        }
+    }
+\fi
+% Redefinition of \cvskilllegend valid for moderncvbodyv
+\if at moderncvbodyv%
+    \DeclareDocumentCommand\@starIndependentTabular{}{}%
+    \RenewDocumentCommand\cvskilllegend{s +O{.25em} +O{\skillLegend at defaultLevelOne} +O{\skillLegend at defaultLevelTwo} +O{\skillLegend at defaultLevelThree} +O{\skillLegend at defaultLevelFour} +O{\skillLegend at defaultLevelFive} +m}{%
+        % check whether Argument #8 is given and if so provide it as cvitem
+        \def\arg at legendString{#8}%
+        \ifdefempty{\arg at legendString}{%
+            \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
+        }{%
+            \cvitem[-0.5em]{#8}{}%
+        }%
+        \arrayrulecolor{color1}%
+        \setlength\arrayrulewidth{\separatorrulewidth}%
+        \RenewDocumentCommand{\@starIndependentTabular}{}{%
+            \begingroup%
+            \setlength{\cvskilllegend at leftdescriptorwidth}{\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-3\skilllegend at padding}%
+            \setlength{\cvskilllegend at rightdescriptorwidth}{\skilllegend at bodylength-\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-3\skilllegend at padding}%
+%             \renewcommand{\arraystretch}{1.0}%
+            \begin{tabular}[t]{@{}p{\hintscolumnwidth}%\skilllegend at hintscolumnwidth
+                    @{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}%
+                    p{\cvskill at width}@{\hspace{3\skilllegend at padding}}%
+                    p{\cvskilllegend at leftdescriptorwidth}@{\hspace{2\skillmatrix at padding}}%
+                    p{\cvskill at width}@{\hspace{3\skilllegend at padding}}%
+                    p{\cvskilllegend at rightdescriptorwidth}@{}}%
+                \@moderncvstrut{4pt}{16pt}  & \cvskill{1}& {\skillLegend at FontSize #3} & \cvskill{3}& {\skillLegend at FontSize #5 }\\%
+                            %
+                        & \cvskill{2}& \multirow{2}{\cvskilllegend at leftdescriptorwidth}{{\skillLegend at FontSize #4}} & \cvskill{4}& {\skillLegend at FontSize #6 }\\%
+                    %         
+                        & & & \cvskill{5} & {\skillLegend at FontSize #7 }\\[#2]% the spacing needs to be inside the cell for the vertical rule to extend correctly
+            \end{tabular}%
+            \endgroup%
+            \par\@aftersectionfalse\ignorespaces%    
+        }%
+        % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines. 
+        \IfBooleanTF#1{%
+                \@starIndependentTabular%
+            }{% 
+                \@starIndependentTabular%
+        }%
+    }%
+\fi
+
+% %-------------------------------------------------------------------------------
+% %                \cvskillplainlegend 
+% %-------------------------------------------------------------------------------
+% alternative legend style
+% \cvskillplainlegend[*][<post_padding>][<first_level>][<second_level>][<third_level>][<fourth_level>][<fifth_level>]{<name>}
+\DeclareDocumentCommand\cvskillplainlegend{s +O{} +O{} +O{} +O{} +O{} +O{} +m}{}%
+%   Print alternative legend table explaining the meaning of \cvskill{1}...\cvskill{5}.
+%   In this legend, the first three skill levels are in one column
+% 
+%   Input:
+%       asterix (optional): include vertical (dashed) lines. This behaviour depends on the body style. 
+%                           For the fancy style, the asterix has no meaning.
+%       input_1 (optional): padding length appended to the legend, default: <0.25em>
+%       input_2 (optional): string describing meaning of \cvskill{1}, default: <basic knowledge>
+%       input_3 (optional): string describing meaning of \cvskill{2}, default: <intermediate knowledge with some project experience>
+%       input_4 (optional): string describing meaning of \cvskill{3}, default: <extensive project experience>
+%       input_5 (optional): string describing meaning of \cvskill{4}, default: <deepened expert knowledge>
+%       input_6 (optional): string describing meaning of \cvskill{5}, default: <expert/guru>
+%       input_7:            string giving a name to the legend, default: <>
+% 
+%   Example usages:
+%       \cvskillplainlegend{}    print default legend
+%       \cvskillplainlegend[0.5em]{Legend}   print default legend, but adjust post padding and display the word ``Legend''.
+%       \cvskillplainlegend*[0.2em][Grundkenntnisse][Grundkenntnisse und eigene Erfahrung in Projekten][Umfangreiche Erfahrung in Projekten][Vertiefte Expertenkenntnisse][Experte/Guru]{Legende}     Fully adjust legend to German example and including dashed lines
+% 
+%   Note:
+%       -The width of the columns can be adjusted by the \setcvskilllegendcolumns, see \setcvskilllegendcolumns
+
+% declare default legend entries
+\NewDocumentCommand\skillPlainLegend at defaultLevelOne{}{basic knowlegde}
+\NewDocumentCommand\skillPlainLegend at defaultLevelTwo{}{intermediate knowledge, some project experience}
+\NewDocumentCommand\skillPlainLegend at defaultLevelThree{}{extensive project experience}
+\NewDocumentCommand\skillPlainLegend at defaultLevelFour{}{deepened expert knowledge}
+\NewDocumentCommand\skillPlainLegend at defaultLevelFive{}{expert/guru}
+% Redefinition of \cvskillplainlegend valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii
+\RenewDocumentCommand\cvskillplainlegend{s +O{.25em} +O{\skillPlainLegend at defaultLevelOne} +O{\skillPlainLegend at defaultLevelTwo} +O{\skillPlainLegend at defaultLevelThree} +O{\skillPlainLegend at defaultLevelFour} +O{\skillPlainLegend at defaultLevelFive} +m}{%
+    \IfBooleanTF#1{% if a star is given, add dashed line
+        \begingroup%
+            \arrayrulecolor{color1}%
+            % calculate descriptor widths
+            \setlength{\cvskilllegend at leftdescriptorwidth}{\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-3\skilllegend at padding}%
+            \setlength{\cvskilllegend at rightdescriptorwidth}{\skilllegend at bodylength-\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-3\skilllegend at padding}%
+            \begin{tabular}{@{}p{\skilllegend at hintscolumnwidth}%
+                            @{\hspace{\separatorcolumnwidth}}%
+                            p{\cvskill at width}@{\hspace{\skilllegend at padding}};{.6pt/1pt}%%
+                            p{2\skilllegend at padding}p{\cvskilllegend at leftdescriptorwidth}@{}@{\hspace{2\skillmatrix at padding}}%
+                            p{\cvskill at width}@{\hspace{\skilllegend at padding}};{.6pt/1pt}%
+                            p{2\skilllegend at padding}%
+                            p{\cvskilllegend at rightdescriptorwidth}@{}}%
+                \raggedleft\hintstyle{#8}  & \cvskill{1}& & {\skillLegend at FontSize #3} & \cvskill{4}& &{\skillLegend at FontSize #6} \\%
+                            %
+                        & \cvskill{2} & & {\skillLegend at FontSize #4} & \cvskill{5}& & {\skillLegend at FontSize #7} \\%
+                    %         
+                        & \cvskill{3} & & {\skillLegend at FontSize #5} & & & %
+            \end{tabular}%
+        \endgroup%
+        \par\addvspace{#2}}{%
+        % if no star is given, do not add dashed line
+        \begingroup%
+            % calculate descriptor widths, note that we use less padding
+            \setlength{\cvskilllegend at leftdescriptorwidth}{\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-2\skilllegend at padding}%
+            \setlength{\cvskilllegend at rightdescriptorwidth}{\skilllegend at bodylength-\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-2\skilllegend at padding}%
+            \begin{tabular}{@{}p{\skilllegend at hintscolumnwidth}%
+                            @{\hspace{\separatorcolumnwidth}}%
+                            p{\cvskill at width}@{\hspace{2\skilllegend at padding}}%
+                            p{\cvskilllegend at leftdescriptorwidth}@{\hspace{2\skillmatrix at padding}}%
+                            p{\cvskill at width}@{\hspace{2\skilllegend at padding}}%
+                            p{\cvskilllegend at rightdescriptorwidth}@{}}%
+                \raggedleft\hintstyle{#8}  & \cvskill{1} & {\skillLegend at FontSize #3} & \cvskill{4} &{\skillLegend at FontSize #6} \\%
+                            %
+                        & \cvskill{2} & {\skillLegend at FontSize #4} & \cvskill{5}  &{\skillLegend at FontSize #7} \\%
+                    %         
+                        & \cvskill{3} & {\skillLegend at FontSize #5 }  &  & %
+            \end{tabular}%
+        \endgroup%
+        \par\addvspace{#2}%
+    }%
+}%
+% Redefinition of \cvskillplainlegend valid for moderncvbodyiv
+\if at moderncvbodyiv%
+    \RenewDocumentCommand\cvskillplainlegend{s +O{.25em} +O{\skillPlainLegend at defaultLevelOne} +O{\skillPlainLegend at defaultLevelTwo} +O{\skillPlainLegend at defaultLevelThree} +O{\skillPlainLegend at defaultLevelFour} +O{\skillPlainLegend at defaultLevelFive} +m}{%
+        \def\arg at legendString{#8}%
+        \ifdefempty{\arg at legendString}{%
+        }{%
+            \cvitem[0.25em]{\hintstyle{#8}}{}%
+        }%
+        \IfBooleanTF#1{% if a star is given, add dashed line
+            \begingroup%
+                \arrayrulecolor{color1}
+                \setlength{\cvskilllegend at leftdescriptorwidth}{\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-6\skilllegend at padding}%
+                \setlength{\cvskilllegend at rightdescriptorwidth}{\skilllegend at bodylength-\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-6\skilllegend at padding}%
+                \begin{tabular}{@{}p{\skilllegend at hintscolumnwidth}
+                                @{\hspace{\separatorcolumnwidth}}p{\cvskill at width}@{\hspace{\skilllegend at padding}};{.6pt/1pt}%
+                                p{2\skilllegend at padding}%
+                                p{\cvskilllegend at leftdescriptorwidth}@{\hspace{2\skillmatrix at padding}}%
+                                p{\cvskill at width}@{\hspace{\skilllegend at padding}};{.6pt/1pt}%
+                                p{2\skilllegend at padding}p{\cvskilllegend at rightdescriptorwidth}@{}}%
+                    \raggedleft\hintstyle{} & \cvskill{1} & & {\skillLegend at FontSize#3} & \cvskill{4} & & {\skillLegend at FontSize#6}\\%
+                                %
+                            & \cvskill{2} & &{\skillLegend at FontSize#4} & \cvskill{5} &  &{\skillLegend at FontSize#7}\\%
+                        %         
+                            & \cvskill{3} & &{\skillLegend at FontSize#5} & & &% 
+                \end{tabular}%
+            \endgroup%
+            \par\addvspace{#2}}{
+            % if no star is given, do not add dashed line
+            \begingroup
+                \setlength{\cvskilllegend at leftdescriptorwidth}{\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-3\skilllegend at padding}%
+                \setlength{\cvskilllegend at rightdescriptorwidth}{\skilllegend at bodylength-\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-4\skilllegend at padding}%
+                \begin{tabular}{@{}p{\skilllegend at hintscolumnwidth}
+                                @{\hspace{\separatorcolumnwidth}}p{\cvskill at width}@{\hspace{\skilllegend at padding}}%
+                                p{\cvskilllegend at leftdescriptorwidth}@{\hspace{2\skillmatrix at padding}}%
+                                p{\cvskill at width}@{\hspace{\skilllegend at padding}}%
+                                p{\cvskilllegend at rightdescriptorwidth}@{}}%
+                    \raggedleft\hintstyle{}  & \cvskill{1} & {\skillLegend at FontSize #3} & \cvskill{4} & {\skillLegend at FontSize #6} \\
+                                %
+                            & \cvskill{2} & {\skillLegend at FontSize #4} & \cvskill{5} & {\skillLegend at FontSize #7} \\
+                        %         
+                            & \cvskill{3} & {\skillLegend at FontSize #5}  & & %
+                \end{tabular}%
+            \endgroup
+            \par\addvspace{#2}
+        }
+    }
+\fi
+% Redefinition of \cvskillplainlegend valid for moderncvbodyv
+\if at moderncvbodyv%
+    \RenewDocumentCommand\cvskillplainlegend{s +O{.25em} +O{\skillPlainLegend at defaultLevelOne} +O{\skillPlainLegend at defaultLevelTwo} +O{\skillPlainLegend at defaultLevelThree} +O{\skillPlainLegend at defaultLevelFour} +O{\skillPlainLegend at defaultLevelFive} +m}{%
+        % check whether Argument #8 is given and if so provide it as cvitem
+        \def\arg at legendString{#8}%
+        \ifdefempty{\arg at legendString}{%
+            \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
+        }{%
+            \cvitem[-0.5em]{#8}{}%
+        }%
+        \arrayrulecolor{color1}%
+        \setlength\arrayrulewidth{\separatorrulewidth}%
+        \RenewDocumentCommand{\@starIndependentTabular}{}{%
+            \begingroup%
+%             \renewcommand{\arraystretch}{1.0}%
+            \setlength{\cvskilllegend at leftdescriptorwidth}{\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-2\skilllegend at padding}%
+            \setlength{\cvskilllegend at rightdescriptorwidth}{\skilllegend at bodylength-\skilllegend at leftdesriptorfactor\skilllegend at bodylength-\cvskill at width-\skillmatrix at padding-2\skilllegend at padding}%
+            \begin{tabular}[t]{@{}p{\hintscolumnwidth}%\skilllegend at hintscolumnwidth
+                    @{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}%
+                    p{\cvskill at width}@{\hspace{2\skilllegend at padding}}%
+                    p{\cvskilllegend at leftdescriptorwidth}@{\hspace{2\skillmatrix at padding}}%
+                    p{\cvskill at width}@{\hspace{2\skilllegend at padding}}%
+                    p{\cvskilllegend at rightdescriptorwidth}@{}}%
+                \@moderncvstrut{4pt}{16pt}  & \cvskill{1} & {\skillLegend at FontSize #3} & \cvskill{4} & {\skillLegend at FontSize #6}\\%
+                            %
+                        & \cvskill{2} & {\skillLegend at FontSize #4} & \cvskill{5} & {\skillLegend at FontSize #7}\\%
+                    %         
+                        & \cvskill{3} & {\skillLegend at FontSize #5}  & & \\[#2]% the spacing needs to be inside the cell for the vertical rule to extend correctly
+            \end{tabular}%
+            \endgroup%
+            \par\@aftersectionfalse\ignorespaces%    
+        }%
+        % because of this weird style and the position of the parameter [#2], the dashed lines of the other version look bad. So no lines. 
+        \IfBooleanTF#1{%
+                \@starIndependentTabular%
+            }{% 
+                \@starIndependentTabular%
+        }%
+    }%
+\fi
+
+% %-------------------------------------------------------------------------------
+% %                \cvskillhead
+% %-------------------------------------------------------------------------------
+\NewDocumentCommand\cvSkillMatrix at HeadFont{}{\normalfont}
+\DeclareDocumentCommand\cvskillhead{+O{} +O{} +O{} +O{} +O{}}{}%
+%   add skill matrix line acting as header explaining the meaning of columns.
+% 
+%   Input:
+%       input_1 (optional): padding length appended to the legend, default: <0.25em>
+%       input_2 (optional): string naming the level column (2nd column), default: <Level>
+%       input_3 (optional): string naming the skill column (3nd column), default: <Skill>
+%       input_4 (optional): string naming the experience-in-years column (4th column), default: <Years>
+%       input_5 (optional): string naming the comment column (5th column), default: <Comment>
+% 
+%   Example usages:
+%       \cvskillhead    print default head.
+%       \cvskillhead[0.5em]   print default head, but adjust post padding.
+%       \cvskillhead[0.25em][Level][F\"ahigkeit][Jahre][Bemerkung]     Fully adjust head to German example
+% 
+%   Note:   
+%       - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
+
+\NewDocumentCommand\skillMatrix at HeaderDefaultOne{}{Level}
+\NewDocumentCommand\skillMatrix at HeaderDefaultTwo{}{Skill}
+\NewDocumentCommand\skillMatrix at HeaderDefaultThree{}{Years}
+\NewDocumentCommand\skillMatrix at HeaderDefaultFour{}{Comment}
+% Definition of \cvskillhead valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii, moderncvbodyiv
+\RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix at HeaderDefaultOne} +O{\skillMatrix at HeaderDefaultTwo} +O{\skillMatrix at HeaderDefaultThree} +O{\skillMatrix at HeaderDefaultFour}}{%
+    \begingroup
+        \renewcommand{\arraystretch}{1.25}
+        \arrayrulecolor{color1}
+        \begin{tabular}{@{}p{\skillmatrix at hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}%
+                p{\cvskill at width}@{\hspace{\skillmatrix at padding}}%
+                p{\cvskill at descriptorwidth}@{\hspace{\skillmatrix at padding}}%
+                p{\cvskill at experiencewidth}@{\hspace{\skillmatrix at padding}}
+                p{\skillmatrix at commentwidth}@{}}%
+            & \centering{\cvSkillMatrix at HeadFont #2} & \centering{\cvSkillMatrix at HeadFont #3} & \centering{\cvSkillMatrix at HeadFont #4} & {\cvSkillMatrix at HeadFont #5}  
+        \end{tabular}%
+    \endgroup
+    \par\addvspace{#1}
+}
+% Definition of \cvskillhead valid moderncvbodyv
+\if at moderncvbodyv%
+    \RenewDocumentCommand\cvskillhead{O{.25em} +O{\skillMatrix at HeaderDefaultOne} +O{\skillMatrix at HeaderDefaultTwo} +O{\skillMatrix at HeaderDefaultThree} +O{\skillMatrix at HeaderDefaultFour}}{%
+        \arrayrulecolor{color1}%
+        \setlength\arrayrulewidth{\separatorrulewidth}%
+        \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
+        \begingroup%
+    %     \renewcommand{\arraystretch}{1.25}%
+        \begin{tabular}[t]{@{}p{\hintscolumnwidth}%
+                @{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}%
+                p{\skillmatrix at hintscolumnwidth}%
+                @{\hspace{\skillmatrix at padding}}%
+                p{\cvskill at width}@{\hspace{\skillmatrix at padding}}%
+                p{\cvskill at descriptorwidth}@{\hspace{\skillmatrix at padding}}%
+                p{\cvskill at experiencewidth}@{\hspace{\skillmatrix at padding}}%
+                p{\skillmatrix at commentwidth}@{}}%
+            & & \centering{\cvSkillMatrix at HeadFont#2} & \centering{\cvSkillMatrix at HeadFont#3} & \centering{\cvSkillMatrix at HeadFont#4} & {\cvSkillMatrix at HeadFont#5} \\[#1]% the spacing needs to be inside the cell for the vertical rule to extend correctly
+        \end{tabular}%
+        \endgroup%
+        \par\@aftersectionfalse\ignorespaces%    
+    }%
+\fi
+
+% %-------------------------------------------------------------------------------
+% %                \cvskillentry 
+% %-------------------------------------------------------------------------------
+% \cvskillentry[*][<post_padding>]{<skill_cathegory>}{<0-5>}{<skill_name>}{<years_of_experience>}{<comment>}%
+\DeclareDocumentCommand\cvskillentry{s +O{} +m +m +m +m +m}{}%
+%     add cvskill matrix row.
+% 
+%     Input:
+%         asterix (optional): include horizontal (dashed) line above the entered line. This behaviour depends on the body style. 
+%                             For the fancy style, the asterix has no meaning.
+%         input_1 (optional): padding length appended to the legend, default: <0.25em>
+%         input_2: string, naming skill cathegory, default: <>
+%         input_3: integer between 0 and 5, describing level of skill. \cvskill{input_2} is called internally, default: <>
+%         input_4: string, naming the skill, default: <>
+%         input_5: positive real number, stating the number of years of experience with this skill , default: <>
+%         input_6: string, explaining details w.r.t. that particual skill default: <>
+% 
+%     Example usages:
+%         \cvskillentry*{Language:}{3}{Python}{2}{I have done a million projects with Python}
+%         \cvskillentry{}{2}{Lilypond}{14}{So much sheet music! Man I'm the best!}
+%         \cvskillentry{}{3}{\LaTeX}{14}{Clearly I rock at \LaTeX}
+%         \cvskillentry*[1.5em]{OS:}{3}{Linux}{2}{I only use Archlinux}
+% 
+%     Note:   
+%         - The width of the columns can be adjusted by the \setcvskillcolumns command, see \setcvskillcolumns.
+
+% Definition of \cvskillentry valid for moderncvbodyi, moderncvbodyii, moderncvbodyiii, moderncvbodyiv
+\RenewDocumentCommand\cvskillentry{s +O{.25em} +m +m +m +m +m}{%
+    %test for the star * in the command
+    \IfBooleanTF{#1}{% If a star is seen a dotted line is drawn above the entry
+        \begingroup
+            \renewcommand{\arraystretch}{1.25}
+            \arrayrulecolor{color1}
+            \begin{tabular}{@{}p{\skillmatrix at hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}%
+                    p{\cvskill at width}@{\hspace{\skillmatrix at padding}}%
+                    p{\cvskill at descriptorwidth}@{\hspace{\skillmatrix at padding}}%
+                    p{\cvskill at experiencewidth} @{\hspace{\skillmatrix at padding}}%
+                    p{\skillmatrix at commentwidth}@{}}%
+                \cdashline{2-5}[.6pt/1pt]
+                \raggedleft\hintstyle{#3} &\centering \cvskill{#4} &\centering {#5} & \centering {#6} &{\itshape#7}%
+            \end{tabular}%
+        \endgroup
+        \par\addvspace{#2}
+    }{% If no star is seen no line is drawn
+        \begin{tabular}{@{}p{\skillmatrix at hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}%
+                p{\cvskill at width}@{\hspace{\skillmatrix at padding}}%
+                p{\cvskill at descriptorwidth}@{\hspace{\skillmatrix at padding}}%
+                p{\cvskill at experiencewidth}%
+                @{\hspace{\skillmatrix at padding}}%
+                p{\skillmatrix at commentwidth}@{}}%
+            \raggedleft\hintstyle{#3} &\centering \cvskill{#4} &\centering {#5} & \centering {#6} &{\itshape#7}%
+        \end{tabular}%
+        \par\addvspace{#2}
+    }
+}
+
+% Definition of \cvskillentry valid for moderncvbodyv
+\if at moderncvbodyv%
+    \DeclareDocumentCommand\@starIndependentMatrixEntry{}{}%
+    \RenewDocumentCommand\cvskillentry{s O{.25em} +m +m +m +m +m}{%
+        \arrayrulecolor{color1}%
+        \setlength\arrayrulewidth{\separatorrulewidth}%
+        \vspace*{-\separatorrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
+        %test for the star * in the command
+        \RenewDocumentCommand{\@starIndependentMatrixEntry}{}{%
+            \begingroup%
+                \renewcommand{\arraystretch}{1.25}%
+                \begin{tabular}[t]{@{}p{\hintscolumnwidth}%
+                                @{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\skillmatrix at hintscolumnwidth}
+                                @{\hspace{\skillmatrix at padding}}%
+                                p{\cvskill at width}@{\hspace{\skillmatrix at padding}}%
+                                p{\cvskill at descriptorwidth}@{\hspace{\skillmatrix at padding}}%
+                                p{\cvskill at experiencewidth} @{\hspace{\skillmatrix at padding}}p{\skillmatrix at commentwidth}@{}}%
+    %                 \cline{3-6}%
+                    & \raggedleft\hintstyle{#3} &\centering \cvskill{#4} &\centering {#5} & \centering {#6} &{\itshape#7}\\[#2]%
+                \end{tabular}%
+            \endgroup%
+        }%
+        \IfBooleanTF{#1}{% the star does not do anything here
+            \@starIndependentMatrixEntry%
+        }{% 
+            \@starIndependentMatrixEntry%
+        }%
+        \par\@aftersectionfalse\ignorespaces%
+    }%
+\fi
+% 
+\endinput
+
+
+%% end of file `moderncvskillmatrix.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvskillmatrix.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylebanking.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylebanking.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylebanking.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvstylebanking.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylebanking}[2015/07/28 v2.0.0 modern curriculum vitae and letter style scheme: banking]
+\ProvidesPackage{moderncvstylebanking}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: banking]
 
 % body rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
 \@initializecommand{\moderncvstylebodyoptions}{}
@@ -49,7 +49,12 @@
 %\fi
 
 % symbols
-\moderncvicons{awesome}
+\RequirePackage{ifxetex}
+\ifxetexorluatex
+  \moderncvicons{awesome}
+\else
+  \moderncvicons{marvosym}
+\fi
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylecasual.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylecasual.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylecasual.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvstylecasual.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylecasual}[2015/07/28 v2.0.0 modern curriculum vitae and letter style scheme: casual]
+\ProvidesPackage{moderncvstylecasual}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: casual]
 
 % head section alignment options: "left" (default) or "right"
 \@initializecommand{\moderncvstyleheadoptions}{}
@@ -36,7 +36,12 @@
 %\fi
 
 % symbols
-\moderncvicons{awesome}
+\RequirePackage{ifxetex}
+\ifxetexorluatex
+  \moderncvicons{awesome}
+\else
+  \moderncvicons{marvosym}
+\fi
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleclassic.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleclassic.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleclassic.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvstyleclassic.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleclassic}[2015/07/28 v2.0.0 modern curriculum vitae and letter style scheme: classic]
+\ProvidesPackage{moderncvstyleclassic}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: classic]
 
 % head section alignment options: "left" (default) or "right"
 \@initializecommand{\moderncvstyleheadoptions}{}
@@ -36,7 +36,12 @@
 %\fi
 
 % symbols
-\moderncvicons{marvosym}
+\RequirePackage{ifxetex}
+\ifxetexorluatex
+  \moderncvicons{awesome}
+\else
+  \moderncvicons{marvosym}
+\fi
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleempty.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleempty.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleempty.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvstyleempty.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleempty}[2015/07/28 v2.0.0 modern curriculum vitae scheme: empty]
+\ProvidesPackage{moderncvstyleempty}[2021/01/21 v2.1.0 modern curriculum vitae scheme: empty]
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylefancy.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylefancy.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstylefancy.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvstylefancy.sty'.
-%% Copyright 2015-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2015-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylefancy}[2015/07/28 v2.0.0 modern curriculum vitae and letter style scheme: fancy]
+\ProvidesPackage{moderncvstylefancy}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: fancy]
 
 \DeclareOption*{}% avoid choking on unknown options
 \ExecuteOptions{}
@@ -31,7 +31,12 @@
 %\fi
 
 % symbols
-\moderncvicons{awesome}
+\RequirePackage{ifxetex}
+\ifxetexorluatex
+  \moderncvicons{awesome}
+\else
+  \moderncvicons{marvosym}
+\fi
 
 
 %-------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleoldstyle.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleoldstyle.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/moderncvstyleoldstyle.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,5 +1,5 @@
 %% start of file `moderncvstyleoldstyle.sty'.
-%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com).
+%% Copyright 2006-2015 Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License version 1.3c,
@@ -10,7 +10,7 @@
 %                identification
 %-------------------------------------------------------------------------------
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleoldstyle}[2015/07/28 v2.0.0 modern curriculum vitae and letter style scheme: oldstyle]
+\ProvidesPackage{moderncvstyleoldstyle}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: oldstyle]
 
 \DeclareOption*{}% avoid choking on unknown options
 \ExecuteOptions{}

Modified: trunk/Master/texmf-dist/tex/latex/moderncv/tweaklist.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/moderncv/tweaklist.sty	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/texmf-dist/tex/latex/moderncv/tweaklist.sty	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,6 +1,6 @@
 %% start of file `tweaklist.sty'.
-%% Original by Jakob Schiøtz, downloaded from http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty; not found on ctan.
-%% Modified by Xavier Danaux (xdanaux at gmail.com).
+%% Original by Jakob Schiotz, downloaded from http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty; not found on ctan.
+%% Modified by Xavier Danaux (xdanaux at gmail.com), 2020-2021 moderncv maintainers (github.com/moderncv).
 %
 % The tweaklist.sty package redefines the itemize, enumerate and description packages, so that all parameters can be adjusted.
 % This was done by copying the original definitions, and adding "hook commands" that are executed when entering the environment.

Modified: trunk/Master/tlpkg/bin/deref-symlinks
===================================================================
--- trunk/Master/tlpkg/bin/deref-symlinks	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/tlpkg/bin/deref-symlinks	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/sh -e
 # $Id$
 # Originally written by Karl Berry. Public domain.
 # 

Modified: trunk/Master/tlpkg/libexec/ctan2tds
===================================================================
--- trunk/Master/tlpkg/libexec/ctan2tds	2021-01-22 03:28:23 UTC (rev 57495)
+++ trunk/Master/tlpkg/libexec/ctan2tds	2021-01-22 22:31:33 UTC (rev 57496)
@@ -1612,6 +1612,7 @@
  'm-tx'                 => '&POSTmtx',
  'mathdesign'           => '&POSTmathdesign',
  'mflogo'               => '&POST_rmsymlink',
+ 'moderncv'		=> '&POST_deref_symlink',
  'montex'               => '&POSTmontex',
  'mpfonts'              => '&POSTmpfonts',
  'mptopdf'              => '&POSTmptopdf',



More information about the tex-live-commits mailing list.