diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_downloads/0431e0f8bbc136dee8daed18171f086d/dissipateur.pdf b/_downloads/0431e0f8bbc136dee8daed18171f086d/dissipateur.pdf new file mode 100644 index 0000000..f9bdeba Binary files /dev/null and b/_downloads/0431e0f8bbc136dee8daed18171f086d/dissipateur.pdf differ diff --git "a/_images/Carte-assembl\303\251e.jpg" "b/_images/Carte-assembl\303\251e.jpg" new file mode 100644 index 0000000..befe6aa Binary files /dev/null and "b/_images/Carte-assembl\303\251e.jpg" differ diff --git a/_images/Entretoise-sortie.png b/_images/Entretoise-sortie.png new file mode 100644 index 0000000..e1cc302 Binary files /dev/null and b/_images/Entretoise-sortie.png differ diff --git a/_images/Gabarit-dissipateur-boitier.jpg b/_images/Gabarit-dissipateur-boitier.jpg new file mode 100644 index 0000000..71a2c35 Binary files /dev/null and b/_images/Gabarit-dissipateur-boitier.jpg differ diff --git a/_images/Implantation-Mono.png b/_images/Implantation-Mono.png new file mode 100644 index 0000000..fa4d4ad Binary files /dev/null and b/_images/Implantation-Mono.png differ diff --git a/_images/Kit-sortie.jpg b/_images/Kit-sortie.jpg new file mode 100644 index 0000000..3b5f83d Binary files /dev/null and b/_images/Kit-sortie.jpg differ diff --git a/_images/Maintien-connecteur.jpg b/_images/Maintien-connecteur.jpg new file mode 100644 index 0000000..ba3c465 Binary files /dev/null and b/_images/Maintien-connecteur.jpg differ diff --git a/_images/Pointage-sortie-side.jpg b/_images/Pointage-sortie-side.jpg new file mode 100644 index 0000000..f58def8 Binary files /dev/null and b/_images/Pointage-sortie-side.jpg differ diff --git a/_images/Pointage-sortie-top.jpg b/_images/Pointage-sortie-top.jpg new file mode 100644 index 0000000..01812ce Binary files /dev/null and b/_images/Pointage-sortie-top.jpg differ diff --git a/_images/Pose-agrafes.jpg b/_images/Pose-agrafes.jpg new file mode 100644 index 0000000..f7349f3 Binary files /dev/null and b/_images/Pose-agrafes.jpg differ diff --git a/_images/Positionnement-triac.jpg b/_images/Positionnement-triac.jpg new file mode 100644 index 0000000..7c50a2d Binary files /dev/null and b/_images/Positionnement-triac.jpg differ diff --git a/_images/Production-et-consommation-journaliere-avec-MK2-PV-Router.png b/_images/Production-et-consommation-journaliere-avec-MK2-PV-Router.png new file mode 100644 index 0000000..298291b Binary files /dev/null and b/_images/Production-et-consommation-journaliere-avec-MK2-PV-Router.png differ diff --git a/_images/Production-et-consommation-journaliere-sans-MK2-PV-Router.png b/_images/Production-et-consommation-journaliere-sans-MK2-PV-Router.png new file mode 100644 index 0000000..a8bf539 Binary files /dev/null and b/_images/Production-et-consommation-journaliere-sans-MK2-PV-Router.png differ diff --git a/_images/Redresseur-monophase.png b/_images/Redresseur-monophase.png new file mode 100644 index 0000000..add5177 Binary files /dev/null and b/_images/Redresseur-monophase.png differ diff --git a/_images/Schema-dimplantation.png b/_images/Schema-dimplantation.png new file mode 100644 index 0000000..32c6f09 Binary files /dev/null and b/_images/Schema-dimplantation.png differ diff --git a/_images/Soudure-Molex.jpg b/_images/Soudure-Molex.jpg new file mode 100644 index 0000000..892c08a Binary files /dev/null and b/_images/Soudure-Molex.jpg differ diff --git a/_images/Soudure-Rs-DIL.jpg b/_images/Soudure-Rs-DIL.jpg new file mode 100644 index 0000000..4de8193 Binary files /dev/null and b/_images/Soudure-Rs-DIL.jpg differ diff --git "a/_images/Triac-connecteur-soud\303\251s.jpg" "b/_images/Triac-connecteur-soud\303\251s.jpg" new file mode 100644 index 0000000..521984b Binary files /dev/null and "b/_images/Triac-connecteur-soud\303\251s.jpg" differ diff --git a/_images/dissipateur.svg b/_images/dissipateur.svg new file mode 100644 index 0000000..647cf74 --- /dev/null +++ b/_images/dissipateur.svg @@ -0,0 +1,3 @@ + + +
 3mm
⌀ 3mm
 3mm
⌀ 3mm
 3mm
⌀ 3mm
 4mm sur 2mm de profondeur
⌀ 4mm sur 2mm de...
15mm
15mm
15mm
15mm
18.5mm
18.5mm
18.5mm
18.5mm
50mm
50mm
18.5mm
18.5mm
100mm
100mm
63mm
63mm

Gabarit de perçage du dissipateur

Une impression à l'échelle permet de marquer directement les endroits à percer (vérifier les cotes).

Gabarit de perçage du dissipateur...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_images/dissipateur1.svg b/_images/dissipateur1.svg new file mode 100644 index 0000000..5a4c339 --- /dev/null +++ b/_images/dissipateur1.svg @@ -0,0 +1,3 @@ + + +
100mm
100mm
61.5mm
61.5mm
 3mm
⌀ 3mm
 3mm
⌀ 3mm
 35mm
⌀ 35mm
Fond du boitier extérieur
Fond du boitier extérieur
50mm
50mm
35mm
35mm
35mm
35mm
17mm
17mm
18.5mm
18.5mm
18.5mm
18.5mm
7.5mm
7.5mm

Gabarit de perçage du boîtier

Une impression à l'échelle permet de marquer directement les endroits à percer (vérifier les cotes).

Le radiateur monté dépasse de 1,5mm du fond du boîtier.

Gabarit de perçage du boîtier...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_images/fraise.jpg b/_images/fraise.jpg new file mode 100644 index 0000000..4208d97 Binary files /dev/null and b/_images/fraise.jpg differ diff --git a/_sources/box_list.md.txt b/_sources/box_list.md.txt new file mode 100644 index 0000000..09847eb --- /dev/null +++ b/_sources/box_list.md.txt @@ -0,0 +1,33 @@ +(box_list)= + +```{error} Error! +Bla bla +``` + +```{danger} Danger! +Bla bla +``` + +```{attention} Attention! +Bla bla +``` + +```{caution} Caution! +Bla bla +``` + +```{warning} Warning! +Bla bla +``` + +```{hint} Hint! +Bla bla +``` + +```{important} Important! +Bla bla +``` + +```{tip} Tip! +Bla bla +``` \ No newline at end of file diff --git a/_sources/common/carte-sortie.rst.txt b/_sources/common/carte-sortie.rst.txt new file mode 100644 index 0000000..8020484 --- /dev/null +++ b/_sources/common/carte-sortie.rst.txt @@ -0,0 +1,249 @@ +.. _carte-sortie: + +Étage de sortie +=============== + +| Le triac, également connu sous le nom de triode pour courant alternatif, appartient à la catégorie des thyristors et sert d’interrupteur semi-conducteur. Il a la capacité unique de gérer le courant dans les deux directions, ce qui le rend idéal pour les applications utilisant du courant alternatif (AC). +| Utilisé pour ajuster la puissance fournie à des dispositifs purement résistifs comme des radiateurs, des chauffe-eau ou des lampes à incandescence, le triac permet de moduler avec précision l’énergie distribuée. Cela offre un contrôle fin sur le niveau de chaleur ou d’éclairage produit. + +.. contents:: Sommaire + :local: + :depth: 1 + +Principe de Fonctionnement d’une Sortie Triac +--------------------------------------------- + +| Un triac est activé par un signal de déclenchement envoyé à sa broche de commande, également connue sous le nom de gâchette ou *gate*. +| Lorsque ce signal dépasse un seuil spécifique, le triac s’active et commence à conduire le courant, permettant ainsi son passage. +| Une fois activé, le triac continue de conduire le courant jusqu’à ce que celui-ci descende en dessous d’un certain niveau, souvent proche de zéro. +| Ce phénomène se produit automatiquement à la fin de chaque demi-cycle du courant alternatif, entraînant l’arrêt du passage du courant. + +Contrôle de la Puissance +------------------------ + +| Pour contrôler la puissance fournie à un appareil résistif, on utilise souvent une technique appelée variation de phase ou gradation. +| Elle consiste à retarder l’amorçage du triac dans chaque demi-cycle de la tension alternative. En ne déclenchant le triac que pendant une portion de chaque demi-cycle, on réduit la quantité d’énergie fournie à la charge. +| Plus le retard est important, plus la puissance transmise est faible, et inversement. +| Le principal inconvénient de cette méthode est qu’elle génère des harmoniques dans le réseau électrique. + +| Une autre approche consiste à ne laisser passer que des sinusoïdes complètes, une technique connue sous le nom de modulation par trains d’ondes ou *burst fire control*. +| Le principal inconvénient de cette méthode est que la gradation est moins précise, mais l’expérience a montré que cela ne pose pas de problème avec les compteurs électriques en France, quel que soit le modèle. +| Le principal **avantage** de cette méthode est qu’elle ne génère aucune harmonique dans le réseau électrique. + +| Pour ajuster la puissance délivrée à un dispositif résistif, on emploie couramment une méthode nommée modulation de phase ou gradation. +| Cette technique consiste à retarder l’activation du triac à un moment précis de chaque demi-cycle du courant alternatif. +| En activant le triac seulement durant une partie du demi-cycle, on diminue l’énergie transmise à l’appareil. +| Ainsi, plus le déclenchement du triac est retardé, moins la puissance fournie est élevée, et vice-versa. +| Toutefois, cette méthode a pour inconvénient de produire des harmoniques sur le réseau électrique. + +| Une alternative est de permettre uniquement le passage de cycles complets de sinusoïdes, une technique appelée modulation par trains d’ondes ou *burst fire control*. +| Bien que cette méthode offre une gradation moins fine, les tests montrent qu’elle ne présente pas de problème avec les compteurs électriques en France, indépendamment du modèle utilisé. +| Son **avantage principal** réside dans le fait qu’elle n’introduit pas d’harmoniques sur le réseau électrique. + +Applications typiques +--------------------- + +* **Éclairage** : Les *dimmers*, ou variateurs de lumière, exploitent les triacs pour moduler l’intensité lumineuse. En ajustant le moment d’activation du triac, il est possible de faire varier la luminosité des lampes. +* **Chauffage** : Dans le cas des chauffages électriques, les triacs servent à contrôler la température. En changeant la durée pendant laquelle le courant est conduit, on peut régler la quantité de chaleur émise par l’appareil de chauffage. + +Avantages comparés à un relais +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* **Contrôle Fin** : Le triac offre une gestion très précise de la puissance, ce qui est parfait pour les applications nécessitant un ajustement délicat. +* **Commutation Sans Bruit** : À l’inverse des relais mécaniques, les triacs fonctionnent sans produire de bruit de clic caractéristique lors de la commutation. +* **Absence de Composants Mobiles** : Le fait qu’il n’y ait pas de composants mobiles diminue l’usure due au mouvement, ce qui rend le système de commutation plus fiable et prolonge sa durée de vie. + +Considérations Techniques +------------------------- + +* **Dissipation Thermique** : L’utilisation des triacs entraîne une production de chaleur pendant leur fonctionnement. Il est crucial d’assurer une bonne évacuation de cette chaleur, généralement à l’aide de dispositifs tels que des radiateurs ou des dissipateurs thermiques. +* **Compatibilité de Charge** : Du fait que le triac interrompt le courant de manière périodique, seuls les équipements résistifs (comme les chauffages ou les lampes) sont adaptés pour être contrôlés par un triac. + +Composition d’un kit pour étage de sortie triac +----------------------------------------------- + +Ce kit contient tout le nécessaire pour assembler un circuit de sortie : + +* Un **circuit imprimé** qui distingue clairement les zones de basse et de haute tension de chaque côté. +* Une **résistance R1**, dont la valeur est choisie en fonction de la tension nominale du système et du modèle d’optocoupleur utilisé. +* Une **résistance R2**, sélectionnée selon le modèle d’optocoupleur. +* Une **résistance R3**. +* Un **support** :term:`DIL` pour l’optocoupleur, comportant deux rangées de trois broches. +* Deux paires de **connecteurs type Molex**. +* Un **isolant** qui assure à la fois l’isolation électrique et la conduction thermique. +* Un **triac**, adapté aux exigences spécifiques de l’application. +* Un **connecteur de puissance** qui dispose habituellement de trois broches, la broche centrale étant inutilisée. +* Un **morceau de cuivre massif** de 1.5 mm² de section. + +.. figure:: ../img/Kit-sortie.jpg + :alt: Contenu d’un kit de sortie + :align: center + :scale: 25% + + Contenu d’un kit de sortie + +Assemblage d’une carte de sortie +-------------------------------- + +Pour les cartes de sortie, nous allons procéder de façon similaire, dans cet ordre : + +#. résistances +#. support :term:`optocoupleur` +#. connecteur·s Molex +#. connecteur de puissance +#. triac + +.. danger:: + Il est crucial de prêter une attention particulière à la **qualité** des soudures sur la section **haute tension** de cette carte. + + Une soudure mal réalisée peut provoquer une défaillance immédiate de la carte lors de la mise sous tension, avec un risque d’incendie. + +Installation des *agrafes* en cuivre massif +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +La première étape du montage consiste à installer des *agrafes* en cuivre pur pour augmenter la capacité de la carte à supporter des courants forts. + +Il est recommandé d’utiliser du cuivre d’une section transversale de 1,5 mm², compte tenu de la courte distance entre le triac et le connecteur de puissance. + +Les emplacements pour ces agrafes sont marqués sur le circuit imprimé par des lignes épaisses sur la couche de sérigraphie, avec un espacement d’environ 5 mm entre les trous. + +Pour installer les agrafes, commencez par plier le fil de cuivre afin qu’il traverse ces trous. + +Puis, pliez les extrémités vers l’extérieur et pressez-les fermement contre la face inférieure du circuit imprimé. L’utilisation d’une pince multiprise facilitera cette tâche, tout en prenant soin de ne pas abîmer le circuit. + +Une fois les agrafes correctement mises en place, coupez les quatre extrémités à la longueur nécessaire. + +.. figure:: ../img/Pose-agrafes.jpg + :alt: Vue dessus/dessous, agrafes posées + :align: center + :scale: 25% + + Vue dessus/dessous, agrafes posées + +Installation des composants de faible puissance, support :term:`DIL` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Une fois les agrafes de cuivre mises en place, il est temps d’installer les composants qui nécessitent peu de puissance. + +Selon le plan du circuit : + +* La résistance **R1** doit être de **120 Ω** si le circuit est alimenté en **3,3 V**, ou de **180 Ω** pour une alimentation en **5 V**. +* La résistance **R2** doit avoir une valeur de **330 Ω**. +* La résistance **R3** doit être de **360 Ω**. + +.. note:: + Pour des besoins spécifiques, un autre type d’:term:`optocoupleur` pourrait être nécessaire. + Dans ce cas, les valeurs des résistances peuvent varier. + +.. hint:: + Pour assurer que le support :term:`DIL` soit correctement fixé et en contact total avec le circuit imprimé, commencez par souder une seule de ses broches. + Ensuite, vérifiez que le support est bien en place et parfaitement aligné avant de procéder à la soudure des cinq broches restantes. + +.. figure:: ../img/Soudure-Rs-DIL.jpg + :alt: Vue dessus/dessous, résistances et support :term:`DIL` soudés + :align: center + :scale: 25% + + Vue dessus/dessous, résistances et support :term:`DIL` soudés + +Soudure des connecteurs type Molex +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| Ces connecteurs ont une hauteur similaire au connecteur de puissance. +| Il sera recommandé de souder la broche centrale du connecteur de puissance en premier. En effet, ce dernier peut être facilement maintenu pour cette opération grâce aux agrafes précédemment installées. +| Une fois soudé, ce connecteur sera d’une grande aide pour souder les deux autres connecteurs type Molex. + +.. figure:: ../img/Maintien-connecteur.jpg + :alt: Connecteur de puissance, broche centrale soudée + :align: center + :scale: 25% + + Connecteur de puissance, broche centrale soudée + +.. figure:: ../img/Soudure-Molex.jpg + :alt: Connecteurs type Molex soudés + :align: center + :scale: 25% + + Connecteurs type Molex soudés + +Soudure de la partie *haute puissance*/*haute tension* +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. danger:: + La qualité des soudures est d’une importance **capitale** pour cette étape. + + Une soudure mal réalisée peut provoquer une défaillance immédiate de la carte lors de la mise sous tension, avec un risque d’incendie. + +Connecteur haute puissance +"""""""""""""""""""""""""" + +Ce composant peut être maintenu provisoirement en place en pliant légèrement les agrafes en cuivre pour qu’elles pincent les broches saillantes. + +Ensuite, avec un fer à souder bien chaud (réglez la température à 450 °C si possible), appliquez généreusement de la soudure. + +Triac +""""" + +De la même manière, ce composant peut être maintenu provisoirement en place en pliant légèrement les agrafes en cuivre pour qu’elles pincent les broches saillantes. + +Seuls **1** à **2 mm** des pattes du triac devraient dépasser. + +Pour faciliter cette opération et aussi pour protéger le triac des hautes températures, il est conseillé de plaquer le triac contre l’un des dissipateurs non encore monté que vous avez à disposition. Vous pouvez utiliser une pince à linge ou toute autre pince à ressort. + +.. figure:: ../img/Positionnement-triac.jpg + :alt: Positionnement du triac + :align: center + :scale: 25% + + Positionnement du triac + +Pour les soudures au niveau de chacune des agrafes, un bon fer chaud et beaucoup de soudure seront nécessaires. + +.. warning:: + Lors de la soudure du triac, veillez à bien vérifier que la soudure est *remontée* de l’autre côté du circuit. + + Cela assurera une continuité parfaite mais aussi une solidité accrue. + +.. figure:: ../img/Triac-connecteur-soudés.jpg + :alt: Triac et connecteur soudés + :align: center + :scale: 25% + + Triac et connecteur soudés + +Installation de l’:term:`optocoupleur` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| L’:term:`optocoupleur`, un composant essentiel doté de 6 broches, sert de liaison entre les sections du circuit fonctionnant à basse et à haute tension. +| Pour l’installer correctement, alignez le repère présent sur le composant (indiqué en rouge) avec le cercle sur le circuit imprimé (:term:`PCB`). + +| Une installation inversée de l’optocoupleur ne permettra pas au circuit de fonctionner correctement. +| Toutefois, la conception des broches de l’optocoupleur est telle qu’il ne devrait pas être endommagé en cas d’erreur de montage. + +.. figure:: ../img/Carte-assemblée.jpg + :alt: Carte assemblée + :align: center + :scale: 25% + + Carte assemblée + +Test +---- + +Lors de la construction d’un système complet, il peut être préférable de monter l’étage de sortie finalisé dans le boîtier avant de procéder à son test. + +Les conseils suivants sont destinés aux situations où un étage de sortie doit être testé de manière indépendante. + +.. danger:: + **Avertissement de Sécurité** + + Pour vérifier le bon fonctionnement du déclencheur et du triac, un accès à la tension du réseau électrique **230 V** CA est nécessaire. + + Faites preuve de la plus grande prudence et n’entamez cette étape que si vous avez les compétences nécessaires pour le faire en toute sécurité. + +Voici une plate-forme construite qui permet de tester les cartes de sortie avec ou sans le triac soudé en place. + +Lors du test d’une carte de sortie, il est important que le triac fasse partie du circuit électrique, sinon tout le courant de charge passera par le circuit :term:`optocoupleur` et un ou plusieurs composants seront alors détruits immédiatement. + +En tenant dûment compte de l’avertissement de sécurité ci-dessus, l’approche simple illustrée ci-dessous devrait convenir pour tester des cartes individuelles. diff --git a/_sources/common/confection-cables.rst.txt b/_sources/common/confection-cables.rst.txt new file mode 100644 index 0000000..f059c7d --- /dev/null +++ b/_sources/common/confection-cables.rst.txt @@ -0,0 +1,132 @@ +.. _confection-cables: + +Confection des câbles +===================== + +Il conviendra d’apporter un soin tout particulier pour la confection des multiples câbles nécessaires. + +Voici la liste des câbles dont nous aurons besoin : + +* câble relié à la prise jack (3 pour la version triphasée) +* câble relié au bouton *reset* (uniquement triphasé) +* câble de contrôle (un par étage de sortie) +* câble de témoin LED (un par étage de sortie et/ou sortie relais). +* câbles d’alimentation (uniquement version monophasé) +* fil de mise à la terre (un par dissipateur) + +.. note:: + Toutes les longueurs préconisées sont basées sur les implantations de la carte-mère décrites :ref:`ici`. + +.. admonition:: Conseil + + Les câbles très basse tension sont composés de 2 fils tressés. + Il est **fortement** recommandé de se fixer une convention de couleur, selon le contenu du kit et/ou les câbles que l’on utilisera de son propre stock. + + Par exemple : + + * **rouge** pour le **+**, **bleu** pour la *masse* + * ou si on prend du câble réseau, *couleur* pour le **+**, *couleur/blanc* pour la **masse**. + +Fil de mise à la terre +---------------------- + +Ce sont des fils passifs qui permettront d’assurer la sécurité des personnes en cas de défaut d’isolation d’un ou plusieurs triacs. + +.. admonition:: Longueurs conseillées + + * boîtier **1** ou **2** sorties => 2 fils de chacun xx mm de long + * boîtier **3** ou **4** sorties => 4 fils + + * dissipateur haut gauche => xx mm + * dissipateur haut droit => xx mm + * dissipateur bas gauche => 245 mm + * dissipateur haut droit => xx mm + +Les fils devront être dénudés sur environ 5 mm et être sertis directement dans les cosses **sans** soudure. + +Câbles prise·s jack +------------------- + +Ces câbles serviront à transmettre les mesures prises par la ou les pinces ampèremétriques (ou capteur de courant). +Il conviendra donc d’y apporter le plus grand soin, afin de minimiser l’apparition de parasites. + +.. admonition:: Longueurs conseillées + + .. exercise:: Version monophasée + + * Boîtier **1** ou **2** sorties + xx mm de long + * Boîtier **3** ou **4** sorties + xx mm de long + + .. exercise:: Version triphasée + + * Boîtier **1** ou **2** sorties + + * **255 mm** pour :term:`CT`\1, + * **300 mm** pour :term:`CT`\2 et + * **345 mm** pour :term:`CT`\3. + + * Boîtier **3** ou **4** sorties + + * **315 mm** pour :term:`CT`\1, + * **360 mm** pour :term:`CT`\2 et + * **405 mm** pour :term:`CT`\3. + +Câble·s de contrôle +------------------- + +Ce sont des fils *actifs* qui permettront d’envoyer les commandes d’ouverture et fermeture aux triacs. + +.. admonition:: Longueurs conseillées + + .. exercise:: Version monophasée + + * Boîtier **1** ou **2** sorties + + * étage de sortie **gauche** => xx mm + * étage de sortie **droit** => xx mm + + * Boîtier **3** ou **4** sorties + + * étage de sortie **haut gauche** => xx mm + * étage de sortie **haut droit** => xx mm + * étage de sortie **bas gauche** => xx mm + * étage de sortie **bas droit** => xx mm + + .. exercise:: Version triphasée + + * Boîtier **1** ou **2** sorties + + * étage de sortie **gauche** => **140 mm** + * étage de sortie **droit** => **340 mm** + + * Boîtier **3** ou **4** sorties + + * étage de sortie **haut gauche** => **200 mm** + * étage de sortie **haut droit** => **250 mm** + * étage de sortie **bas gauche** => **200 mm** + * étage de sortie **bas droit** => **360 mm** + +Câble·s de témoin·s LED +----------------------- + +Ce sont des fils *actifs* qui sont repiqués sur la commande de l’étage de sortie et permettent de visualiser l’état de chaque sortie : +* **allumé** => le courant passe (triac **fermé**) +* **éteint** => le courant ne passe pas (triac **ouvert**). + +Les longueurs indiquées permettent d’ouvrir le couvercle et de le déposer sur le dessus du boîtier sans qu’aucun fil ne soit tendu. +Bien sûr, il est possible de faire des câbles plus courts, ou plus longs ! + +.. admonition:: Longueurs conseillées + + * Boîtier **1** ou **2** sorties + + * étage de sortie **gauche** => **400 mm** + * étage de sortie **droit** => **470 mm** + * Boîtier **3** ou **4** sorties + + * étage de sortie **haut gauche** => **440 mm** + * étage de sortie **haut droit** => **510 mm** + * étage de sortie **bas gauche** => **580 mm** + * étage de sortie **bas droit** => **650 mm** diff --git a/_sources/common/ordre-soudure.rst.txt b/_sources/common/ordre-soudure.rst.txt new file mode 100644 index 0000000..0b68e34 --- /dev/null +++ b/_sources/common/ordre-soudure.rst.txt @@ -0,0 +1,35 @@ +.. _ordre-soudure: + +Ordre de soudure +---------------- + +| Il est fortement recommandé de suivre l’ordre de soudure indiqué. +| +| Cela vous vous épargnera des soucis par rapport au maintien des composants lors de la soudure. +| En effet, les composants à souder sont insérés sur la face *avant* du circuit imprimé, tandis que la soudure se fait sur la face *arrière*. +| Il faudra donc à chaque fois retourner le circuit imprimé pour souder les composants. +| +| Si vous soudez un composant haut en premier, par exemple un transformateur, tous les autres composants auront tendance à tomber lorsque vous retournerez le circuit imprimé pour les souder. + +Voici l’ordre de soudure recommandé : + +#. *jumper·s*, +#. résistances, +#. diodes +#. socles de circuits intégrés, +#. oscillateur et ses 2 condensateurs associés, +#. condensateurs céramiques non polarisés, +#. pont·s de diodes, +#. régulateur de tension (format transistor), +#. inductance, +#. socle FTDI +#. socles de CTs et socle·s de sortie, +#. condensateurs électrolytiques polarisés, +#. fusibles, +#. connecteur·s d’alimentation, +#. varistance·s, +#. régulateur de tension, +#. transformateur·s + +.. note:: + Cette liste est exhaustive et peut varier en fonction de la configuration de votre carte mère. \ No newline at end of file diff --git a/_sources/glossary.rst.txt b/_sources/glossary.rst.txt new file mode 100644 index 0000000..403e15c --- /dev/null +++ b/_sources/glossary.rst.txt @@ -0,0 +1,71 @@ + +.. _glossary: + +========= +Glossaire +========= + +.. glossary:: + :sorted: + + CT + | *Current Transformer* ou dans notre cas **pince ampèremétrique**. + | La pince ampèremétrique, aussi appelée capteur de courant sans contact, est un type d’ampèremètre permettant de mesurer l’intensité du courant électrique circulant dans un fil conducteur sans avoir à ouvrir le circuit pour y placer un ampèremètre classique. + + .. seealso:: + | `Wikipédia, Pince ampèremétrique `_ + | `CT sensors - An Introduction `_ + + PCB + | *printed circuit board* ou **circuit imprimé**. + | Un circuit imprimé est un support, en général une plaque, permettant de maintenir et de relier électriquement un ensemble de composants électroniques entre eux, dans le but de réaliser un circuit électronique complexe. On le désigne aussi par le terme de carte électronique. + + .. seealso:: `Wikipédia, Circuit imprimé `_ + + Burden + | Résistance de charge. + | Si le capteur CT est du type "sortie courant" tel que le YHDC SCT-013-000, le signal de courant doit être converti en signal de tension avec une résistance de charge. + + .. seealso:: `CT Sensors - Interfacing with an Arduino `_ + + ADC + | *Analog Digital Converter* ou convertisseur analogique/numérique. + | Il permet de convertir un signal analogique, par exemple une tension, en un signal numérique, par exemple une valeur entre 0 et 1023. + | Supposons que la plage de mesure aille de 0 à 5 V, alors, une tension d’entrée de 2.5 V correspondra à la valeur 511. Une tension de 5 V correspondra à une valeur de 1023. + + AC + | *Alternative Current* ou courant alternatif. + + DC + | *Direct Current* ou courant continu. + + Optocoupleur + | Ou photocoupleur. + | Un optocoupleur est un composant électronique qui permet de transférer un signal électrique entre deux parties d’un circuit tout en les isolant électriquement l’une de l’autre. Il est souvent utilisé pour contrôler un circuit de haute tension à partir d’un signal de basse tension, en assurant une isolation galvanique entre les deux. + + .. seealso:: `Wikipédia, Photocoupleur `_ + + Pull-up + | Résistance de rappel. + | Une résistance de rappel permet de fixer une entrée numérique à un état *HIGH* ou *LOW* stable. + | Elle permet aussi de réduire le bruit, d’éliminer les broches flottantes et surtout, d’établir deux états électriques clairs et distincts. + + DIL + | *Dual In-line Package* ou boîtier double en ligne. + | Un support DIL (Dual In-line Package) pour circuit intégré sert à plusieurs fins : + | 1. **Facilité de Remplacement** : Il permet de remplacer facilement un circuit intégré sans avoir à dessouder et ressouder le composant, ce qui est particulièrement utile en cas de défaillance ou de mise à jour. + | 2. **Protection Contre la Chaleur** : Lors de la soudure, il protège le circuit intégré de la chaleur excessive qui pourrait l’endommager. + | 3. **Réutilisabilité** : Il permet de réutiliser les circuits intégrés en les insérant et les retirant facilement du support. + | 4. **Alignement Précis** : Il assure un alignement précis des broches du circuit intégré avec les pistes du circuit imprimé. + | En résumé, un support DIL facilite l’installation, le remplacement et la protection des circuits intégrés dans un montage électronique. + + SIL + | *Single In-line Package* ou boîtier simple en ligne ou aussi *pin-header*. + | Un support SIL (Single In-line Package) pour circuit intégré est un support à une seule rangée de broches qui permet d’insérer et de retirer facilement un circuit intégré d’un circuit imprimé. + | Il est utilisé pour les circuits intégrés ou modules à une seule rangée de broches. + + FTDI + | *Future Technology Devices International*. + | FTDI est une société spécialisée dans la conception de circuits intégrés et de modules de communication USB. Les modules FTDI sont largement utilisés pour la programmation et la communication avec des microcontrôleurs et des circuits intégrés via une interface USB. + + .. seealso:: `FTDI `_ \ No newline at end of file diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 0000000..3444e24 --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,83 @@ +.. _mk2pvrouter: + +************************************************ +Bienvenue dans la documentation du Mk2PVRouter ! +************************************************ + +| Le MK2 PV Router est l’accessoire indispensable lorsque l’on souhaite optimiser son autoconsommation. +| +| Particulièrement adapté à l’alimentation de résistances (chauffe-eau, radiateur, sol chauffant) du fait de son alimentation à puissance variable, il saura orienter votre surplus vers le ou les équipements raccordés. +| +| Le routeur surveille en permanence la production d’énergie de votre système en autoconsommation et redirige tout excédent d’électricité vers les charges branchées. +| Grâce aux modules sortie-relais, il peut aussi gérer des installations de chauffage ou toutes sortes d’appareils avec ses fonctions de programmateurs horaire, temporisations, thermostats, préparation ECS, chauffage… toutes configurables librement. +| +| Ce routeur existe en 2 versions, une version **monophasée**, exclusivement pour les raccordements monophasés, et une **triphasée** pour les raccordements en triphasé. +| Seul le type de raccordement au réseau électrique (Enedis ou régie locale) est important, peu importe que la production d’électricité soit en monophasé ou que l’on utilise que des appareils monophasés. + +.. admonition:: À retenir + + Peu importe l’installation de production d’électricité (monophasée, biphasée, triphasée), le routeur **DOIT** correspondre au type de raccordement au réseau électrique. + + Raccordement au réseau électrique triphasé = routeur triphasé + +.. figure:: img/Schema-dimplantation.png + :align: center + :alt: Schéma d’implantation + + Schéma d’implantation. + +| Les 2 graphiques suivants vous montrent une production et une consommation typiques d’un foyer. +| Les pics importants représentent la consommation classique dûe au fonctionnement d’un chauffe-eau. + +.. figure:: img/Production-et-consommation-journaliere-sans-MK2-PV-Router.png + :align: center + :alt: Sans Mk2PVRouter + + Production et consommation typiques SANS Mk2PVRouter + +.. figure:: img/Production-et-consommation-journaliere-avec-MK2-PV-Router.png + :align: center + :alt: Avec Mk2PVRouter + + Production et consommation typiques AVEC Mk2PVRouter + +| Le routeur va permettre de décaler la consommation du chauffe-eau aux moments où l’on produit sa propre électricité gratuite (hors amortissement bien sûr du système de production). + +.. toctree:: + :hidden: + + introduction + +.. toctree:: + :maxdepth: 3 + :caption: Kit monophasé + :hidden: + + mono/boitier-mono + mono/carte-mere-mono + mono/carte-sortie-mono + mono/carte-sortie-relais-mono + mono/dissipateur-mono + common/confection-cables + mono/assemblage-mono + mono/etalonnage-mono + +.. toctree:: + :maxdepth: 3 + :caption: Kit triphasé + :hidden: + + tri/boitier-tri + tri/carte-mere-tri + tri/carte-sortie-tri + tri/carte-sortie-relais-tri + tri/dissipateur-tri + common/confection-cables + tri/assemblage-tri + tri/test-logiciel-tri + tri/etalonnage-tri + +.. toctree:: + :caption: Glossaire + + glossary.rst diff --git a/_sources/introduction.rst.txt b/_sources/introduction.rst.txt new file mode 100644 index 0000000..5b3b4b7 --- /dev/null +++ b/_sources/introduction.rst.txt @@ -0,0 +1,93 @@ +.. _introduction: + +Introduction +============ + +| Cette documentation est applicable à toutes les versions du Mk2PVRouter, qu’elles soient monophasées ou triphasées. +| La majorité des informations sont pertinentes pour les deux versions. +| Chaque version a son propre chapitre. + +------------- + +Contenu du kit +-------------- + +Dans le kit, vous trouverez : + +* le circuit imprimé (:term:`PCB`) de la carte-mère +* un ou plusieurs circuits imprimés pour chaque sortie +* des composants électroniques (résistances, condensateurs…). |br| + Attention, certains sont sensibles à l’électricité statique, il faut donc les manipuler avec soin. +* un boîtier +* des câbles + +Étapes d’assemblage +------------------- + +L’assemblage complet va nécessiter plusieurs étapes : + +* soudure et tests de la carte-mère +* soudure et tests de la ou les cartes de sortie +* perçage du boîtier +* perçage du ou des dissipateurs thermiques +* montage des circuits soudés dans le boîtier +* confection des câbles +* câblage +* étalonnage +* programmation finale + +Recommandations pour les étapes de soudure +------------------------------------------ + +Les composants électroniques nécessaires sont très divers. Certains sont passifs (comme les résistances), tandis que d’autres sont actifs (comme l’AtMega328P). +Tous ces composants sont généralement sensibles à l’électricité statique. +Il est donc essentiel de les manipuler avec soin et, si possible, de se mettre à la terre pour éviter toute décharge électrostatique. + +Certains composants sont polarisés (comme les diodes et certains condensateurs), tandis que d’autres ne le sont pas (comme les résistances et d’autres condensateurs). Il est donc crucial de faire attention à l’orientation des composants AVANT de les souder. L’orientation est généralement indiquée directement sur la carte mère. + +Les composants varient également en taille, allant de quelques millimètres à plusieurs centimètres (dans le cas des transformateurs). + +Pour des raisons pratiques, il est recommandé de procéder à la soudure en suivant un ordre précis basé sur la taille des composants. + +Ainsi, l’ordre de soudure recommandé est le suivant : + +#. Résistances et diodes, et éventuellement les ponts +#. Supports IC1 et IC2 (et éventuellement IC3, IC4 selon le kit) (ne pas insérer les circuits intégrés dans les supports à ce stade) +#. Condensateurs non polarisés "orange", oscillateur +#. Pont·s de diodes +#. Les fusibles +#. Tous les connecteurs SIL noirs et le connecteur d’affichage, le cas échéant +#. Condensateurs polarisés (noirs ou bleus) +#. Le socle pour l’antenne, le cas échéant +#. Le gros connecteur "haute tension" +#. Le·s régulateur·s de tension +#. Enfin, le·s transformateur·s + +Suivre cette séquence précise permet d’éviter de tordre les pattes des composants ou d’avoir à utiliser de l’adhésif, entre autres. + +Matériels nécessaires +--------------------- + +* fer à souder +* fil de soudure +* pince coupante +* pince à sertir les cosses ou pince multifonction +* tournevis cruciforme +* clé plate ou douille de **5,5** +* clé plate de **10** +* clé six pans de **2** et **2,5** +* une perceuse à colonne si possible, sinon n’importe quelle perceuse. +* foret métal de **3 mm** +* foret métal de **4 mm** +* foret (bois ou métal) de **8 mm** +* foret (bois ou métal) ou fraise de **20 mm** +* fraise de **35 mm** +* colle thermofusible +* gaine thermorétractable +* multimètre (au minimum voltmètre et ohmmètre) + +Certains matériels sont optionnels (fraise de 35, colle, gaine). Cependant, ils faciliteront certaines étapes et permettront de réaliser un travail plus soigné et bien fini. + +.. |br| raw:: html + +
\ No newline at end of file diff --git a/_sources/mono/assemblage-mono.rst.txt b/_sources/mono/assemblage-mono.rst.txt new file mode 100644 index 0000000..87f63e3 --- /dev/null +++ b/_sources/mono/assemblage-mono.rst.txt @@ -0,0 +1,15 @@ +.. _assemblage-mono: + +Assemblage +========== + +Après avoir effectué toutes les étapes précédentes, :ref:`Soudure de la carte-mère monophasée `, :ref:`Préparation du boîtier `, :ref:`Perçage du dissipateur `, :ref:`étage·s de sortie ` et :ref:`Confection des câbles `, il est temps d’assembler le tout. + +Il est possible de réaliser l’assemblage dans n’importe quel ordre, cependant, il sera plus pratique de le réaliser comme ceci : +1. Mise en place des presse-étoupe +2. Fixation du ou des dissipateurs sur le boîtier, y compris fils de terre. +3. Fixation du ou des étages de sortie sur chaque dissipateur (visser le triac) +4. Fixation du ou des étages de sortie dans le boîtier (visser le :term:`PCB`) +5. Mise en place de la prise jack et du bouton *ON-OFF* +6. Fixation de la carte-mère dans le boîtier. +7. Mise en place des câbles. diff --git a/_sources/mono/boitier-mono.rst.txt b/_sources/mono/boitier-mono.rst.txt new file mode 100644 index 0000000..ee18195 --- /dev/null +++ b/_sources/mono/boitier-mono.rst.txt @@ -0,0 +1,3 @@ +.. _boitier-mono: + +.. include:: ../common/boitier.inc.rst diff --git a/_sources/mono/carte-mere-mono-A.rst.txt b/_sources/mono/carte-mere-mono-A.rst.txt new file mode 100644 index 0000000..d8136ec --- /dev/null +++ b/_sources/mono/carte-mere-mono-A.rst.txt @@ -0,0 +1,37 @@ +.. _carte-mere-mono-A: + +Composants de la configuration A +================================ + +| Cette section décrit l’assemblage d’un routeur pouvant comporter de 1 à 12 sorties triac et/ou relais. +| Les options d’afficheur à 7 segments et de radiofréquence ne sont pas prises en charge. + +.. hint:: + Pour avoir une option sortie relais avec un afficheur une seconde carte mère peut être installée. + Veuillez remplir un formulaire sur notre site internet pour cette demande. + +.. contents:: Sommaire + :local: + :depth: 1 + +Socles de sorties +----------------- + +| Deux sorties sont natives sur les programmes standards du routeur MK2. +| Les emplacements **D3** et **D4** les représentent. Il faudra alors les utiliser en premier. +| +| Soudez les socles **D3** et **D4** en fonction du nombre de sorties (triac et/ou relais) utilisées dans le kit. + +.. include:: ../common/sorties.inc.rst + +.. warning:: + L’utilisation des autres emplacements de sortie nécessitera la modification des programmes standards. + +Si vous avez besoin de plus de deux sorties triac et/ou relais, vous pouvez souder directement les socles **D5 à D9**. + +.. include:: jumpers-Dx.rst + +Résistances +----------- + +Aucune résistance n’est nécessaire. \ No newline at end of file diff --git a/_sources/mono/carte-mere-mono-B.rst.txt b/_sources/mono/carte-mere-mono-B.rst.txt new file mode 100644 index 0000000..f147e8d --- /dev/null +++ b/_sources/mono/carte-mere-mono-B.rst.txt @@ -0,0 +1,34 @@ +.. _carte-mere-mono-B: + +Composants de la configuration B +================================ + +| Cette section concerne l’assemblage d’un routeur avec 1 à 2 sorties triac et un afficheur à 7 segments. +| L’option radiofréquence n’est pas prise en charge. + +.. contents:: Sommaire + :local: + :depth: 1 + +Socles de sorties +----------------- + +| Deux sorties sont natives sur les programmes standards du routeur MK2. +| Les emplacements **D3** et **D4** les représentent. + +.. include:: ../common/sorties.inc.rst + +Résistances +----------- + +| Associez les résistances fournies dans le kit aux emplacements indiqués sur la couche sérigraphiée. Il n’y a pas de polarité à respecter. +| Les résistances à souder sont **R11 à R18**. + +Ponts ou *jumpers* +------------------ + +| Les résistances doivent être connectées à l’aide de ponts en étamant chaque *jumper* correspondant. +| Pour ce faire, faites fondre de l’étain sur chaque partie du *jumper*, puis ajoutez-en suffisamment pour relier les deux parties ensemble. +| Vous devez connecter les *jumpers* **J1 à J14**. + +.. include:: connecteur-nappe.inc.rst \ No newline at end of file diff --git a/_sources/mono/carte-mere-mono-C.rst.txt b/_sources/mono/carte-mere-mono-C.rst.txt new file mode 100644 index 0000000..116aea0 --- /dev/null +++ b/_sources/mono/carte-mere-mono-C.rst.txt @@ -0,0 +1,52 @@ +.. _carte-mere-mono-C: + +Composants de la configuration C +================================ + +| Cette section explique comment assembler un routeur avec 3 à 7 sorties triac et un afficheur à 7 segments. +| L’option radiofréquence n’est pas supportée. +| +| L’installation des circuits intégrés **IC3** et **IC4** est indispensable. +| Comme ces circuits ne sont pas disponibles en **3,3 V**, il est nécessaire d’alimenter le routeur en **5 V**. +| Le régulateur de tension **VR1** doit être une version **5 V**. + +.. contents:: Sommaire + :local: + :depth: 1 + +Socles de sorties +----------------- + +| Deux sorties sont natives sur les programmes standards du routeur MK2. +| Les emplacements **D3** et **D4** les représentent. Il faudra alors les utiliser en premier. + +.. include:: ../common/sorties.inc.rst + +.. warning:: + L’utilisation des autres emplacements de sortie nécessitera la modification des programmes standards. + + +.. warning:: + Les emplacements **D5 à D9** ne sont pas utilisables, car ces pins sont utilisés par l’afficheur ! + +.. include:: jumpers-Dx.rst + +.. note:: + Ne soudez aucun autre *jumper* ! + +Résistances +----------- + +| Associez les résistances fournies dans le kit aux emplacements indiqués sur la couche sérigraphiée. Il n’y a pas de polarité à respecter. +| Les résistances à souder sont **R11 à R18**. + +Ponts ou *jumpers* +------------------ + +| Les résistances doivent être connectées à l’aide de ponts en étamant chaque *jumper* correspondant. +| Pour ce faire, faites fondre de l’étain sur chaque partie du *jumper*, puis ajoutez-en suffisamment pour relier les deux parties ensemble. +| Vous devez connecter les *jumpers* **J1 à J14**. + +.. include:: ic3-ic4.inc.rst + +.. include:: connecteur-nappe.inc.rst \ No newline at end of file diff --git a/_sources/mono/carte-mere-mono-D.rst.txt b/_sources/mono/carte-mere-mono-D.rst.txt new file mode 100644 index 0000000..6a3c7bf --- /dev/null +++ b/_sources/mono/carte-mere-mono-D.rst.txt @@ -0,0 +1,57 @@ +.. _carte-mere-mono-D: + +Composants de la configuration D +================================ + +| Cette section décrit l’assemblage d’un routeur équipé d’un émetteur ou récepteur radiofréquence. Cette option permet de contrôler une ou plusieurs charges à distance. +| +| Le montage peut inclure de 0 à 2 sorties triac et/ou relais locales, ainsi qu’un afficheur à 7 segments avec des modules d’économie de broches. +| La tension d’alimentation de la carte-mère doit être de **5 V**, un régulateur de tension approprié est fourni à cet effet. +| +| Le module radiofréquence doit être alimenté en **3,3 V**. +| Pour cela, nous abaissons la tension pour la partie alimentation de la carte RF en ajoutant un régulateur de tension supplémentaire. + +.. contents:: Sommaire + :local: + :depth: 1 + +Socles de sorties +----------------- + +| Deux sorties sont natives sur les programmes standards du routeur MK2. +| Les emplacements **D3** et **D4** les représentent. + +.. include:: ../common/sorties.inc.rst + +.. warning:: + Les emplacements **D2 et D5 à D13** ne sont pas utilisables, car ces pins sont utilisés par l’afficheur ainsi que le module RF ! + +.. include:: ../common/alim-3_3.inc.rst + +Ponts ou *jumpers* +------------------ + +Dans le seul cas où la carte-mère est utilisée en **récepteur**, le *jumper* **J15** doit être soudé. + +.. warning:: + La résistance **R8** ne devra pas être mise en place. + +Résistances +----------- + +| Associez les résistances fournies dans le kit aux emplacements indiqués sur la couche sérigraphiée. Il n’y a pas de polarité à respecter. +| Les résistances à souder sont **R11 à R18**. + +.. note:: + Si le système dispose d’une alimentation secondaire en **3,3 V**, un jeu de 6 résistances, repérées **R21 à R26**, devra être soudé aux emplacements correspondants. + +.. admonition:: Rappel + :class: warning + + Si la carte mère est utilisée en mode récepteur radiofréquence, alors la résistance **R8** ne doit pas être soudée ! + +.. include:: ic3-ic4.inc.rst + +.. include:: connecteur-nappe.inc.rst + +.. include:: ../common/module-rf.inc.rst diff --git a/_sources/mono/carte-mere-mono-E.rst.txt b/_sources/mono/carte-mere-mono-E.rst.txt new file mode 100644 index 0000000..a4e38ee --- /dev/null +++ b/_sources/mono/carte-mere-mono-E.rst.txt @@ -0,0 +1,48 @@ +.. _carte-mere-mono-E: + +Composants de la configuration E +================================ + +| Cette section décrit l’assemblage d’un routeur équipé d’un émetteur ou récepteur radiofréquence, permettant de contrôler une ou plusieurs charges à distance. +| +| Ce montage peut inclure de 0 à 7 sorties triac et/ou relais. La tension d’alimentation du système doit être de **3,3 V**. + +.. contents:: Sommaire + :local: + :depth: 1 + +Socles de sorties +----------------- + +| Deux sorties sont natives sur les programmes standards du routeur MK2. +| Les emplacements **D3** et **D4** les représentent. Il faudra alors les utiliser en premier. +| +| Soudez les socles **D3** et **D4** en fonction du nombre de sorties (triac et/ou relais) utilisées dans le kit. + +.. include:: ../common/sorties.inc.rst + +.. warning:: + L’utilisation des autres emplacements de sortie nécessitera la modification des programmes standards. + +Si vous avez besoin de plus de deux sorties triac et/ou relais, vous pouvez souder directement les socles **D5 à D9**. + +.. include:: ../common/alim-3_3.inc.rst + +Ponts ou *jumpers* +------------------ + +Selon le mode de fonctionnement, des *jumpers* différents devront être soudés : +* mode **émetteur** : soudez les *jumpers* **J6 à J8**. +* mode **récepteur** : soudez le *jumper* **J15**. + +.. warning:: + La résistance **R8** ne devra pas être mise en place. + +Résistances +----------- + +Aucune résistance n’est nécessaire. + +.. include:: connecteur-nappe.inc.rst + +.. include:: ../common/module-rf.inc.rst diff --git a/_sources/mono/carte-mere-mono-commun.rst.txt b/_sources/mono/carte-mere-mono-commun.rst.txt new file mode 100644 index 0000000..01d594b --- /dev/null +++ b/_sources/mono/carte-mere-mono-commun.rst.txt @@ -0,0 +1,9 @@ +.. _carte-mere-mono-commun: + +Composants communs +================== + +| Pour la partie commune à toutes les configurations, il y aura 31 composants à souder. +| Certains sont polarisés, d’autres ne le sont pas. +| +| Il est recommandé d’effectuer cette opération dans l’ordre indiqué par cette documentation. \ No newline at end of file diff --git a/_sources/mono/carte-mere-mono-inventaire.rst.txt b/_sources/mono/carte-mere-mono-inventaire.rst.txt new file mode 100644 index 0000000..11646e4 --- /dev/null +++ b/_sources/mono/carte-mere-mono-inventaire.rst.txt @@ -0,0 +1,237 @@ +.. _carte-mere-mono-inventaire: + +Inventaire complet des composants +================================= + +Ci-dessous, vous découvrirez la liste complète des composants qui pourraient être inclus dans votre kit. + +| Il est important de noter que votre kit ne contiendra pas tous ces composants simultanément, car il est techniquement impossible d’intégrer toutes les fonctionnalités disponibles dans un seul et même kit. +| Seulement certaines combinaisons de composants sont réalisables. + +.. contents:: Sommaire + :local: + :depth: 1 + +Résistances +----------- + +Ces composants n’ont pas de sens et sont très peu sensibles à l’électricité statique. + +Les valeurs des résistances sont indiquées sur le schéma de circuit et sont répétées ici pour plus de commodité : +(veuillez lire les notes ci-dessous qui concernent ces valeurs de composants) + +* **R1** = **47 kΩ**. Cela fournit le :term:`pull-up` pour la ligne de réinitialisation du processeur. +* **R2** = **10 kΩ**. Avec R3, cela fournit une tension de référence pour les capteurs d’entrée. +* **R3** = **10 kΩ**. Avec R2, cela fournit une tension de référence pour les capteurs d’entrée. +* **R4** = **100 Ω** ou **180 Ω**. **R4** et **R5** réduisent la taille du signal :term:`AC` du transformateur. +* **R5** = **1 kΩ**. **R4** et **R5** réduisent la taille du signal :term:`AC` du transformateur. +* **R6** = **120 Ω** ou **150 Ω**. Il s’agit de la résistance de charge (ou :term:`burden`) du capteur de courant *grille*, qui utilise :term:`CT`\1. +* **R7** = **120 Ω** ou **150 Ω**. Il s’agit de la résistance de charge pour le capteur de courant *détourné*, qui utilise :term:`CT`\2. +* **R8** = **1 kΩ**. Cette résistance est en série avec :term:`CT`\1 pour protéger le processeur des signaux importants. + +.. note:: + | Des valeurs inférieures pour **R4** et **R5** sont désormais utilisées pour augmenter la charge sur le transformateur. Cela peut l’empêcher d’entrer en saturation, ce qui déformerait la forme d’onde de sortie. + | **R4** = **100 Ω** convient pour un fonctionnement en **3,3 V**. + | Pour une meilleure utilisation de la plage d’entrée de l’:term:`ADC`, **R4** doit être augmenté à **180 Ω** pour un fonctionnement en **5 V**. + + La valeur pour **R6** et **R7** a été initialement spécifiée comme étant **150 Ω**. + + Lorsque le processeur fonctionne à **3,3 V**, cela donne une plage de fonctionnement d’environ **4 kW**. En réduisant ces valeurs à **120 Ω**, la plage est augmentée à **~5 kW**. + + Pour un système **5 V**, la valeur originale de **150 Ω** donne une plage de fonctionnement d’environ **6 kW**. + + Si un enregistrement de données dans toute la maison est nécessaire, la plage de travail du capteur *grille* peut être augmentée en réduisant la valeur de R6. Il faut toutefois reconnaître que la sensibilité du système de mesure sera réduite d’autant. + + * **R6** = **56 Ω** permettra des mesures jusqu’à **~10 kW** + * **R6** = **47 Ω** permettra des mesures jusqu’à **~12 kW** + * **R6** = **39 Ω** permettra des mesures jusqu’à **~14 kW**. + + Ces valeurs de résistance de charge s’appliquent lorsque le processeur fonctionne à **3,3 V**. S’il fonctionne à **5 V**, ces plages sont augmentées d’environ **50 %**. + + .. include:: ../common/burden-calc.inc.rst + + **R11 - R18** sont les résistances série pour l’affichage à 4 chiffres. + Si la carte doit fonctionner à **3,3 V**, ces huit résistances doivent être de **220 Ω**. + En cas de fonctionnement en **5 V**, cette valeur doit être augmentée à **470 Ω** pour maintenir un niveau de luminosité similaire. + +Diodes +------ + +Celles-ci offrent un certain degré de protection au processeur lorsque des courants élevés traversent les :term:`CT`\s. + +.. attention:: + Ces composants sont polarisés. + + Ils doivent être placés selon le repérage sur la couche sérigraphiée. + +Supports :term:`DIL` pour circuits intégrés +------------------------------------------- + +| Les deux supports repérés **IC1** et **IC2** seront toujours présents. Ce sont ceux utilisés pour placer le microcontrôleur Atmega328P, le coeur du système, ainsi que l’amplificateur opérationnel qui permet d’obtenir des tensions stables nécessaires au fonctionnement du routeur. + +| Si l’option *pin-saving hardware* est utilisée, deux autres circuits intégrés seront nécessaires (**IC3** et **IC4**). +| Cette distinction est expliquée plus en détail ultérieurement. + +.. attention:: + Chaque support a une encoche à une extrémité. Celle-ci doit être alignée avec la marque correspondante sur la couche sérigraphiée, comme indiqué ici. + +| Avec le support convenablement soutenu par le bas (on peut aussi utiliser un morceau d’adhésif), les deux broches situées dans les coins opposés peuvent être soudées en place. +| Si un réalignement du composant est nécessaire, il doit être effectué **avant** que les broches restantes ne soient fixées. + +| L’affichage à 4 chiffres peut être contrôlé de deux manières. +| Si le module RF n’est pas requis et que ces broches IO ne sont pas nécessaires à d’autres fins, un ensemble complet de broches IO sur le processeur peut être dédié au pilotage de l’affichage. +| Cette configuration nécessite l’ajout de quatorze ponts comme indiqué dans la couche sérigraphiée. La planche de la photo suivante est assemblée de cette manière : + +Les 14 ponts sont représentés ici : + +* 5 ponts à **IC3** +* 1 pont à **IC4** +* 5 ponts en **J1-5** +* 1 pont en **R24** +* 1 pont en **R25** +* 1 pont en **R26** + +Si le module RF est requis (ou si l’une de ces broches IO est nécessaire à toute autre fin), l’écran peut être utilisé à l’aide de l’option *pin-saving hardware*. +Pour cette disposition, les supports pour **IC3** et **IC4** doivent être installés comme indiqué ci-dessous. + +Ici, l’un des :term:`PCB` d’origine est présenté avec uniquement ces supports en place, pour **IC3** et **IC4**. + +.. note:: + Lorsque l’option *pin-saving hardware* est utilisée, aucune liaison filaire ne doit être installée au niveau du connecteur **J1-J5**. + +Étant donné que cette carte est assemblée avec l’option *pin-saving hardware*, des supports d’embase ont été installés aux quatre emplacements de circuits intégrés. + +.. note:: + Les deux circuits intégrés qui composent l’option *pin-saving hardware* ont tous deux été initialement spécifiés à partir de la série **74HC**. + + Malheureusement, le **74HC4543** pour **IC3** n’est plus disponible sous forme DIL. Lorsqu’elle fonctionne à **3,3 V**, le composant CMOS de remplacement n’est pas en mesure de fonctionner correctement. + + Ainsi, chaque fois que l’option *pin-saving hardware* doit être utilisée, le processeur doit fonctionner à **5 V**. + +Condensateurs céramiques et oscillateur +--------------------------------------- + +Ces composants ne sont pas polarisés. + +Les condensateurs céramiques sont en général orange, et ont la forme d’une goutte d’eau, par opposition aux condensateurs électrolytiques polarisés de forme cylindriques et bleus ou noirs. + +.. note:: + Parmi le jeu de condensateurs céramiques, deux d’entre eux sont plus petits que les autres. + + Il s’agit des deux condensateurs associés à l’oscillateur, leur valeur est de **22 pF** et sont référencés **C6** et **C7**. + + **C3**, **C4** et **C5** sont des condensateurs céramiques de **100 nF**, généralement marqués *104*. + +.. note:: + | L’oscillateur ainsi que ses deux condensateurs associés peuvent être soudés légèrement au-dessus du :term:`PCB`. + | Ce n’est pas nécessaire pour le bon fonctionnement. + | Pour ce faire, on pourra utiliser une allumette le temps d’effectuer la soudure. + +Pont redresseur ou pont de diodes +--------------------------------- + +| Le rôle de ce composant est de redresser le courant alternatif fourni par le transformateur. +| C’est la première étape nécessaire pour obtenir une alimentation en courant continu. + +| Sur la figure ci-après, la courbe du haut correspond à la tension fournie par le transformateur. +| La courbe du bas est la tension fournie par le redresseur. + +.. figure:: ../img/Redresseur-monophase.png + :alt: Redressement double alternance + :align: center + :scale: 50% + + Redressement double alternance + +.. attention:: + Ce composant est polarisé. + Il faudra bien veiller à faire correspondre le marquage sur le boîtier avec celui de la couche sérigraphiée. + +La broche la plus longue correspond au **+**. + +Comme pour l’oscillateur, il est courant de le souder légèrement au-dessus du :term:`PCB`. + +Connecteurs SIL/Molex +--------------------- + +| Les connecteurs type Molex sont *polarisés*, ils possèdent un détrompeur. +| Physiquement, ce sont des composants passifs, mais étant donné qu’ils serviront à la connexion d’autres composants ou modules polarisés, il est important de les souder selon le marquage sur la couche sérigraphiée. + +| Le connecteur :term:`SIL`, repéré :term:`FTDI`, peut être soudé dans n’importe quel sens. +| Il permet de brancher la carte USB-:term:`FTDI` qui servira à la programmation du routeur. + +Inductance +---------- + +Ce composant, repéré **L2**, n’est pas polarisé. +Son rôle est de filtrer la source de courant qui servira ensuite de référence pour les mesures. + +Condensateurs électrolytiques +----------------------------- + +Les deux condensateurs électrolytiques, **C1** et **C2**, sont polarisés et doivent donc être installés dans le bon sens. +La broche **-ve** est indiquée par une bande proéminente, en général blanche, sur toute la longueur du composant. + +L’autre broche est la **+ve**, qui doit aller dans le trou marqué **+** sur la couche sérigraphiée. + +.. attention:: + Bien qu’ils se ressemblent assez, il est important que ces deux condensateurs soient installés aux bons endroits. + + | Le plus grand condensateur (**C1** = **100 μF**) est le plus proche du pont redresseur. + | Le plus petit (**C2** = **10 μF**) est le plus proche de **IC2**. + + Si ces deux composants sont inversés, les symptômes qui en résultent peuvent être difficiles à diagnostiquer. + +Connecteurs secteur et porte-fusible +------------------------------------ + +| Le connecteur secteur repéré **TB1** recevra l’alimentation électrique 230 V. +| Cette alimentation permettra à la fois d’alimenter la carte-mère, mais aussi la prise de mesure de la tension du secteur. + +| Le porte-fusible repéré **FS1** peuvent maintenant être installés. +| Il protégera le système en cas de défaillance du transformateur. + +| En raison des pistes du plan masse, la broche centrale de **TB1** nécessitera plus de chaleur que les autres broches. +| Ces borniers doivent être orientés correctement pour permettre un accès facile au câblage. +| Il est très facile de se tromper de sens ! + +Si cela se produit, le plastique peut être soigneusement coupé avec un couteau et chaque broche extraite séparément. + +Le porte-fusible, accompagné de son fusible de **100 mA**, est simple à mettre en place. + +Régulateur·s de tension +----------------------- + +| Le régulateur de tension **VR1** doit être positionné de manière à ce que son ailette métallique soit éloignée du transformateur, comme indiqué sur la sérigraphie. +| En fonction de l’application, le **VR1** sera une version **3,3 V** ou **5 V**. +| La version **5 V** est nécessaire chaque fois que l’option *pin-saving hardware* est utilisée. + +| La soudure des broches du **VR1** nécessitera probablement une température plus élevée. +| Pour réduire la quantité de métal à chauffer, il est possible de couper préalablement ces broches à la longueur requise. + +Le régulateur de tension **VR2** se présente sous la forme habituelle d’un transistor, soit un cylindre noir avec un méplat. + +Varistance +---------- + +Ce composant non polarisé et repéré **RV1**, est une protection contre les surtensions qui pourraient venir du réseau électrique. + +Transformateur +-------------- + +Le dernier composant à installer est le transformateur. Il s’agit d’un transformateur double **6 V** comme indiqué sur la couche sérigraphiée. +Un transformateur de **6 V** peut prendre en charge un régulateur de tension de **3,3 V** ou de **5 V**. + +.. important:: + Lors de l’installation de ce composant, assurez-vous qu’il n’y ait aucun espace entre la base du transformateur et la carte de circuit imprimé :term:`PCB`. + +Le module radiofréquence ou module RF +------------------------------------- + +Ce module de type RFM12B ou RFM69 existe sous plusieurs fréquences. Il permettra de faire communiquer deux cartes-mères distantes via radio. + +Lorsque ce module est livré, il sera accompagné d’un socle à souder (repéré **SMA**) pour l’antenne, ainsi qu’une antenne. + +.. caution:: + | Ce module est très sensible à l’électricité statique. + | Il faudra veiller à relier son corps à la masse (prise de terre) et ne pas porter de vêtements synthétiques lors de l’opération d’assemblage. diff --git a/_sources/mono/carte-mere-mono-soudure.rst.txt b/_sources/mono/carte-mere-mono-soudure.rst.txt new file mode 100644 index 0000000..a54f2ef --- /dev/null +++ b/_sources/mono/carte-mere-mono-soudure.rst.txt @@ -0,0 +1,27 @@ +.. _carte-mere-mono-soudure: + +Soudure +======= + +.. hint:: + | Après chaque étape, vérifiez soigneusement les soudures effectuées (l’utilisation d’une loupe peut faciliter cette vérification). + | Ensuite, coupez **à ras** toutes les pattes qui dépassent à l’aide d’une petite pince coupante pour préparer la surface pour l’étape suivante. + +Vous devrez souder les composants communs à toutes les configurations, ainsi que les composants spécifiques à la configuration commandée. + +| Il peut être judicieux d’alterner les opérations de soudure entre les composants communs et les composants spécifiques. +| En effet, il est toujours plus facile de souder dans l’ordre de taille/épaisseur, en commençant par les composants les moins hauts/épais et en terminant par les composants les plus hauts/épais. + +| Par exemple, le connecteur **CN1** présent dans les configurations **B**, **C** et **D** est bien plus haut que les résistances, mais moins haut que l’inductance **L2**. +| Il sera donc plus pratique de le souder après les résistances, mais avant l’inductance. + +.. toctree:: + :maxdepth: 3 + + ../common/ordre-soudure + carte-mere-mono-commun + carte-mere-mono-A + carte-mere-mono-B + carte-mere-mono-C + carte-mere-mono-D + carte-mere-mono-E diff --git a/_sources/mono/carte-mere-mono-synthese.rst.txt b/_sources/mono/carte-mere-mono-synthese.rst.txt new file mode 100644 index 0000000..ad18605 --- /dev/null +++ b/_sources/mono/carte-mere-mono-synthese.rst.txt @@ -0,0 +1,24 @@ +.. _carte-mere-mono-synthese: + +Synthèse +======== + +Voici l’inventaire spécifique à chaque configuration : + +* :ref:`A ` : 1 à 12 sorties triac et/ou relais, **sans afficheur**, **sans module RF** +* :ref:`B ` : 1 à 2 sorties triac et/ou relais, **avec afficheur**, **sans module RF** +* :ref:`C ` : 3 à 7 sorties triac et/ou relais, **avec afficheur**, **sans module RF** +* :ref:`D ` : 0 à 2 sorties triac et/ou relais, **avec afficheur**, **avec module RF** (émetteur ou récepteur) +* :ref:`E ` : 0 à 7 sorties triac et/ou relais, **sans afficheur**, **avec module RF** (émetteur ou récepteur) + +============= === === === === === +\ A B C D E +============= === === === === === +**R11-R18** - X X X - +**CN1/Nappe** - X X X - +**IC3-IC4** - - X X - +**VR2** - - - X X +**C8-C9** - - - X X +**RF** - - - X X +**R21-R26** - - - X - +============= === === === === === diff --git a/_sources/mono/carte-mere-mono-test-elec.rst.txt b/_sources/mono/carte-mere-mono-test-elec.rst.txt new file mode 100644 index 0000000..fe80b43 --- /dev/null +++ b/_sources/mono/carte-mere-mono-test-elec.rst.txt @@ -0,0 +1,77 @@ +.. _carte-mere-mono-test-elec: + +Tests électriques +================= + +Une fois le transformateur installé, la carte est prête pour les tests électriques. + +C’est le moment idéal pour vérifier que toutes les soudures sont en bon état et qu’il n’y a pas de résidus de soudure. + +Avant d’installer les circuits intégrés, il est important de vérifier le bon fonctionnement de l’alimentation. + +.. danger:: + **Alerte de sécurité** + + Pour poursuivre cette séquence de construction, un accès à la tension secteur **230 V** est requis. + + Veuillez ne pas passer à cette étape suivante à moins que vous soyez compétent pour le faire. + +| Sur la photo ci-dessous, une alimentation temporaire de 230 V CA via un fusible de 3 A a été connectée. +| Bien que cela ne soit pas requis par ce :term:`PCB`, une connexion à la terre offre un certain degré de sécurité dans le cas où l’opérateur entrerait accidentellement en contact avec la ligne 230 V :term:`AC`. + +.. contents:: Sommaire + :local: + :depth: 1 + +Test de l’alimentation principale +--------------------------------- + +Si tout a été correctement assemblé, la sortie de l’alimentation devrait être d’environ **3,3 V** ou **5 V** si un régulateur de tension **5 V** a été installé. + +Cette tension peut être facilement vérifiée au niveau du connecteur *access to power*, comme indiqué ici. + +.. hint:: + N’oubliez pas de mettre votre multimètre sur la position *courant continu*, :term:`DC`, symbole **⎓** ! + +À l’exception du transformateur, qui peut sembler légèrement chaud après plusieurs minutes, aucun des composants de la carte ne doit présenter d’augmentation notable de la température. + +Test de la tension de référence +------------------------------- + +Avec la tension correcte en place, les circuits intégrés peuvent maintenant être installés, **après avoir coupé l’alimentation**. + +| Le premier d’entre eux est **IC2**. +| Il s’agit d’un amplificateur opérationnel qui fournit une tension de référence intermédiaire pour les capteurs de tension et de courant. + +| Avec les packs Dual-in-Line, les broches devront peut-être être légèrement pliées vers l’intérieur pour s’insérer dans l’embase. +| Cela peut être fait en *faisant rouler* doucement la puce de chaque côté, tour à tour. + +Pour minimiser les risques de dommages électriques, cette opération doit être effectuée sur une surface protectrice telle qu’un sac antistatique. + +Avec les broches bien alignées, le circuit intégré peut être délicatement placé sur son connecteur, comme indiqué ici. + +.. warning:: + Les circuits intégrés doivent être installés dans le bon sens. Le point ou l’encoche sur la puce doit être aligné avec l’encoche de l’image sérigraphiée. + +Une fois que tout a été soigneusement vérifié, la puce peut être enfoncée fermement. + +| Avec **IC2** en place et la carte alimentée à nouveau, le point milieu de la référence de tension peut être mesurée. +| **Vref** doit être environ la moitié de la tension d’alimentation. Ici, nous testons une carte **3,3 V**. + +Un endroit pratique pour accéder à **Vref** se trouve à l’extrémité supérieure de **R6**. La prise d’antenne **SMA** est un point de masse pratique. + +**Vref** est également accessible à divers autres endroits, comme indiqué sur le schéma de circuit de cette carte. + +Installation du processeur principal +------------------------------------ + +Une fois la tension vérifiée et confirmée correcte, vous pouvez insérer le processeur principal, **IC1**. + +.. warning:: + Assurez-vous que l’alimentation est coupée avant d’insérer **IC1**. + +| Le processeur principal, **IC1**, est installé de la même manière que pour **IC2**, toujours après avoir coupé l’alimentation. +| Avec autant de broches, il est très facile pour l’une d’entre elles de se plier en dessous. + +.. caution:: + Si ce circuit intégré est dans le mauvais sens lors de la mise sous tension, il ne fonctionnera probablement plus jamais ! diff --git a/_sources/mono/carte-mere-mono-tests.rst.txt b/_sources/mono/carte-mere-mono-tests.rst.txt new file mode 100644 index 0000000..934f92d --- /dev/null +++ b/_sources/mono/carte-mere-mono-tests.rst.txt @@ -0,0 +1,17 @@ +.. _carte-mere-mono-tests: + +Tests +===== + +À ce stade, tous les composants ont été soudés sur la carte mère. + +| Avant de passer aux tests, il est crucial d’effectuer une dernière vérification de chaque point de soudure. +| Assurez-vous que toutes les soudures sont propres, sans court-circuit, et que tous les composants sont correctement positionnés, qu’il ne reste pas de morceaux de pattes coupées … + +Il est maintenant temps de procéder aux tests pour vérifier que tout fonctionne correctement. + +.. toctree:: + :maxdepth: 3 + + carte-mere-mono-test-elec + test-logiciel-mono \ No newline at end of file diff --git a/_sources/mono/carte-mere-mono.rst.txt b/_sources/mono/carte-mere-mono.rst.txt new file mode 100644 index 0000000..c656bd3 --- /dev/null +++ b/_sources/mono/carte-mere-mono.rst.txt @@ -0,0 +1,16 @@ +.. _carte-mere-mono: + +Carte-mère monophasée +===================== + +Plusieurs versions du :term:`PCB` peuvent exister. + +Bien qu’elles fonctionnent toutes de la même manière, chaque nouvelle version offre plus de flexibilité que la précédente ainsi que quelques améliorations mineures, essentiellement des aspects pratiques (facilité d’accès des entrées/sorties de l’Arduino…). + +.. toctree:: + :maxdepth: 2 + + carte-mere-mono-inventaire + carte-mere-mono-synthese + carte-mere-mono-soudure + carte-mere-mono-tests diff --git a/_sources/mono/carte-sortie-mono.rst.txt b/_sources/mono/carte-sortie-mono.rst.txt new file mode 100644 index 0000000..ba03f7a --- /dev/null +++ b/_sources/mono/carte-sortie-mono.rst.txt @@ -0,0 +1,3 @@ +.. _carte-sortie-mono: + +.. include:: ../common/carte-sortie.rst diff --git a/_sources/mono/carte-sortie-relais-mono.rst.txt b/_sources/mono/carte-sortie-relais-mono.rst.txt new file mode 100644 index 0000000..f704488 --- /dev/null +++ b/_sources/mono/carte-sortie-relais-mono.rst.txt @@ -0,0 +1,3 @@ +.. _carte-sortie-relais-mono: + +.. include:: ../common/carte-sortie-relais.inc.rst diff --git a/_sources/mono/dissipateur-mono.rst.txt b/_sources/mono/dissipateur-mono.rst.txt new file mode 100644 index 0000000..fdded85 --- /dev/null +++ b/_sources/mono/dissipateur-mono.rst.txt @@ -0,0 +1,3 @@ +.. _dissipateur-mono: + +.. include:: ../common/dissipateur.inc.rst diff --git a/_sources/mono/etalonnage-mono.rst.txt b/_sources/mono/etalonnage-mono.rst.txt new file mode 100644 index 0000000..9a99cc5 --- /dev/null +++ b/_sources/mono/etalonnage-mono.rst.txt @@ -0,0 +1,42 @@ +.. _etalonnage-mono: + +Étalonnage +========== + +Lorsqu’il fonctionne avec les paramètres par défaut, le routeur Mk2PVRouter peut dévier de manière fiable l’énergie excédentaire sans nécessiter d’étalonnage. Cependant, pour fournir une indication précise de l’énergie déviée, le système doit être étalonné. + +Pour un étalonnage précis, une certaine forme de référence standard est nécessaire. Le compteur d’électricité installé peut souvent être utilisé à cette fin. + +La plupart des compteurs d’électricité génèrent un flux d’impulsions optiques pour indiquer le taux de consommation d’énergie. En plaçant un transformateur de courant :term:`CT` autour de l’un des câbles d’alimentation entrants, et en exécutant le logiciel approprié sur le matériel en cours de test, un flux d’impulsions optiques similaire peut être généré. + +Le taux du flux d’impulsions pour le matériel en cours de test peut être ajusté en modifiant la valeur ``powerCal`` pertinente. Lorsque les deux flux d’impulsions sont synchronisés, l’étalonnage correct a été atteint. + +:term:`CT` *grille/réseau* +-------------------------- + +Lors de l’étalonnage d’un nouvel ensemble de matériel, la première étape consiste à étalonner le canal **CT1**. À cette fin, le matériel en cours de test doit exécuter le programme ``cal_CT1_v_meter.ino``, qui est disponible sur la page de téléchargements. + +Pour chaque unité d’énergie mesurée au point de connexion au réseau via **CT1**, une impulsion sera générée au port de sortie. |br| +Le taux des impulsions peut être modifié en changeant la valeur de ``powerCal_grid``. Un flux d’impulsions similaire sera visible au compteur. + +Pour avancer un flux d’impulsions par rapport à l’autre, un second chemin pour le courant devra passer à travers **CT1**. |br| +La puissance consommée par n’importe quel petit appareil fera l’affaire — un seul de ses cœurs actifs doit passer à travers **CT1** — et le courant peut circuler dans les deux sens. |br| +Lorsque l’appareil est éteint, le fil supplémentaire n’aura aucun effet sur les performances du CT, car aucun courant ne le traverse. + +Lorsque la valeur correcte a été trouvée pour ``powerCal_grid``, cette même valeur peut être utilisée avec n’importe quel croquis de routeur Mk2PVRouter qui doit être exécuté sur le **même matériel**. + +:term:`CT` *diversion* +---------------------- + +Ayant obtenu la valeur correcte pour ``powerCal_grid``, le canal *grid* peut ensuite être utilisé pour étalonner le canal *diverted power* qui utilise **CT2**. |br| +À cette fin, le matériel en cours de test doit exécuter le programme ``cal_CT2_v_CT1.ino``, qui est disponible sur la page de téléchargements. |br| +Le paramètre ``powerCal_grid`` doit être réglé à la valeur correcte comme déterminé précédemment dans la première partie de ce processus. + +Les deux **CTs** devraient être montés autour du même fil porteur de courant. Si **CT2** a été intégré dans un système complet, le commutateur de marche forcée peut être utilisé pour forcer le courant à travers ce câblage. |br| +Le canal **CT2** d’une carte autonome peut être étalonné en utilisant simplement un câble d’extension modifié qui fonctionne entre n’importe quelle prise de courant pratique et un appareil approprié. + +Lorsque la valeur correcte a été trouvée pour ``powerCal_diverted``, cette même valeur peut être utilisée avec n’importe quel croquis de routeur Mk2PVRouter qui doit être exécuté sur le **même matériel**. + +.. |br| raw:: html + +
\ No newline at end of file diff --git a/_sources/mono/jumpers-Dx.rst.txt b/_sources/mono/jumpers-Dx.rst.txt new file mode 100644 index 0000000..7624b73 --- /dev/null +++ b/_sources/mono/jumpers-Dx.rst.txt @@ -0,0 +1,12 @@ +.. _jumpers-Dx: + +| Pour utiliser les emplacements **D2**, **D10**, **D11**, **D12** et **D13**, il est nécessaire de souder non seulement les socles, mais aussi les ponts *Jumpers* associés. +| Pour ce faire, faites fondre de l’étain sur chaque partie du *jumper* et ajoutez-en suffisamment pour relier les deux parties ensemble. + +Voici l’assignation de chaque *jumper* : + +* pour **D2**, soudez **J16**. +* pour **D10**, soudez **J17**. +* pour **D11**, soudez **J18**. +* pour **D12**, soudez **J19**. +* pour **D13**, soudez **J20**. \ No newline at end of file diff --git a/_sources/mono/test-logiciel-mono.rst.txt b/_sources/mono/test-logiciel-mono.rst.txt new file mode 100644 index 0000000..de59cdd --- /dev/null +++ b/_sources/mono/test-logiciel-mono.rst.txt @@ -0,0 +1,22 @@ +.. _test-logiciel-mono: + +Tests logiciel +============== + +| Une fois le processeur installé, il serait judicieux de vérifier que l’alimentation électrique fonctionne toujours correctement. +| Si c’est le cas, nous pouvons exécuter un croquis (programme) pour vérifier si le processeur fonctionne correctement. + +| Nous allons maintenant tester le bon fonctionnement des autres parties matérielles de la carte-mère. +| Cela permettra à la fois de s’assurer que le processeur est opérationnel et de vérifier que les autres composants sont correctement installés et/ou assemblés. + +| Pour cette prochaine étape, un dispositif de programmation approprié doit être mis en place. + +.. contents:: Sommaire + :local: + :depth: 1 + +.. include:: test-logiciel-mono-requirements.inc.rst + +.. include:: carte-mere-mono-test-afficheur.inc.rst + +.. include:: test-mono-mesures.inc.rst \ No newline at end of file diff --git a/_sources/tri/assemblage-tri.rst.txt b/_sources/tri/assemblage-tri.rst.txt new file mode 100644 index 0000000..0fdef2c --- /dev/null +++ b/_sources/tri/assemblage-tri.rst.txt @@ -0,0 +1,15 @@ +.. _assemblage-tri: + +Assemblage +========== + +Après avoir effectué toutes les étapes précédentes, :ref:`Soudure de la carte-mère triphasée `, :ref:`Préparation du boîtier `, :ref:`Perçage du dissipateur `, :ref:`étage·s de sortie ` et :ref:`Confection des câbles `, il est temps d’assembler le tout. + +Il est possible de réaliser l’assemblage dans n’importe quel ordre, cependant, il sera plus pratique de le réaliser comme ceci : +1. Mise en place des presse-étoupe +2. Fixation du ou des dissipateurs sur le boîtier, y compris fils de terre. +3. Fixation du ou des étages de sortie sur chaque dissipateur (visser le triac) +4. Fixation du ou des étages de sortie dans le boîtier (visser le :term:`PCB`) +5. Mise en place des prises jack et bouton *reset* +6. Fixation de la carte-mère dans le boîtier. +7. Mise en place des câbles. diff --git a/_sources/tri/boitier-tri.rst.txt b/_sources/tri/boitier-tri.rst.txt new file mode 100644 index 0000000..14113cb --- /dev/null +++ b/_sources/tri/boitier-tri.rst.txt @@ -0,0 +1,3 @@ +.. _boitier-tri: + +.. include:: ../common/boitier.inc.rst diff --git a/_sources/tri/carte-mere-tri.rst.txt b/_sources/tri/carte-mere-tri.rst.txt new file mode 100644 index 0000000..c048c40 --- /dev/null +++ b/_sources/tri/carte-mere-tri.rst.txt @@ -0,0 +1,283 @@ +.. _carte-mere-tri: + +Carte-mère triphasée +==================== + +Plusieurs versions du :term:`PCB` peuvent exister. + +Bien qu’elles fonctionnent toutes de la même manière, chaque nouvelle version offre plus de flexibilité que la précédente ainsi que quelques améliorations mineures, essentiellement des aspects pratiques (facilité d’accès des entrées/sorties de l’Arduino…). + +.. hint:: + | Après chaque étape, il conviendra de vérifier les soudures effectuées (l’utilisation d’une loupe facilitera la vérification). + | Ensuite, on pourra couper **à ras** toutes les pattes qui dépassent avec une petite pince coupante afin de faire place nette pour l’étape suivante. + +.. contents:: Sommaire + :local: + :depth: 1 + +------------- + +Soudure des composants +---------------------- + +Résistances +~~~~~~~~~~~ + +Ces composants n’ont pas de sens et sont très peu sensibles à l’électricité statique. + +Les valeurs des résistances sont indiquées sur le schéma de circuit et sont répétées ici pour plus de commodité : +(veuillez lire les notes ci-dessous qui concernent ces valeurs de composants) + +* **R1** = **47 kΩ**. Cela fournit le :term:`pull-up` pour la ligne de réinitialisation du processeur. +* **R2-R4** = **100 Ω** ou **180 Ω**. Elles réduisent la taille du signal :term:`AC` de chaque transformateur. +* **R5-R7** = **1 kΩ**. Elles réduisent la taille du signal :term:`AC` de chaque transformateur. +* **R8-R10** = **120 Ω** ou **150 Ω** en général. Il s’agit des résistances de charge (ou :term:`burden`) de chaque capteur de courant *grille*, qui utilisent :term:`CT`\1 - :term:`CT`\3. +* **R11-R12** = **10 kΩ**. Ensemble, elles fournissent une tension de référence pour les capteurs d’entrée. +* **R19-R21** = **1 kΩ**. Elles sont chacune en série avec un :term:`CT` pour protéger le processeur des signaux importants. +* **R22** = **1 MΩ**. Cela fournit le :term:`pull-up` pour la ligne de réinitialisation du processeur. + +.. note:: + + Des valeurs inférieures pour **R2-R4** et **R5-R7** sont désormais utilisées pour augmenter la charge sur le transformateur. + Cela peut l’empêcher d’entrer en saturation, ce qui déformerait la forme d’onde de sortie. |br| + **R2-R4** = **100 Ω** convient pour un fonctionnement en **3,3 V**. |br| + Pour une meilleure utilisation de la plage d’entrée de l’:term:`ADC`, **R2-R4** doit être augmenté à **180 Ω** pour un fonctionnement en **5 V**. + + La valeur pour **R8-R10** a été initialement spécifiée comme étant **150 Ω**. + + Lorsque le processeur fonctionne à **3,3 V**, cela donne une plage de fonctionnement d’environ **4 kW**. En réduisant ces valeurs à **120 Ω**, la plage est augmentée à **~5 kW**. + + Pour un système **5 V**, la valeur originale de **150 Ω** donne une plage de fonctionnement d’environ **6 kW**. + + Ces valeurs de résistance de charge s’appliquent lorsque le processeur fonctionne à **3,3 V**. S’il fonctionne à **5 V**, ces plages sont augmentées d’environ **50 %**. + + Ces puissances s’entendent sur chaque phase. + + .. include:: ../common/burden-calc.inc.rst + +Diodes +~~~~~~ + +Ensuite, les diodes peuvent être ajoutées. + +Celles-ci offrent un certain degré de protection au processeur lorsque des courants élevés traversent les CTs. + +.. attention:: + + Les diodes sont polarisées. |br| + Elles doivent être placées selon le repérage sur la couche sérigraphiée. + +Supports circuits intégrés +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Ensuite, on installe généralement les supports pour les circuits intégrés. + +.. attention:: + Chaque support a une encoche à une extrémité. Celle-ci doit être alignée avec la marque correspondante sur la couche sérigraphiée, comme indiqué ici. + +Avec le support convenablement soutenu par le bas (on peut aussi utiliser un morceau d’adhésif), les deux broches situées dans les coins opposés peuvent être soudées en place. |br| +Si un réalignement du composant est nécessaire, il doit être effectué **avant** que les broches restantes ne soient fixées. + +Condensateurs céramiques et oscillateur +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Ces composants ne sont pas polarisés. + +Les condensateurs céramiques sont en général orange, et ont la forme d’une goutte d’eau, par opposition aux condensateurs électrolytiques polarisés de forme cylindriques et bleus ou noirs. + +.. note:: + Parmi le jeu de condensateurs céramiques, deux d’entre eux sont plus petits que les autres. + + Il s’agit des deux condensateurs associés à l’oscillateur, leur valeur est de **22 pF** et sont référencés **C10** et **C11**. + + **C4** et **C6-C9** sont des condensateurs céramiques de **100 nF**, généralement marqués *104*. + +.. note:: + L’oscillateur ainsi que ses deux condensateurs associés peuvent être soudés légèrement au-dessus du :term:`PCB`. |br| + Ce n’est pas nécessaire pour le bon fonctionnement. |br| + Pour ce faire, on pourra utiliser une allumette le temps d’effectuer la soudure. + +Ponts redresseurs ou ponts de diodes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Le rôle de ce composant est de redresser le courant alternatif fourni par le transformateur. |br| +C’est la première étape nécessaire pour obtenir une alimentation en courant continu. + +Sur la figure ci-après, la courbe du haut correspond à la tension fournie par le transformateur. |br| +La courbe du bas est la tension fournie par le redresseur. + +.. figure:: ../img/Redresseur-monophase.png + :alt: Redressement double alternance monophasé + :align: center + :scale: 50% + + Redressement double alternance monophasé + +Sur la version triphasée de ce routeur, ils sont au nombre de trois, un par phase. |br| + +.. note:: + Il aurait été possible de réaliser un redresseur double alternance triphasé. Ce type de redresseur ne nécessite que six diodes. + Il y a cependant deux inconvénients : + * un tel composant est relativement cher, plus de 3x de prix d’un redresseur standard. + * la tension moyenne résultante est plus de 2 fois la tension moyenne de chaque entrée. Cela engendre un surcroît de "*travail*" du régulateur de tension qui chauffera bien plus. + +.. attention:: + Les ponts redresseurs sont polarisés. |br| + Il faudra bien veiller à faire correspondre le marquage sur le boîtier avec celui de la couche sérigraphiée. + +La broche la plus longue correspond au **+**. + +Comme pour l’oscillateur, il est courant de les souder légèrement au-dessus du :term:`PCB`. + +.. tip:: + On pourra "recycler" 2 des pattes coupées pour réaliser les :ref:`ponts-de-neutre`. + +Connecteurs SIL/Molex +~~~~~~~~~~~~~~~~~~~~~ + +Les connecteurs Molex sont *polarisés*, ils possèdent un détrompeur. |br| +Physiquement, ce sont des composants passifs, mais étant donné qu’ils serviront à la connexion d’autres composants ou modules polarisés, il est important de les souder selon le marquage sur la couche sérigraphiée. + +Les connecteurs SIL, ou *pin header*, peuvent être soudés dans n’importe quel sens. + +Ils seront plus ou moins nombreux selon la configuration : + +* 3 connecteurs à **2 pôles** pour les pinces ampèremétriques, référencés :term:`CT`\1 - :term:`CT`\3 +* 1 connecteur à **2 pôles** pour le bouton *reset*, référencé **Reset** +* 1 connecteur à **6 pôles** pour le connecteur :term:`FTDI`, référencé **FTDI** +* 1 connecteur à **2 pôles** par sortie, référencé parmi **D3-D13**. + +Inductance +~~~~~~~~~~ + +Ce composant n’est pas polarisé. Il est référencé **L1**, à proximité de l’**ATmega328-P**. + +Condensateurs électrolytiques +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Les deux condensateurs électrolytiques, **C1** et **C2**, sont polarisés et doivent donc être installés dans le bon sens. +La broche **-ve** est indiquée par une bande proéminente, en général blanche, sur toute la longueur du composant. + +L’autre broche est la **+ve**, qui doit aller dans le trou marqué **+** sur la couche sérigraphiée. + +.. attention:: + Bien qu’ils se ressemblent assez, il est important que ces deux condensateurs soient installés aux bons endroits. + + Le plus grand condensateur (**C1** = **100 μF**) est le plus proche du bord du :term:`PCB`. |br| + Le plus petit (**C2** = **10 μF**) est le plus proche de **VR1**. + + Si ces deux composants sont inversés, les symptômes qui en résultent peuvent être difficiles à diagnostiquer. + +.. _ponts-de-neutre: + +Ponts de neutre +~~~~~~~~~~~~~~~ + +Pour un raccordement triphasé **avec** neutre (en France et la plupart des pays européens), il est possible de ponter le neutre entre chacune des 3 sous-alimentations. |br| +Les deux ponts sont référencés "**N**", entre les transformateurs. |br| +De cette façon, il ne sera pas nécessaire d’introduire un fil de neutre dans chaque connecteur secteur, un seul suffira. + +.. warning:: + Pour un raccordement triphasé **sans** neutre, essentiellement le **3 * 230 V** en **Belgique**, il ne faudra pas souder ces ponts. + +.. hint:: + Pour réaliser ces ponts, on pourra utiliser le reliquat des pattes coupées de l’inductance. + +Connecteurs secteur et porte-fusible +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Les connecteurs secteur (**PWR1-PWR3**) et les porte-fusible (**FS1-FS3**) peuvent maintenant être installés. |br| +En raison des pistes du plan masse, les broches référencées **PE** sur chacun des connecteurs nécessitera plus de chaleur que les autres broches. +Ces borniers doivent être orientés correctement pour permettre un accès facile au câblage. |br| +Il est très facile de se tromper de sens ! + +Les porte-fusible, accompagnés de leur fusible de **100 mA**, sont simples à mettre en place. + +Régulateur de tension +~~~~~~~~~~~~~~~~~~~~~ + +Le régulateur de tension (**VR1**) doit être installé de manière à ce que son ailette métallique soit éloignée du transformateur, comme indiqué sur la sérigraphie. |br| +En fonction de l’application, le **VR1** sera une version **3,3 V** ou **5 V**. + +La soudure des broches du **VR1** nécessitera probablement une température plus élevée. |br| +Pour réduire la quantité de métal à chauffer, il est possible de couper préalablement ces broches à la longueur requise. + +Transformateurs +~~~~~~~~~~~~~~~ + +Les derniers composants à installer sont les transformateurs. Ce sont des transformateurs doubles de **6 V**, comme indiqué sur la couche sérigraphiée. +Ces transformateurs de **6 V** peuvent alimenter un régulateur de tension de **3,3 V** ou de **5 V**. + +.. important:: + Lors du montage de ces composants, il ne doit y avoir aucun espace entre la base du transformateur et la carte de circuit imprimé :term:`PCB`. + +------------- + +Tests électriques +----------------- + +Une fois les transformateurs en place, la carte est maintenant prête pour les tests électriques. |br| + +C’est le bon moment pour vérifier que tous les joints soudés sont en bon état et que toutes les éclaboussures de soudure ont été éliminées. + +Test de chaque sous-alimentation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Avant d’installer les circuits intégrés, le fonctionnement de l’alimentation doit être vérifié. + +.. danger:: + **Alerte de sécurité** + + Pour poursuivre cette séquence de construction, un accès à la tension secteur **230 V** est requis. + + Veuillez ne pas passer à cette étape suivante à moins que vous soyez compétent pour le faire. + +Nous effectuerons les tests suivants en alimentant le routeur via chacun des connecteurs secteur, l’un après l’autre. |br| +Ainsi, si une tension est incorrecte, il sera plus facile d’identifier la partie du circuit qui est défectueuse. + +Si tout a été correctement assemblé, la sortie de l’alimentation devrait être d’environ **3,3 V**… ou **5 V** si un régulateur de tension **5 V** a été installé. + +Cette tension peut être facilement vérifiée au niveau du point de test **Test VCC**, ainsi que **Test GND**, comme indiqué ici. + +.. hint:: + N’oubliez pas de mettre votre multimètre sur la position *courant continu*, :term:`DC`, symbole **⎓** ! + +À l’exception du transformateur, qui peut sembler légèrement chaud après plusieurs minutes, aucun des composants de la carte ne doit présenter d’augmentation notable de la température. + +Insertion du LM358 et test de Vref +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Avec la tension correcte en place, les circuits intégrés peuvent maintenant être installés, après avoir coupé l’alimentation. + +Le premier d’entre eux est LM358. |br| +Il s’agit d’un amplificateur opérationnel qui fournit une tension de référence intermédiaire pour les capteurs de tension et de courant. + +Avec les packs Dual-in-Line, les broches devront peut-être être légèrement pliées vers l’intérieur pour s’insérer dans l’embase. +Cela peut être fait en *faisant rouler* doucement la puce de chaque côté, tour à tour. + +Pour minimiser les risques de dommages électriques, cette opération doit être effectuée sur une surface protectrice telle qu’un sac antistatique. + +Avec les broches bien alignées, le circuit intégré peut être délicatement placé sur son connecteur, comme indiqué ici. + +.. warning:: + Les circuits intégrés doivent être installés dans le bon sens. Le point sur la puce doit être aligné avec l’encoche de l’image sérigraphiée. + +Une fois que tout a été soigneusement vérifié, la puce peut être enfoncée fermement. + +Avec **LM358** en place et la carte alimentée à nouveau, la référence de tension peut être mesurée. |br| +**Vref** doit être environ la moitié de la tension d’alimentation. Ici, nous testons une carte **3,3 V**. + +Cette tension est accessible via le point de test **Test Vref** juste en dessous du **LM358**. + +Insertion du processeur principal +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Le processeur principal, **ATmega328-P**, est installé de la même manière que pour **LM358**, toujours après avoir coupé l’alimentation. +Avec autant de broches, il est très facile pour l’une d’entre elles de se plier en dessous. + +.. caution:: + Si ce circuit intégré est dans le mauvais sens lors de la mise sous tension, il ne fonctionnera probablement plus jamais ! + +.. |br| raw:: html + +
\ No newline at end of file diff --git a/_sources/tri/carte-sortie-relais-tri.rst.txt b/_sources/tri/carte-sortie-relais-tri.rst.txt new file mode 100644 index 0000000..23617f7 --- /dev/null +++ b/_sources/tri/carte-sortie-relais-tri.rst.txt @@ -0,0 +1,3 @@ +.. _carte-sortie-relais-tri: + +.. include:: ../common/carte-sortie-relais.inc.rst diff --git a/_sources/tri/carte-sortie-tri.rst.txt b/_sources/tri/carte-sortie-tri.rst.txt new file mode 100644 index 0000000..4774577 --- /dev/null +++ b/_sources/tri/carte-sortie-tri.rst.txt @@ -0,0 +1,3 @@ +.. _carte-sortie-tri: + +.. include:: ../common/carte-sortie.rst diff --git a/_sources/tri/dissipateur-tri.rst.txt b/_sources/tri/dissipateur-tri.rst.txt new file mode 100644 index 0000000..9f3f055 --- /dev/null +++ b/_sources/tri/dissipateur-tri.rst.txt @@ -0,0 +1,3 @@ +.. _dissipateur-tri: + +.. include:: ../common/dissipateur.inc.rst diff --git a/_sources/tri/etalonnage-tri.rst.txt b/_sources/tri/etalonnage-tri.rst.txt new file mode 100644 index 0000000..ac52371 --- /dev/null +++ b/_sources/tri/etalonnage-tri.rst.txt @@ -0,0 +1,129 @@ +.. _etalonnage-tri: + +Étalonnage +========== + +Contrairement à la version monophasée, le modèle triphasé ne peut pas dévier de manière fiable l’énergie excédentaire sans nécessiter un étalonnage aussi précis que possible. +En effet, étant donné qu’en triphasé, le routeur calcule la somme algébrique des puissances instantanées sur chaque phase, il faut que les mesures soient aussi précises que possible. + +Les composants électroniques ne sont jamais parfaits. Ils ont chacun des caractéristiques données accompagnées d’une tolérance. Les tolérances classiques sont de 5 ou 10 %. Il convient donc d’étalonner chaque ligne de mesure afin que la somme finale soit la plus juste possible. + +Pour un étalonnage précis, une certaine forme de référence standard est nécessaire. Le compteur d’électricité installé peut souvent être utilisé à cette fin. + +La plupart des compteurs d’électricité génèrent un flux d’impulsions optiques pour indiquer le taux de consommation d’énergie. En plaçant un transformateur de courant :term:`CT` autour de l’un des câbles d’alimentation entrants, et en exécutant le logiciel approprié sur le matériel en cours de test, un flux d’impulsions optiques similaire peut être généré. + +Le taux du flux d’impulsions pour le matériel en cours de test peut être ajusté en modifiant la valeur ``f_powerCal`` pertinente. Lorsque les deux flux d’impulsions sont synchronisés, l’étalonnage correct a été atteint. + +.. admonition:: Ligne de mesure + + Ensemble des composants constituants la prise de mesure. Elle part de l’Arduino jusqu’à la pince ampèremétrique en passant par les résistances, connecteurs et les câbles. + +.. admonition:: Pré-requis + + Les pinces doivent être installées sur chaque phase correspondante par rapport à l’alimentation du routeur. + +Principe de base +---------------- + +Cet étalonnage peut être réalisé selon plusieurs méthodes, selon que l’on possède ou non certains appareils de mesure (ampèremètre, wattmètre, voltmètre). + +Pour simplifier la procédure, peu importe la méthode utilisée, il faudra veiller, si possible, à avoir une consommation constante pendant la phase d’étalonnage (brancher par exemple un radiateur électrique, une bouilloire, et débrancher tout le reste, y compris votre/vos système·s de production d’électricité). +L’utilisation d’un appareil purement résistif, donc sans ventilateur ni autre chose qu’une résistance, simplifiera grandement l’étalonnage. + +Méthode avec le compteur de distribution +---------------------------------------- + +Cette méthode ne nécessite aucun appareil de mesure, mais n’est pas la plus rapide à réaliser. + +À l’aide des flash du compteur (1 flash = 1 Wh consommé) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +La plupart des compteurs génèrent un flux d’impulsions optiques pour montrer le taux auquel l’énergie est consommée. En installant un :term:`CT` autour de l’un des câbles d’alimentation entrants et en exécutant le logiciel approprié sur le matériel testé, un flux similaire d’impulsions optiques peut être généré. + +Le débit du flux d’impulsions pour le matériel testé peut être ajusté en modifiant la valeur ``f_powerCal`` correspondante. Lorsque les deux flux d’impulsions sont synchronisés, un étalonnage correct a été réalisé. + +Il faudra aller par tâtonnement. Si le flash du routeur est plus rapide que celui du compteur, il faut diminuer ``f_powerCal`` sinon l’augmenter. + +À l’aide de l’affichage du compteur (plus simple et plus rapide) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Il est possible également de relever la consommation affichée par le compteur sur la phase en cours d’étalonnage. +Il faudra alors faire correspondre la puissance affichée par le routeur dans le Moniteur Série de l’Arduino IDE avec celle affichée par le compteur. +D’où l’intérêt de ne pas avoir d’appareils qui vont se mettre en route sporadiquement (réfrigérateur…). + +L’affichage dans le Moniteur Série se présente de comme ceci : :: + + 1797.67, P:-21, P1:368, P2:-113, P3:-276, V1:233.24, V2:233.82, V3:233.84, (minSampleSets/MC 32, #ofSampleSets 8014) + 1793.61, P:-18, P1:367, P2:-110, P3:-275, V1:233.46, V2:233.93, V3:233.99, (minSampleSets/MC 32, #ofSampleSets 8013) + 1780.56, P:-18, P1:374, P2:-116, P3:-276, V1:233.09, V2:233.53, V3:233.67, (minSampleSets/MC 32, #ofSampleSets 8014) + 1804.21, P:-24, P1:371, P2:-118, P3:-277, V1:233.04, V2:233.48, V3:233.55, (minSampleSets/MC 32, #ofSampleSets 8015) + +``P1``, ``P2``, ``P3`` représentent les puissances moyennées sur 5 secondes sur chaque phase. ``P`` est la puissance totale moyenne totale sur 5 secondes. +Si j’étalonne la phase **L1**, alors **P1** devra afficher la même valeur que celle affichée par le compteur pour cette même phase. + +.. hint:: + Les numéros de phase sont purement arbitraires, la phase **L1** du routeur correspondant à la phase branchée sur le connecteur **L1**, mais ce n’est pas forcément la phase branchée sur le bornier **L1** du compteur. + +Comment trouver le bon ``f_powerCal`` du premier coup +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Avant de télécharger le sketch d’étalonnage, je veille à définir les valeurs comme ceci : + +.. code-block:: cpp + + constexpr float f_powerCal[NO_OF_PHASES]{0.05000f, 0.05000f, 0.05000f}; + +| Supposons que le compteur affiche **2250**, et que le log du routeur affiche **2000**. +| On aura alors : + +.. math:: + + f_{powerCal} = 0.05000 * {2250 \over 2000} = 0.05625 + +.. note:: + La valeur ``0.05000`` dans la formule correspond à la valeur inscrite dans le sketch téléversé. + Si le sketch contient une autre valeur, il conviendra alors d’adapter la formule en conséquence. + +.. hint:: + Après avoir calculé le ``f_powerCal`` de la phase en cours d’étalonnage et saisi sa valeur dans le sketch, il peut être judicieux de téléverser à nouveau sur le routeur et de s’assurer maintenant, la valeur affichée dans le log correspond à celle du compteur. + +En triphasé, il faudra répéter l’opération sur chacune des phases. +Une ligne de mesure comprend TOUS les composants en partant de la pince jusqu’au convertisseur analogique du microcontrôleur. + +.. important:: + Chaque pince devra alors être marquée pour savoir à quelle ligne elle correspond. + +Méthode avec un appareil de mesure annexe +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Cette méthode nécessite un appareil de mesure, type wattmètre ou un autre compteur. + +.. danger:: + **ALERTE SÉCURITÉ** + Potentiellement, selon l’appareil utilisé, il faudra modifier le câblage électrique. Avant toutes manipulations, il est impératif de couper l’alimentation au tableau électrique et de vérifier à l’aide d’un testeur de tension l’absence effective de tension. + Dans le doute, couper le disjoncteur principal. + +Pour cette méthode, le simple sera d’utiliser le chauffe-eau lui-même comme appareil d’étalonnage. +Sur le même principe que la première méthode, on va brancher l’appareil de mesure sur la ligne du chauffe-eau ainsi que l’une des pinces du routeur. + +.. attention:: + La phase doit correspondre. Si j’étalonne la phase **L1**, le chauffe-eau DOIT être branché sur **L1** et la pince du routeur DOIT être celle qui correspond à la phase **L1**. + +Selon que l’appareil affiche une puissance instantanée ou produit des flashs tous les Wh consommés, on appliquera la première méthode. + +.. admonition:: Chauffe-eau triphasé + + Dans cette situation, on déplacera l’appareil de mesure sur chacune des phases — si cet appareil est triphasé, il ne sera pas nécessaire de le déplacer de phase en phase — et on prendra la pince du routeur associée à la bonne phase. Il ne sera pas nécessaire de décâbler le chauffe-eau. + +| Sur le même principe que précédemment, supposons que le compteur/wattmètre affiche **2250**, et que le log du routeur affiche **2000**. +| On aura alors : + +.. math:: + + f_{powerCal} = 0.05000 * {2250 \over 2000} = 0.05625 + +| Comme précédemment, il faudra répéter l’opération sur chacune des phases (décâbler le chauffe-eau sur une autre phase…). +| Une ligne de mesure comprend TOUS les composants en partant de la pince jusqu’au convertisseur analogique du microcontrôleur. + +.. important:: + Chaque pince devra alors être marquée pour savoir à quelle ligne elle correspond. diff --git a/_sources/tri/test-logiciel-tri.rst.txt b/_sources/tri/test-logiciel-tri.rst.txt new file mode 100644 index 0000000..50ccd4d --- /dev/null +++ b/_sources/tri/test-logiciel-tri.rst.txt @@ -0,0 +1,30 @@ +.. _test-logiciel-tri: + +Test logiciel +------------- + +Test de la partie *mesures* +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. note:: + À partir de maintenant, une alimentation triphasée devra être fournie à la carte-mère. + +Chaque transformateur a deux sorties : l’une pour l’alimentation CC, l’autre pour le capteur de tension CA qui devrait déjà fonctionner. +Cela peut être vérifié en exécutant un programme (croquis) qui affiche les mesures analogiques prises par le processeur Atmel (**IC1**). + +Le programme, qui se trouve également sur la page Téléchargements, est : *RawSamplesTool_6chan.ino* + +Après avoir téléchargé ce croquis sur le processeur via l’Arduino IDE, la fenêtre série (icône en forme de loupe) doit être ouverte. +Après avoir terminé chaque exécution, le programme peut être redémarré à partir du clavier en saisissant le caractère "**g**", suivi de *Entrée*. + +Le programme *RawSamplesTool_6chan* affiche les échantillons des trois tensions alternatives et de courant pour un ou plusieurs cycles secteur complets. +Si un courant important est mesuré ainsi que la tension, les résultats affichés sembleront plus intéressants. + +Voici quelques résultats capturés lors de la mesure du courant consommé par une charge de 3 kW avec le :term:`CT` branché sur **CT2**. +Lorsque le :term:`CT` a été déplacé vers le port **CT1**, la sortie résultante semblait presque identique, mais avec les caractères "**1**" et "**2**" inversés. + +RSResults_V_and_I2.txt + +Si aucun signal n’est disponible sur les ports **CT1-CT3**, les formes d’onde de ces canaux seront toutes deux des lignes droites. +Seuls les signaux de tension afficheront un aspect sinusoïdal. +Pour vérifier le fonctionnement des ports **CT1-CT3** pendant que le :term:`PCB` est testé sur le banc, un câblage adapté sera nécessaire. diff --git a/_static/_sphinx_javascript_frameworks_compat.js b/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 0000000..8141580 --- /dev/null +++ b/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,123 @@ +/* Compatability shim for jQuery and underscores.js. + * + * Copyright Sphinx contributors + * Released under the two clause BSD licence + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/_static/base-stemmer.js b/_static/base-stemmer.js new file mode 100644 index 0000000..ca6cca1 --- /dev/null +++ b/_static/base-stemmer.js @@ -0,0 +1,294 @@ +/**@constructor*/ +BaseStemmer = function() { + this.setCurrent = function(value) { + this.current = value; + this.cursor = 0; + this.limit = this.current.length; + this.limit_backward = 0; + this.bra = this.cursor; + this.ket = this.limit; + }; + + this.getCurrent = function() { + return this.current; + }; + + this.copy_from = function(other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; + }; + + this.in_grouping = function(s, min, max) { + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor++; + return true; + }; + + this.in_grouping_b = function(s, min, max) { + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor--; + return true; + }; + + this.out_grouping = function(s, min, max) { + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) { + this.cursor++; + return true; + } + return false; + }; + + this.out_grouping_b = function(s, min, max) { + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) { + this.cursor--; + return true; + } + return false; + }; + + this.eq_s = function(s) + { + if (this.limit - this.cursor < s.length) return false; + if (this.current.slice(this.cursor, this.cursor + s.length) != s) + { + return false; + } + this.cursor += s.length; + return true; + }; + + this.eq_s_b = function(s) + { + if (this.cursor - this.limit_backward < s.length) return false; + if (this.current.slice(this.cursor - s.length, this.cursor) != s) + { + return false; + } + this.cursor -= s.length; + return true; + }; + + /** @return {number} */ this.find_among = function(v) + { + var i = 0; + var j = v.length; + + var c = this.cursor; + var l = this.limit; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >>> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; // smaller + // w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional) + var w = v[k]; + var i2; + for (i2 = common; i2 < w[0].length; i2++) + { + if (c + common == l) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; // v->s has been inspected + if (j == i) break; // only one item in v + + // - but now we need to go round once more to get + // v->s inspected. This looks messy, but is actually + // the optimal approach. + + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c + w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c + w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + // find_among_b is for backwards processing. Same comments apply + this.find_among_b = function(v) + { + var i = 0; + var j = v.length + + var c = this.cursor; + var lb = this.limit_backward; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; + var w = v[k]; + var i2; + for (i2 = w[0].length - 1 - common; i2 >= 0; i2--) + { + if (c - common == lb) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; + if (j == i) break; + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c - w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c - w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + /* to replace chars between c_bra and c_ket in this.current by the + * chars in s. + */ + this.replace_s = function(c_bra, c_ket, s) + { + var adjustment = s.length - (c_ket - c_bra); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit += adjustment; + if (this.cursor >= c_ket) this.cursor += adjustment; + else if (this.cursor > c_bra) this.cursor = c_bra; + return adjustment; + }; + + this.slice_check = function() + { + if (this.bra < 0 || + this.bra > this.ket || + this.ket > this.limit || + this.limit > this.current.length) + { + return false; + } + return true; + }; + + this.slice_from = function(s) + { + var result = false; + if (this.slice_check()) + { + this.replace_s(this.bra, this.ket, s); + result = true; + } + return result; + }; + + this.slice_del = function() + { + return this.slice_from(""); + }; + + this.insert = function(c_bra, c_ket, s) + { + var adjustment = this.replace_s(c_bra, c_ket, s); + if (c_bra <= this.bra) this.bra += adjustment; + if (c_bra <= this.ket) this.ket += adjustment; + }; + + this.slice_to = function() + { + var result = ''; + if (this.slice_check()) + { + result = this.current.slice(this.bra, this.ket); + } + return result; + }; + + this.assign_to = function() + { + return this.current.slice(0, this.limit); + }; +}; diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000..7ebbd6d --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,914 @@ +/* + * Sphinx stylesheet -- basic theme. + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin-top: 10px; +} + +ul.search li { + padding: 5px 0; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 0000000..92fad4b --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 0000000..54b3c46 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 0000000..f1916ec --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 0000000..2ea7ff3 --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 0000000..dbe1aaa --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/cover.jpg b/_static/cover.jpg new file mode 100644 index 0000000..10b08bd Binary files /dev/null and b/_static/cover.jpg differ diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css new file mode 100644 index 0000000..88ba55b --- /dev/null +++ b/_static/css/badge_only.css @@ -0,0 +1 @@ +.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px} \ No newline at end of file diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff b/_static/css/fonts/Roboto-Slab-Bold.woff new file mode 100644 index 0000000..6cb6000 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Bold.woff2 b/_static/css/fonts/Roboto-Slab-Bold.woff2 new file mode 100644 index 0000000..7059e23 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Bold.woff2 differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff b/_static/css/fonts/Roboto-Slab-Regular.woff new file mode 100644 index 0000000..f815f63 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff differ diff --git a/_static/css/fonts/Roboto-Slab-Regular.woff2 b/_static/css/fonts/Roboto-Slab-Regular.woff2 new file mode 100644 index 0000000..f2c76e5 Binary files /dev/null and b/_static/css/fonts/Roboto-Slab-Regular.woff2 differ diff --git a/_static/css/fonts/fontawesome-webfont.eot b/_static/css/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.eot differ diff --git a/_static/css/fonts/fontawesome-webfont.svg b/_static/css/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/_static/css/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/css/fonts/fontawesome-webfont.ttf b/_static/css/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.ttf differ diff --git a/_static/css/fonts/fontawesome-webfont.woff b/_static/css/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff differ diff --git a/_static/css/fonts/fontawesome-webfont.woff2 b/_static/css/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/_static/css/fonts/fontawesome-webfont.woff2 differ diff --git a/_static/css/fonts/lato-bold-italic.woff b/_static/css/fonts/lato-bold-italic.woff new file mode 100644 index 0000000..88ad05b Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff differ diff --git a/_static/css/fonts/lato-bold-italic.woff2 b/_static/css/fonts/lato-bold-italic.woff2 new file mode 100644 index 0000000..c4e3d80 Binary files /dev/null and b/_static/css/fonts/lato-bold-italic.woff2 differ diff --git a/_static/css/fonts/lato-bold.woff b/_static/css/fonts/lato-bold.woff new file mode 100644 index 0000000..c6dff51 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff differ diff --git a/_static/css/fonts/lato-bold.woff2 b/_static/css/fonts/lato-bold.woff2 new file mode 100644 index 0000000..bb19504 Binary files /dev/null and b/_static/css/fonts/lato-bold.woff2 differ diff --git a/_static/css/fonts/lato-normal-italic.woff b/_static/css/fonts/lato-normal-italic.woff new file mode 100644 index 0000000..76114bc Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff differ diff --git a/_static/css/fonts/lato-normal-italic.woff2 b/_static/css/fonts/lato-normal-italic.woff2 new file mode 100644 index 0000000..3404f37 Binary files /dev/null and b/_static/css/fonts/lato-normal-italic.woff2 differ diff --git a/_static/css/fonts/lato-normal.woff b/_static/css/fonts/lato-normal.woff new file mode 100644 index 0000000..ae1307f Binary files /dev/null and b/_static/css/fonts/lato-normal.woff differ diff --git a/_static/css/fonts/lato-normal.woff2 b/_static/css/fonts/lato-normal.woff2 new file mode 100644 index 0000000..3bf9843 Binary files /dev/null and b/_static/css/fonts/lato-normal.woff2 differ diff --git a/_static/css/theme.css b/_static/css/theme.css new file mode 100644 index 0000000..0f14f10 --- /dev/null +++ b/_static/css/theme.css @@ -0,0 +1,4 @@ +html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}[hidden],audio:not([controls]){display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;text-decoration:none}ins,mark{color:#000}mark{background:#ff0;font-style:italic;font-weight:700}.rst-content code,.rst-content tt,code,kbd,pre,samp{font-family:monospace,serif;_font-family:courier new,monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:after,q:before{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dl,ol,ul{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure,form{margin:0}label{cursor:pointer}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}textarea{resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none!important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{body,html,section{background:none!important}*{box-shadow:none!important;text-shadow:none!important;filter:none!important;-ms-filter:none!important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}.rst-content .toctree-wrapper>p.caption,h2,h3,p{orphans:3;widows:3}.rst-content .toctree-wrapper>p.caption,h2,h3{page-break-after:avoid}}.btn,.fa:before,.icon:before,.rst-content .admonition,.rst-content .admonition-title:before,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .code-block-caption .headerlink:before,.rst-content .danger,.rst-content .eqno .headerlink:before,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-alert,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:FontAwesome;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix&v=4.7.0) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#fontawesomeregular) format("svg");font-weight:400;font-style:normal}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.fa-li.fa-lg{left:-1.85714em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa-pull-left.icon,.fa.fa-pull-left,.rst-content .code-block-caption .fa-pull-left.headerlink,.rst-content .eqno .fa-pull-left.headerlink,.rst-content .fa-pull-left.admonition-title,.rst-content code.download span.fa-pull-left:first-child,.rst-content dl dt .fa-pull-left.headerlink,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content p .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.wy-menu-vertical li.current>a button.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-left.toctree-expand,.wy-menu-vertical li button.fa-pull-left.toctree-expand{margin-right:.3em}.fa-pull-right.icon,.fa.fa-pull-right,.rst-content .code-block-caption .fa-pull-right.headerlink,.rst-content .eqno .fa-pull-right.headerlink,.rst-content .fa-pull-right.admonition-title,.rst-content code.download span.fa-pull-right:first-child,.rst-content dl dt .fa-pull-right.headerlink,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content p .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.wy-menu-vertical li.current>a button.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a button.fa-pull-right.toctree-expand,.wy-menu-vertical li button.fa-pull-right.toctree-expand{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.pull-left.icon,.rst-content .code-block-caption .pull-left.headerlink,.rst-content .eqno .pull-left.headerlink,.rst-content .pull-left.admonition-title,.rst-content code.download span.pull-left:first-child,.rst-content dl dt .pull-left.headerlink,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content p .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.wy-menu-vertical li.current>a button.pull-left.toctree-expand,.wy-menu-vertical li.on a button.pull-left.toctree-expand,.wy-menu-vertical li button.pull-left.toctree-expand{margin-right:.3em}.fa.pull-right,.pull-right.icon,.rst-content .code-block-caption .pull-right.headerlink,.rst-content .eqno .pull-right.headerlink,.rst-content .pull-right.admonition-title,.rst-content code.download span.pull-right:first-child,.rst-content dl dt .pull-right.headerlink,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content p .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.wy-menu-vertical li.current>a button.pull-right.toctree-expand,.wy-menu-vertical li.on a button.pull-right.toctree-expand,.wy-menu-vertical li button.pull-right.toctree-expand{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);-ms-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scaleY(-1);-ms-transform:scaleY(-1);transform:scaleY(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-close:before,.fa-remove:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-cog:before,.fa-gear:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-repeat:before,.fa-rotate-right:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.rst-content .admonition-title:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-exclamation-triangle:before,.fa-warning:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-cogs:before,.fa-gears:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-floppy-o:before,.fa-save:before{content:""}.fa-square:before{content:""}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.icon-caret-down:before,.wy-dropdown .caret:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-sort:before,.fa-unsorted:before{content:""}.fa-sort-desc:before,.fa-sort-down:before{content:""}.fa-sort-asc:before,.fa-sort-up:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-gavel:before,.fa-legal:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-bolt:before,.fa-flash:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-clipboard:before,.fa-paste:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-chain-broken:before,.fa-unlink:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:""}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:""}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:""}.fa-eur:before,.fa-euro:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-inr:before,.fa-rupee:before{content:""}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:""}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:""}.fa-krw:before,.fa-won:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-try:before,.fa-turkish-lira:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li button.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-bank:before,.fa-institution:before,.fa-university:before{content:""}.fa-graduation-cap:before,.fa-mortar-board:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:""}.fa-file-archive-o:before,.fa-file-zip-o:before{content:""}.fa-file-audio-o:before,.fa-file-sound-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:""}.fa-empire:before,.fa-ge:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-paper-plane:before,.fa-send:before{content:""}.fa-paper-plane-o:before,.fa-send-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-bed:before,.fa-hotel:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-y-combinator:before,.fa-yc:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-television:before,.fa-tv:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:""}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-sign-language:before,.fa-signing:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-address-card:before,.fa-vcard:before{content:""}.fa-address-card-o:before,.fa-vcard-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.icon,.rst-content .admonition-title,.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content code.download span:first-child,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li button.toctree-expand{font-family:inherit}.fa:before,.icon:before,.rst-content .admonition-title:before,.rst-content .code-block-caption .headerlink:before,.rst-content .eqno .headerlink:before,.rst-content code.download span:first-child:before,.rst-content dl dt .headerlink:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content p .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before,.wy-menu-vertical li button.toctree-expand:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:400;line-height:1;text-decoration:inherit}.rst-content .code-block-caption a .headerlink,.rst-content .eqno a .headerlink,.rst-content a .admonition-title,.rst-content code.download a span:first-child,.rst-content dl dt a .headerlink,.rst-content h1 a .headerlink,.rst-content h2 a .headerlink,.rst-content h3 a .headerlink,.rst-content h4 a .headerlink,.rst-content h5 a .headerlink,.rst-content h6 a .headerlink,.rst-content p.caption a .headerlink,.rst-content p a .headerlink,.rst-content table>caption a .headerlink,.rst-content tt.download a span:first-child,.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand,.wy-menu-vertical li a button.toctree-expand,a .fa,a .icon,a .rst-content .admonition-title,a .rst-content .code-block-caption .headerlink,a .rst-content .eqno .headerlink,a .rst-content code.download span:first-child,a .rst-content dl dt .headerlink,a .rst-content h1 .headerlink,a .rst-content h2 .headerlink,a .rst-content h3 .headerlink,a .rst-content h4 .headerlink,a .rst-content h5 .headerlink,a .rst-content h6 .headerlink,a .rst-content p.caption .headerlink,a .rst-content p .headerlink,a .rst-content table>caption .headerlink,a .rst-content tt.download span:first-child,a .wy-menu-vertical li button.toctree-expand{display:inline-block;text-decoration:inherit}.btn .fa,.btn .icon,.btn .rst-content .admonition-title,.btn .rst-content .code-block-caption .headerlink,.btn .rst-content .eqno .headerlink,.btn .rst-content code.download span:first-child,.btn .rst-content dl dt .headerlink,.btn .rst-content h1 .headerlink,.btn .rst-content h2 .headerlink,.btn .rst-content h3 .headerlink,.btn .rst-content h4 .headerlink,.btn .rst-content h5 .headerlink,.btn .rst-content h6 .headerlink,.btn .rst-content p .headerlink,.btn .rst-content table>caption .headerlink,.btn .rst-content tt.download span:first-child,.btn .wy-menu-vertical li.current>a button.toctree-expand,.btn .wy-menu-vertical li.on a button.toctree-expand,.btn .wy-menu-vertical li button.toctree-expand,.nav .fa,.nav .icon,.nav .rst-content .admonition-title,.nav .rst-content .code-block-caption .headerlink,.nav .rst-content .eqno .headerlink,.nav .rst-content code.download span:first-child,.nav .rst-content dl dt .headerlink,.nav .rst-content h1 .headerlink,.nav .rst-content h2 .headerlink,.nav .rst-content h3 .headerlink,.nav .rst-content h4 .headerlink,.nav .rst-content h5 .headerlink,.nav .rst-content h6 .headerlink,.nav .rst-content p .headerlink,.nav .rst-content table>caption .headerlink,.nav .rst-content tt.download span:first-child,.nav .wy-menu-vertical li.current>a button.toctree-expand,.nav .wy-menu-vertical li.on a button.toctree-expand,.nav .wy-menu-vertical li button.toctree-expand,.rst-content .btn .admonition-title,.rst-content .code-block-caption .btn .headerlink,.rst-content .code-block-caption .nav .headerlink,.rst-content .eqno .btn .headerlink,.rst-content .eqno .nav .headerlink,.rst-content .nav .admonition-title,.rst-content code.download .btn span:first-child,.rst-content code.download .nav span:first-child,.rst-content dl dt .btn .headerlink,.rst-content dl dt .nav .headerlink,.rst-content h1 .btn .headerlink,.rst-content h1 .nav .headerlink,.rst-content h2 .btn .headerlink,.rst-content h2 .nav .headerlink,.rst-content h3 .btn .headerlink,.rst-content h3 .nav .headerlink,.rst-content h4 .btn .headerlink,.rst-content h4 .nav .headerlink,.rst-content h5 .btn .headerlink,.rst-content h5 .nav .headerlink,.rst-content h6 .btn .headerlink,.rst-content h6 .nav .headerlink,.rst-content p .btn .headerlink,.rst-content p .nav .headerlink,.rst-content table>caption .btn .headerlink,.rst-content table>caption .nav .headerlink,.rst-content tt.download .btn span:first-child,.rst-content tt.download .nav span:first-child,.wy-menu-vertical li .btn button.toctree-expand,.wy-menu-vertical li.current>a .btn button.toctree-expand,.wy-menu-vertical li.current>a .nav button.toctree-expand,.wy-menu-vertical li .nav button.toctree-expand,.wy-menu-vertical li.on a .btn button.toctree-expand,.wy-menu-vertical li.on a .nav button.toctree-expand{display:inline}.btn .fa-large.icon,.btn .fa.fa-large,.btn .rst-content .code-block-caption .fa-large.headerlink,.btn .rst-content .eqno .fa-large.headerlink,.btn .rst-content .fa-large.admonition-title,.btn .rst-content code.download span.fa-large:first-child,.btn .rst-content dl dt .fa-large.headerlink,.btn .rst-content h1 .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.btn .rst-content p .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.btn .wy-menu-vertical li button.fa-large.toctree-expand,.nav .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .code-block-caption .fa-large.headerlink,.nav .rst-content .eqno .fa-large.headerlink,.nav .rst-content .fa-large.admonition-title,.nav .rst-content code.download span.fa-large:first-child,.nav .rst-content dl dt .fa-large.headerlink,.nav .rst-content h1 .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.nav .rst-content p .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.nav .wy-menu-vertical li button.fa-large.toctree-expand,.rst-content .btn .fa-large.admonition-title,.rst-content .code-block-caption .btn .fa-large.headerlink,.rst-content .code-block-caption .nav .fa-large.headerlink,.rst-content .eqno .btn .fa-large.headerlink,.rst-content .eqno .nav .fa-large.headerlink,.rst-content .nav .fa-large.admonition-title,.rst-content code.download .btn span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.rst-content dl dt .btn .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.rst-content p .btn .fa-large.headerlink,.rst-content p .nav .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.rst-content tt.download .btn span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.wy-menu-vertical li .btn button.fa-large.toctree-expand,.wy-menu-vertical li .nav button.fa-large.toctree-expand{line-height:.9em}.btn .fa-spin.icon,.btn .fa.fa-spin,.btn .rst-content .code-block-caption .fa-spin.headerlink,.btn .rst-content .eqno .fa-spin.headerlink,.btn .rst-content .fa-spin.admonition-title,.btn .rst-content code.download span.fa-spin:first-child,.btn .rst-content dl dt .fa-spin.headerlink,.btn .rst-content h1 .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.btn .rst-content p .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.btn .wy-menu-vertical li button.fa-spin.toctree-expand,.nav .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .code-block-caption .fa-spin.headerlink,.nav .rst-content .eqno .fa-spin.headerlink,.nav .rst-content .fa-spin.admonition-title,.nav .rst-content code.download span.fa-spin:first-child,.nav .rst-content dl dt .fa-spin.headerlink,.nav .rst-content h1 .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.nav .rst-content p .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.nav .wy-menu-vertical li button.fa-spin.toctree-expand,.rst-content .btn .fa-spin.admonition-title,.rst-content .code-block-caption .btn .fa-spin.headerlink,.rst-content .code-block-caption .nav .fa-spin.headerlink,.rst-content .eqno .btn .fa-spin.headerlink,.rst-content .eqno .nav .fa-spin.headerlink,.rst-content .nav .fa-spin.admonition-title,.rst-content code.download .btn span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.rst-content dl dt .btn .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.rst-content p .btn .fa-spin.headerlink,.rst-content p .nav .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.rst-content tt.download .btn span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.wy-menu-vertical li .btn button.fa-spin.toctree-expand,.wy-menu-vertical li .nav button.fa-spin.toctree-expand{display:inline-block}.btn.fa:before,.btn.icon:before,.rst-content .btn.admonition-title:before,.rst-content .code-block-caption .btn.headerlink:before,.rst-content .eqno .btn.headerlink:before,.rst-content code.download span.btn:first-child:before,.rst-content dl dt .btn.headerlink:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content p .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.wy-menu-vertical li button.btn.toctree-expand:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.btn.icon:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content .code-block-caption .btn.headerlink:hover:before,.rst-content .eqno .btn.headerlink:hover:before,.rst-content code.download span.btn:first-child:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content p .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.wy-menu-vertical li button.btn.toctree-expand:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .icon:before,.btn-mini .rst-content .admonition-title:before,.btn-mini .rst-content .code-block-caption .headerlink:before,.btn-mini .rst-content .eqno .headerlink:before,.btn-mini .rst-content code.download span:first-child:before,.btn-mini .rst-content dl dt .headerlink:before,.btn-mini .rst-content h1 .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.btn-mini .rst-content p .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.btn-mini .wy-menu-vertical li button.toctree-expand:before,.rst-content .btn-mini .admonition-title:before,.rst-content .code-block-caption .btn-mini .headerlink:before,.rst-content .eqno .btn-mini .headerlink:before,.rst-content code.download .btn-mini span:first-child:before,.rst-content dl dt .btn-mini .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.rst-content p .btn-mini .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.rst-content tt.download .btn-mini span:first-child:before,.wy-menu-vertical li .btn-mini button.toctree-expand:before{font-size:14px;vertical-align:-15%}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning,.wy-alert{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.rst-content .admonition-title,.wy-alert-title{font-weight:700;display:block;color:#fff;background:#6ab0de;padding:6px 12px;margin:-12px -12px 12px}.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.admonition,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.wy-alert.wy-alert-danger{background:#fdf3f2}.rst-content .danger .admonition-title,.rst-content .danger .wy-alert-title,.rst-content .error .admonition-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .admonition-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.wy-alert.wy-alert-danger .wy-alert-title{background:#f29f97}.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .warning,.rst-content .wy-alert-warning.admonition,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.tip,.wy-alert.wy-alert-warning{background:#ffedcc}.rst-content .admonition-todo .admonition-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .attention .admonition-title,.rst-content .attention .wy-alert-title,.rst-content .caution .admonition-title,.rst-content .caution .wy-alert-title,.rst-content .warning .admonition-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.admonition .admonition-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.wy-alert.wy-alert-warning .wy-alert-title{background:#f0b37e}.rst-content .note,.rst-content .seealso,.rst-content .wy-alert-info.admonition,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.wy-alert.wy-alert-info{background:#e7f2fa}.rst-content .note .admonition-title,.rst-content .note .wy-alert-title,.rst-content .seealso .admonition-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .admonition-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.wy-alert.wy-alert-info .wy-alert-title{background:#6ab0de}.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.admonition,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.warning,.wy-alert.wy-alert-success{background:#dbfaf4}.rst-content .hint .admonition-title,.rst-content .hint .wy-alert-title,.rst-content .important .admonition-title,.rst-content .important .wy-alert-title,.rst-content .tip .admonition-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .admonition-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.wy-alert.wy-alert-success .wy-alert-title{background:#1abc9c}.rst-content .wy-alert-neutral.admonition,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.wy-alert.wy-alert-neutral{background:#f3f6f6}.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .admonition-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.wy-alert.wy-alert-neutral .wy-alert-title{color:#404040;background:#e1e4e5}.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.wy-alert.wy-alert-neutral a{color:#2980b9}.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .note p:last-child,.rst-content .seealso p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.wy-alert p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27ae60}.wy-tray-container li.wy-tray-item-info{background:#2980b9}.wy-tray-container li.wy-tray-item-warning{background:#e67e22}.wy-tray-container li.wy-tray-item-danger{background:#e74c3c}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width:768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px;color:#fff;border:1px solid rgba(0,0,0,.1);background-color:#27ae60;text-decoration:none;font-weight:400;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 2px -1px hsla(0,0%,100%,.5),inset 0 -2px 0 0 rgba(0,0,0,.1);outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.05),inset 0 2px 0 0 rgba(0,0,0,.1);padding:8px 12px 6px}.btn:visited{color:#fff}.btn-disabled,.btn-disabled:active,.btn-disabled:focus,.btn-disabled:hover,.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980b9!important}.btn-info:hover{background-color:#2e8ece!important}.btn-neutral{background-color:#f3f6f6!important;color:#404040!important}.btn-neutral:hover{background-color:#e5ebeb!important;color:#404040}.btn-neutral:visited{color:#404040!important}.btn-success{background-color:#27ae60!important}.btn-success:hover{background-color:#295!important}.btn-danger{background-color:#e74c3c!important}.btn-danger:hover{background-color:#ea6153!important}.btn-warning{background-color:#e67e22!important}.btn-warning:hover{background-color:#e98b39!important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f!important}.btn-link{background-color:transparent!important;color:#2980b9;box-shadow:none;border-color:transparent!important}.btn-link:active,.btn-link:hover{background-color:transparent!important;color:#409ad5!important;box-shadow:none}.btn-link:visited{color:#9b59b6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:after,.wy-btn-group:before{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:1px solid #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980b9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:1px solid #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type=search]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980b9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned .wy-help-inline,.wy-form-aligned input,.wy-form-aligned label,.wy-form-aligned select,.wy-form-aligned textarea{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{margin:0}fieldset,legend{border:0;padding:0}legend{width:100%;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label,legend{display:block}label{margin:0 0 .3125em;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;max-width:1200px;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:after,.wy-control-group:before{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#e74c3c}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full input[type=color],.wy-control-group .wy-form-full input[type=date],.wy-control-group .wy-form-full input[type=datetime-local],.wy-control-group .wy-form-full input[type=datetime],.wy-control-group .wy-form-full input[type=email],.wy-control-group .wy-form-full input[type=month],.wy-control-group .wy-form-full input[type=number],.wy-control-group .wy-form-full input[type=password],.wy-control-group .wy-form-full input[type=search],.wy-control-group .wy-form-full input[type=tel],.wy-control-group .wy-form-full input[type=text],.wy-control-group .wy-form-full input[type=time],.wy-control-group .wy-form-full input[type=url],.wy-control-group .wy-form-full input[type=week],.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves input[type=color],.wy-control-group .wy-form-halves input[type=date],.wy-control-group .wy-form-halves input[type=datetime-local],.wy-control-group .wy-form-halves input[type=datetime],.wy-control-group .wy-form-halves input[type=email],.wy-control-group .wy-form-halves input[type=month],.wy-control-group .wy-form-halves input[type=number],.wy-control-group .wy-form-halves input[type=password],.wy-control-group .wy-form-halves input[type=search],.wy-control-group .wy-form-halves input[type=tel],.wy-control-group .wy-form-halves input[type=text],.wy-control-group .wy-form-halves input[type=time],.wy-control-group .wy-form-halves input[type=url],.wy-control-group .wy-form-halves input[type=week],.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds input[type=color],.wy-control-group .wy-form-thirds input[type=date],.wy-control-group .wy-form-thirds input[type=datetime-local],.wy-control-group .wy-form-thirds input[type=datetime],.wy-control-group .wy-form-thirds input[type=email],.wy-control-group .wy-form-thirds input[type=month],.wy-control-group .wy-form-thirds input[type=number],.wy-control-group .wy-form-thirds input[type=password],.wy-control-group .wy-form-thirds input[type=search],.wy-control-group .wy-form-thirds input[type=tel],.wy-control-group .wy-form-thirds input[type=text],.wy-control-group .wy-form-thirds input[type=time],.wy-control-group .wy-form-thirds input[type=url],.wy-control-group .wy-form-thirds input[type=week],.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full{float:left;display:block;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.35765%;width:48.82117%}.wy-control-group .wy-form-halves:last-child,.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(odd){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.35765%;width:31.76157%}.wy-control-group .wy-form-thirds:last-child,.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control,.wy-control-no-input{margin:6px 0 0;font-size:90%}.wy-control-no-input{display:inline-block}.wy-control-group.fluid-input input[type=color],.wy-control-group.fluid-input input[type=date],.wy-control-group.fluid-input input[type=datetime-local],.wy-control-group.fluid-input input[type=datetime],.wy-control-group.fluid-input input[type=email],.wy-control-group.fluid-input input[type=month],.wy-control-group.fluid-input input[type=number],.wy-control-group.fluid-input input[type=password],.wy-control-group.fluid-input input[type=search],.wy-control-group.fluid-input input[type=tel],.wy-control-group.fluid-input input[type=text],.wy-control-group.fluid-input input[type=time],.wy-control-group.fluid-input input[type=url],.wy-control-group.fluid-input input[type=week]{width:100%}.wy-form-message-inline{padding-left:.3em;color:#666;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;*overflow:visible}input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type=datetime-local]{padding:.34375em .625em}input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type=checkbox],input[type=radio],input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus{outline:0;outline:thin dotted\9;border-color:#333}input.no-focus:focus{border-color:#ccc!important}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:1px auto #129fea}input[type=color][disabled],input[type=date][disabled],input[type=datetime-local][disabled],input[type=datetime][disabled],input[type=email][disabled],input[type=month][disabled],input[type=number][disabled],input[type=password][disabled],input[type=search][disabled],input[type=tel][disabled],input[type=text][disabled],input[type=time][disabled],input[type=url][disabled],input[type=week][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#e74c3c;border:1px solid #e74c3c}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e74c3c}input[type=checkbox]:focus:invalid:focus,input[type=file]:focus:invalid:focus,input[type=radio]:focus:invalid:focus{outline-color:#e74c3c}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:1px solid #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{left:0;top:0;width:36px;height:12px;background:#ccc}.wy-switch:after,.wy-switch:before{position:absolute;content:"";display:block;border-radius:4px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{width:18px;height:18px;background:#999;left:-3px;top:-3px}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27ae60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#e74c3c}.wy-control-group.wy-control-group-error input[type=color],.wy-control-group.wy-control-group-error input[type=date],.wy-control-group.wy-control-group-error input[type=datetime-local],.wy-control-group.wy-control-group-error input[type=datetime],.wy-control-group.wy-control-group-error input[type=email],.wy-control-group.wy-control-group-error input[type=month],.wy-control-group.wy-control-group-error input[type=number],.wy-control-group.wy-control-group-error input[type=password],.wy-control-group.wy-control-group-error input[type=search],.wy-control-group.wy-control-group-error input[type=tel],.wy-control-group.wy-control-group-error input[type=text],.wy-control-group.wy-control-group-error input[type=time],.wy-control-group.wy-control-group-error input[type=url],.wy-control-group.wy-control-group-error input[type=week],.wy-control-group.wy-control-group-error textarea{border:1px solid #e74c3c}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27ae60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#e74c3c}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e67e22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980b9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width:480px){.wy-form button[type=submit]{margin:.7em 0 0}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=text],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week],.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type=color],.wy-form input[type=date],.wy-form input[type=datetime-local],.wy-form input[type=datetime],.wy-form input[type=email],.wy-form input[type=month],.wy-form input[type=number],.wy-form input[type=password],.wy-form input[type=search],.wy-form input[type=tel],.wy-form input[type=time],.wy-form input[type=url],.wy-form input[type=week]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0}.wy-form-message,.wy-form-message-inline,.wy-form .wy-help-inline{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width:768px){.tablet-hide{display:none}}@media screen and (max-width:480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.rst-content table.docutils,.rst-content table.field-list,.wy-table{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.rst-content table.docutils caption,.rst-content table.field-list caption,.wy-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.rst-content table.docutils td,.rst-content table.docutils th,.rst-content table.field-list td,.rst-content table.field-list th,.wy-table td,.wy-table th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.rst-content table.docutils td:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list td:first-child,.rst-content table.field-list th:first-child,.wy-table td:first-child,.wy-table th:first-child{border-left-width:0}.rst-content table.docutils thead,.rst-content table.field-list thead,.wy-table thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.rst-content table.docutils thead th,.rst-content table.field-list thead th,.wy-table thead th{font-weight:700;border-bottom:2px solid #e1e4e5}.rst-content table.docutils td,.rst-content table.field-list td,.wy-table td{background-color:transparent;vertical-align:middle}.rst-content table.docutils td p,.rst-content table.field-list td p,.wy-table td p{line-height:18px}.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child,.wy-table td p:last-child{margin-bottom:0}.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min,.wy-table .wy-table-cell-min{width:1%;padding-right:0}.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:grey;font-size:90%}.wy-table-tertiary{color:grey;font-size:80%}.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td,.wy-table-backed,.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td{background-color:#f3f6f6}.rst-content table.docutils,.wy-table-bordered-all{border:1px solid #e1e4e5}.rst-content table.docutils td,.wy-table-bordered-all td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.rst-content table.docutils tbody>tr:last-child td,.wy-table-bordered-all tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0!important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980b9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9b59b6}html{height:100%}body,html{overflow-x:hidden}body{font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-weight:400;color:#404040;min-height:100%;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e67e22!important}a.wy-text-warning:hover{color:#eb9950!important}.wy-text-info{color:#2980b9!important}a.wy-text-info:hover{color:#409ad5!important}.wy-text-success{color:#27ae60!important}a.wy-text-success:hover{color:#36d278!important}.wy-text-danger{color:#e74c3c!important}a.wy-text-danger:hover{color:#ed7669!important}.wy-text-neutral{color:#404040!important}a.wy-text-neutral:hover{color:#595959!important}.rst-content .toctree-wrapper>p.caption,h1,h2,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif}p{line-height:24px;font-size:16px;margin:0 0 24px}h1{font-size:175%}.rst-content .toctree-wrapper>p.caption,h2{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}.rst-content code,.rst-content tt,code{white-space:nowrap;max-width:100%;background:#fff;border:1px solid #e1e4e5;font-size:75%;padding:0 5px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#e74c3c;overflow-x:auto}.rst-content tt.code-large,code.code-large{font-size:90%}.rst-content .section ul,.rst-content .toctree-wrapper ul,.rst-content section ul,.wy-plain-list-disc,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.rst-content .section ul li,.rst-content .toctree-wrapper ul li,.rst-content section ul li,.wy-plain-list-disc li,article ul li{list-style:disc;margin-left:24px}.rst-content .section ul li p:last-child,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li p:last-child,.rst-content .toctree-wrapper ul li ul,.rst-content section ul li p:last-child,.rst-content section ul li ul,.wy-plain-list-disc li p:last-child,.wy-plain-list-disc li ul,article ul li p:last-child,article ul li ul{margin-bottom:0}.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,.rst-content section ul li li,.wy-plain-list-disc li li,article ul li li{list-style:circle}.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,.rst-content section ul li li li,.wy-plain-list-disc li li li,article ul li li li{list-style:square}.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,.rst-content section ul li ol li,.wy-plain-list-disc li ol li,article ul li ol li{list-style:decimal}.rst-content .section ol,.rst-content .section ol.arabic,.rst-content .toctree-wrapper ol,.rst-content .toctree-wrapper ol.arabic,.rst-content section ol,.rst-content section ol.arabic,.wy-plain-list-decimal,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.rst-content .section ol.arabic li,.rst-content .section ol li,.rst-content .toctree-wrapper ol.arabic li,.rst-content .toctree-wrapper ol li,.rst-content section ol.arabic li,.rst-content section ol li,.wy-plain-list-decimal li,article ol li{list-style:decimal;margin-left:24px}.rst-content .section ol.arabic li ul,.rst-content .section ol li p:last-child,.rst-content .section ol li ul,.rst-content .toctree-wrapper ol.arabic li ul,.rst-content .toctree-wrapper ol li p:last-child,.rst-content .toctree-wrapper ol li ul,.rst-content section ol.arabic li ul,.rst-content section ol li p:last-child,.rst-content section ol li ul,.wy-plain-list-decimal li p:last-child,.wy-plain-list-decimal li ul,article ol li p:last-child,article ol li ul{margin-bottom:0}.rst-content .section ol.arabic li ul li,.rst-content .section ol li ul li,.rst-content .toctree-wrapper ol.arabic li ul li,.rst-content .toctree-wrapper ol li ul li,.rst-content section ol.arabic li ul li,.rst-content section ol li ul li,.wy-plain-list-decimal li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:after,.wy-breadcrumbs:before{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs>li{display:inline-block;padding-top:5px}.wy-breadcrumbs>li.wy-breadcrumbs-aside{float:right}.rst-content .wy-breadcrumbs>li code,.rst-content .wy-breadcrumbs>li tt,.wy-breadcrumbs>li .rst-content tt,.wy-breadcrumbs>li code{all:inherit;color:inherit}.breadcrumb-item:before{content:"/";color:#bbb;font-size:13px;padding:0 6px 0 3px}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width:480px){.wy-breadcrumbs-extra,.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}html{font-size:16px}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:after,.wy-menu-horiz:before{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz li,.wy-menu-horiz ul{display:inline-block}.wy-menu-horiz li:hover{background:hsla(0,0%,100%,.1)}.wy-menu-horiz li.divide-left{border-left:1px solid #404040}.wy-menu-horiz li.divide-right{border-right:1px solid #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{color:#55a5d9;height:32px;line-height:32px;padding:0 1.618em;margin:12px 0 0;display:block;font-weight:700;text-transform:uppercase;font-size:85%;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:1px solid #404040}.wy-menu-vertical li.divide-bottom{border-bottom:1px solid #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:grey;border-right:1px solid #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.rst-content .wy-menu-vertical li tt,.wy-menu-vertical li .rst-content tt,.wy-menu-vertical li code{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li button.toctree-expand{display:block;float:left;margin-left:-1.2em;line-height:18px;color:#4d4d4d;border:none;background:none;padding:0}.wy-menu-vertical li.current>a,.wy-menu-vertical li.on a{color:#404040;font-weight:700;position:relative;background:#fcfcfc;border:none;padding:.4045em 1.618em}.wy-menu-vertical li.current>a:hover,.wy-menu-vertical li.on a:hover{background:#fcfcfc}.wy-menu-vertical li.current>a:hover button.toctree-expand,.wy-menu-vertical li.on a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.current>a button.toctree-expand,.wy-menu-vertical li.on a button.toctree-expand{display:block;line-height:18px;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:1px solid #c9c9c9;border-top:1px solid #c9c9c9}.wy-menu-vertical .toctree-l1.current .toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .toctree-l11>ul{display:none}.wy-menu-vertical .toctree-l1.current .current.toctree-l2>ul,.wy-menu-vertical .toctree-l2.current .current.toctree-l3>ul,.wy-menu-vertical .toctree-l3.current .current.toctree-l4>ul,.wy-menu-vertical .toctree-l4.current .current.toctree-l5>ul,.wy-menu-vertical .toctree-l5.current .current.toctree-l6>ul,.wy-menu-vertical .toctree-l6.current .current.toctree-l7>ul,.wy-menu-vertical .toctree-l7.current .current.toctree-l8>ul,.wy-menu-vertical .toctree-l8.current .current.toctree-l9>ul,.wy-menu-vertical .toctree-l9.current .current.toctree-l10>ul,.wy-menu-vertical .toctree-l10.current .current.toctree-l11>ul{display:block}.wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.toctree-l2 a,.wy-menu-vertical li.toctree-l3 a,.wy-menu-vertical li.toctree-l4 a,.wy-menu-vertical li.toctree-l5 a,.wy-menu-vertical li.toctree-l6 a,.wy-menu-vertical li.toctree-l7 a,.wy-menu-vertical li.toctree-l8 a,.wy-menu-vertical li.toctree-l9 a,.wy-menu-vertical li.toctree-l10 a{color:#404040}.wy-menu-vertical li.toctree-l2 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l3 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l4 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l5 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l6 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l7 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l8 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l9 a:hover button.toctree-expand,.wy-menu-vertical li.toctree-l10 a:hover button.toctree-expand{color:grey}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a,.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a,.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a,.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{display:block}.wy-menu-vertical li.toctree-l2.current>a{padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{padding:.4045em 1.618em .4045em 4.045em}.wy-menu-vertical li.toctree-l3.current>a{padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{padding:.4045em 1.618em .4045em 5.663em}.wy-menu-vertical li.toctree-l4.current>a{padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{padding:.4045em 1.618em .4045em 7.281em}.wy-menu-vertical li.toctree-l5.current>a{padding:.4045em 7.281em}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{padding:.4045em 1.618em .4045em 8.899em}.wy-menu-vertical li.toctree-l6.current>a{padding:.4045em 8.899em}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{padding:.4045em 1.618em .4045em 10.517em}.wy-menu-vertical li.toctree-l7.current>a{padding:.4045em 10.517em}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{padding:.4045em 1.618em .4045em 12.135em}.wy-menu-vertical li.toctree-l8.current>a{padding:.4045em 12.135em}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{padding:.4045em 1.618em .4045em 13.753em}.wy-menu-vertical li.toctree-l9.current>a{padding:.4045em 13.753em}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{padding:.4045em 1.618em .4045em 15.371em}.wy-menu-vertical li.toctree-l10.current>a{padding:.4045em 15.371em}.wy-menu-vertical li.toctree-l10.current li.toctree-l11>a{padding:.4045em 1.618em .4045em 16.989em}.wy-menu-vertical li.toctree-l2.current>a,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{background:#c9c9c9}.wy-menu-vertical li.toctree-l2 button.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current>a,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{background:#bdbdbd}.wy-menu-vertical li.toctree-l3 button.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#d9d9d9;font-weight:400}.wy-menu-vertical a{line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#d9d9d9}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover button.toctree-expand{color:#d9d9d9}.wy-menu-vertical a:active{background-color:#2980b9;cursor:pointer;color:#fff}.wy-menu-vertical a:active button.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980b9;text-align:center;color:#fcfcfc}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-side-nav-search .wy-dropdown>a,.wy-side-nav-search>a{color:#fcfcfc;font-size:100%;font-weight:700;display:inline-block;padding:4px 6px;margin-bottom:.809em;max-width:100%}.wy-side-nav-search .wy-dropdown>a:hover,.wy-side-nav-search .wy-dropdown>aactive,.wy-side-nav-search .wy-dropdown>afocus,.wy-side-nav-search>a:hover,.wy-side-nav-search>aactive,.wy-side-nav-search>afocus{background:hsla(0,0%,100%,.1)}.wy-side-nav-search .wy-dropdown>a img.logo,.wy-side-nav-search>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search .wy-dropdown>a.icon,.wy-side-nav-search>a.icon{display:block}.wy-side-nav-search .wy-dropdown>a.icon img.logo,.wy-side-nav-search>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.switch-menus{position:relative;display:block;margin-top:-.4045em;margin-bottom:.809em;font-weight:400;color:hsla(0,0%,100%,.3)}.wy-side-nav-search>div.switch-menus>div.language-switch,.wy-side-nav-search>div.switch-menus>div.version-switch{display:inline-block;padding:.2em}.wy-side-nav-search>div.switch-menus>div.language-switch select,.wy-side-nav-search>div.switch-menus>div.version-switch select{display:inline-block;margin-right:-2rem;padding-right:2rem;max-width:240px;text-align-last:center;background:none;border:none;border-radius:0;box-shadow:none;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;font-size:1em;font-weight:400;color:hsla(0,0%,100%,.3);cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.wy-side-nav-search>div.switch-menus>div.language-switch select:active,.wy-side-nav-search>div.switch-menus>div.language-switch select:focus,.wy-side-nav-search>div.switch-menus>div.language-switch select:hover,.wy-side-nav-search>div.switch-menus>div.version-switch select:active,.wy-side-nav-search>div.switch-menus>div.version-switch select:focus,.wy-side-nav-search>div.switch-menus>div.version-switch select:hover{background:hsla(0,0%,100%,.1);color:hsla(0,0%,100%,.5)}.wy-side-nav-search>div.switch-menus>div.language-switch select option,.wy-side-nav-search>div.switch-menus>div.version-switch select option{color:#000}.wy-side-nav-search>div.switch-menus>div.language-switch:has(>select):after,.wy-side-nav-search>div.switch-menus>div.version-switch:has(>select):after{display:inline-block;width:1.5em;height:100%;padding:.1em;content:"\f0d7";font-size:1em;line-height:1.2em;font-family:FontAwesome;text-align:center;pointer-events:none;box-sizing:border-box}.wy-nav .wy-menu-vertical header{color:#2980b9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980b9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;color:#9b9b9b;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980b9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:after,.wy-nav-top:before{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:700}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980b9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:grey}footer p{margin-bottom:12px}.rst-content footer span.commit tt,footer span.commit .rst-content tt,footer span.commit code{padding:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:1em;background:none;border:none;color:grey}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:after,.rst-footer-buttons:before{width:100%;display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:after,.rst-breadcrumbs-buttons:before{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:1px solid #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:1px solid #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:grey;font-size:90%}.genindextable li>ul{margin-left:24px}@media screen and (max-width:768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-menu.wy-menu-vertical,.wy-side-nav-search,.wy-side-scroll{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width:1100px){.wy-nav-content-wrap{background:rgba(0,0,0,.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,.wy-nav-side,footer{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60;*zoom:1}.rst-versions .rst-current-version:after,.rst-versions .rst-current-version:before{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-content .code-block-caption .rst-versions .rst-current-version .headerlink,.rst-content .eqno .rst-versions .rst-current-version .headerlink,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-content p .rst-versions .rst-current-version .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-versions .rst-current-version .rst-content .code-block-caption .headerlink,.rst-versions .rst-current-version .rst-content .eqno .headerlink,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-versions .rst-current-version .rst-content p .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-versions .rst-current-version .wy-menu-vertical li button.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version button.toctree-expand{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}.rst-content .toctree-wrapper>p.caption,.rst-content h1,.rst-content h2,.rst-content h3,.rst-content h4,.rst-content h5,.rst-content h6{margin-bottom:24px}.rst-content img{max-width:100%;height:auto}.rst-content div.figure,.rst-content figure{margin-bottom:24px}.rst-content div.figure .caption-text,.rst-content figure .caption-text{font-style:italic}.rst-content div.figure p:last-child.caption,.rst-content figure p:last-child.caption{margin-bottom:0}.rst-content div.figure.align-center,.rst-content figure.align-center{text-align:center}.rst-content .section>a>img,.rst-content .section>img,.rst-content section>a>img,.rst-content section>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"\f08e";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block{white-space:pre;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;display:block;overflow:auto}.rst-content div[class^=highlight],.rst-content pre.literal-block{border:1px solid #e1e4e5;overflow-x:auto;margin:1px 0 24px}.rst-content div[class^=highlight] div[class^=highlight],.rst-content pre.literal-block div[class^=highlight]{padding:0;border:none;margin:0}.rst-content div[class^=highlight] td.code{width:100%}.rst-content .linenodiv pre{border-right:1px solid #e6e9ea;margin:0;padding:12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^=highlight] pre{white-space:pre;margin:0;padding:12px;display:block;overflow:auto}.rst-content div[class^=highlight] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content .linenodiv pre,.rst-content div[class^=highlight] pre,.rst-content pre.literal-block{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;font-size:12px;line-height:1.4}.rst-content div.highlight .gp,.rst-content div.highlight span.linenos{user-select:none;pointer-events:none}.rst-content div.highlight span.linenos{display:inline-block;padding-left:0;padding-right:12px;margin-right:12px;border-right:1px solid #e6e9ea}.rst-content .code-block-caption{font-style:italic;font-size:85%;line-height:1;padding:1em 0;text-align:center}@media print{.rst-content .codeblock,.rst-content div[class^=highlight],.rst-content div[class^=highlight] pre{white-space:pre-wrap}}.rst-content .admonition,.rst-content .admonition-todo,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .note,.rst-content .seealso,.rst-content .tip,.rst-content .warning{clear:both}.rst-content .admonition-todo .last,.rst-content .admonition-todo>:last-child,.rst-content .admonition .last,.rst-content .admonition>:last-child,.rst-content .attention .last,.rst-content .attention>:last-child,.rst-content .caution .last,.rst-content .caution>:last-child,.rst-content .danger .last,.rst-content .danger>:last-child,.rst-content .error .last,.rst-content .error>:last-child,.rst-content .hint .last,.rst-content .hint>:last-child,.rst-content .important .last,.rst-content .important>:last-child,.rst-content .note .last,.rst-content .note>:last-child,.rst-content .seealso .last,.rst-content .seealso>:last-child,.rst-content .tip .last,.rst-content .tip>:last-child,.rst-content .warning .last,.rst-content .warning>:last-child{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent!important;border-color:rgba(0,0,0,.1)!important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha>li,.rst-content .toctree-wrapper ol.loweralpha,.rst-content .toctree-wrapper ol.loweralpha>li,.rst-content section ol.loweralpha,.rst-content section ol.loweralpha>li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha>li,.rst-content .toctree-wrapper ol.upperalpha,.rst-content .toctree-wrapper ol.upperalpha>li,.rst-content section ol.upperalpha,.rst-content section ol.upperalpha>li{list-style:upper-alpha}.rst-content .section ol li>*,.rst-content .section ul li>*,.rst-content .toctree-wrapper ol li>*,.rst-content .toctree-wrapper ul li>*,.rst-content section ol li>*,.rst-content section ul li>*{margin-top:12px;margin-bottom:12px}.rst-content .section ol li>:first-child,.rst-content .section ul li>:first-child,.rst-content .toctree-wrapper ol li>:first-child,.rst-content .toctree-wrapper ul li>:first-child,.rst-content section ol li>:first-child,.rst-content section ul li>:first-child{margin-top:0}.rst-content .section ol li>p,.rst-content .section ol li>p:last-child,.rst-content .section ul li>p,.rst-content .section ul li>p:last-child,.rst-content .toctree-wrapper ol li>p,.rst-content .toctree-wrapper ol li>p:last-child,.rst-content .toctree-wrapper ul li>p,.rst-content .toctree-wrapper ul li>p:last-child,.rst-content section ol li>p,.rst-content section ol li>p:last-child,.rst-content section ul li>p,.rst-content section ul li>p:last-child{margin-bottom:12px}.rst-content .section ol li>p:only-child,.rst-content .section ol li>p:only-child:last-child,.rst-content .section ul li>p:only-child,.rst-content .section ul li>p:only-child:last-child,.rst-content .toctree-wrapper ol li>p:only-child,.rst-content .toctree-wrapper ol li>p:only-child:last-child,.rst-content .toctree-wrapper ul li>p:only-child,.rst-content .toctree-wrapper ul li>p:only-child:last-child,.rst-content section ol li>p:only-child,.rst-content section ol li>p:only-child:last-child,.rst-content section ul li>p:only-child,.rst-content section ul li>p:only-child:last-child{margin-bottom:0}.rst-content .section ol li>ol,.rst-content .section ol li>ul,.rst-content .section ul li>ol,.rst-content .section ul li>ul,.rst-content .toctree-wrapper ol li>ol,.rst-content .toctree-wrapper ol li>ul,.rst-content .toctree-wrapper ul li>ol,.rst-content .toctree-wrapper ul li>ul,.rst-content section ol li>ol,.rst-content section ol li>ul,.rst-content section ul li>ol,.rst-content section ul li>ul{margin-bottom:12px}.rst-content .section ol.simple li>*,.rst-content .section ol.simple li ol,.rst-content .section ol.simple li ul,.rst-content .section ul.simple li>*,.rst-content .section ul.simple li ol,.rst-content .section ul.simple li ul,.rst-content .toctree-wrapper ol.simple li>*,.rst-content .toctree-wrapper ol.simple li ol,.rst-content .toctree-wrapper ol.simple li ul,.rst-content .toctree-wrapper ul.simple li>*,.rst-content .toctree-wrapper ul.simple li ol,.rst-content .toctree-wrapper ul.simple li ul,.rst-content section ol.simple li>*,.rst-content section ol.simple li ol,.rst-content section ol.simple li ul,.rst-content section ul.simple li>*,.rst-content section ul.simple li ol,.rst-content section ul.simple li ul{margin-top:0;margin-bottom:0}.rst-content .line-block{margin-left:0;margin-bottom:24px;line-height:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0}.rst-content .topic-title{font-weight:700;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0 0 24px 24px}.rst-content .align-left{float:left;margin:0 24px 24px 0}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content .code-block-caption .headerlink,.rst-content .eqno .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink,.rst-content dl dt .headerlink,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content p.caption .headerlink,.rst-content p .headerlink,.rst-content table>caption .headerlink{opacity:0;font-size:14px;font-family:FontAwesome;margin-left:.5em}.rst-content .code-block-caption .headerlink:focus,.rst-content .code-block-caption:hover .headerlink,.rst-content .eqno .headerlink:focus,.rst-content .eqno:hover .headerlink,.rst-content .toctree-wrapper>p.caption .headerlink:focus,.rst-content .toctree-wrapper>p.caption:hover .headerlink,.rst-content dl dt .headerlink:focus,.rst-content dl dt:hover .headerlink,.rst-content h1 .headerlink:focus,.rst-content h1:hover .headerlink,.rst-content h2 .headerlink:focus,.rst-content h2:hover .headerlink,.rst-content h3 .headerlink:focus,.rst-content h3:hover .headerlink,.rst-content h4 .headerlink:focus,.rst-content h4:hover .headerlink,.rst-content h5 .headerlink:focus,.rst-content h5:hover .headerlink,.rst-content h6 .headerlink:focus,.rst-content h6:hover .headerlink,.rst-content p.caption .headerlink:focus,.rst-content p.caption:hover .headerlink,.rst-content p .headerlink:focus,.rst-content p:hover .headerlink,.rst-content table>caption .headerlink:focus,.rst-content table>caption:hover .headerlink{opacity:1}.rst-content p a{overflow-wrap:anywhere}.rst-content .wy-table td p,.rst-content .wy-table td ul,.rst-content .wy-table th p,.rst-content .wy-table th ul,.rst-content table.docutils td p,.rst-content table.docutils td ul,.rst-content table.docutils th p,.rst-content table.docutils th ul,.rst-content table.field-list td p,.rst-content table.field-list td ul,.rst-content table.field-list th p,.rst-content table.field-list th ul{font-size:inherit}.rst-content .btn:focus{outline:2px solid}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:1px solid #e1e4e5}.rst-content .sidebar dl,.rst-content .sidebar p,.rst-content .sidebar ul{font-size:90%}.rst-content .sidebar .last,.rst-content .sidebar>:last-child{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Roboto Slab,ff-tisa-web-pro,Georgia,Arial,sans-serif;font-weight:700;background:#e1e4e5;padding:6px 12px;margin:-24px -24px 24px;font-size:100%}.rst-content .highlighted{background:#f1c40f;box-shadow:0 0 0 2px #f1c40f;display:inline;font-weight:700}.rst-content .citation-reference,.rst-content .footnote-reference{vertical-align:baseline;position:relative;top:-.4em;line-height:0;font-size:90%}.rst-content .citation-reference>span.fn-bracket,.rst-content .footnote-reference>span.fn-bracket{display:none}.rst-content .hlist{width:100%}.rst-content dl dt span.classifier:before{content:" : "}.rst-content dl dt span.classifier-delimiter{display:none!important}html.writer-html4 .rst-content table.docutils.citation,html.writer-html4 .rst-content table.docutils.footnote{background:none;border:none}html.writer-html4 .rst-content table.docutils.citation td,html.writer-html4 .rst-content table.docutils.citation tr,html.writer-html4 .rst-content table.docutils.footnote td,html.writer-html4 .rst-content table.docutils.footnote tr{border:none;background-color:transparent!important;white-space:normal}html.writer-html4 .rst-content table.docutils.citation td.label,html.writer-html4 .rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{display:grid;grid-template-columns:auto minmax(80%,95%)}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{display:inline-grid;grid-template-columns:max-content auto}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{display:grid;grid-template-columns:auto auto minmax(.65rem,auto) minmax(40%,95%)}html.writer-html5 .rst-content aside.citation>span.label,html.writer-html5 .rst-content aside.footnote>span.label,html.writer-html5 .rst-content div.citation>span.label{grid-column-start:1;grid-column-end:2}html.writer-html5 .rst-content aside.citation>span.backrefs,html.writer-html5 .rst-content aside.footnote>span.backrefs,html.writer-html5 .rst-content div.citation>span.backrefs{grid-column-start:2;grid-column-end:3;grid-row-start:1;grid-row-end:3}html.writer-html5 .rst-content aside.citation>p,html.writer-html5 .rst-content aside.footnote>p,html.writer-html5 .rst-content div.citation>p{grid-column-start:4;grid-column-end:5}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.field-list,html.writer-html5 .rst-content dl.footnote{margin-bottom:24px}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dt{padding-left:1rem}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.field-list>dd,html.writer-html5 .rst-content dl.field-list>dt,html.writer-html5 .rst-content dl.footnote>dd,html.writer-html5 .rst-content dl.footnote>dt{margin-bottom:0}html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{font-size:.9rem}html.writer-html5 .rst-content dl.citation>dt,html.writer-html5 .rst-content dl.footnote>dt{margin:0 .5rem .5rem 0;line-height:1.2rem;word-break:break-all;font-weight:400}html.writer-html5 .rst-content dl.citation>dt>span.brackets:before,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:before{content:"["}html.writer-html5 .rst-content dl.citation>dt>span.brackets:after,html.writer-html5 .rst-content dl.footnote>dt>span.brackets:after{content:"]"}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a{word-break:keep-all}html.writer-html5 .rst-content dl.citation>dt>span.fn-backref>a:not(:first-child):before,html.writer-html5 .rst-content dl.footnote>dt>span.fn-backref>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content dl.citation>dd,html.writer-html5 .rst-content dl.footnote>dd{margin:0 0 .5rem;line-height:1.2rem}html.writer-html5 .rst-content dl.citation>dd p,html.writer-html5 .rst-content dl.footnote>dd p{font-size:.9rem}html.writer-html5 .rst-content aside.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content div.citation{padding-left:1rem;padding-right:1rem;font-size:.9rem;line-height:1.2rem}html.writer-html5 .rst-content aside.citation p,html.writer-html5 .rst-content aside.footnote p,html.writer-html5 .rst-content div.citation p{font-size:.9rem;line-height:1.2rem;margin-bottom:12px}html.writer-html5 .rst-content aside.citation span.backrefs,html.writer-html5 .rst-content aside.footnote span.backrefs,html.writer-html5 .rst-content div.citation span.backrefs{text-align:left;font-style:italic;margin-left:.65rem;word-break:break-word;word-spacing:-.1rem;max-width:5rem}html.writer-html5 .rst-content aside.citation span.backrefs>a,html.writer-html5 .rst-content aside.footnote span.backrefs>a,html.writer-html5 .rst-content div.citation span.backrefs>a{word-break:keep-all}html.writer-html5 .rst-content aside.citation span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content aside.footnote span.backrefs>a:not(:first-child):before,html.writer-html5 .rst-content div.citation span.backrefs>a:not(:first-child):before{content:" "}html.writer-html5 .rst-content aside.citation span.label,html.writer-html5 .rst-content aside.footnote span.label,html.writer-html5 .rst-content div.citation span.label{line-height:1.2rem}html.writer-html5 .rst-content aside.citation-list,html.writer-html5 .rst-content aside.footnote-list,html.writer-html5 .rst-content div.citation-list{margin-bottom:24px}html.writer-html5 .rst-content dl.option-list kbd{font-size:.9rem}.rst-content table.docutils.footnote,html.writer-html4 .rst-content table.docutils.citation,html.writer-html5 .rst-content aside.footnote,html.writer-html5 .rst-content aside.footnote-list aside.footnote,html.writer-html5 .rst-content div.citation-list>div.citation,html.writer-html5 .rst-content dl.citation,html.writer-html5 .rst-content dl.footnote{color:grey}.rst-content table.docutils.footnote code,.rst-content table.docutils.footnote tt,html.writer-html4 .rst-content table.docutils.citation code,html.writer-html4 .rst-content table.docutils.citation tt,html.writer-html5 .rst-content aside.footnote-list aside.footnote code,html.writer-html5 .rst-content aside.footnote-list aside.footnote tt,html.writer-html5 .rst-content aside.footnote code,html.writer-html5 .rst-content aside.footnote tt,html.writer-html5 .rst-content div.citation-list>div.citation code,html.writer-html5 .rst-content div.citation-list>div.citation tt,html.writer-html5 .rst-content dl.citation code,html.writer-html5 .rst-content dl.citation tt,html.writer-html5 .rst-content dl.footnote code,html.writer-html5 .rst-content dl.footnote tt{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}html.writer-html5 .rst-content table.docutils th{border:1px solid #e1e4e5}html.writer-html5 .rst-content table.docutils td>p,html.writer-html5 .rst-content table.docutils th>p{line-height:1rem;margin-bottom:0;font-size:.9rem}.rst-content table.docutils td .last,.rst-content table.docutils td .last>:last-child{margin-bottom:0}.rst-content table.field-list,.rst-content table.field-list td{border:none}.rst-content table.field-list td p{line-height:inherit}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content code,.rst-content tt{color:#000;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;padding:2px 5px}.rst-content code big,.rst-content code em,.rst-content tt big,.rst-content tt em{font-size:100%!important;line-height:normal}.rst-content code.literal,.rst-content tt.literal{color:#e74c3c;white-space:normal}.rst-content code.xref,.rst-content tt.xref,a .rst-content code,a .rst-content tt{font-weight:700;color:#404040;overflow-wrap:normal}.rst-content kbd,.rst-content pre,.rst-content samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace}.rst-content a code,.rst-content a tt{color:#2980b9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:700;margin-bottom:12px}.rst-content dl ol,.rst-content dl p,.rst-content dl table,.rst-content dl ul{margin-bottom:12px}.rst-content dl dd{margin:0 0 12px 24px;line-height:24px}.rst-content dl dd>ol:last-child,.rst-content dl dd>p:last-child,.rst-content dl dd>table:last-child,.rst-content dl dd>ul:last-child{margin-bottom:0}html.writer-html4 .rst-content dl:not(.docutils),html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple){margin-bottom:24px}html.writer-html4 .rst-content dl:not(.docutils)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980b9;border-top:3px solid #6ab0de;padding:6px;position:relative}html.writer-html4 .rst-content dl:not(.docutils)>dt:before,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:before{color:#6ab0de}html.writer-html4 .rst-content dl:not(.docutils)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt{margin-bottom:6px;border:none;border-left:3px solid #ccc;background:#f0f0f0;color:#555}html.writer-html4 .rst-content dl:not(.docutils) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) dl:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt .headerlink{color:#404040;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils)>dt:first-child,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple)>dt:first-child{margin-top:0}html.writer-html4 .rst-content dl:not(.docutils) code.descclassname,html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descclassname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{background-color:transparent;border:none;padding:0;font-size:100%!important}html.writer-html4 .rst-content dl:not(.docutils) code.descname,html.writer-html4 .rst-content dl:not(.docutils) tt.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) code.descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) tt.descname{font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .optional,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:700}html.writer-html4 .rst-content dl:not(.docutils) .property,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .property{display:inline-block;padding-right:8px;max-width:100%}html.writer-html4 .rst-content dl:not(.docutils) .k,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .k{font-style:italic}html.writer-html4 .rst-content dl:not(.docutils) .descclassname,html.writer-html4 .rst-content dl:not(.docutils) .descname,html.writer-html4 .rst-content dl:not(.docutils) .sig-name,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descclassname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .descname,html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) .sig-name{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Courier,monospace;color:#000}.rst-content .viewcode-back,.rst-content .viewcode-link{display:inline-block;color:#27ae60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:700}.rst-content code.download,.rst-content tt.download{background:inherit;padding:inherit;font-weight:400;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content code.download span:first-child,.rst-content tt.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content code.download span:first-child:before,.rst-content tt.download span:first-child:before{margin-right:4px}.rst-content .guilabel,.rst-content .menuselection{font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .guilabel,.rst-content .menuselection{border:1px solid #7fbbe3;background:#e7f2fa}.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>.kbd,.rst-content :not(dl.option-list)>:not(dt):not(kbd):not(.kbd)>kbd{color:inherit;font-size:80%;background-color:#fff;border:1px solid #a6a6a6;border-radius:4px;box-shadow:0 2px grey;padding:2.4px 6px;margin:auto 0}.rst-content .versionmodified{font-style:italic}@media screen and (max-width:480px){.rst-content .sidebar{width:100%}}span[id*=MathJax-Span]{color:#404040}.math{text-align:center}@font-face{font-family:Lato;src:url(fonts/lato-normal.woff2?bd03a2cc277bbbc338d464e679fe9942) format("woff2"),url(fonts/lato-normal.woff?27bd77b9162d388cb8d4c4217c7c5e2a) format("woff");font-weight:400;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold.woff2?cccb897485813c7c256901dbca54ecf2) format("woff2"),url(fonts/lato-bold.woff?d878b6c29b10beca227e9eef4246111b) format("woff");font-weight:700;font-style:normal;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-bold-italic.woff2?0b6bb6725576b072c5d0b02ecdd1900d) format("woff2"),url(fonts/lato-bold-italic.woff?9c7e4e9eb485b4a121c760e61bc3707c) format("woff");font-weight:700;font-style:italic;font-display:block}@font-face{font-family:Lato;src:url(fonts/lato-normal-italic.woff2?4eb103b4d12be57cb1d040ed5e162e9d) format("woff2"),url(fonts/lato-normal-italic.woff?f28f2d6482446544ef1ea1ccc6dd5892) format("woff");font-weight:400;font-style:italic;font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:400;src:url(fonts/Roboto-Slab-Regular.woff2?7abf5b8d04d26a2cafea937019bca958) format("woff2"),url(fonts/Roboto-Slab-Regular.woff?c1be9284088d487c5e3ff0a10a92e58c) format("woff");font-display:block}@font-face{font-family:Roboto Slab;font-style:normal;font-weight:700;src:url(fonts/Roboto-Slab-Bold.woff2?9984f4a9bda09be08e83f2506954adbe) format("woff2"),url(fonts/Roboto-Slab-Bold.woff?bed5564a116b05148e3b3bea6fb1162a) format("woff");font-display:block} \ No newline at end of file diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 0000000..0398ebb --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,149 @@ +/* + * Base JavaScript utilities for all Sphinx HTML documentation. + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 0000000..83aacff --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'fr', + COLLAPSE_INDEX: false, + BUILDER: 'dirhtml', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/drawio.css b/_static/drawio.css new file mode 100644 index 0000000..5e555eb --- /dev/null +++ b/_static/drawio.css @@ -0,0 +1,8 @@ +img.drawio { + border: 0; + max-width: 100%; +} + +object.drawio { + max-width: 100%; +} \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000..a858a41 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/fonts/Lato/lato-bold.eot b/_static/fonts/Lato/lato-bold.eot new file mode 100644 index 0000000..3361183 Binary files /dev/null and b/_static/fonts/Lato/lato-bold.eot differ diff --git a/_static/fonts/Lato/lato-bold.ttf b/_static/fonts/Lato/lato-bold.ttf new file mode 100644 index 0000000..29f691d Binary files /dev/null and b/_static/fonts/Lato/lato-bold.ttf differ diff --git a/_static/fonts/Lato/lato-bold.woff b/_static/fonts/Lato/lato-bold.woff new file mode 100644 index 0000000..c6dff51 Binary files /dev/null and b/_static/fonts/Lato/lato-bold.woff differ diff --git a/_static/fonts/Lato/lato-bold.woff2 b/_static/fonts/Lato/lato-bold.woff2 new file mode 100644 index 0000000..bb19504 Binary files /dev/null and b/_static/fonts/Lato/lato-bold.woff2 differ diff --git a/_static/fonts/Lato/lato-bolditalic.eot b/_static/fonts/Lato/lato-bolditalic.eot new file mode 100644 index 0000000..3d41549 Binary files /dev/null and b/_static/fonts/Lato/lato-bolditalic.eot differ diff --git a/_static/fonts/Lato/lato-bolditalic.ttf b/_static/fonts/Lato/lato-bolditalic.ttf new file mode 100644 index 0000000..f402040 Binary files /dev/null and b/_static/fonts/Lato/lato-bolditalic.ttf differ diff --git a/_static/fonts/Lato/lato-bolditalic.woff b/_static/fonts/Lato/lato-bolditalic.woff new file mode 100644 index 0000000..88ad05b Binary files /dev/null and b/_static/fonts/Lato/lato-bolditalic.woff differ diff --git a/_static/fonts/Lato/lato-bolditalic.woff2 b/_static/fonts/Lato/lato-bolditalic.woff2 new file mode 100644 index 0000000..c4e3d80 Binary files /dev/null and b/_static/fonts/Lato/lato-bolditalic.woff2 differ diff --git a/_static/fonts/Lato/lato-italic.eot b/_static/fonts/Lato/lato-italic.eot new file mode 100644 index 0000000..3f82642 Binary files /dev/null and b/_static/fonts/Lato/lato-italic.eot differ diff --git a/_static/fonts/Lato/lato-italic.ttf b/_static/fonts/Lato/lato-italic.ttf new file mode 100644 index 0000000..b4bfc9b Binary files /dev/null and b/_static/fonts/Lato/lato-italic.ttf differ diff --git a/_static/fonts/Lato/lato-italic.woff b/_static/fonts/Lato/lato-italic.woff new file mode 100644 index 0000000..76114bc Binary files /dev/null and b/_static/fonts/Lato/lato-italic.woff differ diff --git a/_static/fonts/Lato/lato-italic.woff2 b/_static/fonts/Lato/lato-italic.woff2 new file mode 100644 index 0000000..3404f37 Binary files /dev/null and b/_static/fonts/Lato/lato-italic.woff2 differ diff --git a/_static/fonts/Lato/lato-regular.eot b/_static/fonts/Lato/lato-regular.eot new file mode 100644 index 0000000..11e3f2a Binary files /dev/null and b/_static/fonts/Lato/lato-regular.eot differ diff --git a/_static/fonts/Lato/lato-regular.ttf b/_static/fonts/Lato/lato-regular.ttf new file mode 100644 index 0000000..74decd9 Binary files /dev/null and b/_static/fonts/Lato/lato-regular.ttf differ diff --git a/_static/fonts/Lato/lato-regular.woff b/_static/fonts/Lato/lato-regular.woff new file mode 100644 index 0000000..ae1307f Binary files /dev/null and b/_static/fonts/Lato/lato-regular.woff differ diff --git a/_static/fonts/Lato/lato-regular.woff2 b/_static/fonts/Lato/lato-regular.woff2 new file mode 100644 index 0000000..3bf9843 Binary files /dev/null and b/_static/fonts/Lato/lato-regular.woff2 differ diff --git a/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot b/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot new file mode 100644 index 0000000..79dc8ef Binary files /dev/null and b/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot differ diff --git a/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf b/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf new file mode 100644 index 0000000..df5d1df Binary files /dev/null and b/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf differ diff --git a/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff b/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff new file mode 100644 index 0000000..6cb6000 Binary files /dev/null and b/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff differ diff --git a/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 b/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 new file mode 100644 index 0000000..7059e23 Binary files /dev/null and b/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 differ diff --git a/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot b/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot new file mode 100644 index 0000000..2f7ca78 Binary files /dev/null and b/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot differ diff --git a/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf b/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf new file mode 100644 index 0000000..eb52a79 Binary files /dev/null and b/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf differ diff --git a/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff b/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff new file mode 100644 index 0000000..f815f63 Binary files /dev/null and b/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff differ diff --git a/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 b/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 new file mode 100644 index 0000000..f2c76e5 Binary files /dev/null and b/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 differ diff --git a/_static/french-stemmer.js b/_static/french-stemmer.js new file mode 100644 index 0000000..c970831 --- /dev/null +++ b/_static/french-stemmer.js @@ -0,0 +1,1325 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +FrenchStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["col", -1, -1], + ["par", -1, -1], + ["tap", -1, -1] + ]; + + /** @const */ var a_1 = [ + ["", -1, 7], + ["H", 0, 6], + ["He", 1, 4], + ["Hi", 1, 5], + ["I", 0, 1], + ["U", 0, 2], + ["Y", 0, 3] + ]; + + /** @const */ var a_2 = [ + ["iqU", -1, 3], + ["abl", -1, 3], + ["I\u00E8r", -1, 4], + ["i\u00E8r", -1, 4], + ["eus", -1, 2], + ["iv", -1, 1] + ]; + + /** @const */ var a_3 = [ + ["ic", -1, 2], + ["abil", -1, 1], + ["iv", -1, 3] + ]; + + /** @const */ var a_4 = [ + ["iqUe", -1, 1], + ["atrice", -1, 2], + ["ance", -1, 1], + ["ence", -1, 5], + ["logie", -1, 3], + ["able", -1, 1], + ["isme", -1, 1], + ["euse", -1, 11], + ["iste", -1, 1], + ["ive", -1, 8], + ["if", -1, 8], + ["usion", -1, 4], + ["ation", -1, 2], + ["ution", -1, 4], + ["ateur", -1, 2], + ["iqUes", -1, 1], + ["atrices", -1, 2], + ["ances", -1, 1], + ["ences", -1, 5], + ["logies", -1, 3], + ["ables", -1, 1], + ["ismes", -1, 1], + ["euses", -1, 11], + ["istes", -1, 1], + ["ives", -1, 8], + ["ifs", -1, 8], + ["usions", -1, 4], + ["ations", -1, 2], + ["utions", -1, 4], + ["ateurs", -1, 2], + ["ments", -1, 15], + ["ements", 30, 6], + ["issements", 31, 12], + ["it\u00E9s", -1, 7], + ["ment", -1, 15], + ["ement", 34, 6], + ["issement", 35, 12], + ["amment", 34, 13], + ["emment", 34, 14], + ["aux", -1, 10], + ["eaux", 39, 9], + ["eux", -1, 1], + ["it\u00E9", -1, 7] + ]; + + /** @const */ var a_5 = [ + ["ira", -1, 1], + ["ie", -1, 1], + ["isse", -1, 1], + ["issante", -1, 1], + ["i", -1, 1], + ["irai", 4, 1], + ["ir", -1, 1], + ["iras", -1, 1], + ["ies", -1, 1], + ["\u00EEmes", -1, 1], + ["isses", -1, 1], + ["issantes", -1, 1], + ["\u00EEtes", -1, 1], + ["is", -1, 1], + ["irais", 13, 1], + ["issais", 13, 1], + ["irions", -1, 1], + ["issions", -1, 1], + ["irons", -1, 1], + ["issons", -1, 1], + ["issants", -1, 1], + ["it", -1, 1], + ["irait", 21, 1], + ["issait", 21, 1], + ["issant", -1, 1], + ["iraIent", -1, 1], + ["issaIent", -1, 1], + ["irent", -1, 1], + ["issent", -1, 1], + ["iront", -1, 1], + ["\u00EEt", -1, 1], + ["iriez", -1, 1], + ["issiez", -1, 1], + ["irez", -1, 1], + ["issez", -1, 1] + ]; + + /** @const */ var a_6 = [ + ["a", -1, 3], + ["era", 0, 2], + ["asse", -1, 3], + ["ante", -1, 3], + ["\u00E9e", -1, 2], + ["ai", -1, 3], + ["erai", 5, 2], + ["er", -1, 2], + ["as", -1, 3], + ["eras", 8, 2], + ["\u00E2mes", -1, 3], + ["asses", -1, 3], + ["antes", -1, 3], + ["\u00E2tes", -1, 3], + ["\u00E9es", -1, 2], + ["ais", -1, 3], + ["erais", 15, 2], + ["ions", -1, 1], + ["erions", 17, 2], + ["assions", 17, 3], + ["erons", -1, 2], + ["ants", -1, 3], + ["\u00E9s", -1, 2], + ["ait", -1, 3], + ["erait", 23, 2], + ["ant", -1, 3], + ["aIent", -1, 3], + ["eraIent", 26, 2], + ["\u00E8rent", -1, 2], + ["assent", -1, 3], + ["eront", -1, 2], + ["\u00E2t", -1, 3], + ["ez", -1, 2], + ["iez", 32, 2], + ["eriez", 33, 2], + ["assiez", 33, 3], + ["erez", 32, 2], + ["\u00E9", -1, 2] + ]; + + /** @const */ var a_7 = [ + ["e", -1, 3], + ["I\u00E8re", 0, 2], + ["i\u00E8re", 0, 2], + ["ion", -1, 1], + ["Ier", -1, 2], + ["ier", -1, 2] + ]; + + /** @const */ var a_8 = [ + ["ell", -1, -1], + ["eill", -1, -1], + ["enn", -1, -1], + ["onn", -1, -1], + ["ett", -1, -1] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5]; + + /** @const */ var /** Array */ g_keep_with_s = [1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128]; + + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + var /** number */ I_pV = 0; + + + /** @return {boolean} */ + function r_prelude() { + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + golab1: while(true) + { + var /** number */ v_2 = base.cursor; + lab2: { + lab3: { + var /** number */ v_3 = base.cursor; + lab4: { + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab4; + } + base.bra = base.cursor; + lab5: { + var /** number */ v_4 = base.cursor; + lab6: { + if (!(base.eq_s("u"))) + { + break lab6; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab6; + } + if (!base.slice_from("U")) + { + return false; + } + break lab5; + } + base.cursor = v_4; + lab7: { + if (!(base.eq_s("i"))) + { + break lab7; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab7; + } + if (!base.slice_from("I")) + { + return false; + } + break lab5; + } + base.cursor = v_4; + if (!(base.eq_s("y"))) + { + break lab4; + } + base.ket = base.cursor; + if (!base.slice_from("Y")) + { + return false; + } + } + break lab3; + } + base.cursor = v_3; + lab8: { + base.bra = base.cursor; + if (!(base.eq_s("\u00EB"))) + { + break lab8; + } + base.ket = base.cursor; + if (!base.slice_from("He")) + { + return false; + } + break lab3; + } + base.cursor = v_3; + lab9: { + base.bra = base.cursor; + if (!(base.eq_s("\u00EF"))) + { + break lab9; + } + base.ket = base.cursor; + if (!base.slice_from("Hi")) + { + return false; + } + break lab3; + } + base.cursor = v_3; + lab10: { + base.bra = base.cursor; + if (!(base.eq_s("y"))) + { + break lab10; + } + base.ket = base.cursor; + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab10; + } + if (!base.slice_from("Y")) + { + return false; + } + break lab3; + } + base.cursor = v_3; + if (!(base.eq_s("q"))) + { + break lab2; + } + base.bra = base.cursor; + if (!(base.eq_s("u"))) + { + break lab2; + } + base.ket = base.cursor; + if (!base.slice_from("U")) + { + return false; + } + } + base.cursor = v_2; + break golab1; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_mark_regions() { + I_pV = base.limit; + I_p1 = base.limit; + I_p2 = base.limit; + var /** number */ v_1 = base.cursor; + lab0: { + lab1: { + var /** number */ v_2 = base.cursor; + lab2: { + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab2; + } + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab2; + } + if (base.cursor >= base.limit) + { + break lab2; + } + base.cursor++; + break lab1; + } + base.cursor = v_2; + lab3: { + if (base.find_among(a_0) == 0) + { + break lab3; + } + break lab1; + } + base.cursor = v_2; + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + golab4: while(true) + { + lab5: { + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab5; + } + break golab4; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + } + I_pV = base.cursor; + } + base.cursor = v_1; + var /** number */ v_4 = base.cursor; + lab6: { + golab7: while(true) + { + lab8: { + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + break lab6; + } + base.cursor++; + } + golab9: while(true) + { + lab10: { + if (!(base.out_grouping(g_v, 97, 251))) + { + break lab10; + } + break golab9; + } + if (base.cursor >= base.limit) + { + break lab6; + } + base.cursor++; + } + I_p1 = base.cursor; + golab11: while(true) + { + lab12: { + if (!(base.in_grouping(g_v, 97, 251))) + { + break lab12; + } + break golab11; + } + if (base.cursor >= base.limit) + { + break lab6; + } + base.cursor++; + } + golab13: while(true) + { + lab14: { + if (!(base.out_grouping(g_v, 97, 251))) + { + break lab14; + } + break golab13; + } + if (base.cursor >= base.limit) + { + break lab6; + } + base.cursor++; + } + I_p2 = base.cursor; + } + base.cursor = v_4; + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + var /** number */ among_var; + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_1); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("i")) + { + return false; + } + break; + case 2: + if (!base.slice_from("u")) + { + return false; + } + break; + case 3: + if (!base.slice_from("y")) + { + return false; + } + break; + case 4: + if (!base.slice_from("\u00EB")) + { + return false; + } + break; + case 5: + if (!base.slice_from("\u00EF")) + { + return false; + } + break; + case 6: + if (!base.slice_del()) + { + return false; + } + break; + case 7: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_RV() { + if (!(I_pV <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_standard_suffix() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_4); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("ic"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + lab1: { + var /** number */ v_2 = base.limit - base.cursor; + lab2: { + if (!r_R2()) + { + break lab2; + } + if (!base.slice_del()) + { + return false; + } + break lab1; + } + base.cursor = base.limit - v_2; + if (!base.slice_from("iqU")) + { + return false; + } + } + } + break; + case 3: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("log")) + { + return false; + } + break; + case 4: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("u")) + { + return false; + } + break; + case 5: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("ent")) + { + return false; + } + break; + case 6: + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_3 = base.limit - base.cursor; + lab3: { + base.ket = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + base.cursor = base.limit - v_3; + break lab3; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + base.cursor = base.limit - v_3; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_3; + break lab3; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_3; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + lab4: { + var /** number */ v_4 = base.limit - base.cursor; + lab5: { + if (!r_R2()) + { + break lab5; + } + if (!base.slice_del()) + { + return false; + } + break lab4; + } + base.cursor = base.limit - v_4; + if (!r_R1()) + { + base.cursor = base.limit - v_3; + break lab3; + } + if (!base.slice_from("eux")) + { + return false; + } + } + break; + case 3: + if (!r_R2()) + { + base.cursor = base.limit - v_3; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + break; + case 4: + if (!r_RV()) + { + base.cursor = base.limit - v_3; + break lab3; + } + if (!base.slice_from("i")) + { + return false; + } + break; + } + } + break; + case 7: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_5 = base.limit - base.cursor; + lab6: { + base.ket = base.cursor; + among_var = base.find_among_b(a_3); + if (among_var == 0) + { + base.cursor = base.limit - v_5; + break lab6; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + lab7: { + var /** number */ v_6 = base.limit - base.cursor; + lab8: { + if (!r_R2()) + { + break lab8; + } + if (!base.slice_del()) + { + return false; + } + break lab7; + } + base.cursor = base.limit - v_6; + if (!base.slice_from("abl")) + { + return false; + } + } + break; + case 2: + lab9: { + var /** number */ v_7 = base.limit - base.cursor; + lab10: { + if (!r_R2()) + { + break lab10; + } + if (!base.slice_del()) + { + return false; + } + break lab9; + } + base.cursor = base.limit - v_7; + if (!base.slice_from("iqU")) + { + return false; + } + } + break; + case 3: + if (!r_R2()) + { + base.cursor = base.limit - v_5; + break lab6; + } + if (!base.slice_del()) + { + return false; + } + break; + } + } + break; + case 8: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_8 = base.limit - base.cursor; + lab11: { + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_8; + break lab11; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_8; + break lab11; + } + if (!base.slice_del()) + { + return false; + } + base.ket = base.cursor; + if (!(base.eq_s_b("ic"))) + { + base.cursor = base.limit - v_8; + break lab11; + } + base.bra = base.cursor; + lab12: { + var /** number */ v_9 = base.limit - base.cursor; + lab13: { + if (!r_R2()) + { + break lab13; + } + if (!base.slice_del()) + { + return false; + } + break lab12; + } + base.cursor = base.limit - v_9; + if (!base.slice_from("iqU")) + { + return false; + } + } + } + break; + case 9: + if (!base.slice_from("eau")) + { + return false; + } + break; + case 10: + if (!r_R1()) + { + return false; + } + if (!base.slice_from("al")) + { + return false; + } + break; + case 11: + lab14: { + var /** number */ v_10 = base.limit - base.cursor; + lab15: { + if (!r_R2()) + { + break lab15; + } + if (!base.slice_del()) + { + return false; + } + break lab14; + } + base.cursor = base.limit - v_10; + if (!r_R1()) + { + return false; + } + if (!base.slice_from("eux")) + { + return false; + } + } + break; + case 12: + if (!r_R1()) + { + return false; + } + if (!(base.out_grouping_b(g_v, 97, 251))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 13: + if (!r_RV()) + { + return false; + } + if (!base.slice_from("ant")) + { + return false; + } + return false; + case 14: + if (!r_RV()) + { + return false; + } + if (!base.slice_from("ent")) + { + return false; + } + return false; + case 15: + var /** number */ v_11 = base.limit - base.cursor; + if (!(base.in_grouping_b(g_v, 97, 251))) + { + return false; + } + if (!r_RV()) + { + return false; + } + base.cursor = base.limit - v_11; + if (!base.slice_del()) + { + return false; + } + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_i_verb_suffix() { + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + if (base.find_among_b(a_5) == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + { + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + if (!(base.eq_s_b("H"))) + { + break lab0; + } + base.limit_backward = v_2; + return false; + } + base.cursor = base.limit - v_3; + } + if (!(base.out_grouping_b(g_v, 97, 251))) + { + base.limit_backward = v_2; + return false; + } + if (!base.slice_del()) + { + return false; + } + base.limit_backward = v_2; + return true; + }; + + /** @return {boolean} */ + function r_verb_suffix() { + var /** number */ among_var; + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + among_var = base.find_among_b(a_6); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + base.limit_backward = v_2; + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("e"))) + { + base.cursor = base.limit - v_3; + break lab0; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + } + break; + } + base.limit_backward = v_2; + return true; + }; + + /** @return {boolean} */ + function r_residual_suffix() { + var /** number */ among_var; + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("s"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + var /** number */ v_2 = base.limit - base.cursor; + lab1: { + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + if (!(base.eq_s_b("Hi"))) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_3; + if (!(base.out_grouping_b(g_keep_with_s, 97, 232))) + { + base.cursor = base.limit - v_1; + break lab0; + } + } + base.cursor = base.limit - v_2; + if (!base.slice_del()) + { + return false; + } + } + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_5 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + among_var = base.find_among_b(a_7); + if (among_var == 0) + { + base.limit_backward = v_5; + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + base.limit_backward = v_5; + return false; + } + lab3: { + var /** number */ v_6 = base.limit - base.cursor; + lab4: { + if (!(base.eq_s_b("s"))) + { + break lab4; + } + break lab3; + } + base.cursor = base.limit - v_6; + if (!(base.eq_s_b("t"))) + { + base.limit_backward = v_5; + return false; + } + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_from("i")) + { + return false; + } + break; + case 3: + if (!base.slice_del()) + { + return false; + } + break; + } + base.limit_backward = v_5; + return true; + }; + + /** @return {boolean} */ + function r_un_double() { + var /** number */ v_1 = base.limit - base.cursor; + if (base.find_among_b(a_8) == 0) + { + return false; + } + base.cursor = base.limit - v_1; + base.ket = base.cursor; + if (base.cursor <= base.limit_backward) + { + return false; + } + base.cursor--; + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_un_accent() { + { + var v_1 = 1; + while(true) + { + lab0: { + if (!(base.out_grouping_b(g_v, 97, 251))) + { + break lab0; + } + v_1--; + continue; + } + break; + } + if (v_1 > 0) + { + return false; + } + } + base.ket = base.cursor; + lab1: { + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + if (!(base.eq_s_b("\u00E9"))) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_3; + if (!(base.eq_s_b("\u00E8"))) + { + return false; + } + } + base.bra = base.cursor; + if (!base.slice_from("e")) + { + return false; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + var /** number */ v_1 = base.cursor; + r_prelude(); + base.cursor = v_1; + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + lab1: { + var /** number */ v_4 = base.limit - base.cursor; + lab2: { + var /** number */ v_5 = base.limit - base.cursor; + lab3: { + var /** number */ v_6 = base.limit - base.cursor; + lab4: { + if (!r_standard_suffix()) + { + break lab4; + } + break lab3; + } + base.cursor = base.limit - v_6; + lab5: { + if (!r_i_verb_suffix()) + { + break lab5; + } + break lab3; + } + base.cursor = base.limit - v_6; + if (!r_verb_suffix()) + { + break lab2; + } + } + base.cursor = base.limit - v_5; + var /** number */ v_7 = base.limit - base.cursor; + lab6: { + base.ket = base.cursor; + lab7: { + var /** number */ v_8 = base.limit - base.cursor; + lab8: { + if (!(base.eq_s_b("Y"))) + { + break lab8; + } + base.bra = base.cursor; + if (!base.slice_from("i")) + { + return false; + } + break lab7; + } + base.cursor = base.limit - v_8; + if (!(base.eq_s_b("\u00E7"))) + { + base.cursor = base.limit - v_7; + break lab6; + } + base.bra = base.cursor; + if (!base.slice_from("c")) + { + return false; + } + } + } + break lab1; + } + base.cursor = base.limit - v_4; + if (!r_residual_suffix()) + { + break lab0; + } + } + } + base.cursor = base.limit - v_3; + var /** number */ v_9 = base.limit - base.cursor; + r_un_double(); + base.cursor = base.limit - v_9; + var /** number */ v_10 = base.limit - base.cursor; + r_un_accent(); + base.cursor = base.limit - v_10; + base.cursor = base.limit_backward; + var /** number */ v_11 = base.cursor; + r_postlude(); + base.cursor = v_11; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/_static/jquery.js b/_static/jquery.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/_static/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t a.language.name.localeCompare(b.language.name)); + + const languagesHTML = ` +
+
Languages
+ ${languages + .map( + (translation) => ` +
+ ${translation.language.code} +
+ `, + ) + .join("\n")} +
+ `; + return languagesHTML; + } + + function renderVersions(config) { + if (!config.versions.active.length) { + return ""; + } + const versionsHTML = ` +
+
Versions
+ ${config.versions.active + .map( + (version) => ` +
+ ${version.slug} +
+ `, + ) + .join("\n")} +
+ `; + return versionsHTML; + } + + function renderDownloads(config) { + if (!Object.keys(config.versions.current.downloads).length) { + return ""; + } + const downloadsNameDisplay = { + pdf: "PDF", + epub: "Epub", + htmlzip: "HTML", + }; + + const downloadsHTML = ` +
+
Téléchargements
+ ${Object.entries(config.versions.current.downloads) + .map( + ([name, url]) => ` +
+ ${downloadsNameDisplay[name]} +
+ `, + ) + .join("\n")} +
+ `; + return downloadsHTML; + } + + document.addEventListener("readthedocs-addons-data-ready", function (event) { + const config = event.detail.data(); + + const flyout = ` +
+ + Read the Docs + v: ${config.versions.current.slug} + + +
+
+ ${renderLanguages(config)} + ${renderVersions(config)} + ${renderDownloads(config)} +
+
À propos de Read the Docs
+
+ Accueil du projet +
+
+ Compilations +
+
+ Téléchargements +
+
+
+
Recherche
+
+
+ +
+
+
+
+ + Hosted by Read the Docs + +
+
+ `; + + // Inject the generated flyout into the body HTML element. + document.body.insertAdjacentHTML("beforeend", flyout); + + // Trigger the Read the Docs Addons Search modal when clicking on the "Search docs" input from inside the flyout. + document + .querySelector("#flyout-search-form") + .addEventListener("focusin", () => { + const event = new CustomEvent("readthedocs-search-show"); + document.dispatchEvent(event); + }); + }) +} + +if (themeLanguageSelector || themeVersionSelector) { + function onSelectorSwitch(event) { + const option = event.target.selectedIndex; + const item = event.target.options[option]; + window.location.href = item.dataset.url; + } + + document.addEventListener("readthedocs-addons-data-ready", function (event) { + const config = event.detail.data(); + + const versionSwitch = document.querySelector( + "div.switch-menus > div.version-switch", + ); + if (themeVersionSelector) { + let versions = config.versions.active; + if (config.versions.current.hidden || config.versions.current.type === "external") { + versions.unshift(config.versions.current); + } + const versionSelect = ` + + `; + + versionSwitch.innerHTML = versionSelect; + versionSwitch.firstElementChild.addEventListener("change", onSelectorSwitch); + } + + const languageSwitch = document.querySelector( + "div.switch-menus > div.language-switch", + ); + + if (themeLanguageSelector) { + if (config.projects.translations.length) { + // Add the current language to the options on the selector + let languages = config.projects.translations.concat( + config.projects.current, + ); + languages = languages.sort((a, b) => + a.language.name.localeCompare(b.language.name), + ); + + const languageSelect = ` + + `; + + languageSwitch.innerHTML = languageSelect; + languageSwitch.firstElementChild.addEventListener("change", onSelectorSwitch); + } + else { + languageSwitch.remove(); + } + } + }); +} + +document.addEventListener("readthedocs-addons-data-ready", function (event) { + // Trigger the Read the Docs Addons Search modal when clicking on "Search docs" input from the topnav. + document + .querySelector("[role='search'] input") + .addEventListener("focusin", () => { + const event = new CustomEvent("readthedocs-search-show"); + document.dispatchEvent(event); + }); +}); \ No newline at end of file diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 0000000..de1c0f1 --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,12 @@ +/* + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + */ + +var stopwords = ["ai", "aie", "aient", "aies", "ait", "as", "au", "aura", "aurai", "auraient", "aurais", "aurait", "auras", "aurez", "auriez", "aurions", "aurons", "auront", "aux", "avaient", "avais", "avait", "avec", "avez", "aviez", "avions", "avons", "ayant", "ayez", "ayons", "c", "ce", "ceci", "cela", "cel\u00e0", "ces", "cet", "cette", "d", "dans", "de", "des", "du", "elle", "en", "es", "est", "et", "eu", "eue", "eues", "eurent", "eus", "eusse", "eussent", "eusses", "eussiez", "eussions", "eut", "eux", "e\u00fbmes", "e\u00fbt", "e\u00fbtes", "furent", "fus", "fusse", "fussent", "fusses", "fussiez", "fussions", "fut", "f\u00fbmes", "f\u00fbt", "f\u00fbtes", "ici", "il", "ils", "j", "je", "l", "la", "le", "les", "leur", "leurs", "lui", "m", "ma", "mais", "me", "mes", "moi", "mon", "m\u00eame", "n", "ne", "nos", "notre", "nous", "on", "ont", "ou", "par", "pas", "pour", "qu", "que", "quel", "quelle", "quelles", "quels", "qui", "s", "sa", "sans", "se", "sera", "serai", "seraient", "serais", "serait", "seras", "serez", "seriez", "serions", "serons", "seront", "ses", "soi", "soient", "sois", "soit", "sommes", "son", "sont", "soyez", "soyons", "suis", "sur", "t", "ta", "te", "tes", "toi", "ton", "tu", "un", "une", "vos", "votre", "vous", "y", "\u00e0", "\u00e9taient", "\u00e9tais", "\u00e9tait", "\u00e9tant", "\u00e9tiez", "\u00e9tions", "\u00e9t\u00e9", "\u00e9t\u00e9e", "\u00e9t\u00e9es", "\u00e9t\u00e9s", "\u00eates"]; + + +/* Non-minified version is copied as a separate JS file, if available */ +BaseStemmer=function(){this.setCurrent=function(r){this.current=r;this.cursor=0;this.limit=this.current.length;this.limit_backward=0;this.bra=this.cursor;this.ket=this.limit};this.getCurrent=function(){return this.current};this.copy_from=function(r){this.current=r.current;this.cursor=r.cursor;this.limit=r.limit;this.limit_backward=r.limit_backward;this.bra=r.bra;this.ket=r.ket};this.in_grouping=function(r,t,i){if(this.cursor>=this.limit)return false;var s=this.current.charCodeAt(this.cursor);if(s>i||s>>3]&1<<(s&7))==0)return false;this.cursor++;return true};this.in_grouping_b=function(r,t,i){if(this.cursor<=this.limit_backward)return false;var s=this.current.charCodeAt(this.cursor-1);if(s>i||s>>3]&1<<(s&7))==0)return false;this.cursor--;return true};this.out_grouping=function(r,t,i){if(this.cursor>=this.limit)return false;var s=this.current.charCodeAt(this.cursor);if(s>i||s>>3]&1<<(s&7))==0){this.cursor++;return true}return false};this.out_grouping_b=function(r,t,i){if(this.cursor<=this.limit_backward)return false;var s=this.current.charCodeAt(this.cursor-1);if(s>i||s>>3]&1<<(s&7))==0){this.cursor--;return true}return false};this.eq_s=function(r){if(this.limit-this.cursor>>1);var a=0;var f=h0)break;if(i==t)break;if(n)break;n=true}}do{var l=r[t];if(h>=l[0].length){this.cursor=s+l[0].length;if(l.length<4)return l[2];var v=l[3](this);this.cursor=s+l[0].length;if(v)return l[2]}t=l[1]}while(t>=0);return 0};this.find_among_b=function(r){var t=0;var i=r.length;var s=this.cursor;var e=this.limit_backward;var h=0;var u=0;var n=false;while(true){var c=t+(i-t>>1);var a=0;var f=h=0;o--){if(s-f==e){a=-1;break}a=this.current.charCodeAt(s-1-f)-l[0].charCodeAt(o);if(a!=0)break;f++}if(a<0){i=c;u=f}else{t=c;h=f}if(i-t<=1){if(t>0)break;if(i==t)break;if(n)break;n=true}}do{var l=r[t];if(h>=l[0].length){this.cursor=s-l[0].length;if(l.length<4)return l[2];var v=l[3](this);this.cursor=s-l[0].length;if(v)return l[2]}t=l[1]}while(t>=0);return 0};this.replace_s=function(r,t,i){var s=i.length-(t-r);this.current=this.current.slice(0,r)+i+this.current.slice(t);this.limit+=s;if(this.cursor>=t)this.cursor+=s;else if(this.cursor>r)this.cursor=r;return s};this.slice_check=function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>this.current.length){return false}return true};this.slice_from=function(r){var t=false;if(this.slice_check()){this.replace_s(this.bra,this.ket,r);t=true}return t};this.slice_del=function(){return this.slice_from("")};this.insert=function(r,t,i){var s=this.replace_s(r,t,i);if(r<=this.bra)this.bra+=s;if(r<=this.ket)this.ket+=s};this.slice_to=function(){var r="";if(this.slice_check()){r=this.current.slice(this.bra,this.ket)}return r};this.assign_to=function(){return this.current.slice(0,this.limit)}}; +FrenchStemmer=function(){var r=new BaseStemmer;var e=[["col",-1,-1],["par",-1,-1],["tap",-1,-1]];var i=[["",-1,7],["H",0,6],["He",1,4],["Hi",1,5],["I",0,1],["U",0,2],["Y",0,3]];var s=[["iqU",-1,3],["abl",-1,3],["Ièr",-1,4],["ièr",-1,4],["eus",-1,2],["iv",-1,1]];var a=[["ic",-1,2],["abil",-1,1],["iv",-1,3]];var u=[["iqUe",-1,1],["atrice",-1,2],["ance",-1,1],["ence",-1,5],["logie",-1,3],["able",-1,1],["isme",-1,1],["euse",-1,11],["iste",-1,1],["ive",-1,8],["if",-1,8],["usion",-1,4],["ation",-1,2],["ution",-1,4],["ateur",-1,2],["iqUes",-1,1],["atrices",-1,2],["ances",-1,1],["ences",-1,5],["logies",-1,3],["ables",-1,1],["ismes",-1,1],["euses",-1,11],["istes",-1,1],["ives",-1,8],["ifs",-1,8],["usions",-1,4],["ations",-1,2],["utions",-1,4],["ateurs",-1,2],["ments",-1,15],["ements",30,6],["issements",31,12],["ités",-1,7],["ment",-1,15],["ement",34,6],["issement",35,12],["amment",34,13],["emment",34,14],["aux",-1,10],["eaux",39,9],["eux",-1,1],["ité",-1,7]];var t=[["ira",-1,1],["ie",-1,1],["isse",-1,1],["issante",-1,1],["i",-1,1],["irai",4,1],["ir",-1,1],["iras",-1,1],["ies",-1,1],["îmes",-1,1],["isses",-1,1],["issantes",-1,1],["îtes",-1,1],["is",-1,1],["irais",13,1],["issais",13,1],["irions",-1,1],["issions",-1,1],["irons",-1,1],["issons",-1,1],["issants",-1,1],["it",-1,1],["irait",21,1],["issait",21,1],["issant",-1,1],["iraIent",-1,1],["issaIent",-1,1],["irent",-1,1],["issent",-1,1],["iront",-1,1],["ît",-1,1],["iriez",-1,1],["issiez",-1,1],["irez",-1,1],["issez",-1,1]];var c=[["a",-1,3],["era",0,2],["asse",-1,3],["ante",-1,3],["ée",-1,2],["ai",-1,3],["erai",5,2],["er",-1,2],["as",-1,3],["eras",8,2],["âmes",-1,3],["asses",-1,3],["antes",-1,3],["âtes",-1,3],["ées",-1,2],["ais",-1,3],["erais",15,2],["ions",-1,1],["erions",17,2],["assions",17,3],["erons",-1,2],["ants",-1,3],["és",-1,2],["ait",-1,3],["erait",23,2],["ant",-1,3],["aIent",-1,3],["eraIent",26,2],["èrent",-1,2],["assent",-1,3],["eront",-1,2],["ât",-1,3],["ez",-1,2],["iez",32,2],["eriez",33,2],["assiez",33,3],["erez",32,2],["é",-1,2]];var f=[["e",-1,3],["Ière",0,2],["ière",0,2],["ion",-1,1],["Ier",-1,2],["ier",-1,2]];var l=[["ell",-1,-1],["eill",-1,-1],["enn",-1,-1],["onn",-1,-1],["ett",-1,-1]];var o=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5];var n=[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128];var b=0;var k=0;var m=0;function _(){while(true){var e=r.cursor;r:{e:while(true){var i=r.cursor;i:{s:{var s=r.cursor;a:{if(!r.in_grouping(o,97,251)){break a}r.bra=r.cursor;u:{var a=r.cursor;t:{if(!r.eq_s("u")){break t}r.ket=r.cursor;if(!r.in_grouping(o,97,251)){break t}if(!r.slice_from("U")){return false}break u}r.cursor=a;t:{if(!r.eq_s("i")){break t}r.ket=r.cursor;if(!r.in_grouping(o,97,251)){break t}if(!r.slice_from("I")){return false}break u}r.cursor=a;if(!r.eq_s("y")){break a}r.ket=r.cursor;if(!r.slice_from("Y")){return false}}break s}r.cursor=s;a:{r.bra=r.cursor;if(!r.eq_s("ë")){break a}r.ket=r.cursor;if(!r.slice_from("He")){return false}break s}r.cursor=s;a:{r.bra=r.cursor;if(!r.eq_s("ï")){break a}r.ket=r.cursor;if(!r.slice_from("Hi")){return false}break s}r.cursor=s;a:{r.bra=r.cursor;if(!r.eq_s("y")){break a}r.ket=r.cursor;if(!r.in_grouping(o,97,251)){break a}if(!r.slice_from("Y")){return false}break s}r.cursor=s;if(!r.eq_s("q")){break i}r.bra=r.cursor;if(!r.eq_s("u")){break i}r.ket=r.cursor;if(!r.slice_from("U")){return false}}r.cursor=i;break e}r.cursor=i;if(r.cursor>=r.limit){break r}r.cursor++}continue}r.cursor=e;break}return true}function v(){m=r.limit;k=r.limit;b=r.limit;var i=r.cursor;r:{e:{var s=r.cursor;i:{if(!r.in_grouping(o,97,251)){break i}if(!r.in_grouping(o,97,251)){break i}if(r.cursor>=r.limit){break i}r.cursor++;break e}r.cursor=s;i:{if(r.find_among(e)==0){break i}break e}r.cursor=s;if(r.cursor>=r.limit){break r}r.cursor++;i:while(true){s:{if(!r.in_grouping(o,97,251)){break s}break i}if(r.cursor>=r.limit){break r}r.cursor++}}m=r.cursor}r.cursor=i;var a=r.cursor;r:{e:while(true){i:{if(!r.in_grouping(o,97,251)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(o,97,251)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}k=r.cursor;e:while(true){i:{if(!r.in_grouping(o,97,251)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(o,97,251)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}b=r.cursor}r.cursor=a;return true}function d(){var e;while(true){var s=r.cursor;r:{r.bra=r.cursor;e=r.find_among(i);if(e==0){break r}r.ket=r.cursor;switch(e){case 1:if(!r.slice_from("i")){return false}break;case 2:if(!r.slice_from("u")){return false}break;case 3:if(!r.slice_from("y")){return false}break;case 4:if(!r.slice_from("ë")){return false}break;case 5:if(!r.slice_from("ï")){return false}break;case 6:if(!r.slice_del()){return false}break;case 7:if(r.cursor>=r.limit){break r}r.cursor++;break}continue}r.cursor=s;break}return true}function g(){if(!(m<=r.cursor)){return false}return true}function w(){if(!(k<=r.cursor)){return false}return true}function q(){if(!(b<=r.cursor)){return false}return true}function h(){var e;r.ket=r.cursor;e=r.find_among_b(u);if(e==0){return false}r.bra=r.cursor;switch(e){case 1:if(!q()){return false}if(!r.slice_del()){return false}break;case 2:if(!q()){return false}if(!r.slice_del()){return false}var i=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("ic")){r.cursor=r.limit-i;break r}r.bra=r.cursor;e:{var t=r.limit-r.cursor;i:{if(!q()){break i}if(!r.slice_del()){return false}break e}r.cursor=r.limit-t;if(!r.slice_from("iqU")){return false}}}break;case 3:if(!q()){return false}if(!r.slice_from("log")){return false}break;case 4:if(!q()){return false}if(!r.slice_from("u")){return false}break;case 5:if(!q()){return false}if(!r.slice_from("ent")){return false}break;case 6:if(!g()){return false}if(!r.slice_del()){return false}var c=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(s);if(e==0){r.cursor=r.limit-c;break r}r.bra=r.cursor;switch(e){case 1:if(!q()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-c;break r}r.bra=r.cursor;if(!q()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}break;case 2:e:{var f=r.limit-r.cursor;i:{if(!q()){break i}if(!r.slice_del()){return false}break e}r.cursor=r.limit-f;if(!w()){r.cursor=r.limit-c;break r}if(!r.slice_from("eux")){return false}}break;case 3:if(!q()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}break;case 4:if(!g()){r.cursor=r.limit-c;break r}if(!r.slice_from("i")){return false}break}}break;case 7:if(!q()){return false}if(!r.slice_del()){return false}var l=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(a);if(e==0){r.cursor=r.limit-l;break r}r.bra=r.cursor;switch(e){case 1:e:{var n=r.limit-r.cursor;i:{if(!q()){break i}if(!r.slice_del()){return false}break e}r.cursor=r.limit-n;if(!r.slice_from("abl")){return false}}break;case 2:e:{var b=r.limit-r.cursor;i:{if(!q()){break i}if(!r.slice_del()){return false}break e}r.cursor=r.limit-b;if(!r.slice_from("iqU")){return false}}break;case 3:if(!q()){r.cursor=r.limit-l;break r}if(!r.slice_del()){return false}break}}break;case 8:if(!q()){return false}if(!r.slice_del()){return false}var k=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-k;break r}r.bra=r.cursor;if(!q()){r.cursor=r.limit-k;break r}if(!r.slice_del()){return false}r.ket=r.cursor;if(!r.eq_s_b("ic")){r.cursor=r.limit-k;break r}r.bra=r.cursor;e:{var m=r.limit-r.cursor;i:{if(!q()){break i}if(!r.slice_del()){return false}break e}r.cursor=r.limit-m;if(!r.slice_from("iqU")){return false}}}break;case 9:if(!r.slice_from("eau")){return false}break;case 10:if(!w()){return false}if(!r.slice_from("al")){return false}break;case 11:r:{var _=r.limit-r.cursor;e:{if(!q()){break e}if(!r.slice_del()){return false}break r}r.cursor=r.limit-_;if(!w()){return false}if(!r.slice_from("eux")){return false}}break;case 12:if(!w()){return false}if(!r.out_grouping_b(o,97,251)){return false}if(!r.slice_del()){return false}break;case 13:if(!g()){return false}if(!r.slice_from("ant")){return false}return false;case 14:if(!g()){return false}if(!r.slice_from("ent")){return false}return false;case 15:var v=r.limit-r.cursor;if(!r.in_grouping_b(o,97,251)){return false}if(!g()){return false}r.cursor=r.limit-v;if(!r.slice_del()){return false}return false}return true}function p(){if(r.cursor0){return false}}r.ket=r.cursor;r:{var i=r.limit-r.cursor;e:{if(!r.eq_s_b("é")){break e}break r}r.cursor=r.limit-i;if(!r.eq_s_b("è")){return false}}r.bra=r.cursor;if(!r.slice_from("e")){return false}return true}this.stem=function(){var e=r.cursor;_();r.cursor=e;v();r.limit_backward=r.cursor;r.cursor=r.limit;var i=r.limit-r.cursor;r:{e:{var s=r.limit-r.cursor;i:{var a=r.limit-r.cursor;s:{var u=r.limit-r.cursor;a:{if(!h()){break a}break s}r.cursor=r.limit-u;a:{if(!p()){break a}break s}r.cursor=r.limit-u;if(!z()){break i}}r.cursor=r.limit-a;var t=r.limit-r.cursor;s:{r.ket=r.cursor;a:{var c=r.limit-r.cursor;u:{if(!r.eq_s_b("Y")){break u}r.bra=r.cursor;if(!r.slice_from("i")){return false}break a}r.cursor=r.limit-c;if(!r.eq_s_b("ç")){r.cursor=r.limit-t;break s}r.bra=r.cursor;if(!r.slice_from("c")){return false}}}break e}r.cursor=r.limit-s;if(!I()){break r}}}r.cursor=r.limit-i;var f=r.limit-r.cursor;U();r.cursor=r.limit-f;var l=r.limit-r.cursor;H();r.cursor=r.limit-l;r.cursor=r.limit_backward;var o=r.cursor;d();r.cursor=o;return true};this["stemWord"]=function(e){r.setCurrent(e);this.stem();return r.getCurrent()}}; +Stemmer = FrenchStemmer; diff --git a/_static/minipres.js b/_static/minipres.js new file mode 100644 index 0000000..ad11c87 --- /dev/null +++ b/_static/minipres.js @@ -0,0 +1,223 @@ +// Add goTo method to elements +// http://stackoverflow.com/questions/4801655/how-to-go-to-a-specific-element-on-page +(function($) { + $.fn.goTo = function() { + $('html, body').animate({ + scrollTop: $(this).offset().top //+ 'px' + }, 'fast'); + return this; // for chaining... + } +})(jQuery); + +// NO good way to do this!. Copy a hack from here +// https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript +// https://stackoverflow.com/a/2880929 +var urlParams; +(window.onpopstate = function () { + var match, + pl = /\+/g, // Regex for replacing addition symbol with a space + search = /([^&=]+)=?([^&]*)/g, + decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, + query = window.location.search.substring(1); + urlParams = {}; + while (match = search.exec(query)) + urlParams[decode(match[1])] = decode(match[2]); +})(); + +// Select heading levels +var maxHeading = urlParams['h'] +if (maxHeading === undefined) maxHeading = 2 +var headingLevels = []; +for (h=2 ; h (sections.length-1) ) { + // if we would scroll past bottom, or above top, do nothing + return; + } + + console.log('xxxxxx'); + var targetSection = sections[targetPos]; + console.log(targetSection, typeof(targetSection)); + + // Return targetSection top and height + var secProperties = section_top_and_height(targetSection); + var top = secProperties['top']; + var height = secProperties['height'] + var win_height = window.innerHeight; + //console.info(top, height, win_height) + + var scroll_to = 0; + if (height >= win_height || height == 0) { + scroll_to = top; + } else { + scroll_to = top - (win_height-height)/3.; + } + //console.info(top, height, win_height, scroll_to) + + $('html, body').animate({ + scrollTop: scroll_to //+ 'px' + }, 'fast'); + +} + + +function minipres() { + /* Enable the minipres mode: + - call the hide() function + - set up the scrolling listener + */ + document.addEventListener('keydown', function (event) { + switch(event.which) { + case 37: // left + switch_slide(-1); + event.preventDefault(); + return false; + break; + //case 38: // up + case 39: // right + switch_slide(+1); + event.preventDefault(); + return false; + break; + //case 40: // down + default: + return; // exit this handler for other keys + } + }, true) + + hide() + + // Increase space between sections + //$("div .section").css('margin-bottom', '50%'); + $(sectionSelector).css('margin-top', '50%'); + + // Reduce size/color of other sections + if (hiddenSectionSelector.length > 0) { + var hideNodes = $(hiddenSectionSelector); + console.log(typeof hideNodes, hideNodes); + for (node in hideNodes) { + console.log("a", typeof node, node); + node = hideNodes[node]; // what's right way to iterate values? + console.log("b", typeof node, node); + if (node.parentNode && node.parentNode.className == "section") { + node = node.parentNode; + console.log("c", typeof node, node); + //node.css['transform'] = 'scale(.5)'; + //node.css['transform-origin'] = 'top center'; + $(node).css('color', 'lightgrey'); + //$(node).css('font-size', '20%'); + //$(node).css('visibility', 'collapse'); + //ntahousnatouhasno; + } + } + } +} + +function hide() { + /* Hide all non-essential elements on the page + */ + + // This is for sphinx_rst_theme and readthedocs + $(".wy-nav-side").remove(); + $(".wy-nav-content-wrap").css('margin-left', 0); + $('.rst-versions').remove(); // readthedocs version selector + + // Add other formats here. +} + + +var slideshow = minipres; + +if (window.location.search.match(/[?&](minipres|slideshow|pres)([=&]|$)/) ) { + //minipres() + window.addEventListener("load", minipres); +} else if (window.location.search.match(/[?&](plain)([=&]|$)/) ) { + window.addEventListener("load", hide); +} diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000..d96755f Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css b/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css new file mode 100644 index 0000000..3356631 --- /dev/null +++ b/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css @@ -0,0 +1,2342 @@ +/* Variables */ +:root { + --mystnb-source-bg-color: #f7f7f7; + --mystnb-stdout-bg-color: #fcfcfc; + --mystnb-stderr-bg-color: #fdd; + --mystnb-traceback-bg-color: #fcfcfc; + --mystnb-source-border-color: #ccc; + --mystnb-source-margin-color: green; + --mystnb-stdout-border-color: #f7f7f7; + --mystnb-stderr-border-color: #f7f7f7; + --mystnb-traceback-border-color: #ffd6d6; + --mystnb-hide-prompt-opacity: 70%; + --mystnb-source-border-radius: .4em; + --mystnb-source-border-width: 1px; +} + +/* Whole cell */ +div.container.cell { + padding-left: 0; + margin-bottom: 1em; +} + +/* Removing all background formatting so we can control at the div level */ +.cell_input div.highlight, +.cell_output pre, +.cell_input pre, +.cell_output .output { + border: none; + box-shadow: none; +} + +.cell_output .output pre, +.cell_input pre { + margin: 0px; +} + +/* Input cells */ +div.cell div.cell_input, +div.cell details.above-input>summary { + padding-left: 0em; + padding-right: 0em; + border: var(--mystnb-source-border-width) var(--mystnb-source-border-color) solid; + background-color: var(--mystnb-source-bg-color); + border-left-color: var(--mystnb-source-margin-color); + border-left-width: medium; + border-radius: var(--mystnb-source-border-radius); +} + +div.cell_input>div, +div.cell_output div.output>div.highlight { + margin: 0em !important; + border: none !important; +} + +/* All cell outputs */ +.cell_output { + padding-left: 1em; + padding-right: 0em; + margin-top: 1em; +} + +/* Text outputs from cells */ +.cell_output .output.text_plain, +.cell_output .output.traceback, +.cell_output .output.stream, +.cell_output .output.stderr { + margin-top: 1em; + margin-bottom: 0em; + box-shadow: none; +} + +.cell_output .output.text_plain, +.cell_output .output.stream { + background: var(--mystnb-stdout-bg-color); + border: 1px solid var(--mystnb-stdout-border-color); +} + +.cell_output .output.stderr { + background: var(--mystnb-stderr-bg-color); + border: 1px solid var(--mystnb-stderr-border-color); +} + +.cell_output .output.traceback { + background: var(--mystnb-traceback-bg-color); + border: 1px solid var(--mystnb-traceback-border-color); +} + +/* Collapsible cell content */ +div.cell details.above-input div.cell_input { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-top: var(--mystnb-source-border-width) var(--mystnb-source-border-color) dashed; +} + +div.cell div.cell_input.above-output-prompt { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +div.cell details.above-input>summary { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom: var(--mystnb-source-border-width) var(--mystnb-source-border-color) dashed; + padding-left: 1em; + margin-bottom: 0; +} + +div.cell details.above-output>summary { + background-color: var(--mystnb-source-bg-color); + padding-left: 1em; + padding-right: 0em; + border: var(--mystnb-source-border-width) var(--mystnb-source-border-color) solid; + border-radius: var(--mystnb-source-border-radius); + border-left-color: var(--mystnb-source-margin-color); + border-left-width: medium; +} + +div.cell details.below-input>summary { + background-color: var(--mystnb-source-bg-color); + padding-left: 1em; + padding-right: 0em; + border: var(--mystnb-source-border-width) var(--mystnb-source-border-color) solid; + border-top: none; + border-bottom-left-radius: var(--mystnb-source-border-radius); + border-bottom-right-radius: var(--mystnb-source-border-radius); + border-left-color: var(--mystnb-source-margin-color); + border-left-width: medium; +} + +div.cell details.hide>summary>span { + opacity: var(--mystnb-hide-prompt-opacity); +} + +div.cell details.hide[open]>summary>span.collapsed { + display: none; +} + +div.cell details.hide:not([open])>summary>span.expanded { + display: none; +} + +@keyframes collapsed-fade-in { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} +div.cell details.hide[open]>summary~* { + -moz-animation: collapsed-fade-in 0.3s ease-in-out; + -webkit-animation: collapsed-fade-in 0.3s ease-in-out; + animation: collapsed-fade-in 0.3s ease-in-out; +} + +/* Math align to the left */ +.cell_output .MathJax_Display { + text-align: left !important; +} + +/* Pandas tables. Pulled from the Jupyter / nbsphinx CSS */ +div.cell_output table { + border: none; + border-collapse: collapse; + border-spacing: 0; + color: black; + font-size: 1em; + table-layout: fixed; +} + +div.cell_output thead { + border-bottom: 1px solid black; + vertical-align: bottom; +} + +div.cell_output tr, +div.cell_output th, +div.cell_output td { + text-align: right; + vertical-align: middle; + padding: 0.5em 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; +} + +div.cell_output th { + font-weight: bold; +} + +div.cell_output tbody tr:nth-child(odd) { + background: #f5f5f5; +} + +div.cell_output tbody tr:hover { + background: rgba(66, 165, 245, 0.2); +} + +/** source code line numbers **/ +span.linenos { + opacity: 0.5; +} + +/* Inline text from `paste` operation */ + +span.pasted-text { + font-weight: bold; +} + +span.pasted-inline img { + max-height: 2em; +} + +tbody span.pasted-inline img { + max-height: none; +} + +/* Font colors for translated ANSI escape sequences +Color values are copied from Jupyter Notebook +https://github.com/jupyter/notebook/blob/52581f8eda9b319eb0390ac77fe5903c38f81e3e/notebook/static/notebook/less/ansicolors.less#L14-L21 +Background colors from +https://nbsphinx.readthedocs.io/en/latest/code-cells.html#ANSI-Colors +*/ +div.highlight .-Color-Bold { + font-weight: bold; +} + +div.highlight .-Color[class*=-Black] { + color: #3E424D +} + +div.highlight .-Color[class*=-Red] { + color: #E75C58 +} + +div.highlight .-Color[class*=-Green] { + color: #00A250 +} + +div.highlight .-Color[class*=-Yellow] { + color: #DDB62B +} + +div.highlight .-Color[class*=-Blue] { + color: #208FFB +} + +div.highlight .-Color[class*=-Magenta] { + color: #D160C4 +} + +div.highlight .-Color[class*=-Cyan] { + color: #60C6C8 +} + +div.highlight .-Color[class*=-White] { + color: #C5C1B4 +} + +div.highlight .-Color[class*=-BGBlack] { + background-color: #3E424D +} + +div.highlight .-Color[class*=-BGRed] { + background-color: #E75C58 +} + +div.highlight .-Color[class*=-BGGreen] { + background-color: #00A250 +} + +div.highlight .-Color[class*=-BGYellow] { + background-color: #DDB62B +} + +div.highlight .-Color[class*=-BGBlue] { + background-color: #208FFB +} + +div.highlight .-Color[class*=-BGMagenta] { + background-color: #D160C4 +} + +div.highlight .-Color[class*=-BGCyan] { + background-color: #60C6C8 +} + +div.highlight .-Color[class*=-BGWhite] { + background-color: #C5C1B4 +} + +/* Font colors for 8-bit ANSI */ + +div.highlight .-Color[class*=-C0] { + color: #000000 +} + +div.highlight .-Color[class*=-BGC0] { + background-color: #000000 +} + +div.highlight .-Color[class*=-C1] { + color: #800000 +} + +div.highlight .-Color[class*=-BGC1] { + background-color: #800000 +} + +div.highlight .-Color[class*=-C2] { + color: #008000 +} + +div.highlight .-Color[class*=-BGC2] { + background-color: #008000 +} + +div.highlight .-Color[class*=-C3] { + color: #808000 +} + +div.highlight .-Color[class*=-BGC3] { + background-color: #808000 +} + +div.highlight .-Color[class*=-C4] { + color: #000080 +} + +div.highlight .-Color[class*=-BGC4] { + background-color: #000080 +} + +div.highlight .-Color[class*=-C5] { + color: #800080 +} + +div.highlight .-Color[class*=-BGC5] { + background-color: #800080 +} + +div.highlight .-Color[class*=-C6] { + color: #008080 +} + +div.highlight .-Color[class*=-BGC6] { + background-color: #008080 +} + +div.highlight .-Color[class*=-C7] { + color: #C0C0C0 +} + +div.highlight .-Color[class*=-BGC7] { + background-color: #C0C0C0 +} + +div.highlight .-Color[class*=-C8] { + color: #808080 +} + +div.highlight .-Color[class*=-BGC8] { + background-color: #808080 +} + +div.highlight .-Color[class*=-C9] { + color: #FF0000 +} + +div.highlight .-Color[class*=-BGC9] { + background-color: #FF0000 +} + +div.highlight .-Color[class*=-C10] { + color: #00FF00 +} + +div.highlight .-Color[class*=-BGC10] { + background-color: #00FF00 +} + +div.highlight .-Color[class*=-C11] { + color: #FFFF00 +} + +div.highlight .-Color[class*=-BGC11] { + background-color: #FFFF00 +} + +div.highlight .-Color[class*=-C12] { + color: #0000FF +} + +div.highlight .-Color[class*=-BGC12] { + background-color: #0000FF +} + +div.highlight .-Color[class*=-C13] { + color: #FF00FF +} + +div.highlight .-Color[class*=-BGC13] { + background-color: #FF00FF +} + +div.highlight .-Color[class*=-C14] { + color: #00FFFF +} + +div.highlight .-Color[class*=-BGC14] { + background-color: #00FFFF +} + +div.highlight .-Color[class*=-C15] { + color: #FFFFFF +} + +div.highlight .-Color[class*=-BGC15] { + background-color: #FFFFFF +} + +div.highlight .-Color[class*=-C16] { + color: #000000 +} + +div.highlight .-Color[class*=-BGC16] { + background-color: #000000 +} + +div.highlight .-Color[class*=-C17] { + color: #00005F +} + +div.highlight .-Color[class*=-BGC17] { + background-color: #00005F +} + +div.highlight .-Color[class*=-C18] { + color: #000087 +} + +div.highlight .-Color[class*=-BGC18] { + background-color: #000087 +} + +div.highlight .-Color[class*=-C19] { + color: #0000AF +} + +div.highlight .-Color[class*=-BGC19] { + background-color: #0000AF +} + +div.highlight .-Color[class*=-C20] { + color: #0000D7 +} + +div.highlight .-Color[class*=-BGC20] { + background-color: #0000D7 +} + +div.highlight .-Color[class*=-C21] { + color: #0000FF +} + +div.highlight .-Color[class*=-BGC21] { + background-color: #0000FF +} + +div.highlight .-Color[class*=-C22] { + color: #005F00 +} + +div.highlight .-Color[class*=-BGC22] { + background-color: #005F00 +} + +div.highlight .-Color[class*=-C23] { + color: #005F5F +} + +div.highlight .-Color[class*=-BGC23] { + background-color: #005F5F +} + +div.highlight .-Color[class*=-C24] { + color: #005F87 +} + +div.highlight .-Color[class*=-BGC24] { + background-color: #005F87 +} + +div.highlight .-Color[class*=-C25] { + color: #005FAF +} + +div.highlight .-Color[class*=-BGC25] { + background-color: #005FAF +} + +div.highlight .-Color[class*=-C26] { + color: #005FD7 +} + +div.highlight .-Color[class*=-BGC26] { + background-color: #005FD7 +} + +div.highlight .-Color[class*=-C27] { + color: #005FFF +} + +div.highlight .-Color[class*=-BGC27] { + background-color: #005FFF +} + +div.highlight .-Color[class*=-C28] { + color: #008700 +} + +div.highlight .-Color[class*=-BGC28] { + background-color: #008700 +} + +div.highlight .-Color[class*=-C29] { + color: #00875F +} + +div.highlight .-Color[class*=-BGC29] { + background-color: #00875F +} + +div.highlight .-Color[class*=-C30] { + color: #008787 +} + +div.highlight .-Color[class*=-BGC30] { + background-color: #008787 +} + +div.highlight .-Color[class*=-C31] { + color: #0087AF +} + +div.highlight .-Color[class*=-BGC31] { + background-color: #0087AF +} + +div.highlight .-Color[class*=-C32] { + color: #0087D7 +} + +div.highlight .-Color[class*=-BGC32] { + background-color: #0087D7 +} + +div.highlight .-Color[class*=-C33] { + color: #0087FF +} + +div.highlight .-Color[class*=-BGC33] { + background-color: #0087FF +} + +div.highlight .-Color[class*=-C34] { + color: #00AF00 +} + +div.highlight .-Color[class*=-BGC34] { + background-color: #00AF00 +} + +div.highlight .-Color[class*=-C35] { + color: #00AF5F +} + +div.highlight .-Color[class*=-BGC35] { + background-color: #00AF5F +} + +div.highlight .-Color[class*=-C36] { + color: #00AF87 +} + +div.highlight .-Color[class*=-BGC36] { + background-color: #00AF87 +} + +div.highlight .-Color[class*=-C37] { + color: #00AFAF +} + +div.highlight .-Color[class*=-BGC37] { + background-color: #00AFAF +} + +div.highlight .-Color[class*=-C38] { + color: #00AFD7 +} + +div.highlight .-Color[class*=-BGC38] { + background-color: #00AFD7 +} + +div.highlight .-Color[class*=-C39] { + color: #00AFFF +} + +div.highlight .-Color[class*=-BGC39] { + background-color: #00AFFF +} + +div.highlight .-Color[class*=-C40] { + color: #00D700 +} + +div.highlight .-Color[class*=-BGC40] { + background-color: #00D700 +} + +div.highlight .-Color[class*=-C41] { + color: #00D75F +} + +div.highlight .-Color[class*=-BGC41] { + background-color: #00D75F +} + +div.highlight .-Color[class*=-C42] { + color: #00D787 +} + +div.highlight .-Color[class*=-BGC42] { + background-color: #00D787 +} + +div.highlight .-Color[class*=-C43] { + color: #00D7AF +} + +div.highlight .-Color[class*=-BGC43] { + background-color: #00D7AF +} + +div.highlight .-Color[class*=-C44] { + color: #00D7D7 +} + +div.highlight .-Color[class*=-BGC44] { + background-color: #00D7D7 +} + +div.highlight .-Color[class*=-C45] { + color: #00D7FF +} + +div.highlight .-Color[class*=-BGC45] { + background-color: #00D7FF +} + +div.highlight .-Color[class*=-C46] { + color: #00FF00 +} + +div.highlight .-Color[class*=-BGC46] { + background-color: #00FF00 +} + +div.highlight .-Color[class*=-C47] { + color: #00FF5F +} + +div.highlight .-Color[class*=-BGC47] { + background-color: #00FF5F +} + +div.highlight .-Color[class*=-C48] { + color: #00FF87 +} + +div.highlight .-Color[class*=-BGC48] { + background-color: #00FF87 +} + +div.highlight .-Color[class*=-C49] { + color: #00FFAF +} + +div.highlight .-Color[class*=-BGC49] { + background-color: #00FFAF +} + +div.highlight .-Color[class*=-C50] { + color: #00FFD7 +} + +div.highlight .-Color[class*=-BGC50] { + background-color: #00FFD7 +} + +div.highlight .-Color[class*=-C51] { + color: #00FFFF +} + +div.highlight .-Color[class*=-BGC51] { + background-color: #00FFFF +} + +div.highlight .-Color[class*=-C52] { + color: #5F0000 +} + +div.highlight .-Color[class*=-BGC52] { + background-color: #5F0000 +} + +div.highlight .-Color[class*=-C53] { + color: #5F005F +} + +div.highlight .-Color[class*=-BGC53] { + background-color: #5F005F +} + +div.highlight .-Color[class*=-C54] { + color: #5F0087 +} + +div.highlight .-Color[class*=-BGC54] { + background-color: #5F0087 +} + +div.highlight .-Color[class*=-C55] { + color: #5F00AF +} + +div.highlight .-Color[class*=-BGC55] { + background-color: #5F00AF +} + +div.highlight .-Color[class*=-C56] { + color: #5F00D7 +} + +div.highlight .-Color[class*=-BGC56] { + background-color: #5F00D7 +} + +div.highlight .-Color[class*=-C57] { + color: #5F00FF +} + +div.highlight .-Color[class*=-BGC57] { + background-color: #5F00FF +} + +div.highlight .-Color[class*=-C58] { + color: #5F5F00 +} + +div.highlight .-Color[class*=-BGC58] { + background-color: #5F5F00 +} + +div.highlight .-Color[class*=-C59] { + color: #5F5F5F +} + +div.highlight .-Color[class*=-BGC59] { + background-color: #5F5F5F +} + +div.highlight .-Color[class*=-C60] { + color: #5F5F87 +} + +div.highlight .-Color[class*=-BGC60] { + background-color: #5F5F87 +} + +div.highlight .-Color[class*=-C61] { + color: #5F5FAF +} + +div.highlight .-Color[class*=-BGC61] { + background-color: #5F5FAF +} + +div.highlight .-Color[class*=-C62] { + color: #5F5FD7 +} + +div.highlight .-Color[class*=-BGC62] { + background-color: #5F5FD7 +} + +div.highlight .-Color[class*=-C63] { + color: #5F5FFF +} + +div.highlight .-Color[class*=-BGC63] { + background-color: #5F5FFF +} + +div.highlight .-Color[class*=-C64] { + color: #5F8700 +} + +div.highlight .-Color[class*=-BGC64] { + background-color: #5F8700 +} + +div.highlight .-Color[class*=-C65] { + color: #5F875F +} + +div.highlight .-Color[class*=-BGC65] { + background-color: #5F875F +} + +div.highlight .-Color[class*=-C66] { + color: #5F8787 +} + +div.highlight .-Color[class*=-BGC66] { + background-color: #5F8787 +} + +div.highlight .-Color[class*=-C67] { + color: #5F87AF +} + +div.highlight .-Color[class*=-BGC67] { + background-color: #5F87AF +} + +div.highlight .-Color[class*=-C68] { + color: #5F87D7 +} + +div.highlight .-Color[class*=-BGC68] { + background-color: #5F87D7 +} + +div.highlight .-Color[class*=-C69] { + color: #5F87FF +} + +div.highlight .-Color[class*=-BGC69] { + background-color: #5F87FF +} + +div.highlight .-Color[class*=-C70] { + color: #5FAF00 +} + +div.highlight .-Color[class*=-BGC70] { + background-color: #5FAF00 +} + +div.highlight .-Color[class*=-C71] { + color: #5FAF5F +} + +div.highlight .-Color[class*=-BGC71] { + background-color: #5FAF5F +} + +div.highlight .-Color[class*=-C72] { + color: #5FAF87 +} + +div.highlight .-Color[class*=-BGC72] { + background-color: #5FAF87 +} + +div.highlight .-Color[class*=-C73] { + color: #5FAFAF +} + +div.highlight .-Color[class*=-BGC73] { + background-color: #5FAFAF +} + +div.highlight .-Color[class*=-C74] { + color: #5FAFD7 +} + +div.highlight .-Color[class*=-BGC74] { + background-color: #5FAFD7 +} + +div.highlight .-Color[class*=-C75] { + color: #5FAFFF +} + +div.highlight .-Color[class*=-BGC75] { + background-color: #5FAFFF +} + +div.highlight .-Color[class*=-C76] { + color: #5FD700 +} + +div.highlight .-Color[class*=-BGC76] { + background-color: #5FD700 +} + +div.highlight .-Color[class*=-C77] { + color: #5FD75F +} + +div.highlight .-Color[class*=-BGC77] { + background-color: #5FD75F +} + +div.highlight .-Color[class*=-C78] { + color: #5FD787 +} + +div.highlight .-Color[class*=-BGC78] { + background-color: #5FD787 +} + +div.highlight .-Color[class*=-C79] { + color: #5FD7AF +} + +div.highlight .-Color[class*=-BGC79] { + background-color: #5FD7AF +} + +div.highlight .-Color[class*=-C80] { + color: #5FD7D7 +} + +div.highlight .-Color[class*=-BGC80] { + background-color: #5FD7D7 +} + +div.highlight .-Color[class*=-C81] { + color: #5FD7FF +} + +div.highlight .-Color[class*=-BGC81] { + background-color: #5FD7FF +} + +div.highlight .-Color[class*=-C82] { + color: #5FFF00 +} + +div.highlight .-Color[class*=-BGC82] { + background-color: #5FFF00 +} + +div.highlight .-Color[class*=-C83] { + color: #5FFF5F +} + +div.highlight .-Color[class*=-BGC83] { + background-color: #5FFF5F +} + +div.highlight .-Color[class*=-C84] { + color: #5FFF87 +} + +div.highlight .-Color[class*=-BGC84] { + background-color: #5FFF87 +} + +div.highlight .-Color[class*=-C85] { + color: #5FFFAF +} + +div.highlight .-Color[class*=-BGC85] { + background-color: #5FFFAF +} + +div.highlight .-Color[class*=-C86] { + color: #5FFFD7 +} + +div.highlight .-Color[class*=-BGC86] { + background-color: #5FFFD7 +} + +div.highlight .-Color[class*=-C87] { + color: #5FFFFF +} + +div.highlight .-Color[class*=-BGC87] { + background-color: #5FFFFF +} + +div.highlight .-Color[class*=-C88] { + color: #870000 +} + +div.highlight .-Color[class*=-BGC88] { + background-color: #870000 +} + +div.highlight .-Color[class*=-C89] { + color: #87005F +} + +div.highlight .-Color[class*=-BGC89] { + background-color: #87005F +} + +div.highlight .-Color[class*=-C90] { + color: #870087 +} + +div.highlight .-Color[class*=-BGC90] { + background-color: #870087 +} + +div.highlight .-Color[class*=-C91] { + color: #8700AF +} + +div.highlight .-Color[class*=-BGC91] { + background-color: #8700AF +} + +div.highlight .-Color[class*=-C92] { + color: #8700D7 +} + +div.highlight .-Color[class*=-BGC92] { + background-color: #8700D7 +} + +div.highlight .-Color[class*=-C93] { + color: #8700FF +} + +div.highlight .-Color[class*=-BGC93] { + background-color: #8700FF +} + +div.highlight .-Color[class*=-C94] { + color: #875F00 +} + +div.highlight .-Color[class*=-BGC94] { + background-color: #875F00 +} + +div.highlight .-Color[class*=-C95] { + color: #875F5F +} + +div.highlight .-Color[class*=-BGC95] { + background-color: #875F5F +} + +div.highlight .-Color[class*=-C96] { + color: #875F87 +} + +div.highlight .-Color[class*=-BGC96] { + background-color: #875F87 +} + +div.highlight .-Color[class*=-C97] { + color: #875FAF +} + +div.highlight .-Color[class*=-BGC97] { + background-color: #875FAF +} + +div.highlight .-Color[class*=-C98] { + color: #875FD7 +} + +div.highlight .-Color[class*=-BGC98] { + background-color: #875FD7 +} + +div.highlight .-Color[class*=-C99] { + color: #875FFF +} + +div.highlight .-Color[class*=-BGC99] { + background-color: #875FFF +} + +div.highlight .-Color[class*=-C100] { + color: #878700 +} + +div.highlight .-Color[class*=-BGC100] { + background-color: #878700 +} + +div.highlight .-Color[class*=-C101] { + color: #87875F +} + +div.highlight .-Color[class*=-BGC101] { + background-color: #87875F +} + +div.highlight .-Color[class*=-C102] { + color: #878787 +} + +div.highlight .-Color[class*=-BGC102] { + background-color: #878787 +} + +div.highlight .-Color[class*=-C103] { + color: #8787AF +} + +div.highlight .-Color[class*=-BGC103] { + background-color: #8787AF +} + +div.highlight .-Color[class*=-C104] { + color: #8787D7 +} + +div.highlight .-Color[class*=-BGC104] { + background-color: #8787D7 +} + +div.highlight .-Color[class*=-C105] { + color: #8787FF +} + +div.highlight .-Color[class*=-BGC105] { + background-color: #8787FF +} + +div.highlight .-Color[class*=-C106] { + color: #87AF00 +} + +div.highlight .-Color[class*=-BGC106] { + background-color: #87AF00 +} + +div.highlight .-Color[class*=-C107] { + color: #87AF5F +} + +div.highlight .-Color[class*=-BGC107] { + background-color: #87AF5F +} + +div.highlight .-Color[class*=-C108] { + color: #87AF87 +} + +div.highlight .-Color[class*=-BGC108] { + background-color: #87AF87 +} + +div.highlight .-Color[class*=-C109] { + color: #87AFAF +} + +div.highlight .-Color[class*=-BGC109] { + background-color: #87AFAF +} + +div.highlight .-Color[class*=-C110] { + color: #87AFD7 +} + +div.highlight .-Color[class*=-BGC110] { + background-color: #87AFD7 +} + +div.highlight .-Color[class*=-C111] { + color: #87AFFF +} + +div.highlight .-Color[class*=-BGC111] { + background-color: #87AFFF +} + +div.highlight .-Color[class*=-C112] { + color: #87D700 +} + +div.highlight .-Color[class*=-BGC112] { + background-color: #87D700 +} + +div.highlight .-Color[class*=-C113] { + color: #87D75F +} + +div.highlight .-Color[class*=-BGC113] { + background-color: #87D75F +} + +div.highlight .-Color[class*=-C114] { + color: #87D787 +} + +div.highlight .-Color[class*=-BGC114] { + background-color: #87D787 +} + +div.highlight .-Color[class*=-C115] { + color: #87D7AF +} + +div.highlight .-Color[class*=-BGC115] { + background-color: #87D7AF +} + +div.highlight .-Color[class*=-C116] { + color: #87D7D7 +} + +div.highlight .-Color[class*=-BGC116] { + background-color: #87D7D7 +} + +div.highlight .-Color[class*=-C117] { + color: #87D7FF +} + +div.highlight .-Color[class*=-BGC117] { + background-color: #87D7FF +} + +div.highlight .-Color[class*=-C118] { + color: #87FF00 +} + +div.highlight .-Color[class*=-BGC118] { + background-color: #87FF00 +} + +div.highlight .-Color[class*=-C119] { + color: #87FF5F +} + +div.highlight .-Color[class*=-BGC119] { + background-color: #87FF5F +} + +div.highlight .-Color[class*=-C120] { + color: #87FF87 +} + +div.highlight .-Color[class*=-BGC120] { + background-color: #87FF87 +} + +div.highlight .-Color[class*=-C121] { + color: #87FFAF +} + +div.highlight .-Color[class*=-BGC121] { + background-color: #87FFAF +} + +div.highlight .-Color[class*=-C122] { + color: #87FFD7 +} + +div.highlight .-Color[class*=-BGC122] { + background-color: #87FFD7 +} + +div.highlight .-Color[class*=-C123] { + color: #87FFFF +} + +div.highlight .-Color[class*=-BGC123] { + background-color: #87FFFF +} + +div.highlight .-Color[class*=-C124] { + color: #AF0000 +} + +div.highlight .-Color[class*=-BGC124] { + background-color: #AF0000 +} + +div.highlight .-Color[class*=-C125] { + color: #AF005F +} + +div.highlight .-Color[class*=-BGC125] { + background-color: #AF005F +} + +div.highlight .-Color[class*=-C126] { + color: #AF0087 +} + +div.highlight .-Color[class*=-BGC126] { + background-color: #AF0087 +} + +div.highlight .-Color[class*=-C127] { + color: #AF00AF +} + +div.highlight .-Color[class*=-BGC127] { + background-color: #AF00AF +} + +div.highlight .-Color[class*=-C128] { + color: #AF00D7 +} + +div.highlight .-Color[class*=-BGC128] { + background-color: #AF00D7 +} + +div.highlight .-Color[class*=-C129] { + color: #AF00FF +} + +div.highlight .-Color[class*=-BGC129] { + background-color: #AF00FF +} + +div.highlight .-Color[class*=-C130] { + color: #AF5F00 +} + +div.highlight .-Color[class*=-BGC130] { + background-color: #AF5F00 +} + +div.highlight .-Color[class*=-C131] { + color: #AF5F5F +} + +div.highlight .-Color[class*=-BGC131] { + background-color: #AF5F5F +} + +div.highlight .-Color[class*=-C132] { + color: #AF5F87 +} + +div.highlight .-Color[class*=-BGC132] { + background-color: #AF5F87 +} + +div.highlight .-Color[class*=-C133] { + color: #AF5FAF +} + +div.highlight .-Color[class*=-BGC133] { + background-color: #AF5FAF +} + +div.highlight .-Color[class*=-C134] { + color: #AF5FD7 +} + +div.highlight .-Color[class*=-BGC134] { + background-color: #AF5FD7 +} + +div.highlight .-Color[class*=-C135] { + color: #AF5FFF +} + +div.highlight .-Color[class*=-BGC135] { + background-color: #AF5FFF +} + +div.highlight .-Color[class*=-C136] { + color: #AF8700 +} + +div.highlight .-Color[class*=-BGC136] { + background-color: #AF8700 +} + +div.highlight .-Color[class*=-C137] { + color: #AF875F +} + +div.highlight .-Color[class*=-BGC137] { + background-color: #AF875F +} + +div.highlight .-Color[class*=-C138] { + color: #AF8787 +} + +div.highlight .-Color[class*=-BGC138] { + background-color: #AF8787 +} + +div.highlight .-Color[class*=-C139] { + color: #AF87AF +} + +div.highlight .-Color[class*=-BGC139] { + background-color: #AF87AF +} + +div.highlight .-Color[class*=-C140] { + color: #AF87D7 +} + +div.highlight .-Color[class*=-BGC140] { + background-color: #AF87D7 +} + +div.highlight .-Color[class*=-C141] { + color: #AF87FF +} + +div.highlight .-Color[class*=-BGC141] { + background-color: #AF87FF +} + +div.highlight .-Color[class*=-C142] { + color: #AFAF00 +} + +div.highlight .-Color[class*=-BGC142] { + background-color: #AFAF00 +} + +div.highlight .-Color[class*=-C143] { + color: #AFAF5F +} + +div.highlight .-Color[class*=-BGC143] { + background-color: #AFAF5F +} + +div.highlight .-Color[class*=-C144] { + color: #AFAF87 +} + +div.highlight .-Color[class*=-BGC144] { + background-color: #AFAF87 +} + +div.highlight .-Color[class*=-C145] { + color: #AFAFAF +} + +div.highlight .-Color[class*=-BGC145] { + background-color: #AFAFAF +} + +div.highlight .-Color[class*=-C146] { + color: #AFAFD7 +} + +div.highlight .-Color[class*=-BGC146] { + background-color: #AFAFD7 +} + +div.highlight .-Color[class*=-C147] { + color: #AFAFFF +} + +div.highlight .-Color[class*=-BGC147] { + background-color: #AFAFFF +} + +div.highlight .-Color[class*=-C148] { + color: #AFD700 +} + +div.highlight .-Color[class*=-BGC148] { + background-color: #AFD700 +} + +div.highlight .-Color[class*=-C149] { + color: #AFD75F +} + +div.highlight .-Color[class*=-BGC149] { + background-color: #AFD75F +} + +div.highlight .-Color[class*=-C150] { + color: #AFD787 +} + +div.highlight .-Color[class*=-BGC150] { + background-color: #AFD787 +} + +div.highlight .-Color[class*=-C151] { + color: #AFD7AF +} + +div.highlight .-Color[class*=-BGC151] { + background-color: #AFD7AF +} + +div.highlight .-Color[class*=-C152] { + color: #AFD7D7 +} + +div.highlight .-Color[class*=-BGC152] { + background-color: #AFD7D7 +} + +div.highlight .-Color[class*=-C153] { + color: #AFD7FF +} + +div.highlight .-Color[class*=-BGC153] { + background-color: #AFD7FF +} + +div.highlight .-Color[class*=-C154] { + color: #AFFF00 +} + +div.highlight .-Color[class*=-BGC154] { + background-color: #AFFF00 +} + +div.highlight .-Color[class*=-C155] { + color: #AFFF5F +} + +div.highlight .-Color[class*=-BGC155] { + background-color: #AFFF5F +} + +div.highlight .-Color[class*=-C156] { + color: #AFFF87 +} + +div.highlight .-Color[class*=-BGC156] { + background-color: #AFFF87 +} + +div.highlight .-Color[class*=-C157] { + color: #AFFFAF +} + +div.highlight .-Color[class*=-BGC157] { + background-color: #AFFFAF +} + +div.highlight .-Color[class*=-C158] { + color: #AFFFD7 +} + +div.highlight .-Color[class*=-BGC158] { + background-color: #AFFFD7 +} + +div.highlight .-Color[class*=-C159] { + color: #AFFFFF +} + +div.highlight .-Color[class*=-BGC159] { + background-color: #AFFFFF +} + +div.highlight .-Color[class*=-C160] { + color: #D70000 +} + +div.highlight .-Color[class*=-BGC160] { + background-color: #D70000 +} + +div.highlight .-Color[class*=-C161] { + color: #D7005F +} + +div.highlight .-Color[class*=-BGC161] { + background-color: #D7005F +} + +div.highlight .-Color[class*=-C162] { + color: #D70087 +} + +div.highlight .-Color[class*=-BGC162] { + background-color: #D70087 +} + +div.highlight .-Color[class*=-C163] { + color: #D700AF +} + +div.highlight .-Color[class*=-BGC163] { + background-color: #D700AF +} + +div.highlight .-Color[class*=-C164] { + color: #D700D7 +} + +div.highlight .-Color[class*=-BGC164] { + background-color: #D700D7 +} + +div.highlight .-Color[class*=-C165] { + color: #D700FF +} + +div.highlight .-Color[class*=-BGC165] { + background-color: #D700FF +} + +div.highlight .-Color[class*=-C166] { + color: #D75F00 +} + +div.highlight .-Color[class*=-BGC166] { + background-color: #D75F00 +} + +div.highlight .-Color[class*=-C167] { + color: #D75F5F +} + +div.highlight .-Color[class*=-BGC167] { + background-color: #D75F5F +} + +div.highlight .-Color[class*=-C168] { + color: #D75F87 +} + +div.highlight .-Color[class*=-BGC168] { + background-color: #D75F87 +} + +div.highlight .-Color[class*=-C169] { + color: #D75FAF +} + +div.highlight .-Color[class*=-BGC169] { + background-color: #D75FAF +} + +div.highlight .-Color[class*=-C170] { + color: #D75FD7 +} + +div.highlight .-Color[class*=-BGC170] { + background-color: #D75FD7 +} + +div.highlight .-Color[class*=-C171] { + color: #D75FFF +} + +div.highlight .-Color[class*=-BGC171] { + background-color: #D75FFF +} + +div.highlight .-Color[class*=-C172] { + color: #D78700 +} + +div.highlight .-Color[class*=-BGC172] { + background-color: #D78700 +} + +div.highlight .-Color[class*=-C173] { + color: #D7875F +} + +div.highlight .-Color[class*=-BGC173] { + background-color: #D7875F +} + +div.highlight .-Color[class*=-C174] { + color: #D78787 +} + +div.highlight .-Color[class*=-BGC174] { + background-color: #D78787 +} + +div.highlight .-Color[class*=-C175] { + color: #D787AF +} + +div.highlight .-Color[class*=-BGC175] { + background-color: #D787AF +} + +div.highlight .-Color[class*=-C176] { + color: #D787D7 +} + +div.highlight .-Color[class*=-BGC176] { + background-color: #D787D7 +} + +div.highlight .-Color[class*=-C177] { + color: #D787FF +} + +div.highlight .-Color[class*=-BGC177] { + background-color: #D787FF +} + +div.highlight .-Color[class*=-C178] { + color: #D7AF00 +} + +div.highlight .-Color[class*=-BGC178] { + background-color: #D7AF00 +} + +div.highlight .-Color[class*=-C179] { + color: #D7AF5F +} + +div.highlight .-Color[class*=-BGC179] { + background-color: #D7AF5F +} + +div.highlight .-Color[class*=-C180] { + color: #D7AF87 +} + +div.highlight .-Color[class*=-BGC180] { + background-color: #D7AF87 +} + +div.highlight .-Color[class*=-C181] { + color: #D7AFAF +} + +div.highlight .-Color[class*=-BGC181] { + background-color: #D7AFAF +} + +div.highlight .-Color[class*=-C182] { + color: #D7AFD7 +} + +div.highlight .-Color[class*=-BGC182] { + background-color: #D7AFD7 +} + +div.highlight .-Color[class*=-C183] { + color: #D7AFFF +} + +div.highlight .-Color[class*=-BGC183] { + background-color: #D7AFFF +} + +div.highlight .-Color[class*=-C184] { + color: #D7D700 +} + +div.highlight .-Color[class*=-BGC184] { + background-color: #D7D700 +} + +div.highlight .-Color[class*=-C185] { + color: #D7D75F +} + +div.highlight .-Color[class*=-BGC185] { + background-color: #D7D75F +} + +div.highlight .-Color[class*=-C186] { + color: #D7D787 +} + +div.highlight .-Color[class*=-BGC186] { + background-color: #D7D787 +} + +div.highlight .-Color[class*=-C187] { + color: #D7D7AF +} + +div.highlight .-Color[class*=-BGC187] { + background-color: #D7D7AF +} + +div.highlight .-Color[class*=-C188] { + color: #D7D7D7 +} + +div.highlight .-Color[class*=-BGC188] { + background-color: #D7D7D7 +} + +div.highlight .-Color[class*=-C189] { + color: #D7D7FF +} + +div.highlight .-Color[class*=-BGC189] { + background-color: #D7D7FF +} + +div.highlight .-Color[class*=-C190] { + color: #D7FF00 +} + +div.highlight .-Color[class*=-BGC190] { + background-color: #D7FF00 +} + +div.highlight .-Color[class*=-C191] { + color: #D7FF5F +} + +div.highlight .-Color[class*=-BGC191] { + background-color: #D7FF5F +} + +div.highlight .-Color[class*=-C192] { + color: #D7FF87 +} + +div.highlight .-Color[class*=-BGC192] { + background-color: #D7FF87 +} + +div.highlight .-Color[class*=-C193] { + color: #D7FFAF +} + +div.highlight .-Color[class*=-BGC193] { + background-color: #D7FFAF +} + +div.highlight .-Color[class*=-C194] { + color: #D7FFD7 +} + +div.highlight .-Color[class*=-BGC194] { + background-color: #D7FFD7 +} + +div.highlight .-Color[class*=-C195] { + color: #D7FFFF +} + +div.highlight .-Color[class*=-BGC195] { + background-color: #D7FFFF +} + +div.highlight .-Color[class*=-C196] { + color: #FF0000 +} + +div.highlight .-Color[class*=-BGC196] { + background-color: #FF0000 +} + +div.highlight .-Color[class*=-C197] { + color: #FF005F +} + +div.highlight .-Color[class*=-BGC197] { + background-color: #FF005F +} + +div.highlight .-Color[class*=-C198] { + color: #FF0087 +} + +div.highlight .-Color[class*=-BGC198] { + background-color: #FF0087 +} + +div.highlight .-Color[class*=-C199] { + color: #FF00AF +} + +div.highlight .-Color[class*=-BGC199] { + background-color: #FF00AF +} + +div.highlight .-Color[class*=-C200] { + color: #FF00D7 +} + +div.highlight .-Color[class*=-BGC200] { + background-color: #FF00D7 +} + +div.highlight .-Color[class*=-C201] { + color: #FF00FF +} + +div.highlight .-Color[class*=-BGC201] { + background-color: #FF00FF +} + +div.highlight .-Color[class*=-C202] { + color: #FF5F00 +} + +div.highlight .-Color[class*=-BGC202] { + background-color: #FF5F00 +} + +div.highlight .-Color[class*=-C203] { + color: #FF5F5F +} + +div.highlight .-Color[class*=-BGC203] { + background-color: #FF5F5F +} + +div.highlight .-Color[class*=-C204] { + color: #FF5F87 +} + +div.highlight .-Color[class*=-BGC204] { + background-color: #FF5F87 +} + +div.highlight .-Color[class*=-C205] { + color: #FF5FAF +} + +div.highlight .-Color[class*=-BGC205] { + background-color: #FF5FAF +} + +div.highlight .-Color[class*=-C206] { + color: #FF5FD7 +} + +div.highlight .-Color[class*=-BGC206] { + background-color: #FF5FD7 +} + +div.highlight .-Color[class*=-C207] { + color: #FF5FFF +} + +div.highlight .-Color[class*=-BGC207] { + background-color: #FF5FFF +} + +div.highlight .-Color[class*=-C208] { + color: #FF8700 +} + +div.highlight .-Color[class*=-BGC208] { + background-color: #FF8700 +} + +div.highlight .-Color[class*=-C209] { + color: #FF875F +} + +div.highlight .-Color[class*=-BGC209] { + background-color: #FF875F +} + +div.highlight .-Color[class*=-C210] { + color: #FF8787 +} + +div.highlight .-Color[class*=-BGC210] { + background-color: #FF8787 +} + +div.highlight .-Color[class*=-C211] { + color: #FF87AF +} + +div.highlight .-Color[class*=-BGC211] { + background-color: #FF87AF +} + +div.highlight .-Color[class*=-C212] { + color: #FF87D7 +} + +div.highlight .-Color[class*=-BGC212] { + background-color: #FF87D7 +} + +div.highlight .-Color[class*=-C213] { + color: #FF87FF +} + +div.highlight .-Color[class*=-BGC213] { + background-color: #FF87FF +} + +div.highlight .-Color[class*=-C214] { + color: #FFAF00 +} + +div.highlight .-Color[class*=-BGC214] { + background-color: #FFAF00 +} + +div.highlight .-Color[class*=-C215] { + color: #FFAF5F +} + +div.highlight .-Color[class*=-BGC215] { + background-color: #FFAF5F +} + +div.highlight .-Color[class*=-C216] { + color: #FFAF87 +} + +div.highlight .-Color[class*=-BGC216] { + background-color: #FFAF87 +} + +div.highlight .-Color[class*=-C217] { + color: #FFAFAF +} + +div.highlight .-Color[class*=-BGC217] { + background-color: #FFAFAF +} + +div.highlight .-Color[class*=-C218] { + color: #FFAFD7 +} + +div.highlight .-Color[class*=-BGC218] { + background-color: #FFAFD7 +} + +div.highlight .-Color[class*=-C219] { + color: #FFAFFF +} + +div.highlight .-Color[class*=-BGC219] { + background-color: #FFAFFF +} + +div.highlight .-Color[class*=-C220] { + color: #FFD700 +} + +div.highlight .-Color[class*=-BGC220] { + background-color: #FFD700 +} + +div.highlight .-Color[class*=-C221] { + color: #FFD75F +} + +div.highlight .-Color[class*=-BGC221] { + background-color: #FFD75F +} + +div.highlight .-Color[class*=-C222] { + color: #FFD787 +} + +div.highlight .-Color[class*=-BGC222] { + background-color: #FFD787 +} + +div.highlight .-Color[class*=-C223] { + color: #FFD7AF +} + +div.highlight .-Color[class*=-BGC223] { + background-color: #FFD7AF +} + +div.highlight .-Color[class*=-C224] { + color: #FFD7D7 +} + +div.highlight .-Color[class*=-BGC224] { + background-color: #FFD7D7 +} + +div.highlight .-Color[class*=-C225] { + color: #FFD7FF +} + +div.highlight .-Color[class*=-BGC225] { + background-color: #FFD7FF +} + +div.highlight .-Color[class*=-C226] { + color: #FFFF00 +} + +div.highlight .-Color[class*=-BGC226] { + background-color: #FFFF00 +} + +div.highlight .-Color[class*=-C227] { + color: #FFFF5F +} + +div.highlight .-Color[class*=-BGC227] { + background-color: #FFFF5F +} + +div.highlight .-Color[class*=-C228] { + color: #FFFF87 +} + +div.highlight .-Color[class*=-BGC228] { + background-color: #FFFF87 +} + +div.highlight .-Color[class*=-C229] { + color: #FFFFAF +} + +div.highlight .-Color[class*=-BGC229] { + background-color: #FFFFAF +} + +div.highlight .-Color[class*=-C230] { + color: #FFFFD7 +} + +div.highlight .-Color[class*=-BGC230] { + background-color: #FFFFD7 +} + +div.highlight .-Color[class*=-C231] { + color: #FFFFFF +} + +div.highlight .-Color[class*=-BGC231] { + background-color: #FFFFFF +} + +div.highlight .-Color[class*=-C232] { + color: #080808 +} + +div.highlight .-Color[class*=-BGC232] { + background-color: #080808 +} + +div.highlight .-Color[class*=-C233] { + color: #121212 +} + +div.highlight .-Color[class*=-BGC233] { + background-color: #121212 +} + +div.highlight .-Color[class*=-C234] { + color: #1C1C1C +} + +div.highlight .-Color[class*=-BGC234] { + background-color: #1C1C1C +} + +div.highlight .-Color[class*=-C235] { + color: #262626 +} + +div.highlight .-Color[class*=-BGC235] { + background-color: #262626 +} + +div.highlight .-Color[class*=-C236] { + color: #303030 +} + +div.highlight .-Color[class*=-BGC236] { + background-color: #303030 +} + +div.highlight .-Color[class*=-C237] { + color: #3A3A3A +} + +div.highlight .-Color[class*=-BGC237] { + background-color: #3A3A3A +} + +div.highlight .-Color[class*=-C238] { + color: #444444 +} + +div.highlight .-Color[class*=-BGC238] { + background-color: #444444 +} + +div.highlight .-Color[class*=-C239] { + color: #4E4E4E +} + +div.highlight .-Color[class*=-BGC239] { + background-color: #4E4E4E +} + +div.highlight .-Color[class*=-C240] { + color: #585858 +} + +div.highlight .-Color[class*=-BGC240] { + background-color: #585858 +} + +div.highlight .-Color[class*=-C241] { + color: #626262 +} + +div.highlight .-Color[class*=-BGC241] { + background-color: #626262 +} + +div.highlight .-Color[class*=-C242] { + color: #6C6C6C +} + +div.highlight .-Color[class*=-BGC242] { + background-color: #6C6C6C +} + +div.highlight .-Color[class*=-C243] { + color: #767676 +} + +div.highlight .-Color[class*=-BGC243] { + background-color: #767676 +} + +div.highlight .-Color[class*=-C244] { + color: #808080 +} + +div.highlight .-Color[class*=-BGC244] { + background-color: #808080 +} + +div.highlight .-Color[class*=-C245] { + color: #8A8A8A +} + +div.highlight .-Color[class*=-BGC245] { + background-color: #8A8A8A +} + +div.highlight .-Color[class*=-C246] { + color: #949494 +} + +div.highlight .-Color[class*=-BGC246] { + background-color: #949494 +} + +div.highlight .-Color[class*=-C247] { + color: #9E9E9E +} + +div.highlight .-Color[class*=-BGC247] { + background-color: #9E9E9E +} + +div.highlight .-Color[class*=-C248] { + color: #A8A8A8 +} + +div.highlight .-Color[class*=-BGC248] { + background-color: #A8A8A8 +} + +div.highlight .-Color[class*=-C249] { + color: #B2B2B2 +} + +div.highlight .-Color[class*=-BGC249] { + background-color: #B2B2B2 +} + +div.highlight .-Color[class*=-C250] { + color: #BCBCBC +} + +div.highlight .-Color[class*=-BGC250] { + background-color: #BCBCBC +} + +div.highlight .-Color[class*=-C251] { + color: #C6C6C6 +} + +div.highlight .-Color[class*=-BGC251] { + background-color: #C6C6C6 +} + +div.highlight .-Color[class*=-C252] { + color: #D0D0D0 +} + +div.highlight .-Color[class*=-BGC252] { + background-color: #D0D0D0 +} + +div.highlight .-Color[class*=-C253] { + color: #DADADA +} + +div.highlight .-Color[class*=-BGC253] { + background-color: #DADADA +} + +div.highlight .-Color[class*=-C254] { + color: #E4E4E4 +} + +div.highlight .-Color[class*=-BGC254] { + background-color: #E4E4E4 +} + +div.highlight .-Color[class*=-C255] { + color: #EEEEEE +} + +div.highlight .-Color[class*=-BGC255] { + background-color: #EEEEEE +} diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000..7107cec Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 0000000..84ab303 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,75 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #9C6500 } /* Comment.Preproc */ +.highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #E40000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #008400 } /* Generic.Inserted */ +.highlight .go { color: #717171 } /* Generic.Output */ +.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #B00040 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #BA2121 } /* Literal.String */ +.highlight .na { color: #687822 } /* Name.Attribute */ +.highlight .nb { color: #008000 } /* Name.Builtin */ +.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.highlight .no { color: #880000 } /* Name.Constant */ +.highlight .nd { color: #AA22FF } /* Name.Decorator */ +.highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #0000FF } /* Name.Function */ +.highlight .nl { color: #767600 } /* Name.Label */ +.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #19177C } /* Name.Variable */ +.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #666666 } /* Literal.Number.Bin */ +.highlight .mf { color: #666666 } /* Literal.Number.Float */ +.highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ +.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ +.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ +.highlight .sx { color: #008000 } /* Literal.String.Other */ +.highlight .sr { color: #A45A77 } /* Literal.String.Regex */ +.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #0000FF } /* Name.Function.Magic */ +.highlight .vc { color: #19177C } /* Name.Variable.Class */ +.highlight .vg { color: #19177C } /* Name.Variable.Global */ +.highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.highlight .vm { color: #19177C } /* Name.Variable.Magic */ +.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 0000000..2c774d1 --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,632 @@ +/* + * Sphinx JavaScript utilities for the full-text search. + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename, kind] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +// Global search result kind enum, used by themes to style search results. +class SearchResultKind { + static get index() { return "index"; } + static get object() { return "object"; } + static get text() { return "text"; } + static get title() { return "title"; } +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename, kind] = item; + + let listItem = document.createElement("li"); + // Add a class representing the item's type: + // can be used by a theme's CSS selector for styling + // See SearchResultKind for the class names. + listItem.classList.add(`kind-${kind}`); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = Documentation.ngettext( + "Search finished, found one page matching the search query.", + "Search finished, found ${resultCount} pages matching the search query.", + resultCount, + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.setAttribute("role", "list"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename, kind]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score + boost, + filenames[file], + SearchResultKind.title, + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + SearchResultKind.index, + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + SearchResultKind.object, + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + SearchResultKind.text, + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/_static/sphinx_lesson.css b/_static/sphinx_lesson.css new file mode 100644 index 0000000..14b20c6 --- /dev/null +++ b/_static/sphinx_lesson.css @@ -0,0 +1,51 @@ +/* sphinx_lesson.css */ + +body.wy-body-for-nav img.with-border { + border: 2px solid; +} + +.rst-content .admonition-no-content { + padding-bottom: 0px; +} + +.rst-content .demo > .admonition-title::before { + content: "\01F440"; /* Eyes */ } +.rst-content .type-along > .admonition-title::before { + content: "\02328\0FE0F"; /* Keyboard */ } +.rst-content .exercise > .admonition-title::before { + content: "\0270D\0FE0F"; /* Hand */ } +.rst-content .solution > .admonition-title::before { + content: "\02714\0FE0E"; /* Check mark */ } +.rst-content .homework > .admonition-title::before { + content: "\01F4DD"; /* Memo */ } +.rst-content .discussion > .admonition-title::before { + content: "\01F4AC"; /* Speech balloon */ } +.rst-content .questions > .admonition-title::before { + content: "\02753\0FE0E"; /* Question mark */ } +.rst-content .prerequisites > .admonition-title::before { + content: "\02699"; /* Gear */ } +.rst-content .seealso > .admonition-title::before { + content: "\027A1\0FE0E"; /* Question mark */ } + + +/* instructor-note */ +.rst-content .instructor-note { + background: #e7e7e7; +} +.rst-content .instructor-note > .admonition-title { + background: #6a6a6a; +} +.rst-content .instructor-note > .admonition-title::before { + content: ""; +} + + +/* sphinx_toggle_button, make the font white */ +.rst-content .toggle.admonition button.toggle-button { + color: white; +} + +/* sphinx-togglebutton, remove underflow when toggled to hidden mode */ +.rst-content .admonition.toggle-hidden { + padding-bottom: 0px; +} diff --git a/_static/sphinx_rtd_theme_ext_color_contrast.css b/_static/sphinx_rtd_theme_ext_color_contrast.css new file mode 100644 index 0000000..e68feb8 --- /dev/null +++ b/_static/sphinx_rtd_theme_ext_color_contrast.css @@ -0,0 +1,47 @@ +/* The following are for web accessibility of sphinx_rtd_theme: they + * solve some of the most frequent contrast issues. Remove when this + * solved: + * https://github.com/readthedocs/sphinx_rtd_theme/issues/971 + */ +/* background: #fcfcfc, note boxes #E7F2FA */ +a { color: #2573A7; } /* original #2980B9, #1F5C84; */ +body { color: #242424; } /* original #404040, #383838 */ +.wy-side-nav-search>a, .wy-side-nav-search .wy-dropdown>a { + color: #ffffff; +} /* original #fcfcfc */ +footer { color: #737373; } /* original gray=#808080*/ +footer span.commit code, footer span.commit .rst-content tt, .rst-content footer span.commit tt { + color: #737373; +} /* original gray=#808080*/ +.rst-content tt.literal, .rst-content tt.literal, .rst-content code.literal { + color: #AB2314; +} +/* Sidebar background */ +.wy-side-nav-search { background-color: #277CB4;} + +/* Same, but for pygments */ +.highlight .ch { color: #3E7A89; } /* #! line */ +.highlight .c1 { color: #3E7A89; } /* also comments */ +.highlight .nv { color: #AD3ECC; } /* variable */ +.highlight .gp { color: #B45608; } /* prompt character, $*/ +.highlight .si { color: #3975B1; } /* ${} variable text */ +.highlight .nc { color: #0C78A7; } + +/* Sphinx admonitions */ +/* warning */ +.wy-alert.wy-alert-warning .wy-alert-title, .rst-content .wy-alert-warning.note .wy-alert-title, .rst-content .attention .wy-alert-title, .rst-content .caution .wy-alert-title, .rst-content .wy-alert-warning.danger .wy-alert-title, .rst-content .wy-alert-warning.error .wy-alert-title, .rst-content .wy-alert-warning.hint .wy-alert-title, .rst-content .wy-alert-warning.important .wy-alert-title, .rst-content .wy-alert-warning.tip .wy-alert-title, .rst-content .warning .wy-alert-title, .rst-content .wy-alert-warning.seealso .wy-alert-title, .rst-content .admonition-todo .wy-alert-title, .rst-content .wy-alert-warning.admonition .wy-alert-title, .wy-alert.wy-alert-warning .rst-content .admonition-title, .rst-content .wy-alert.wy-alert-warning .admonition-title, .rst-content .wy-alert-warning.note .admonition-title, .rst-content .attention .admonition-title, .rst-content .caution .admonition-title, .rst-content .wy-alert-warning.danger .admonition-title, .rst-content .wy-alert-warning.error .admonition-title, .rst-content .wy-alert-warning.hint .admonition-title, .rst-content .wy-alert-warning.important .admonition-title, .rst-content .wy-alert-warning.tip .admonition-title, .rst-content .warning .admonition-title, .rst-content .wy-alert-warning.seealso .admonition-title, .rst-content .admonition-todo .admonition-title, .rst-content .wy-alert-warning.admonition .admonition-title { + background: #B15E16; } +/* important */ +.wy-alert.wy-alert-success .wy-alert-title, .rst-content .wy-alert-success.note .wy-alert-title, .rst-content .wy-alert-success.attention .wy-alert-title, .rst-content .wy-alert-success.caution .wy-alert-title, .rst-content .wy-alert-success.danger .wy-alert-title, .rst-content .wy-alert-success.error .wy-alert-title, .rst-content .hint .wy-alert-title, .rst-content .important .wy-alert-title, .rst-content .tip .wy-alert-title, .rst-content .wy-alert-success.warning .wy-alert-title, .rst-content .wy-alert-success.seealso .wy-alert-title, .rst-content .wy-alert-success.admonition-todo .wy-alert-title, .rst-content .wy-alert-success.admonition .wy-alert-title, .wy-alert.wy-alert-success .rst-content .admonition-title, .rst-content .wy-alert.wy-alert-success .admonition-title, .rst-content .wy-alert-success.note .admonition-title, .rst-content .wy-alert-success.attention .admonition-title, .rst-content .wy-alert-success.caution .admonition-title, .rst-content .wy-alert-success.danger .admonition-title, .rst-content .wy-alert-success.error .admonition-title, .rst-content .hint .admonition-title, .rst-content .important .admonition-title, .rst-content .tip .admonition-title, .rst-content .wy-alert-success.warning .admonition-title, .rst-content .wy-alert-success.seealso .admonition-title, .rst-content .wy-alert-success.admonition-todo .admonition-title, .rst-content .wy-alert-success.admonition .admonition-title { + background: #12826C; } +/* seealso, note, etc */ +.wy-alert.wy-alert-info .wy-alert-title, .rst-content .note .wy-alert-title, .rst-content .wy-alert-info.attention .wy-alert-title, .rst-content .wy-alert-info.caution .wy-alert-title, .rst-content .wy-alert-info.danger .wy-alert-title, .rst-content .wy-alert-info.error .wy-alert-title, .rst-content .wy-alert-info.hint .wy-alert-title, .rst-content .wy-alert-info.important .wy-alert-title, .rst-content .wy-alert-info.tip .wy-alert-title, .rst-content .wy-alert-info.warning .wy-alert-title, .rst-content .seealso .wy-alert-title, .rst-content .wy-alert-info.admonition-todo .wy-alert-title, .rst-content .wy-alert-info.admonition .wy-alert-title, .wy-alert.wy-alert-info .rst-content .admonition-title, .rst-content .wy-alert.wy-alert-info .admonition-title, .rst-content .note .admonition-title, .rst-content .wy-alert-info.attention .admonition-title, .rst-content .wy-alert-info.caution .admonition-title, .rst-content .wy-alert-info.danger .admonition-title, .rst-content .wy-alert-info.error .admonition-title, .rst-content .wy-alert-info.hint .admonition-title, .rst-content .wy-alert-info.important .admonition-title, .rst-content .wy-alert-info.tip .admonition-title, .rst-content .wy-alert-info.warning .admonition-title, .rst-content .seealso .admonition-title, .rst-content .wy-alert-info.admonition-todo .admonition-title, .rst-content .wy-alert-info.admonition .admonition-title { + background: #277CB4; } +/* error, danger */ +.rst-content .danger .admonition-title, .rst-content .danger .wy-alert-title, .rst-content .error .admonition-title, .rst-content .error .wy-alert-title, .rst-content .wy-alert-danger.admonition-todo .admonition-title, .rst-content .wy-alert-danger.admonition-todo .wy-alert-title, .rst-content .wy-alert-danger.admonition .admonition-title, .rst-content .wy-alert-danger.admonition .wy-alert-title, .rst-content .wy-alert-danger.attention .admonition-title, .rst-content .wy-alert-danger.attention .wy-alert-title, .rst-content .wy-alert-danger.caution .admonition-title, .rst-content .wy-alert-danger.caution .wy-alert-title, .rst-content .wy-alert-danger.hint .admonition-title, .rst-content .wy-alert-danger.hint .wy-alert-title, .rst-content .wy-alert-danger.important .admonition-title, .rst-content .wy-alert-danger.important .wy-alert-title, .rst-content .wy-alert-danger.note .admonition-title, .rst-content .wy-alert-danger.note .wy-alert-title, .rst-content .wy-alert-danger.seealso .admonition-title, .rst-content .wy-alert-danger.seealso .wy-alert-title, .rst-content .wy-alert-danger.tip .admonition-title, .rst-content .wy-alert-danger.tip .wy-alert-title, .rst-content .wy-alert-danger.warning .admonition-title, .rst-content .wy-alert-danger.warning .wy-alert-title, .rst-content .wy-alert.wy-alert-danger .admonition-title, .wy-alert.wy-alert-danger .rst-content .admonition-title, .wy-alert.wy-alert-danger .wy-alert-title { + background: #e31704; +} + +/* Generic admonition titles */ +.wy-alert-title, .rst-content .admonition-title { + background: #277CB4; } diff --git a/_static/tabs.css b/_static/tabs.css new file mode 100644 index 0000000..957ba60 --- /dev/null +++ b/_static/tabs.css @@ -0,0 +1,89 @@ +.sphinx-tabs { + margin-bottom: 1rem; +} + +[role="tablist"] { + border-bottom: 1px solid #a0b3bf; +} + +.sphinx-tabs-tab { + position: relative; + font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif; + color: #1D5C87; + line-height: 24px; + margin: 0; + font-size: 16px; + font-weight: 400; + background-color: rgba(255, 255, 255, 0); + border-radius: 5px 5px 0 0; + border: 0; + padding: 1rem 1.5rem; + margin-bottom: 0; +} + +.sphinx-tabs-tab[aria-selected="true"] { + font-weight: 700; + border: 1px solid #a0b3bf; + border-bottom: 1px solid white; + margin: -1px; + background-color: white; +} + +.sphinx-tabs-tab:focus { + z-index: 1; + outline-offset: 1px; +} + +.sphinx-tabs-panel { + position: relative; + padding: 1rem; + border: 1px solid #a0b3bf; + margin: 0px -1px -1px -1px; + border-radius: 0 0 5px 5px; + border-top: 0; + background: white; +} + +.sphinx-tabs-panel.code-tab { + padding: 0.4rem; +} + +.sphinx-tab img { + margin-bottom: 24 px; +} + +/* Dark theme preference styling */ + +@media (prefers-color-scheme: dark) { + body[data-theme="auto"] .sphinx-tabs-panel { + color: white; + background-color: rgb(50, 50, 50); + } + + body[data-theme="auto"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); + } + + body[data-theme="auto"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 1px solid rgb(50, 50, 50); + background-color: rgb(50, 50, 50); + } +} + +/* Explicit dark theme styling */ + +body[data-theme="dark"] .sphinx-tabs-panel { + color: white; + background-color: rgb(50, 50, 50); +} + +body[data-theme="dark"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); +} + +body[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 2px solid rgb(50, 50, 50); + background-color: rgb(50, 50, 50); +} diff --git a/_static/tabs.js b/_static/tabs.js new file mode 100644 index 0000000..48dc303 --- /dev/null +++ b/_static/tabs.js @@ -0,0 +1,145 @@ +try { + var session = window.sessionStorage || {}; +} catch (e) { + var session = {}; +} + +window.addEventListener("DOMContentLoaded", () => { + const allTabs = document.querySelectorAll('.sphinx-tabs-tab'); + const tabLists = document.querySelectorAll('[role="tablist"]'); + + allTabs.forEach(tab => { + tab.addEventListener("click", changeTabs); + }); + + tabLists.forEach(tabList => { + tabList.addEventListener("keydown", keyTabs); + }); + + // Restore group tab selection from session + const lastSelected = session.getItem('sphinx-tabs-last-selected'); + if (lastSelected != null) selectNamedTabs(lastSelected); +}); + +/** + * Key focus left and right between sibling elements using arrows + * @param {Node} e the element in focus when key was pressed + */ +function keyTabs(e) { + const tab = e.target; + let nextTab = null; + if (e.keyCode === 39 || e.keyCode === 37) { + tab.setAttribute("tabindex", -1); + // Move right + if (e.keyCode === 39) { + nextTab = tab.nextElementSibling; + if (nextTab === null) { + nextTab = tab.parentNode.firstElementChild; + } + // Move left + } else if (e.keyCode === 37) { + nextTab = tab.previousElementSibling; + if (nextTab === null) { + nextTab = tab.parentNode.lastElementChild; + } + } + } + + if (nextTab !== null) { + nextTab.setAttribute("tabindex", 0); + nextTab.focus(); + } +} + +/** + * Select or deselect clicked tab. If a group tab + * is selected, also select tab in other tabLists. + * @param {Node} e the element that was clicked + */ +function changeTabs(e) { + // Use this instead of the element that was clicked, in case it's a child + const notSelected = this.getAttribute("aria-selected") === "false"; + const positionBefore = this.parentNode.getBoundingClientRect().top; + const notClosable = !this.parentNode.classList.contains("closeable"); + + deselectTabList(this); + + if (notSelected || notClosable) { + selectTab(this); + const name = this.getAttribute("name"); + selectNamedTabs(name, this.id); + + if (this.classList.contains("group-tab")) { + // Persist during session + session.setItem('sphinx-tabs-last-selected', name); + } + } + + const positionAfter = this.parentNode.getBoundingClientRect().top; + const positionDelta = positionAfter - positionBefore; + // Scroll to offset content resizing + window.scrollTo(0, window.scrollY + positionDelta); +} + +/** + * Select tab and show associated panel. + * @param {Node} tab tab to select + */ +function selectTab(tab) { + tab.setAttribute("aria-selected", true); + + // Show the associated panel + document + .getElementById(tab.getAttribute("aria-controls")) + .removeAttribute("hidden"); +} + +/** + * Hide the panels associated with all tabs within the + * tablist containing this tab. + * @param {Node} tab a tab within the tablist to deselect + */ +function deselectTabList(tab) { + const parent = tab.parentNode; + const grandparent = parent.parentNode; + + Array.from(parent.children) + .forEach(t => t.setAttribute("aria-selected", false)); + + Array.from(grandparent.children) + .slice(1) // Skip tablist + .forEach(panel => panel.setAttribute("hidden", true)); +} + +/** + * Select grouped tabs with the same name, but no the tab + * with the given id. + * @param {Node} name name of grouped tab to be selected + * @param {Node} clickedId id of clicked tab + */ +function selectNamedTabs(name, clickedId=null) { + const groupedTabs = document.querySelectorAll(`.sphinx-tabs-tab[name="${name}"]`); + const tabLists = Array.from(groupedTabs).map(tab => tab.parentNode); + + tabLists + .forEach(tabList => { + // Don't want to change the tabList containing the clicked tab + const clickedTab = tabList.querySelector(`[id="${clickedId}"]`); + if (clickedTab === null ) { + // Select first tab with matching name + const tab = tabList.querySelector(`.sphinx-tabs-tab[name="${name}"]`); + deselectTabList(tab); + selectTab(tab); + } + }) +} + +if (typeof exports === 'undefined') { + exports = {}; +} + +exports.keyTabs = keyTabs; +exports.changeTabs = changeTabs; +exports.selectTab = selectTab; +exports.deselectTabList = deselectTabList; +exports.selectNamedTabs = selectNamedTabs; diff --git a/_static/term_role_formatting.css b/_static/term_role_formatting.css new file mode 100644 index 0000000..0b66095 --- /dev/null +++ b/_static/term_role_formatting.css @@ -0,0 +1,4 @@ +/* Make terms bold */ +a.reference span.std-term { + font-weight: bold; +} diff --git a/_static/togglebutton.css b/_static/togglebutton.css new file mode 100644 index 0000000..54a6787 --- /dev/null +++ b/_static/togglebutton.css @@ -0,0 +1,160 @@ +/** + * Admonition-based toggles + */ + +/* Visibility of the target */ +.admonition.toggle .admonition-title ~ * { + transition: opacity .3s, height .3s; +} + +/* Toggle buttons inside admonitions so we see the title */ +.admonition.toggle { + position: relative; +} + +/* Titles should cut off earlier to avoid overlapping w/ button */ +.admonition.toggle .admonition-title { + padding-right: 25%; + cursor: pointer; +} + +/* Hovering will cause a slight shift in color to make it feel interactive */ +.admonition.toggle .admonition-title:hover { + box-shadow: inset 0 0 0px 20px rgb(0 0 0 / 1%); +} + +/* Hovering will cause a slight shift in color to make it feel interactive */ +.admonition.toggle .admonition-title:active { + box-shadow: inset 0 0 0px 20px rgb(0 0 0 / 3%); +} + +/* Remove extra whitespace below the admonition title when hidden */ +.admonition.toggle-hidden { + padding-bottom: 0; +} + +.admonition.toggle-hidden .admonition-title { + margin-bottom: 0; +} + +/* hides all the content of a page until de-toggled */ +.admonition.toggle-hidden .admonition-title ~ * { + height: 0; + margin: 0; + opacity: 0; + visibility: hidden; +} + +/* General button style and position*/ +button.toggle-button { + /** + * Background and shape. By default there's no background + * but users can style as they wish + */ + background: none; + border: none; + outline: none; + + /* Positioning just inside the admonition title */ + position: absolute; + right: 0.5em; + padding: 0px; + border: none; + outline: none; +} + +/* Display the toggle hint on wide screens */ +@media (min-width: 768px) { + button.toggle-button.toggle-button-hidden:before { + content: attr(data-toggle-hint); /* This will be filled in by JS */ + font-size: .8em; + align-self: center; + } +} + +/* Icon behavior */ +.tb-icon { + transition: transform .2s ease-out; + height: 1.5em; + width: 1.5em; + stroke: currentColor; /* So that we inherit the color of other text */ +} + +/* The icon should point right when closed, down when open. */ +/* Open */ +.admonition.toggle button .tb-icon { + transform: rotate(90deg); +} + +/* Closed */ +.admonition.toggle button.toggle-button-hidden .tb-icon { + transform: rotate(0deg); +} + +/* With details toggles, we don't rotate the icon so it points right */ +details.toggle-details .tb-icon { + height: 1.4em; + width: 1.4em; + margin-top: 0.1em; /* To center the button vertically */ +} + + +/** + * Details-based toggles. + * In this case, we wrap elements with `.toggle` in a details block. + */ + +/* Details blocks */ +details.toggle-details { + margin: 1em 0; +} + + +details.toggle-details summary { + display: flex; + align-items: center; + cursor: pointer; + list-style: none; + border-radius: .2em; + border-left: 3px solid #1976d2; + background-color: rgb(204 204 204 / 10%); + padding: 0.2em 0.7em 0.3em 0.5em; /* Less padding on left because the SVG has left margin */ + font-size: 0.9em; +} + +details.toggle-details summary:hover { + background-color: rgb(204 204 204 / 20%); +} + +details.toggle-details summary:active { + background: rgb(204 204 204 / 28%); +} + +.toggle-details__summary-text { + margin-left: 0.2em; +} + +details.toggle-details[open] summary { + margin-bottom: .5em; +} + +details.toggle-details[open] summary .tb-icon { + transform: rotate(90deg); +} + +details.toggle-details[open] summary ~ * { + animation: toggle-fade-in .3s ease-out; +} + +@keyframes toggle-fade-in { + from {opacity: 0%;} + to {opacity: 100%;} +} + +/* Print rules - we hide all toggle button elements at print */ +@media print { + /* Always hide the summary so the button doesn't show up */ + details.toggle-details summary { + display: none; + } +} \ No newline at end of file diff --git a/_static/togglebutton.js b/_static/togglebutton.js new file mode 100644 index 0000000..215a7ee --- /dev/null +++ b/_static/togglebutton.js @@ -0,0 +1,187 @@ +/** + * Add Toggle Buttons to elements + */ + +let toggleChevron = ` + + + +`; + +var initToggleItems = () => { + var itemsToToggle = document.querySelectorAll(togglebuttonSelector); + console.log(`[togglebutton]: Adding toggle buttons to ${itemsToToggle.length} items`) + // Add the button to each admonition and hook up a callback to toggle visibility + itemsToToggle.forEach((item, index) => { + if (item.classList.contains("admonition")) { + // If it's an admonition block, then we'll add a button inside + // Generate unique IDs for this item + var toggleID = `toggle-${index}`; + var buttonID = `button-${toggleID}`; + + item.setAttribute('id', toggleID); + if (!item.classList.contains("toggle")){ + item.classList.add("toggle"); + } + // This is the button that will be added to each item to trigger the toggle + var collapseButton = ` + `; + + title = item.querySelector(".admonition-title") + title.insertAdjacentHTML("beforeend", collapseButton); + thisButton = document.getElementById(buttonID); + + // Add click handlers for the button + admonition title (if admonition) + admonitionTitle = document.querySelector(`#${toggleID} > .admonition-title`) + if (admonitionTitle) { + // If an admonition, then make the whole title block clickable + admonitionTitle.addEventListener('click', toggleClickHandler); + admonitionTitle.dataset.target = toggleID + admonitionTitle.dataset.button = buttonID + } else { + // If not an admonition then we'll listen for the button click + thisButton.addEventListener('click', toggleClickHandler); + } + + // Now hide the item for this toggle button unless explicitly noted to show + if (!item.classList.contains("toggle-shown")) { + toggleHidden(thisButton); + } + } else { + // If not an admonition, wrap the block in a
block + // Define the structure of the details block and insert it as a sibling + var detailsBlock = ` +
+ + ${toggleChevron} + ${toggleHintShow} + +
`; + item.insertAdjacentHTML("beforebegin", detailsBlock); + + // Now move the toggle-able content inside of the details block + details = item.previousElementSibling + details.appendChild(item) + item.classList.add("toggle-details__container") + + // Set up a click trigger to change the text as needed + details.addEventListener('click', (click) => { + let parent = click.target.parentElement; + if (parent.tagName.toLowerCase() == "details") { + summary = parent.querySelector("summary"); + details = parent; + } else { + summary = parent; + details = parent.parentElement; + } + // Update the inner text for the proper hint + if (details.open) { + summary.querySelector("span.toggle-details__summary-text").innerText = toggleHintShow; + } else { + summary.querySelector("span.toggle-details__summary-text").innerText = toggleHintHide; + } + + }); + + // If we have a toggle-shown class, open details block should be open + if (item.classList.contains("toggle-shown")) { + details.click(); + } + } + }) +}; + +// This should simply add / remove the collapsed class and change the button text +var toggleHidden = (button) => { + target = button.dataset['target'] + var itemToToggle = document.getElementById(target); + if (itemToToggle.classList.contains("toggle-hidden")) { + itemToToggle.classList.remove("toggle-hidden"); + button.classList.remove("toggle-button-hidden"); + } else { + itemToToggle.classList.add("toggle-hidden"); + button.classList.add("toggle-button-hidden"); + } +} + +var toggleClickHandler = (click) => { + // Be cause the admonition title is clickable and extends to the whole admonition + // We only look for a click event on this title to trigger the toggle. + + if (click.target.classList.contains("admonition-title")) { + button = click.target.querySelector(".toggle-button"); + } else if (click.target.classList.contains("tb-icon")) { + // We've clicked the icon and need to search up one parent for the button + button = click.target.parentElement; + } else if (click.target.tagName == "polyline") { + // We've clicked the SVG elements inside the button, need to up 2 layers + button = click.target.parentElement.parentElement; + } else if (click.target.classList.contains("toggle-button")) { + // We've clicked the button itself and so don't need to do anything + button = click.target; + } else { + console.log(`[togglebutton]: Couldn't find button for ${click.target}`) + } + target = document.getElementById(button.dataset['button']); + toggleHidden(target); +} + +// If we want to blanket-add toggle classes to certain cells +var addToggleToSelector = () => { + const selector = ""; + if (selector.length > 0) { + document.querySelectorAll(selector).forEach((item) => { + item.classList.add("toggle"); + }) + } +} + +// Helper function to run when the DOM is finished +const sphinxToggleRunWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} +sphinxToggleRunWhenDOMLoaded(addToggleToSelector) +sphinxToggleRunWhenDOMLoaded(initToggleItems) + +/** Toggle details blocks to be open when printing */ +if (toggleOpenOnPrint == "true") { + window.addEventListener("beforeprint", () => { + // Open the details + document.querySelectorAll("details.toggle-details").forEach((el) => { + el.dataset["togglestatus"] = el.open; + el.open = true; + }); + + // Open the admonitions + document.querySelectorAll(".admonition.toggle.toggle-hidden").forEach((el) => { + console.log(el); + el.querySelector("button.toggle-button").click(); + el.dataset["toggle_after_print"] = "true"; + }); + }); + window.addEventListener("afterprint", () => { + // Re-close the details that were closed + document.querySelectorAll("details.toggle-details").forEach((el) => { + el.open = el.dataset["togglestatus"] == "true"; + delete el.dataset["togglestatus"]; + }); + + // Re-close the admonition toggle buttons + document.querySelectorAll(".admonition.toggle").forEach((el) => { + if (el.dataset["toggle_after_print"] == "true") { + el.querySelector("button.toggle-button").click(); + delete el.dataset["toggle_after_print"]; + } + }); + }); +} diff --git a/_static/translations.js b/_static/translations.js new file mode 100644 index 0000000..003c832 --- /dev/null +++ b/_static/translations.js @@ -0,0 +1,64 @@ +Documentation.addTranslations({ + "locale": "fr", + "messages": { + "%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", + "© %(copyright_prefix)s %(copyright)s.": "© %(copyright_prefix)s %(copyright)s.", + ", in ": ", dans ", + "About these documents": "\u00c0 propos de ces documents", + "Automatically generated list of changes in version %(version)s": "Liste auto-g\u00e9n\u00e9r\u00e9e des modifications dans la version %(version)s", + "C API changes": "Modifications de l'API C", + "Changes in Version %(version)s — %(docstitle)s": "Changements dans la version %(version)s — %(docstitle)s", + "Collapse sidebar": "R\u00e9duire la barre lat\u00e9rale", + "Complete Table of Contents": "Table des mati\u00e8res compl\u00e8te", + "Contents": "Contenu", + "Copyright": "Copyright", + "Created using Sphinx %(sphinx_version)s.": "Cr\u00e9\u00e9 en utilisant Sphinx %(sphinx_version)s.", + "Expand sidebar": "Agrandir la barre lat\u00e9rale", + "Full index on one page": "Index complet sur une seule page", + "General Index": "Index g\u00e9n\u00e9ral", + "Global Module Index": "Index g\u00e9n\u00e9ral des modules", + "Go": "Go", + "Hide Search Matches": "Cacher les r\u00e9sultats de la recherche", + "Index": "Index", + "Index – %(key)s": "Index – %(key)s", + "Index pages by letter": "Indexer les pages par lettre", + "Indices and tables:": "Index et tables :", + "Last updated on %(last_updated)s.": "Mis \u00e0 jour le %(last_updated)s.", + "Library changes": "Modifications de la biblioth\u00e8que", + "Navigation": "Navigation", + "Next topic": "Sujet suivant", + "Other changes": "Autres modifications", + "Overview": "R\u00e9sum\u00e9", + "Please activate JavaScript to enable the search\n functionality.": "Veuillez activer le JavaScript pour que la recherche fonctionne.", + "Preparing search...": "Pr\u00e9paration de la recherche...", + "Previous topic": "Sujet pr\u00e9c\u00e9dent", + "Quick search": "Recherche rapide", + "Search": "Recherche", + "Search Page": "Page de recherche", + "Search Results": "R\u00e9sultats de la recherche", + "Search finished, found one page matching the search query.": [ + "La recherche est termin\u00e9e, une page correspondant \u00e0 la requ\u00eate a \u00e9t\u00e9 trouv\u00e9e.", + "Recherche termin\u00e9e, ${resultCount} pages trouv\u00e9es correspondant \u00e0 la requ\u00eate.", + "Recherche termin\u00e9e, ${resultCount} pages trouv\u00e9es correspondant \u00e0 la requ\u00eate." + ], + "Search within %(docstitle)s": "Recherchez dans %(docstitle)s", + "Searching": "Recherche en cours", + "Searching for multiple words only shows matches that contain\n all words.": "Une recherche sur plusieurs mots ne retourne que les r\u00e9sultats contenant tous les mots.", + "Show Source": "Montrer le code source", + "Table of Contents": "Table des mati\u00e8res", + "This Page": "Cette page", + "Welcome! This is": "Bienvenue ! Ceci est", + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Votre recherche ne correspond \u00e0 aucun document. Veuillez v\u00e9rifier que les mots sont correctement orthographi\u00e9s et que vous avez s\u00e9lectionn\u00e9 assez de cat\u00e9gories.", + "all functions, classes, terms": "toutes les fonctions, classes, termes", + "can be huge": "peut \u00eatre \u00e9norme", + "last updated": "derni\u00e8re modification", + "lists all sections and subsections": "lister l'ensemble des sections et sous-sections", + "next chapter": "Chapitre suivant", + "previous chapter": "Chapitre pr\u00e9c\u00e9dent", + "quick access to all modules": "acc\u00e8s rapide \u00e0 l'ensemble des modules", + "search": "rechercher", + "search this documentation": "rechercher dans cette documentation", + "the documentation for": "la documentation pour" + }, + "plural_expr": "(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2" +}); \ No newline at end of file diff --git a/box_list/index.html b/box_list/index.html new file mode 100644 index 0000000..eb5747c --- /dev/null +++ b/box_list/index.html @@ -0,0 +1,228 @@ + + + + + + + + + + <no title> — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/common/carte-sortie/index.html b/common/carte-sortie/index.html new file mode 100644 index 0000000..73b8209 --- /dev/null +++ b/common/carte-sortie/index.html @@ -0,0 +1,439 @@ + + + + + + + + + + Étage de sortie — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/common/confection-cables/index.html b/common/confection-cables/index.html new file mode 100644 index 0000000..71ae21c --- /dev/null +++ b/common/confection-cables/index.html @@ -0,0 +1,359 @@ + + + + + + + + + + Confection des câbles — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/common/ordre-soudure/index.html b/common/ordre-soudure/index.html new file mode 100644 index 0000000..b52703c --- /dev/null +++ b/common/ordre-soudure/index.html @@ -0,0 +1,246 @@ + + + + + + + + + + Ordre de soudure — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/genindex/index.html b/genindex/index.html new file mode 100644 index 0000000..45fd811 --- /dev/null +++ b/genindex/index.html @@ -0,0 +1,274 @@ + + + + + + + + Index — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/glossary/index.html b/glossary/index.html new file mode 100644 index 0000000..60f30f2 --- /dev/null +++ b/glossary/index.html @@ -0,0 +1,280 @@ + + + + + + + + + + Glossaire — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..71c922a --- /dev/null +++ b/index.html @@ -0,0 +1,247 @@ + + + + + + + + + + Bienvenue dans la documentation du Mk2PVRouter ! — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/introduction/index.html b/introduction/index.html new file mode 100644 index 0000000..39082a2 --- /dev/null +++ b/introduction/index.html @@ -0,0 +1,282 @@ + + + + + + + + + + Introduction — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/assemblage-mono/index.html b/mono/assemblage-mono/index.html new file mode 100644 index 0000000..d053a80 --- /dev/null +++ b/mono/assemblage-mono/index.html @@ -0,0 +1,205 @@ + + + + + + + + + + Assemblage — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/boitier-mono/index.html b/mono/boitier-mono/index.html new file mode 100644 index 0000000..437c576 --- /dev/null +++ b/mono/boitier-mono/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + Préparation du boîtier — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-A/index.html b/mono/carte-mere-mono-A/index.html new file mode 100644 index 0000000..1dcb588 --- /dev/null +++ b/mono/carte-mere-mono-A/index.html @@ -0,0 +1,277 @@ + + + + + + + + + + Composants de la configuration A — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-B/index.html b/mono/carte-mere-mono-B/index.html new file mode 100644 index 0000000..b90b256 --- /dev/null +++ b/mono/carte-mere-mono-B/index.html @@ -0,0 +1,275 @@ + + + + + + + + + + Composants de la configuration B — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-C/index.html b/mono/carte-mere-mono-C/index.html new file mode 100644 index 0000000..7b87f61 --- /dev/null +++ b/mono/carte-mere-mono-C/index.html @@ -0,0 +1,314 @@ + + + + + + + + + + Composants de la configuration C — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-D/index.html b/mono/carte-mere-mono-D/index.html new file mode 100644 index 0000000..ef28da5 --- /dev/null +++ b/mono/carte-mere-mono-D/index.html @@ -0,0 +1,331 @@ + + + + + + + + + + Composants de la configuration D — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-E/index.html b/mono/carte-mere-mono-E/index.html new file mode 100644 index 0000000..9c4055d --- /dev/null +++ b/mono/carte-mere-mono-E/index.html @@ -0,0 +1,310 @@ + + + + + + + + + + Composants de la configuration E — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-commun/index.html b/mono/carte-mere-mono-commun/index.html new file mode 100644 index 0000000..83c49f5 --- /dev/null +++ b/mono/carte-mere-mono-commun/index.html @@ -0,0 +1,219 @@ + + + + + + + + + + Composants communs — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-inventaire/index.html b/mono/carte-mere-mono-inventaire/index.html new file mode 100644 index 0000000..0b739e0 --- /dev/null +++ b/mono/carte-mere-mono-inventaire/index.html @@ -0,0 +1,492 @@ + + + + + + + + + + Inventaire complet des composants — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-soudure/index.html b/mono/carte-mere-mono-soudure/index.html new file mode 100644 index 0000000..186a9f0 --- /dev/null +++ b/mono/carte-mere-mono-soudure/index.html @@ -0,0 +1,273 @@ + + + + + + + + + + Soudure — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-synthese/index.html b/mono/carte-mere-mono-synthese/index.html new file mode 100644 index 0000000..fca1873 --- /dev/null +++ b/mono/carte-mere-mono-synthese/index.html @@ -0,0 +1,333 @@ + + + + + + + + + + Synthèse — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-test-elec/index.html b/mono/carte-mere-mono-test-elec/index.html new file mode 100644 index 0000000..0e2082c --- /dev/null +++ b/mono/carte-mere-mono-test-elec/index.html @@ -0,0 +1,285 @@ + + + + + + + + + + Tests électriques — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono-tests/index.html b/mono/carte-mere-mono-tests/index.html new file mode 100644 index 0000000..564e3b6 --- /dev/null +++ b/mono/carte-mere-mono-tests/index.html @@ -0,0 +1,239 @@ + + + + + + + + + + Tests — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-mere-mono/index.html b/mono/carte-mere-mono/index.html new file mode 100644 index 0000000..5703bc1 --- /dev/null +++ b/mono/carte-mere-mono/index.html @@ -0,0 +1,240 @@ + + + + + + + + + + Carte-mère monophasée — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-sortie-mono/index.html b/mono/carte-sortie-mono/index.html new file mode 100644 index 0000000..01623a8 --- /dev/null +++ b/mono/carte-sortie-mono/index.html @@ -0,0 +1,467 @@ + + + + + + + + + + Étage de sortie — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/carte-sortie-relais-mono/index.html b/mono/carte-sortie-relais-mono/index.html new file mode 100644 index 0000000..8aa002c --- /dev/null +++ b/mono/carte-sortie-relais-mono/index.html @@ -0,0 +1,244 @@ + + + + + + + + + + Sortie relais tout-ou-rien — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/dissipateur-mono/index.html b/mono/dissipateur-mono/index.html new file mode 100644 index 0000000..d342252 --- /dev/null +++ b/mono/dissipateur-mono/index.html @@ -0,0 +1,258 @@ + + + + + + + + + + Dissipateur — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/etalonnage-mono/index.html b/mono/etalonnage-mono/index.html new file mode 100644 index 0000000..3577c9c --- /dev/null +++ b/mono/etalonnage-mono/index.html @@ -0,0 +1,223 @@ + + + + + + + + + + Étalonnage — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/jumpers-Dx/index.html b/mono/jumpers-Dx/index.html new file mode 100644 index 0000000..dffa48b --- /dev/null +++ b/mono/jumpers-Dx/index.html @@ -0,0 +1,200 @@ + + + + + + + + + + <no title> — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/mono/test-logiciel-mono/index.html b/mono/test-logiciel-mono/index.html new file mode 100644 index 0000000..4d7fc0f --- /dev/null +++ b/mono/test-logiciel-mono/index.html @@ -0,0 +1,381 @@ + + + + + + + + + + Tests logiciel — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000..2f38a67 Binary files /dev/null and b/objects.inv differ diff --git a/search/index.html b/search/index.html new file mode 100644 index 0000000..267d682 --- /dev/null +++ b/search/index.html @@ -0,0 +1,204 @@ + + + + + + + + Recherche — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 0000000..e084596 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles": {"Alimentation secondaire 3,3\u00a0V": [[13, "alimentation-secondaire-3-3-v"], [14, "alimentation-secondaire-3-3-v"]], "Applications typiques": [[1, "applications-typiques"], [21, "applications-typiques"], [31, "applications-typiques"]], "Assemblage": [[7, null], [22, "assemblage"], [27, null], [30, "assemblage"]], "Assemblage d\u2019une carte de sortie": [[1, "assemblage-dune-carte-de-sortie"], [21, "assemblage-dune-carte-de-sortie"], [31, "assemblage-dune-carte-de-sortie"]], "Avantages compar\u00e9s \u00e0 un relais": [[1, "avantages-compares-a-un-relais"], [21, "avantages-compares-a-un-relais"], [31, "avantages-compares-a-un-relais"]], "Avantages pour les Appareils \u00c9lectroniques": [[22, "avantages-pour-les-appareils-electroniques"], [30, "avantages-pour-les-appareils-electroniques"]], "Bienvenue dans la documentation du Mk2PVRouter\u00a0!": [[5, null]], "CT diversion": [[24, "ct-diversion"]], "CT grille/r\u00e9seau": [[24, "ct-grille-reseau"]], "Carte USB vers UART": [[26, "carte-usb-vers-uart"]], "Carte-m\u00e8re monophas\u00e9e": [[9, null]], "Carte-m\u00e8re triphas\u00e9e": [[29, null]], "Chauffe-eau triphas\u00e9": [[33, null]], "Comment trouver le bon f_powerCal du premier coup": [[33, "comment-trouver-le-bon-f-powercal-du-premier-coup"]], "Composants communs": [[15, null]], "Composants de la configuration A": [[10, null]], "Composants de la configuration B": [[11, null]], "Composants de la configuration C": [[12, null]], "Composants de la configuration D": [[13, null]], "Composants de la configuration E": [[14, null]], "Composition d\u2019un kit pour \u00e9tage de sortie triac": [[1, "composition-dun-kit-pour-etage-de-sortie-triac"], [21, "composition-dun-kit-pour-etage-de-sortie-triac"], [31, "composition-dun-kit-pour-etage-de-sortie-triac"]], "Condensateurs c\u00e9ramiques et oscillateur": [[16, "condensateurs-ceramiques-et-oscillateur"], [29, "condensateurs-ceramiques-et-oscillateur"]], "Condensateurs \u00e9lectrolytiques": [[16, "condensateurs-electrolytiques"], [29, "condensateurs-electrolytiques"]], "Confection des c\u00e2bles": [[2, null]], "Connecteur haute puissance": [[1, "connecteur-haute-puissance"], [21, "connecteur-haute-puissance"], [31, "connecteur-haute-puissance"]], "Connecteur pour nappe": [[11, "connecteur-pour-nappe"], [12, "connecteur-pour-nappe"], [13, "connecteur-pour-nappe"], [14, "connecteur-pour-nappe"]], "Connecteurs SIL/Molex": [[16, "connecteurs-sil-molex"], [29, "connecteurs-sil-molex"]], "Connecteurs secteur et porte-fusible": [[16, "connecteurs-secteur-et-porte-fusible"], [29, "connecteurs-secteur-et-porte-fusible"]], "Conseil": [[2, null]], "Consid\u00e9rations Techniques": [[1, "considerations-techniques"], [21, "considerations-techniques"], [22, "considerations-techniques"], [30, "considerations-techniques"], [31, "considerations-techniques"]], "Contenu du kit": [[6, "contenu-du-kit"]], "Contr\u00f4le de la Puissance": [[1, "controle-de-la-puissance"], [21, "controle-de-la-puissance"], [31, "controle-de-la-puissance"]], "C\u00e2bles prise\u00b7s jack": [[2, "cables-prises-jack"]], "C\u00e2ble\u00b7s de contr\u00f4le": [[2, "cables-de-controle"]], "C\u00e2ble\u00b7s de t\u00e9moin\u00b7s LED": [[2, "cables-de-temoins-led"]], "Diodes": [[16, "diodes"], [29, "diodes"]], "Dissipateur": [[23, null], [32, null]], "Fil de mise \u00e0 la terre": [[2, "fil-de-mise-a-la-terre"]], "Glossaire": [[4, null], [5, null]], "Inductance": [[16, "inductance"], [29, "inductance"]], "Insertion du LM358 et test de Vref": [[29, "insertion-du-lm358-et-test-de-vref"]], "Insertion du processeur principal": [[29, "insertion-du-processeur-principal"]], "Installation de l\u2019optocoupleur": [[1, "installation-de-loptocoupleur"], [21, "installation-de-loptocoupleur"], [31, "installation-de-loptocoupleur"]], "Installation des agrafes en cuivre massif": [[1, "installation-des-agrafes-en-cuivre-massif"], [21, "installation-des-agrafes-en-cuivre-massif"], [31, "installation-des-agrafes-en-cuivre-massif"]], "Installation des composants de faible puissance, support DIL": [[1, "installation-des-composants-de-faible-puissance-support-dil"], [21, "installation-des-composants-de-faible-puissance-support-dil"], [31, "installation-des-composants-de-faible-puissance-support-dil"]], "Installation du processeur principal": [[19, "installation-du-processeur-principal"]], "Introduction": [[6, null]], "Inventaire complet des composants": [[16, null]], "Le module radiofr\u00e9quence ou module RF": [[16, "le-module-radiofrequence-ou-module-rf"]], "Ligne de mesure": [[33, null]], "Logiciel de programmation": [[26, "logiciel-de-programmation"]], "Longueurs conseill\u00e9es": [[2, null], [2, null], [2, null], [2, null]], "Mat\u00e9riels n\u00e9cessaires": [[6, "materiels-necessaires"]], "Mise en place": [[26, "mise-en-place"]], "Module radiofr\u00e9quence": [[13, "module-radiofrequence"], [14, "module-radiofrequence"]], "M\u00e9thode avec le compteur de distribution": [[33, "methode-avec-le-compteur-de-distribution"]], "M\u00e9thode avec un appareil de mesure annexe": [[33, "methode-avec-un-appareil-de-mesure-annexe"]], "Ordre de soudure": [[3, null]], "Outils n\u00e9cessaires": [[8, "outils-necessaires"], [28, "outils-necessaires"]], "Per\u00e7age du bo\u00eetier": [[23, "percage-du-boitier"], [32, "percage-du-boitier"]], "Per\u00e7age du dissipateur": [[23, "percage-du-dissipateur"], [32, "percage-du-dissipateur"]], "Per\u00e7age pour chaque \u00e9tage de sortie triac": [[8, "percage-pour-chaque-etage-de-sortie-triac"], [28, "percage-pour-chaque-etage-de-sortie-triac"]], "Per\u00e7age pour la carte-m\u00e8re": [[8, "percage-pour-la-carte-mere"], [28, "percage-pour-la-carte-mere"]], "Per\u00e7age pour le\u00b7s dissipateur\u00b7s": [[8, "percage-pour-les-dissipateurs"], [28, "percage-pour-les-dissipateurs"]], "Pont redresseur ou pont de diodes": [[16, "pont-redresseur-ou-pont-de-diodes"]], "Ponts de neutre": [[29, "ponts-de-neutre"]], "Ponts ou jumpers": [[11, "ponts-ou-jumpers"], [12, "ponts-ou-jumpers"], [13, "ponts-ou-jumpers"], [14, "ponts-ou-jumpers"]], "Ponts redresseurs ou ponts de diodes": [[29, "ponts-redresseurs-ou-ponts-de-diodes"]], "Principe de Fonctionnement d\u2019une Sortie Relais tout-ou-rien": [[22, "principe-de-fonctionnement-dune-sortie-relais-tout-ou-rien"], [30, "principe-de-fonctionnement-dune-sortie-relais-tout-ou-rien"]], "Principe de Fonctionnement d\u2019une Sortie Triac": [[1, "principe-de-fonctionnement-dune-sortie-triac"], [21, "principe-de-fonctionnement-dune-sortie-triac"], [31, "principe-de-fonctionnement-dune-sortie-triac"]], "Principe de base": [[33, "principe-de-base"]], "Pr\u00e9-requis": [[26, "pre-requis"], [26, "test-logiciel-mono-display-requirements"], [33, null]], "Pr\u00e9paration du bo\u00eetier": [[8, null], [28, null]], "Rappel": [[13, null]], "Recommandations pour les \u00e9tapes de soudure": [[6, "recommandations-pour-les-etapes-de-soudure"]], "Remarque": [[26, null]], "R\u00e9gulateur de tension": [[29, "regulateur-de-tension"]], "R\u00e9gulateur\u00b7s de tension": [[16, "regulateurs-de-tension"]], "R\u00e9sistances": [[10, "resistances"], [11, "resistances"], [12, "resistances"], [13, "resistances"], [14, "resistances"], [16, "resistances"], [29, "resistances"]], "Socles IC3 et IC4": [[12, "socles-ic3-et-ic4"], [13, "socles-ic3-et-ic4"]], "Socles de sorties": [[10, "socles-de-sorties"], [11, "socles-de-sorties"], [12, "socles-de-sorties"], [13, "socles-de-sorties"], [14, "socles-de-sorties"]], "Sommaire": [[1, "sommaire"], [10, "sommaire"], [11, "sommaire"], [12, "sommaire"], [13, "sommaire"], [14, "sommaire"], [16, "sommaire"], [19, "sommaire"], [21, "sommaire"], [26, "sommaire"], [26, "id1"], [29, "sommaire"], [31, "sommaire"]], "Sortie relais tout-ou-rien": [[22, null], [30, null]], "Soudure": [[17, null]], "Soudure de la partie haute puissance/haute tension": [[1, "soudure-de-la-partie-haute-puissance-haute-tension"], [21, "soudure-de-la-partie-haute-puissance-haute-tension"], [31, "soudure-de-la-partie-haute-puissance-haute-tension"]], "Soudure des composants": [[29, "soudure-des-composants"]], "Soudure des connecteurs type Molex": [[1, "soudure-des-connecteurs-type-molex"], [21, "soudure-des-connecteurs-type-molex"], [31, "soudure-des-connecteurs-type-molex"]], "Supports DIL pour circuits int\u00e9gr\u00e9s": [[16, "supports-dil-pour-circuits-integres"]], "Supports circuits int\u00e9gr\u00e9s": [[29, "supports-circuits-integres"]], "Synth\u00e8se": [[18, null]], "Test": [[1, "test"], [21, "test"], [22, "test"], [30, "test"], [31, "test"]], "Test de chaque sous-alimentation": [[29, "test-de-chaque-sous-alimentation"]], "Test de la partie afficheur": [[26, "test-de-la-partie-afficheur"]], "Test de la partie mesures": [[26, "test-de-la-partie-mesures"], [34, "test-de-la-partie-mesures"]], "Test de la tension de r\u00e9f\u00e9rence": [[19, "test-de-la-tension-de-reference"]], "Test de l\u2019alimentation principale": [[19, "test-de-lalimentation-principale"]], "Test logiciel": [[34, null]], "Tests": [[20, null]], "Tests logiciel": [[26, null]], "Tests \u00e9lectriques": [[19, null], [29, "tests-electriques"]], "Transformateur": [[16, "transformateur"]], "Transformateurs": [[29, "transformateurs"]], "Triac": [[1, "triac"], [21, "triac"], [31, "triac"]], "T\u00e9l\u00e9chargement du croquis": [[26, "telechargement-du-croquis"]], "Un peu de math\u00e9matiques": [[16, "exercise-0"], [29, "exercise-0"]], "Varistance": [[16, "varistance"]], "Version monophas\u00e9e": [[2, "exercise-0"], [2, "exercise-2"]], "Version triphas\u00e9e": [[2, "exercise-1"], [2, "exercise-3"]], "V\u00e9rification de l\u2019afficheur": [[26, "verification-de-lafficheur"]], "\u00c0 l\u2019aide de l\u2019affichage du compteur (plus simple et plus rapide)": [[33, "a-laide-de-laffichage-du-compteur-plus-simple-et-plus-rapide"]], "\u00c0 l\u2019aide des flash du compteur (1 flash = 1\u00a0Wh consomm\u00e9)": [[33, "a-laide-des-flash-du-compteur-1-flash-1-wh-consomme"]], "\u00c0 retenir": [[5, null]], "\u00c9tage de sortie": [[1, null], [21, null], [31, null]], "\u00c9talonnage": [[24, null], [33, null]], "\u00c9tapes d\u2019assemblage": [[6, "etapes-dassemblage"]], "\u00c9tapes \u00e0 r\u00e9aliser": [[8, "etapes-a-realiser"], [28, "etapes-a-realiser"]]}, "docnames": ["box_list", "common/carte-sortie", "common/confection-cables", "common/ordre-soudure", "glossary", "index", "introduction", "mono/assemblage-mono", "mono/boitier-mono", "mono/carte-mere-mono", "mono/carte-mere-mono-A", "mono/carte-mere-mono-B", "mono/carte-mere-mono-C", "mono/carte-mere-mono-D", "mono/carte-mere-mono-E", "mono/carte-mere-mono-commun", "mono/carte-mere-mono-inventaire", "mono/carte-mere-mono-soudure", "mono/carte-mere-mono-synthese", "mono/carte-mere-mono-test-elec", "mono/carte-mere-mono-tests", "mono/carte-sortie-mono", "mono/carte-sortie-relais-mono", "mono/dissipateur-mono", "mono/etalonnage-mono", "mono/jumpers-Dx", "mono/test-logiciel-mono", "tri/assemblage-tri", "tri/boitier-tri", "tri/carte-mere-tri", "tri/carte-sortie-relais-tri", "tri/carte-sortie-tri", "tri/dissipateur-tri", "tri/etalonnage-tri", "tri/test-logiciel-tri"], "envversion": {"sphinx": 64, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx_last_updated_by_git": 1}, "filenames": ["box_list.md", "common/carte-sortie.rst", "common/confection-cables.rst", "common/ordre-soudure.rst", "glossary.rst", "index.rst", "introduction.rst", "mono/assemblage-mono.rst", "mono/boitier-mono.rst", "mono/carte-mere-mono.rst", "mono/carte-mere-mono-A.rst", "mono/carte-mere-mono-B.rst", "mono/carte-mere-mono-C.rst", "mono/carte-mere-mono-D.rst", "mono/carte-mere-mono-E.rst", "mono/carte-mere-mono-commun.rst", "mono/carte-mere-mono-inventaire.rst", "mono/carte-mere-mono-soudure.rst", "mono/carte-mere-mono-synthese.rst", "mono/carte-mere-mono-test-elec.rst", "mono/carte-mere-mono-tests.rst", "mono/carte-sortie-mono.rst", "mono/carte-sortie-relais-mono.rst", "mono/dissipateur-mono.rst", "mono/etalonnage-mono.rst", "mono/jumpers-Dx.rst", "mono/test-logiciel-mono.rst", "tri/assemblage-tri.rst", "tri/boitier-tri.rst", "tri/carte-mere-tri.rst", "tri/carte-sortie-relais-tri.rst", "tri/carte-sortie-tri.rst", "tri/dissipateur-tri.rst", "tri/etalonnage-tri.rst", "tri/test-logiciel-tri.rst"], "indexentries": {"ac": [[4, "term-AC", true]], "adc": [[4, "term-ADC", true]], "burden": [[4, "term-Burden", true]], "ct": [[4, "term-CT", true]], "dc": [[4, "term-DC", true]], "dil": [[4, "term-DIL", true]], "ftdi": [[4, "term-FTDI", true]], "optocoupleur": [[4, "term-Optocoupleur", true]], "pcb": [[4, "term-PCB", true]], "pull-up": [[4, "term-Pull-up", true]], "sil": [[4, "term-SIL", true]]}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"0": [4, 13, 14, 18, 26, 33], "000": 4, "013": 4, "04": 33, "05000": 33, "05000f": 33, "05625": 33, "09": 33, "1": [1, 2, 4, 7, 8, 10, 11, 16, 18, 21, 26, 27, 28, 29, 31, 34], "10": [6, 8, 13, 14, 16, 28, 29, 33], "100": [13, 14, 16, 29], "1023": 4, "104": [13, 14, 16, 29], "110": 33, "113": 33, "116": 33, "118": 33, "12": [10, 16, 18], "120": [1, 16, 21, 29, 31], "13": [8, 16, 28, 29], "14": 16, "140": 2, "150": [16, 29], "1780": 33, "1793": 33, "1797": 33, "18": 33, "180": [1, 16, 21, 29, 31], "1804": 33, "2": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 18, 21, 23, 26, 27, 28, 29, 31, 32, 34], "20": [6, 8, 28], "200": 2, "2000": [16, 29, 33], "21": 33, "22": [16, 29], "220": 16, "2250": 33, "230": [1, 16, 19, 21, 26, 29, 31], "233": 33, "24": 33, "245": 2, "250": 2, "255": 2, "275": 33, "276": 33, "277": 33, "3": [1, 2, 4, 6, 7, 8, 10, 11, 12, 16, 17, 18, 19, 21, 23, 26, 27, 28, 29, 31, 32, 34], "300": 2, "3000": [16, 29], "31": 15, "315": 2, "32": 33, "330": [1, 21, 31], "340": 2, "345": 2, "35": [6, 8, 28], "360": [1, 2, 21, 31], "367": 33, "368": 33, "371": 33, "374": 33, "39": 16, "3x": 29, "4": [2, 4, 6, 7, 8, 16, 22, 23, 27, 28, 29, 30, 32], "400": 2, "405": 2, "433": [13, 14], "440": 2, "450": [1, 21, 31], "46": 33, "47": [16, 29], "470": [2, 16], "48": 33, "5": [1, 2, 4, 6, 7, 12, 13, 16, 19, 21, 23, 26, 27, 29, 31, 32, 33], "50": [16, 29], "510": 2, "511": 4, "53": 33, "55": 33, "56": [16, 33], "580": 2, "6": [1, 7, 13, 16, 21, 26, 27, 29, 31], "61": 33, "650": 2, "67": 33, "7": [7, 10, 11, 12, 13, 14, 18, 26, 27], "74hc": 16, "74hc138": [12, 13], "74hc4543": 16, "8": [6, 8, 28], "8013": 33, "8014": 33, "8015": 33, "82": 33, "84": 33, "868": [13, 14], "93": 33, "99": 33, "AVEC": 5, "Avec": [16, 19, 29], "Ayant": 24, "C": [1, 8, 9, 16, 17, 18, 19, 21, 22, 28, 29, 30, 31], "Ce": [1, 2, 5, 14, 16, 21, 22, 23, 26, 29, 30, 31, 32], "Ces": [1, 2, 13, 14, 16, 21, 29, 31], "Cet": [22, 26, 30, 33], "Cette": [1, 3, 6, 10, 11, 12, 13, 14, 16, 19, 21, 22, 26, 29, 30, 31, 33], "D": [9, 17, 18, 33], "De": [1, 21, 29, 31], "Des": [16, 29], "Du": [1, 21, 31], "Elle": [1, 4, 21, 31, 33], "Elles": [22, 29, 30], "En": [1, 3, 4, 8, 10, 11, 12, 13, 14, 16, 17, 21, 22, 23, 24, 28, 29, 30, 31, 32, 33], "Ici": [16, 19, 26, 29], "Il": [1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 33], "Ils": [8, 12, 13, 16, 28, 29, 33], "L": [1, 6, 8, 10, 11, 12, 14, 16, 21, 23, 26, 28, 29, 31, 32, 33], "La": [1, 4, 6, 13, 14, 16, 19, 21, 22, 24, 26, 29, 30, 31, 33], "Le": [1, 5, 6, 8, 9, 10, 11, 12, 13, 14, 19, 21, 22, 23, 24, 26, 28, 29, 30, 31, 32, 33, 34], "Les": [1, 2, 4, 5, 6, 8, 10, 11, 12, 13, 14, 16, 19, 21, 22, 24, 26, 28, 29, 30, 31, 33], "N": [13, 14, 19, 29], "Ne": [12, 13, 22, 30], "Nous": [13, 14, 26, 29], "ON": 7, "On": [4, 29, 33], "Ou": 4, "Par": [2, 17], "Pas": [22, 30], "Pour": [1, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34], "S": [16, 29], "Son": [1, 16, 21, 31], "Sur": [13, 14, 16, 19, 29, 33], "Un": [1, 4, 19, 21, 24, 26, 31], "Une": [1, 4, 8, 19, 21, 22, 26, 28, 29, 30, 31, 33], "Vous": [1, 8, 11, 12, 17, 21, 26, 28, 31], "_resistor": [16, 29], "_turn": [16, 29], "_voltag": [16, 29], "a": [1, 6, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 21, 22, 24, 26, 28, 29, 30, 31, 33, 34], "ab": [8, 28], "abaisson": 13, "abord": [23, 32], "absenc": [1, 21, 31, 33], "ab\u00eem": [1, 21, 31], "ac": [1, 4, 16, 19, 21, 29, 31], "acced": 19, "acces": [1, 9, 16, 19, 21, 29, 31], "access": 19, "accessibl": [19, 29], "accessoir": 5, "accidentel": 19, "accompagn": [16, 29, 33], "accompl": 26, "accord": [8, 28], "accru": [1, 21, 31], "actif": [2, 6, 24], "action": [22, 30], "activ": [1, 21, 22, 26, 30, 31], "adapt": [1, 5, 21, 26, 31, 33, 34], "adc": [4, 16, 29], "adhes": [6, 16, 29], "ad\u00e9quat": [8, 28], "affair": 24, "affich": [26, 33, 34], "affichag": [6, 16], "afficheur": [8, 10, 11, 12, 13, 14, 18, 20, 28], "afin": [1, 2, 21, 29, 31, 33], "agit": [16, 19, 22, 23, 29, 30, 32], "aid": [1, 8, 11, 12, 16, 17, 21, 22, 28, 30, 31], "ailet": [16, 23, 29, 32], "aill": 4, "ains": [1, 6, 9, 10, 11, 12, 13, 14, 16, 17, 21, 22, 26, 29, 30, 31, 33, 34], "air": [23, 32], "ajout": [10, 11, 12, 13, 16, 25, 29], "ajust": [1, 8, 21, 24, 28, 31, 33], "alert": [19, 29, 33], "algebr": 33, "align": [1, 4, 13, 14, 16, 19, 21, 29, 31], "aliment": [1, 2, 3, 5, 10, 11, 12, 16, 17, 20, 21, 22, 24, 26, 30, 31, 33, 34], "allant": 6, "aller": [16, 29, 33], "allez": 26, "allon": [1, 21, 26, 31], "allum": 2, "allumet": [16, 29], "alor": [1, 4, 10, 12, 13, 14, 21, 31, 33], "altern": [1, 4, 16, 17, 21, 26, 29, 31, 34], "aluminium": [23, 32], "ambi": [23, 32], "amort": 5, "amor\u00e7ag": [1, 21, 31], "amplif": [16, 19, 29], "amp\u00e8remetr": [2, 4, 29, 33], "am\u00e9lior": [9, 29], "an": 4, "analog": [4, 26, 33, 34], "ant": [13, 14], "anten": [6, 13, 14, 16, 19], "antistat": [19, 29], "app": 26, "appareil": [1, 5, 16, 21, 24, 29, 31], "apparit": 2, "appartient": [1, 21, 31], "appel": [1, 4, 21, 31], "applic": 6, "appliqu": [16, 22, 29, 30, 33], "appliquent": [16, 29], "apport": 2, "approch": [1, 21, 31], "appropri": [8, 13, 24, 26, 28, 33], "approx": [16, 29], "apres": [7, 16, 17, 19, 26, 27, 29, 33, 34], "arbitrair": 33, "arc": [22, 30], "arduino": [4, 9, 26, 29, 33, 34], "arrier": 3, "arr\u00eat": [1, 21, 31], "ascend": [23, 32], "aspect": [9, 26, 29, 34], "aspir": [23, 32], "assembl": [1, 7, 12, 16, 19, 21, 22, 26, 27, 29, 30, 31], "assemblag": [10, 11, 13, 14, 16], "assez": [16, 29], "assign": [10, 12, 25], "assoc": [11, 12, 13], "associ": [3, 10, 12, 16, 25, 29, 33], "assur": [1, 2, 4, 8, 11, 12, 13, 14, 16, 19, 20, 21, 23, 26, 28, 31, 32, 33], "atmega328": 29, "atmega328p": [6, 16], "atmel": [26, 34], "atteint": [24, 33], "attent": [0, 1, 6, 21, 31], "aucun": [1, 2, 10, 12, 14, 16, 19, 21, 24, 26, 29, 31, 33, 34], "augment": [1, 16, 19, 21, 23, 29, 31, 32, 33], "auquel": [22, 30, 33], "aur": [15, 22, 24, 26, 29, 30, 33], "auron": [2, 16, 26, 29], "auss": [1, 4, 5, 8, 10, 11, 12, 13, 14, 16, 21, 25, 28, 29, 31, 33], "aut": [16, 19, 29], "autoconsomm": 5, "automat": [1, 21, 31], "autonom": 24, "autour": [24, 33], "autr": [1, 3, 4, 6, 8, 10, 11, 12, 13, 14, 15, 16, 19, 21, 24, 26, 28, 29, 31, 33, 34], "avanc": [24, 26], "avant": [1, 3, 6, 16, 17, 19, 20, 21, 26, 29, 31, 33], "avert": [1, 21, 31], "avoir": [1, 4, 6, 7, 10, 13, 14, 19, 21, 23, 26, 27, 29, 31, 32, 33, 34], "avon": [16, 29], "b": [9, 17, 18], "banc": [26, 34], "band": [16, 29], "bas": [2, 6, 16, 23, 29, 32], "bass": [1, 2, 4, 21, 31], "beaucoup": [1, 21, 26, 31], "belgiqu": 29, "besoin": [1, 2, 10, 14, 21, 22, 26, 30, 31], "bien": [1, 2, 5, 6, 9, 16, 17, 19, 21, 23, 26, 29, 31, 32], "biphas": 5, "bla": 0, "blanc": [2, 13, 14], "blanch": [16, 29], "bleu": 2, "bleus": [6, 16, 29], "bloc": 26, "board": 4, "bobin": [22, 30], "bois": 6, "boiti": [8, 28], "bon": [1, 8, 16, 19, 21, 26, 28, 29, 31], "bord": [23, 26, 29, 32], "borni": [16, 29, 33], "bouilloir": 33, "bouton": [2, 7, 8, 27, 28, 29], "bo\u00eeti": [1, 2, 4, 6, 7, 16, 21, 22, 27, 29, 30, 31], "branch": [5, 8, 16, 26, 28, 33, 34], "broch": [1, 4, 10, 11, 12, 13, 14, 16, 19, 21, 26, 29, 31], "bruit": [1, 4, 21, 31], "burden": [4, 16, 29], "burst": [1, 21, 31], "but": 4, "c1": [16, 29], "c10": 29, "c11": 29, "c2": [16, 29], "c3": 16, "c4": [16, 29], "c5": 16, "c6": [16, 29], "c7": 16, "c8": [13, 14, 18], "c9": [13, 14, 18, 29], "ca": [1, 19, 21, 26, 31, 34], "cach": [23, 32], "cal_ct1_v_met": 24, "cal_ct2_v_ct1": 24, "calcul": [16, 29, 33], "canal": [24, 26, 34], "capac": [1, 13, 14, 21, 31], "capacit": [22, 30], "capital": [1, 21, 31], "capteur": [2, 4, 16, 19, 26, 29, 34], "captur": [26, 34], "car": [12, 13, 16, 24], "caracter": [26, 34], "caract\u00e9rist": [1, 21, 31, 33], "carbonis": [22, 30], "cart": [2, 3, 4, 6, 7, 10, 11, 12, 13, 14, 16, 19, 20, 22, 24, 27, 30, 34], "cas": [1, 2, 4, 6, 13, 16, 19, 21, 22, 23, 26, 29, 30, 31, 32], "cat\u00e9gor": [1, 21, 31], "caution": 0, "cavali": 26, "cc": [26, 34], "cd4543": [12, 13], "cec": [7, 27, 33], "cel": [1, 3, 13, 16, 19, 21, 22, 26, 29, 30, 31, 33, 34], "celui": [1, 8, 16, 21, 28, 29, 31, 33], "centimetr": 6, "central": [1, 10, 11, 12, 13, 14, 16, 21, 31], "cepend": [6, 7, 8, 24, 26, 27, 28, 29], "cercl": [1, 13, 14, 21, 31], "certain": [1, 6, 13, 14, 15, 16, 19, 21, 24, 29, 31, 33], "ceux": [16, 22, 30], "chacun": [1, 2, 10, 11, 12, 13, 14, 21, 23, 29, 31, 32, 33], "chaleur": [1, 4, 16, 21, 23, 29, 31, 32], "champ": [22, 30], "chang": [1, 21, 24, 31], "chapitr": 6, "chaqu": [1, 2, 3, 6, 7, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34], "charg": [1, 4, 5, 10, 11, 13, 14, 16, 21, 22, 26, 29, 30, 31, 34], "chaud": [1, 19, 21, 23, 29, 31, 32], "chauff": [1, 5, 16, 21, 22, 29, 30, 31], "chauffag": [1, 5, 21, 22, 30, 31], "chemin": 24, "cher": 29, "chiffr": [16, 26], "chois": [1, 21, 26, 31], "choix": [22, 30], "chos": 33, "ci": [1, 8, 16, 19, 21, 26, 28, 29, 31], "cinq": [1, 21, 31], "circuit": [1, 3, 4, 6, 9, 12, 13, 14, 19, 20, 21, 22, 26, 30, 31], "circul": [4, 24], "circulair": [23, 32], "clair": [1, 4, 21, 31], "classiqu": [4, 5, 8, 28, 33], "clavi": [26, 34], "clic": [1, 21, 31], "cliqu": 26, "cl\u00e9": 6, "cmos": 16, "cn1": [11, 12, 13, 14, 17, 18], "cod": 26, "coeur": 16, "coin": [16, 29], "coll": [6, 22, 30], "colleret": [23, 32], "colon": [6, 8, 23, 28, 32], "com": 26, "combinaison": [16, 26], "comm": [1, 6, 7, 12, 16, 19, 21, 22, 23, 24, 26, 27, 29, 30, 31, 32, 33], "command": [1, 2, 10, 11, 12, 13, 14, 17, 21, 22, 30, 31], "commenc": [1, 17, 21, 31], "comment": [12, 26], "commod": [16, 29], "commun": [4, 9, 17], "communiqu": 16, "commut": [1, 21, 22, 24, 26, 30, 31], "compatibil": [1, 21, 22, 30, 31], "compil": 26, "complet": [1, 6, 9, 21, 22, 24, 26, 30, 31, 34], "complex": 4, "comport": [1, 10, 21, 31], "compos": [2, 3, 4, 6, 9, 17, 19, 20, 22, 26, 30, 33], "composent": 16, "compr": [7, 27, 33], "comprend": 33, "compt": [1, 21, 31], "compteur": [1, 21, 24, 31], "comp\u00e9tent": [1, 19, 21, 29, 31], "concept": [1, 4, 21, 31], "concern": [11, 13, 14], "concernent": [16, 29], "condens": [3, 6, 9, 13, 14], "conduct": [1, 21, 22, 30, 31], "conducteur": [1, 4, 21, 22, 30, 31], "conduir": [1, 21, 22, 30, 31], "conduit": [1, 21, 31], "confect": [6, 7, 27], "configur": [3, 5, 8, 9, 15, 16, 17, 18, 26, 28, 29], "confirm": 19, "conform": [8, 28], "connect": [11, 12, 13, 14, 19, 23, 26, 32], "connecteur": [3, 6, 9, 10, 17, 19, 26, 33], "connexion": [13, 14, 16, 19, 24, 26, 29], "connu": [1, 16, 21, 29, 31], "conseil": [1, 21, 31], "consist": [1, 21, 24, 31], "consomm": [5, 24, 26, 34], "const": 33, "constexpr": 33, "constitu": 33, "construct": [1, 19, 21, 29, 31], "construit": [1, 21, 31], "consult": 26, "cons\u00e9quent": 33, "contact": [1, 4, 19, 21, 22, 23, 30, 31, 32], "contacteur": [22, 30], "conten": [22, 30], "contenu": [1, 2, 21, 26, 31], "contiendr": 16, "contient": [1, 21, 31, 33], "continu": [1, 4, 16, 19, 21, 26, 29, 31], "contr": [1, 4, 8, 16, 21, 28, 31], "contraint": [8, 23, 28, 32], "contrair": [22, 30, 33], "control": [1, 21, 31], "contr\u00f4l": [4, 8, 13, 14, 16, 22, 28, 30], "conven": [1, 16, 21, 26, 29, 31], "convent": 2, "convert": 4, "convertisseur": [4, 33], "conviendr": [2, 26, 29, 33], "convient": [8, 16, 28, 29, 33], "convivial": 26, "con\u00e7u": [22, 26, 30], "corp": 16, "correct": [1, 8, 11, 12, 13, 14, 16, 19, 20, 21, 23, 24, 26, 28, 29, 31, 32, 33], "correspond": [11, 12, 13, 14, 16, 26, 29, 33], "correspondent": [10, 11, 12, 13, 14], "correspondr": [4, 5, 16, 26, 29, 33], "coss": [2, 6], "couch": [1, 11, 12, 13, 14, 16, 21, 29, 31], "couleur": 2, "coup": [1, 6, 16, 17, 19, 20, 21, 22, 29, 30, 31], "cour": [1, 2, 4, 16, 19, 21, 22, 23, 24, 26, 29, 30, 31, 32, 33, 34], "courb": [16, 29], "court": [1, 2, 13, 14, 20, 21, 31], "couteau": 16, "couvercl": 2, "creus": [22, 30], "croqu": [20, 24, 34], "crucial": [1, 6, 20, 21, 31], "cruciform": 6, "cr\u00e9": [22, 23, 30, 32], "ct": [2, 3, 4, 16, 26, 29, 33, 34], "ct1": [24, 26, 34], "ct2": [24, 26, 34], "ct3": 34, "current": 4, "cycl": [1, 21, 26, 31, 34], "cylindr": [16, 29], "c\u00e2bl": [6, 7, 10, 11, 12, 13, 14, 24, 26, 27, 33], "c\u00e2blag": [6, 16, 24, 26, 29, 33, 34], "c\u00e9ram": [3, 9], "c\u00f4t": [1, 8, 13, 14, 19, 21, 23, 28, 29, 31, 32], "c\u0153ur": 24, "d10": [10, 12, 25], "d11": [10, 12, 25], "d12": [10, 12, 25], "d13": [10, 12, 13, 25, 29], "d2": [10, 12, 13, 25], "d3": [10, 11, 12, 13, 14, 29], "d4": [10, 11, 12, 13, 14], "d5": [10, 12, 13, 14], "d9": [10, 12, 14], "dan": [1, 2, 4, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33], "dang": 0, "dc": [4, 19, 29], "deb": 33, "decr": [8, 10, 13, 14, 28], "defin": 26, "degr": [16, 19, 29], "dem": [1, 21, 31], "demand": 10, "dep": [1, 17, 21, 29, 31], "derni": [1, 16, 20, 21, 29, 31], "descend": [1, 21, 31], "dessoud": 4, "dessous": [1, 16, 19, 21, 26, 29, 31], "dessus": [1, 2, 8, 16, 21, 28, 29, 31], "destin": [1, 21, 26, 31], "deux": [1, 4, 6, 8, 10, 11, 12, 13, 14, 16, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34], "deuxiem": [10, 11, 12, 13, 14], "dev": [11, 12], "devic": 4, "devoir": 26, "devr": [1, 8, 13, 14, 17, 19, 21, 23, 24, 26, 28, 29, 31, 32, 33, 34], "devront": [2, 14, 19, 29], "diagnostiqu": [16, 29], "diametr": [8, 23, 28, 32], "difficil": [16, 29], "diff\u00e9rent": [13, 14, 22, 30], "digit": [8, 28], "digital": 4, "dil": [4, 9], "dimens": [8, 23, 28, 32], "diminu": [1, 21, 31, 33], "dimmer": [1, 21, 31], "diod": [3, 6, 9], "direct": [1, 2, 4, 6, 10, 14, 21, 22, 30, 31], "disjoncteur": 33, "disponibl": [12, 13, 14, 16, 24, 26, 34], "dispos": [1, 10, 11, 12, 13, 14, 21, 26, 31], "disposit": [1, 16, 21, 22, 26, 30, 31], "dissip": [1, 2, 6, 7, 21, 27, 31], "dist": 16, "distanc": [1, 13, 14, 21, 31], "distinct": [4, 16], "distingu": [1, 21, 31], "distribu": [1, 21, 31], "diver": [6, 19], "divers": [22, 30], "diverted": 24, "document": [6, 15], "doit": [1, 4, 5, 8, 12, 13, 14, 16, 19, 21, 23, 24, 26, 28, 29, 31, 32, 33, 34], "doivent": [11, 12, 13, 14, 16, 19, 22, 29, 30, 33], "domain": 26, "dommag": [19, 29], "don": [16, 23, 26, 29, 32, 33], "donc": [2, 3, 6, 16, 17, 29, 33], "dont": [1, 2, 21, 31], "dossi": 26, "dot": [1, 21, 23, 31, 32], "doubl": [4, 16, 29], "douc": [19, 29], "douill": 6, "dout": 33, "droit": [2, 26, 34], "dual": [4, 19, 29], "due": [1, 21, 31], "dur": [1, 21, 31], "dysfonction": [22, 30], "d\u00e9bogag": 26, "d\u00e9branch": 33, "d\u00e9but": 26, "d\u00e9cal": 5, "d\u00e9charg": 6, "d\u00e9clench": [1, 21, 31], "d\u00e9clencheur": [1, 21, 31], "d\u00e9compress": 26, "d\u00e9coupag": [22, 30], "d\u00e9couvert": 26, "d\u00e9couvr": 16, "d\u00e9crit": 2, "d\u00e9c\u00e2bl": 33, "d\u00e9di": 16, "d\u00e9faill": [1, 4, 16, 21, 31], "d\u00e9faut": [2, 24], "d\u00e9fectu": 29, "d\u00e9fin": 33, "d\u00e9form": [16, 29], "d\u00e9j\u00e0": [26, 34], "d\u00e9licat": [1, 13, 14, 19, 21, 29, 31], "d\u00e9livr": [1, 21, 31], "d\u00e9nud": 2, "d\u00e9pass": [1, 21, 31], "d\u00e9plac": [26, 33, 34], "d\u00e9pos": 2, "d\u00e9sactiv": [22, 30], "d\u00e9sign": 4, "d\u00e9sorm": [16, 29], "d\u00e9tail": 16, "d\u00e9termin": 24, "d\u00e9tourn": 16, "d\u00e9trompeur": [16, 29], "d\u00e9truit": [1, 21, 31], "d\u00e9velopp": 26, "d\u00e9vi": [24, 33], "d\u00fb": 5, "d\u00fbment": [1, 21, 31], "e": [9, 17, 18], "eau": [1, 5, 16, 21, 22, 29, 30, 31], "ec": 5, "effect": 33, "effectu": [7, 8, 15, 16, 17, 19, 20, 26, 27, 28, 29], "effet": [1, 3, 10, 11, 12, 13, 14, 17, 21, 22, 23, 24, 30, 31, 32, 33], "efficac": [16, 29], "elles": [1, 6, 9, 19, 21, 29, 31], "embas": [16, 19, 29], "emplac": [1, 10, 11, 12, 13, 14, 16, 21, 25, 31], "emploi": [1, 21, 26, 31], "emp\u00each": [16, 29], "encoch": [16, 19, 29], "encor": [1, 21, 31], "endommag": [1, 4, 21, 31], "endroit": [8, 16, 19, 28, 29], "ened": 5, "enfin": 6, "enfonc": [19, 29], "engendr": 29, "enregistr": 16, "ensembl": [4, 10, 11, 12, 16, 22, 24, 25, 29, 30, 33], "ensuit": [1, 16, 17, 21, 24, 29, 31], "entam": [1, 21, 31], "entendent": 29, "entier": [22, 23, 30, 32], "entrant": [24, 33], "entrav": [8, 28], "entra\u00een": [1, 21, 31], "entre": [1, 4, 6, 16, 17, 19, 21, 22, 24, 26, 29, 30, 31], "entrer": [16, 19, 29], "entretois": [22, 30], "entr\u00e9": [4, 9, 16, 26, 29, 34], "environ": [1, 2, 16, 19, 21, 26, 29, 31], "envoi": [1, 2, 21, 26, 31], "errat": [22, 30], "erreur": [1, 21, 31], "error": 0, "espac": [1, 16, 21, 29, 31], "essentiel": [1, 6, 9, 21, 22, 29, 30, 31], "etc": [8, 28], "europ\u00e9en": 29, "except": [19, 29], "excess": 4, "exclus": 5, "exc\u00e9dent": 5, "exc\u00e9dentair": [24, 33], "exempl": [2, 3, 4, 16, 17, 23, 26, 29, 32, 33], "exhaust": 3, "exigent": [1, 21, 31], "exist": [5, 9, 16, 29], "expliqu": [12, 16], "exploit": 26, "exploitent": [1, 21, 31], "expuls": [23, 32], "exp\u00e9rient": [1, 21, 31], "exp\u00e9riment": 26, "extens": [24, 26], "extern": [23, 32], "extrait": 16, "extrem": [1, 16, 19, 21, 26, 29, 31], "ext\u00e9rieur": [1, 21, 31], "ex\u00e9cu": [26, 34], "ex\u00e9cut": [24, 26, 33, 34], "f_": 33, "fabric": 26, "fabriqu": [8, 26, 28], "fac": [1, 3, 21, 23, 31, 32], "facil": [1, 4, 9, 16, 17, 19, 21, 26, 29, 31], "facilit": [1, 4, 6, 17, 21, 29, 31], "fair": [1, 2, 6, 8, 10, 11, 12, 16, 19, 21, 23, 25, 28, 29, 31, 32, 33], "fais": [19, 29], "fait": [1, 3, 5, 10, 11, 12, 19, 21, 23, 25, 29, 31, 32], "fass": [1, 21, 31], "faudr": [3, 10, 12, 14, 16, 26, 29, 33], "faut": [6, 8, 16, 28, 33], "fa\u00e7ad": [8, 28], "fa\u00e7on": [1, 21, 29, 31], "fen\u00eatr": [26, 34], "fer": [1, 6, 21, 24, 31], "ferm": [1, 2, 19, 21, 22, 29, 30, 31], "fermetur": 2, "fiabl": [1, 21, 22, 24, 30, 31, 33], "fichi": 26, "figur": [16, 29], "fil": [1, 4, 6, 7, 10, 11, 12, 13, 14, 21, 24, 26, 27, 29, 31], "filair": 16, "filtr": 16, "fin": [1, 4, 6, 16, 21, 24, 31, 33], "final": [6, 23, 32, 33], "finalis": [1, 21, 31], "fir": [1, 21, 31], "fix": [1, 2, 4, 8, 16, 21, 22, 28, 29, 30, 31], "fixat": [7, 8, 23, 27, 28, 32], "flamm": [8, 28], "flexibil": [9, 29], "float": 33, "flott": 4, "flux": [23, 24, 32, 33], "foi": 5, "fois": [1, 3, 8, 16, 19, 21, 23, 26, 28, 29, 31, 32], "fonction": [3, 5, 8, 10, 11, 12, 13, 14, 16, 19, 20, 23, 24, 26, 28, 29, 32, 34], "fonctionnal": [16, 26], "fonctionnent": [1, 9, 21, 29, 31], "fond": [8, 22, 28, 30], "fondr": [10, 11, 12, 25], "forc": [24, 33], "foret": [6, 8, 23, 28, 32], "form": [1, 13, 14, 16, 21, 24, 26, 29, 31, 33, 34], "format": 3, "formul": [16, 29, 33], "formulair": 10, "fort": [1, 2, 3, 21, 31], "fourn": [1, 8, 10, 11, 12, 13, 14, 16, 19, 21, 22, 24, 28, 29, 30, 31, 34], "frac": [16, 29], "frais": [6, 8, 23, 28, 32], "franc": [1, 21, 29, 31], "froid": [23, 32], "fr\u00e9quenc": [13, 14, 16], "fs1": [16, 29], "fs3": 29, "ftdi": [3, 4, 16, 26, 29], "fusibl": [3, 6, 9, 19], "futur": [4, 8, 28], "g": [26, 34], "gabar": [23, 32], "gain": 6, "galvan": [4, 22, 30], "gat": [1, 21, 31], "gauch": 2, "gen": [24, 33], "ger": [1, 5, 21, 31], "gestion": [1, 21, 31], "gnd": [10, 11, 12, 13, 14, 26, 29], "goutt": [16, 29], "gradat": [1, 21, 31], "grand": [1, 2, 16, 21, 22, 29, 30, 31, 33], "graphiqu": 5, "gratuit": 5, "grid": 24, "grill": [16, 29], "gros": 6, "gr\u00e2c": [1, 5, 21, 31], "guid": [8, 28], "g\u00e2chet": [1, 21, 31], "g\u00e9ner": [1, 21, 22, 24, 30, 31, 33], "g\u00e9n\u00e9ral": [1, 4, 6, 16, 21, 22, 29, 30, 31], "habituel": [1, 16, 21, 31], "hardwar": 16, "harmon": [1, 21, 31], "haut": [2, 3, 4, 6, 8, 16, 17, 22, 23, 28, 29, 30, 32], "hauteur": [1, 8, 21, 28, 31], "head": [4, 29], "heur": [22, 30], "high": 4, "hint": 0, "hor": 5, "horair": 5, "huit": 16, "i_": [16, 29], "ic1": [6, 16, 19, 26, 34], "ic2": [6, 16, 19], "ic3": [6, 16, 17, 18, 26], "ic4": [6, 16, 17, 18, 26], "ic\u00f4n": [26, 34], "ide": [26, 33, 34], "ident": [26, 34], "identifi": 29, "id\u00e9al": [1, 19, 21, 23, 31, 32], "illustr": [1, 21, 31], "imag": [19, 29], "imm\u00e9diat": [1, 21, 31], "imper": [8, 23, 26, 28, 32, 33], "implant": [2, 5, 8, 28], "import": [0, 1, 5, 6, 7, 8, 16, 19, 21, 24, 26, 27, 28, 29, 31, 33, 34], "impossibl": 16, "imprim": [1, 3, 4, 6, 13, 14, 16, 21, 22, 23, 29, 30, 31, 32], "impr\u00e9cis": [23, 32], "impuls": [24, 33], "in": [4, 19, 29], "incandescent": [1, 21, 22, 30, 31], "incend": [1, 21, 31], "inclur": [13, 14], "inclus": 16, "inconnu": [16, 29], "inconv\u00e9nient": [1, 21, 29, 31], "incorrect": 29, "indiff\u00e9rent": [10, 11, 12, 13, 14], "indiqu": [1, 2, 3, 6, 11, 12, 13, 14, 15, 16, 19, 21, 22, 23, 24, 26, 29, 30, 31, 32, 33], "indispens": [5, 12], "individuel": [1, 21, 31], "induct": [3, 9, 17, 22, 30], "industriel": [8, 28], "ind\u00e9pend": [1, 21, 31], "inform": 6, "inf\u00e9rieur": [1, 8, 16, 21, 23, 28, 29, 31, 32], "initial": [16, 29], "ino": [24, 26, 34], "inscrit": 33, "inser": [3, 4, 6, 19, 29], "install": [4, 5, 8, 10, 12, 13, 14, 16, 20, 23, 24, 26, 28, 29, 32, 33], "instantan": 33, "insuffis": [22, 30], "integr": [3, 4, 6, 9, 12, 13, 19, 24, 26], "intens": [1, 4, 16, 21, 29, 31], "interfac": 4, "interfacing": 4, "interf\u00e9rent": [22, 30], "interm\u00e9diair": [8, 19, 28, 29], "international": 4, "internet": [10, 26], "interrompt": [1, 21, 22, 30, 31], "interrupteur": [1, 21, 31], "introduct": 4, "introduir": 29, "introduit": [1, 21, 31], "int\u00e9gral": [8, 28], "int\u00e9ress": [26, 34], "int\u00e9rieur": [19, 29], "int\u00e9r\u00eat": 33, "inutilis": [1, 21, 31], "inventair": [9, 18], "invers": [1, 16, 21, 26, 29, 31, 34], "io": 16, "isol": [1, 2, 4, 21, 22, 30, 31], "j1": [11, 12, 16], "j14": [11, 12], "j15": [13, 14], "j16": [10, 12, 25], "j17": [10, 12, 25], "j18": [10, 12, 25], "j19": [10, 12, 25], "j20": [10, 12, 25], "j5": 16, "j6": 14, "j8": 14, "jack": [7, 8, 27, 28], "jam": [19, 29, 33], "jeu": [13, 16, 29], "joint": 29, "jour": [4, 22, 30], "judici": [17, 26, 33], "jump": [3, 10, 11, 12, 13, 14, 25], "jumper": [10, 17, 25], "jusqu": [1, 16, 21, 31, 33], "just": [29, 33], "kit": [2, 10, 11, 12, 13, 14, 16], "kw": [16, 23, 26, 29, 32, 34], "k\u03c9": [16, 29], "l1": [29, 33], "l2": [16, 17], "laiss": [1, 21, 22, 23, 30, 31, 32], "lamp": [1, 21, 22, 30, 31], "laquel": [1, 21, 31], "larg": 4, "led": [8, 10, 11, 12, 13, 14, 28], "leg": [23, 32], "levi": [22, 30], "liaison": [1, 16, 21, 31], "libr": [5, 26], "lien": 26, "lign": [1, 4, 16, 19, 21, 26, 29, 31, 34], "lin": [4, 19, 29], "ling": [1, 21, 31], "linux": 26, "lir": [16, 29], "list": [2, 3, 8, 16, 28], "livr": 16, "local": [5, 13], "log": 33, "logiciel": [9, 20, 24, 33], "long": [2, 23, 32], "longu": [16, 29], "longueur": [1, 16, 21, 29, 31], "lor": [1, 3, 4, 16, 19, 21, 23, 24, 26, 29, 31, 32, 34], "lorsqu": [1, 3, 5, 16, 21, 22, 24, 26, 29, 30, 31, 33, 34], "loup": [17, 26, 29, 34], "low": 4, "lumi": [1, 21, 31], "lumin": [1, 21, 31], "luminos": [1, 16, 21, 31], "l\u00e9ger": [1, 16, 19, 21, 29, 31], "m3": [8, 22, 28, 30], "m4": [8, 28], "mA": [16, 29], "macos": 26, "magnet": [22, 30], "mainten": [4, 16, 19, 20, 26, 29, 33, 34], "maintenu": [1, 21, 31], "maintien": 3, "maison": 16, "major": 6, "mal": [1, 21, 31], "malheur": 16, "mani": [1, 8, 9, 16, 19, 21, 22, 24, 28, 29, 30, 31, 33], "manipul": [6, 33], "march": [8, 24, 28], "marg": [23, 32], "marqu": [1, 8, 13, 14, 16, 21, 28, 29, 31, 33], "marquag": [16, 26, 29], "mass": [2, 10, 11, 12, 13, 14, 16, 19, 26, 29], "mat\u00e9riel": [24, 26, 33], "mauv": [19, 29], "maximal": [16, 29], "mc": 33, "meilleur": [16, 29], "mer": [2, 3, 6, 7, 10, 13, 14, 16, 20, 26, 27, 34], "messag": 26, "mesur": [2, 4, 16, 19, 20, 24, 29], "mettr": [6, 16, 19, 29, 33], "mhz": [13, 14], "microcontr\u00f4leur": [4, 10, 11, 12, 13, 14, 16, 33], "milieu": [19, 23, 32], "millimetr": 6, "mineur": [9, 29], "minimis": [2, 19, 29], "minimum": 6, "minsampleset": 33, "minut": [19, 29], "mis": [1, 4, 7, 13, 14, 19, 20, 21, 27, 29, 31], "mk2": [5, 10, 11, 12, 13, 14], "mk2pvrout": [6, 24], "mm": [1, 2, 6, 8, 21, 23, 28, 31, 32], "mm\u00b2": [1, 21, 31], "mobil": [1, 21, 31], "mod": [8, 13, 14, 23, 28, 32], "model": [1, 21, 31, 33], "modif": [10, 12, 14, 26], "modifi": [24, 33], "modul": [1, 4, 5, 9, 17, 18, 21, 29, 31], "moin": [1, 17, 19, 21, 29, 31], "moiti": [19, 29], "molex": 9, "moment": [1, 5, 12, 13, 19, 21, 29, 31], "moniteur": 33, "monophas": [5, 6, 7, 8, 28, 29, 33], "mont": [1, 8, 21, 23, 24, 26, 28, 31, 32], "montag": [1, 4, 6, 13, 14, 21, 29, 31], "montr": [1, 21, 31, 33], "montrent": [1, 5, 21, 31], "morceau": [1, 16, 20, 21, 29, 31], "moteur": [22, 30], "mouv": [1, 21, 31], "moyen": [29, 33], "multifonct": 6, "multimetr": [6, 19, 29], "multipl": 2, "multipris": [1, 21, 31], "m\u00e9can": [1, 21, 31], "m\u00e9plat": [13, 14, 16], "m\u00e9tal": [6, 16, 29], "m\u00e9tall": [16, 29], "m\u00e9thod": [1, 8, 21, 28, 31], "m\u00eam": [1, 8, 9, 10, 11, 12, 13, 14, 16, 19, 21, 24, 26, 28, 29, 31, 33], "m\u03c9": 29, "napp": [17, 18], "nativ": [10, 11, 12, 13, 14], "natur": [22, 30], "naturel": [23, 32], "net": [22, 29, 30], "nf": [13, 14, 16, 29], "ni": 33, "niveau": [1, 16, 19, 21, 29, 31], "no_of_phas": 33, "noir": [6, 16, 26, 29], "nom": [1, 21, 26, 31], "nombr": [8, 10, 14, 16, 23, 28, 29, 32], "nombreux": [26, 29], "nominal": [1, 21, 31], "nomm": [1, 21, 26, 31], "non": [1, 3, 6, 10, 12, 16, 21, 25, 26, 31, 33], "norm": [8, 28], "not": [16, 26, 29], "notabl": [19, 29], "notr": [4, 10, 16, 29], "nouveau": [19, 29, 33], "nouvel": [9, 24, 29], "nsytbs24198": [8, 28], "nsytbs29248": [8, 28], "numer": 4, "num\u00e9ros": 33, "n\u00e9cessair": [1, 2, 10, 11, 12, 13, 14, 16, 21, 23, 24, 25, 26, 29, 31, 32, 33, 34], "n\u00e9cessit": [1, 6, 10, 11, 12, 13, 14, 16, 21, 22, 24, 29, 30, 31, 33], "n\u00e9cessitent": [1, 21, 31], "oblong": [8, 28], "obten": [16, 29], "obtenu": 24, "off": 7, "offre": [1, 9, 19, 21, 22, 26, 29, 30, 31], "offrent": [16, 22, 29, 30], "ofsampleset": 33, "ohmmetr": 6, "onde": [1, 16, 21, 26, 29, 31, 34], "oper": [1, 15, 16, 17, 19, 21, 29, 31, 33], "oppos": [16, 29], "opposit": [16, 29], "optimal": [22, 30], "optimis": 5, "option": [10, 11, 12, 13, 16], "optionnel": 6, "optiqu": [24, 33], "optocoupleur": 4, "op\u00e9rationnel": [16, 19, 26, 29], "orang": [6, 16, 29], "ordin": 26, "ordre": [1, 6, 7, 9, 15, 17, 21, 27, 31], "orient": [5, 6, 16, 29], "origin": 16, "original": [16, 29], "oscill": [3, 6, 9], "oubl": [13, 14, 19, 29], "ouvert": [2, 22, 26, 30, 34], "ouvertur": 2, "ouvr": [2, 4, 26], "over": 33, "o\u00f9": [1, 5, 8, 13, 19, 21, 22, 28, 30, 31, 33], "p": [29, 33], "p1": 33, "p2": 33, "p3": 33, "p_": [16, 29], "pack": [19, 29], "packag": 4, "pag": [24, 26, 34], "pair": [1, 21, 31], "pan": 6, "parametr": 24, "parasit": 2, "parf": [1, 21, 31], "parfait": [1, 21, 23, 31, 32, 33], "parm": [16, 29], "part": [4, 10, 11, 12, 13, 14, 15, 16, 20, 24, 25, 29, 33], "particuli": [1, 2, 4, 5, 21, 31], "partiel": [22, 30], "pass": [1, 2, 19, 20, 21, 22, 24, 29, 30, 31, 33], "passag": [1, 21, 22, 30, 31], "passif": [2, 6, 16, 29], "patt": [1, 6, 17, 20, 21, 29, 31], "pay": 29, "paysag": [8, 23, 28, 32], "pc": 26, "pcb": [1, 4, 6, 7, 9, 16, 19, 21, 26, 27, 29, 31, 34], "pe": 29, "pend": [1, 21, 26, 31, 33, 34], "perc": [8, 23, 28, 32], "perceux": [6, 8, 23, 28, 32], "perform": 24, "permanent": [5, 10, 11, 12, 13, 14], "permet": [1, 4, 6, 13, 14, 16, 21, 22, 30, 31], "permettent": 2, "permettr": [1, 5, 16, 21, 26, 29, 31], "permettront": [2, 6, 16, 29], "person": 2, "pertinent": [6, 24, 33], "per\u00e7ag": [6, 7, 27], "pet": [16, 24, 29], "petit": [16, 17, 23, 29, 32], "peu": [1, 5, 8, 21, 28, 31, 33], "peut": [1, 3, 5, 10, 13, 14, 16, 17, 19, 21, 22, 24, 26, 29, 30, 31, 33, 34], "peuvent": [1, 8, 9, 13, 14, 16, 19, 21, 22, 28, 29, 30, 31], "pf": [16, 29], "phas": [1, 21, 29, 31, 33], "photo": [16, 19], "photocoupleur": 4, "physiqu": [16, 29], "ph\u00e9nomen": [1, 21, 31], "pic": 5, "piec": [23, 32], "pilot": 26, "pilotag": 16, "pin": [4, 12, 13, 14, 16, 29], "pin_saving_hardwar": 26, "pinc": [1, 2, 4, 6, 17, 21, 29, 31, 33], "pincent": [1, 21, 31], "pist": [4, 16, 29], "plac": [1, 4, 7, 8, 12, 13, 14, 16, 19, 20, 21, 23, 24, 27, 28, 29, 31, 32, 33], "plag": [4, 16, 29], "plan": [1, 16, 21, 29, 31], "planch": 16, "plaqu": [1, 4, 8, 21, 28, 31], "plastiqu": [8, 16, 28], "plat": [1, 6, 21, 31], "platformio": 26, "plein": [22, 23, 30, 32], "pli": [1, 19, 21, 29, 31], "plot": [8, 28], "plupart": [24, 26, 29, 33], "plus": [1, 2, 6, 7, 8, 9, 10, 13, 14, 16, 17, 19, 21, 22, 23, 26, 27, 28, 29, 30, 31, 32, 34], "plusieur": [1, 2, 4, 6, 9, 13, 14, 16, 19, 21, 26, 29, 31, 33, 34], "point": [8, 19, 20, 24, 26, 28, 29], "pointag": [8, 28], "polar": [11, 12, 13, 14], "polaris": [3, 6, 13, 14, 15, 16, 29], "pont": [3, 6, 9, 10, 17, 25], "port": [9, 24, 26, 34], "porteur": 24, "portion": [1, 21, 31], "portr": [8, 23, 28, 32], "pos": [1, 21, 31], "posit": [10, 11, 12, 13, 14, 19, 22, 29, 30], "position": [1, 8, 11, 12, 13, 14, 16, 20, 21, 23, 26, 28, 31, 32], "possed": 33, "possibl": [1, 2, 6, 7, 8, 16, 21, 22, 23, 27, 28, 29, 30, 31, 32, 33], "poss\u00e8dent": [16, 22, 29, 30], "potentiel": [22, 30, 33], "pourquoi": [22, 30], "pourr": [1, 4, 10, 11, 12, 13, 14, 16, 21, 22, 29, 30, 31], "poursuivr": [19, 29], "poussi": [8, 28], "pouv": [1, 8, 10, 14, 19, 21, 26, 28, 31], "pouvon": 26, "pow": [19, 24], "powercal": [24, 33], "powercal_diverted": 24, "powercal_grid": 24, "pratiqu": [6, 7, 9, 17, 19, 24, 27, 29], "prec": [1, 4, 6, 16, 21, 24, 29, 31, 33], "premi": [1, 3, 10, 12, 14, 16, 19, 21, 24, 29, 31], "pren": [1, 21, 31], "prend": 2, "prendr": [16, 33], "presqu": [26, 34], "press": [1, 7, 8, 21, 27, 28, 31], "preuv": [1, 21, 31], "principal": [1, 13, 14, 20, 21, 22, 30, 31, 33], "printed": 4, "pris": [7, 8, 10, 11, 13, 14, 16, 19, 24, 26, 27, 28, 33, 34], "prix": 29, "probabl": [16, 19, 29], "problem": [1, 21, 22, 30, 31], "proced": [1, 6, 20, 21, 31], "processeur": [16, 20, 26, 34], "processus": 24, "proch": [1, 16, 21, 26, 29, 31], "prochain": 26, "proc\u00e9dur": 33, "product": [1, 5, 21, 31, 33], "produir": [1, 21, 31], "produit": [1, 5, 16, 21, 23, 31, 32, 33], "profondeur": [23, 32], "programm": [4, 5, 6, 10, 11, 12, 13, 14, 16, 20, 24, 34], "prolong": [1, 21, 31], "propr": [2, 5, 6, 20, 23, 26, 32], "protect": [4, 16, 29], "protectric": [19, 29], "proteg": [1, 4, 8, 16, 21, 22, 28, 29, 30, 31], "provisoir": [1, 21, 31], "provoqu": [1, 21, 31], "proxim": 29, "pro\u00e9minent": [16, 29], "prudenc": [1, 21, 31], "pr\u00e9": 20, "pr\u00e9alabl": [8, 16, 28, 29], "pr\u00e9cis": [1, 6, 21, 24, 31, 33], "pr\u00e9conis": 2, "pr\u00e9c\u00e9dent": [1, 7, 9, 21, 24, 27, 29, 31, 33], "pr\u00e9fer": [1, 21, 22, 30, 31], "pr\u00e9f\u00e9rent": [8, 10, 11, 12, 13, 14, 28], "pr\u00e9par": [5, 7, 17, 27], "pr\u00e9sent": [1, 16, 17, 19, 21, 22, 29, 30, 31, 33], "pr\u00eat": [1, 19, 21, 26, 29, 31], "puc": [19, 29], "puis": [1, 11, 12, 13, 14, 21, 23, 31, 32], "puissanc": [5, 22, 24, 29, 30, 33], "pull": [4, 16, 29], "pur": [1, 16, 21, 22, 29, 30, 31, 33], "pv": 5, "pwr1": 29, "pwr3": 29, "p\u00e9riod": [1, 21, 31], "p\u00e9ripher": [23, 32], "p\u00f4l": 29, "qualit": [1, 21, 31], "quantit": [1, 16, 21, 29, 31], "quatorz": 16, "quatr": [1, 16, 21, 26, 31], "quelqu": [6, 9, 22, 26, 29, 30, 34], "r1": [1, 16, 21, 29, 31], "r10": 29, "r11": [11, 12, 13, 16, 18, 29], "r12": 29, "r18": [11, 12, 13, 16, 18], "r19": 29, "r2": [1, 16, 21, 29, 31], "r21": [13, 18, 29], "r22": 29, "r24": 16, "r25": 16, "r26": [13, 16, 18], "r3": [1, 16, 21, 31], "r4": [16, 29], "r5": [16, 29], "r6": [16, 19], "r7": [16, 29], "r8": [13, 14, 16, 29], "raccord": [5, 29], "radiateur": [1, 5, 21, 31, 33], "radio": 16, "radiofr\u00e9quent": [9, 10, 11, 12, 17], "raison": [6, 16, 22, 29, 30], "ramen": [22, 30], "rang": [1, 4, 21, 31], "rappel": 4, "rapport": [3, 24, 33], "ras": [17, 29], "rawsamplestool_2chan": 26, "rawsamplestool_6chan": 34, "recevoir": [10, 11, 12, 13, 14, 22, 30], "recevr": [10, 11, 12, 13, 14, 16], "recommand": [1, 2, 3, 15, 21, 23, 31, 32], "recommandon": 26, "reconna\u00eetr": 16, "recycl": 29, "redirig": 5, "redress": [16, 29], "redresseur": 9, "red\u00e9marr": [26, 34], "refroid": [8, 28], "reg": 5, "regl": [1, 21, 24, 31], "rel": [2, 5, 10, 11, 12, 13, 14, 18], "relat": 29, "relev": 33, "reli": [2, 4, 10, 11, 12, 16, 25], "reliquat": 29, "remont": [1, 21, 31], "rempl": 10, "remplac": [4, 16], "rend": [1, 21, 31], "reper": [1, 13, 14, 16, 21, 31], "repiqu": 2, "repos": [8, 28], "repr\u00e9sent": 16, "repr\u00e9sentent": [5, 10, 11, 12, 13, 14, 33], "rep\u00e9rag": [12, 13, 14, 16, 29], "requ": [16, 19, 20, 29], "requis": [16, 29], "reset": [2, 8, 27, 28, 29], "respect": [8, 11, 12, 13, 14, 28], "ressemblent": [16, 29], "ressort": [1, 21, 22, 30, 31], "ressoud": 4, "rest": [1, 8, 16, 20, 21, 28, 29, 31, 33], "restent": [22, 30], "retard": [1, 8, 21, 28, 31], "reten": [22, 23, 30, 32], "retir": [4, 8, 28], "retourn": 3, "revanch": [22, 30], "rf": [9, 13, 14, 18], "rf1": [13, 14], "rfm12b": [13, 14, 16], "rfm69": [13, 14, 16], "risqu": [1, 19, 21, 22, 29, 30, 31], "rm": [16, 29], "roug": [1, 2, 21, 31], "roul": [19, 29], "rout": [5, 33], "routeur": [5, 8, 10, 11, 12, 13, 14, 16, 24, 26, 28, 29, 33], "rsresults_v_and_i2": [26, 34], "ruissel": [8, 28], "rv1": 16, "rx": 26, "r\u00e9align": [16, 29], "r\u00e9alis": [1, 4, 6, 7, 16, 21, 27, 29, 31, 33], "r\u00e9cepteur": [13, 14, 18], "r\u00e9duir": [4, 16, 29], "r\u00e9duis": [16, 29], "r\u00e9duisent": [16, 29], "r\u00e9duit": [1, 16, 21, 31], "r\u00e9el": [22, 23, 26, 30, 32], "r\u00e9fer": [8, 28], "r\u00e9friger": 33, "r\u00e9f\u00e9renc": [16, 29], "r\u00e9f\u00e9rent": [8, 16, 20, 24, 28, 29, 33], "r\u00e9gul": [3, 6, 9, 12, 13, 14, 19], "r\u00e9initialis": [16, 26, 29], "r\u00e9pet": [16, 29, 33], "r\u00e9seau": [1, 2, 5, 16, 21, 31], "r\u00e9sid": [1, 21, 22, 30, 31], "r\u00e9sidus": 19, "r\u00e9sist": [1, 3, 4, 5, 6, 9, 17, 21, 22, 30, 31, 33], "r\u00e9sult": [26, 29, 34], "r\u00e9sultat": [26, 34], "r\u00e9sultent": [16, 29], "r\u00e9sum": 4, "r\u00e9utilis": 4, "r\u00f4l": [16, 23, 29, 32], "sac": [19, 29], "sach": [23, 32], "saill": [1, 21, 31], "sais": [26, 33, 34], "san": [1, 2, 4, 5, 18, 20, 21, 22, 24, 29, 30, 31, 33], "satur": [16, 29], "saur": 5, "saving": 16, "savoir": 33, "schem": [5, 16, 19, 29], "sct": 4, "second": [10, 24, 33], "secondair": 17, "secteur": [9, 19, 26, 34], "section": [1, 8, 10, 11, 12, 13, 14, 21, 28, 31], "segment": [10, 11, 12, 13, 26], "selon": [1, 2, 6, 8, 10, 11, 12, 13, 14, 16, 21, 23, 26, 28, 29, 31, 32, 33], "sem": [1, 21, 22, 30, 31], "sembl": [19, 26, 29, 34], "sen": [13, 14, 16, 19, 23, 24, 26, 29, 32], "sensibil": 16, "sensibl": [6, 16, 22, 29, 30], "sensor": 4, "ser": [1, 7, 10, 11, 12, 13, 14, 16, 17, 21, 23, 24, 26, 27, 29, 31, 32, 33, 34], "sert": [1, 2, 4, 6, 21, 31], "serv": [2, 16, 29], "servent": [1, 21, 31], "seuil": [1, 21, 31], "seul": [1, 4, 5, 10, 12, 13, 16, 21, 24, 25, 26, 29, 31, 34], "si": [1, 2, 3, 4, 6, 8, 10, 13, 14, 16, 19, 21, 24, 26, 28, 29, 31, 33, 34], "signal": [1, 4, 16, 21, 26, 29, 31, 34], "sil": [4, 6, 9], "similair": [1, 16, 21, 22, 24, 30, 31, 33], "simpl": [1, 4, 16, 21, 24, 26, 29, 31], "simplifi": 33, "simultan": 16, "singl": 4, "sinon": [1, 6, 8, 21, 28, 31, 33], "sinuso\u00efd": [1, 21, 31], "sinuso\u00efdal": [26, 34], "sit": [10, 26], "situ": [16, 29], "situat": [1, 21, 22, 30, 31, 33], "six": [6, 29], "sketch": 33, "sma": [13, 14, 16, 19], "societ": 4, "socl": [3, 6, 16, 17, 25], "soign": 6, "soigneux": [16, 17, 19, 29], "soin": [1, 2, 6, 21, 31], "sol": 5, "solid": [1, 21, 31], "somm": 33, "sort": [2, 3, 4, 5, 6, 7, 9, 16, 17, 18, 19, 23, 24, 26, 27, 29, 32, 34], "souc": 3, "soud": [1, 3, 6, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, 22, 25, 29, 30, 31], "soudur": [2, 4, 7, 9, 16, 19, 20, 27], "souhait": 5, "sourc": [16, 26], "sous": [1, 16, 19, 21, 26, 31], "soutenu": [16, 29], "souvent": [1, 4, 21, 22, 24, 30, 31, 33], "sporad": 33, "sp\u00e9cial": 26, "sp\u00e9cialis": 4, "sp\u00e9cif": [1, 17, 18, 21, 26, 31], "sp\u00e9cifi": [16, 29], "sqrt": [16, 29], "stabl": [4, 16, 22, 30], "stad": [6, 20], "standard": [10, 11, 12, 13, 14, 24, 29, 33], "statiqu": [6, 16, 29], "stock": [2, 13, 14], "studio": 26, "success": 26, "suff": [26, 29], "suffis": [10, 11, 12, 25], "suiv": [1, 5, 6, 11, 12, 13, 14, 16, 17, 19, 21, 26, 29, 31, 34], "suivr": [3, 6], "suppl\u00e9mentair": [13, 24, 26], "support": [4, 6, 9, 12], "supposon": [4, 33], "sup\u00e9rieur": 19, "surchauff": [13, 14], "surcro\u00eet": 29, "surfac": [17, 19, 23, 29, 32], "surplus": 5, "surtens": 16, "surtout": 4, "surveil": [5, 26], "symbol": [19, 29], "sympt\u00f4m": [16, 29], "synchronis": [24, 33], "synthes": 9, "synthet": 16, "system": [1, 5, 10, 11, 12, 13, 14, 16, 21, 22, 24, 26, 29, 30, 31, 33], "s\u00e9cur": [1, 2, 8, 19, 21, 28, 29, 31, 33], "s\u00e9lection": [1, 21, 31], "s\u00e9par": [16, 22, 30], "s\u00e9quenc": [6, 19, 29], "s\u00e9rigraph": [1, 16, 21, 29, 31], "s\u00e9rigraphi": [11, 12, 13, 14, 16, 19, 29], "s\u00fbr": [2, 5], "tableau": [22, 30, 33], "taill": [6, 16, 17, 23, 29, 32], "tand": [3, 6], "taux": [24, 33], "tb1": 16, "techniqu": 16, "technology": 4, "tel": [1, 4, 19, 21, 29, 31], "temp": [1, 7, 16, 20, 21, 27, 29, 31], "temporair": 19, "temporis": 5, "temp\u00e9ratur": [1, 16, 19, 21, 29, 31], "ten": [1, 21, 31], "tendanc": 3, "tendu": 2, "tension": [2, 3, 4, 6, 9, 10, 11, 12, 13, 14, 20, 22, 26, 30, 33, 34], "tenu": [1, 21, 31], "term": [4, 22, 30], "termin": [17, 26, 34], "terr": [6, 7, 16, 19, 27], "test": [6, 9, 24, 33], "testeur": 33, "teston": [19, 29], "thalass": [8, 28], "thermiqu": [1, 6, 21, 31], "thermofusibl": 6, "thermor\u00e9tract": 6, "thermostat": 5, "thyristor": [1, 21, 31], "tim": [16, 29], "tip": 0, "to": 19, "toler": 33, "tomb": 3, "tordr": [6, 26], "total": [1, 21, 26, 31, 33], "toujour": [16, 17, 19, 23, 26, 29, 32], "tour": [16, 19, 29], "tournev": 6, "tous": [3, 6, 8, 13, 14, 16, 20, 26, 28, 29, 33], "tout": [1, 2, 4, 5, 6, 7, 9, 15, 16, 17, 19, 20, 21, 26, 27, 29, 31, 33, 34], "toutefois": [1, 16, 21, 31], "train": [1, 21, 31], "trait": [13, 14], "transfer": 4, "transform": [3, 4, 6, 9, 19, 24, 26, 33, 34], "transistor": [3, 16], "transmettr": 2, "transmis": [1, 21, 31], "transversal": [1, 21, 31], "travail": [6, 16, 29], "traver": 24, "travers": [1, 21, 23, 24, 31, 32], "traversent": [16, 29], "tres": [1, 2, 6, 16, 19, 21, 29, 31], "tress": 2, "triac": [2, 7, 10, 11, 12, 13, 14, 18, 22, 23, 27, 30, 32], "triod": [1, 21, 31], "triphas": [5, 6, 8, 27, 28, 34], "trois": [1, 21, 23, 29, 31, 32, 34], "tromp": [16, 29], "trou": [8, 16, 23, 28, 29, 32], "trous": [1, 8, 21, 23, 28, 31, 32], "trouv": [6, 19, 22, 24, 26, 30, 34], "tutoriel": 26, "tx": 26, "txt": [26, 34], "typ": [4, 5, 8, 16, 26, 28, 29, 33], "typiqu": 5, "t\u00e2ch": [1, 21, 26, 31], "t\u00e2ton": 33, "t\u00e9l\u00e9charg": [20, 24, 33, 34], "t\u00e9l\u00e9vers": [26, 33], "t\u00e9moin": [8, 10, 11, 12, 13, 14, 28], "uart": 20, "ult\u00e9rieur": 16, "uniqu": [1, 2, 8, 16, 21, 22, 28, 30, 31], "unit": 24, "up": [4, 16, 29], "usb": [4, 16, 20], "user": [22, 30], "usur": [1, 21, 31], "util": 4, "utilis": [1, 2, 4, 5, 6, 8, 10, 11, 12, 13, 14, 16, 17, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33], "utilisent": 29, "utilison": [22, 26, 30], "v": [1, 4, 12, 16, 17, 19, 21, 26, 29, 31], "v1": 33, "v2": 33, "v3": 33, "v_": [16, 29], "va": [5, 6, 33], "valeur": [1, 4, 16, 21, 24, 29, 31, 33], "vari": [1, 3, 21, 23, 31, 32], "variabl": 5, "variat": [1, 21, 31], "variateur": [1, 21, 31], "varient": 6, "varist": [3, 9], "vcc": [10, 11, 12, 13, 14, 29], "vcp": 26, "ve": [16, 29], "veil": [1, 10, 11, 12, 13, 14, 16, 21, 23, 26, 29, 31, 32, 33], "ven": 16, "vent": [8, 28], "ventil": 33, "ver": [1, 5, 19, 20, 21, 29, 31, 34], "verification_afficheur": 26, "vers": [1, 21, 31], "version": [5, 6, 9, 12, 16, 26, 29, 33], "vertical": [8, 23, 28, 32], "veuill": [8, 10, 16, 19, 28, 29], "vi": [1, 4, 10, 11, 12, 13, 14, 16, 19, 21, 24, 26, 29, 31, 34], "vic": [1, 21, 31], "virtual": 26, "vis": [8, 22, 28, 30], "visibl": 24, "viss": [7, 27], "visual": 26, "visualis": 2, "voi": 26, "voic": [1, 2, 3, 8, 10, 12, 16, 18, 21, 25, 26, 28, 29, 31, 34], "voir": [8, 28], "voltmetr": [6, 33], "vont": 33, "votr": [3, 5, 16, 19, 26, 29, 33], "vr1": [12, 16, 29], "vr2": [13, 14, 16, 18], "vref": 19, "vu": [1, 8, 21, 28, 31], "v\u00e9rif": [1, 17, 20, 21, 29, 31], "v\u00e9rifi": [1, 19, 20, 21, 26, 29, 31, 33, 34], "v\u00eat": 16, "w": [16, 29], "warning": 0, "wattmetr": 33, "web": 26, "wikip\u00e9di": 4, "window": 26, "with": 4, "x": 18, "xx": 2, "yhdc": 4, "zon": [1, 21, 31], "z\u00e9ro": [1, 21, 31], "\u00c0": [1, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 34], "\u00c9tant": [16, 23, 32], "\u00e9chang": [23, 32], "\u00e9chantillon": [26, 34], "\u00e9ch\u00e9": 6, "\u00e9claboussur": 29, "\u00e9clairag": [1, 21, 31], "\u00e9conom": 13, "\u00e9cran": 16, "\u00e9gal": [1, 6, 19, 21, 26, 31, 33, 34], "\u00e9lectr": [1, 4, 5, 6, 9, 16, 20, 21, 22, 24, 26, 30, 31, 33], "\u00e9lectrolyt": [3, 9], "\u00e9lectron": [4, 6, 33], "\u00e9lectrostat": 6, "\u00e9lev": [1, 16, 21, 29, 31], "\u00e9limin": [4, 29], "\u00e9loign": [16, 29], "\u00e9metteur": [13, 14, 18], "\u00e9mis": [1, 21, 31], "\u00e9nerg": [1, 5, 21, 24, 31, 33], "\u00e9pais": 17, "\u00e9paiss": [1, 21, 31], "\u00e9paisseur": 17, "\u00e9pargn": 3, "\u00e9quip": [1, 5, 8, 13, 14, 21, 26, 28, 31], "\u00e9quivalent": 26, "\u00e9tabl": 4, "\u00e9tag": [2, 7, 23, 27, 32], "\u00e9tain": [10, 11, 12, 25], "\u00e9talon": [24, 33], "\u00e9talonnag": 6, "\u00e9tam": [11, 12], "\u00e9tap": [1, 7, 16, 17, 19, 21, 24, 26, 27, 29, 31], "\u00e9tat": [2, 4, 19, 22, 29, 30], "\u00e9teint": [2, 24], "\u00e9tiquet": 26, "\u00e9toup": [7, 8, 27, 28], "\u00e9vacu": [1, 21, 23, 31, 32], "\u00e9ventuel": [6, 8, 28], "\u00e9vit": [6, 8, 13, 14, 22, 26, 28, 30], "\u00eate": 26, "\u00eatre": [1, 2, 4, 8, 10, 11, 12, 13, 14, 16, 17, 19, 21, 22, 23, 24, 26, 28, 29, 30, 31, 32, 33, 34], "\u03bcf": [13, 14, 16, 29], "\u03c9": [1, 16, 21, 29, 31]}, "titles": ["<no title>", "\u00c9tage de sortie", "Confection des c\u00e2bles", "Ordre de soudure", "Glossaire", "Bienvenue dans la documentation du Mk2PVRouter\u00a0!", "Introduction", "Assemblage", "Pr\u00e9paration du bo\u00eetier", "Carte-m\u00e8re monophas\u00e9e", "Composants de la configuration A", "Composants de la configuration B", "Composants de la configuration C", "Composants de la configuration D", "Composants de la configuration E", "Composants communs", "Inventaire complet des composants", "Soudure", "Synth\u00e8se", "Tests \u00e9lectriques", "Tests", "\u00c9tage de sortie", "Sortie relais tout-ou-rien", "Dissipateur", "\u00c9talonnage", "<no title>", "Tests logiciel", "Assemblage", "Pr\u00e9paration du bo\u00eetier", "Carte-m\u00e8re triphas\u00e9e", "Sortie relais tout-ou-rien", "\u00c9tage de sortie", "Dissipateur", "\u00c9talonnage", "Test logiciel"], "titleterms": {"1": 33, "3": [13, 14], "C": 12, "D": 13, "Le": 16, "Un": [16, 29], "a": 10, "affichag": 33, "afficheur": 26, "agraf": [1, 21, 31], "aid": 33, "aliment": [13, 14, 19, 29], "annex": 33, "appareil": [22, 30, 33], "appliqu": [1, 21, 31], "assemblag": [1, 6, 7, 21, 22, 27, 30, 31], "avantag": [1, 21, 22, 30, 31], "b": 11, "bas": 33, "bienvenu": 5, "bon": 33, "bo\u00eeti": [8, 23, 28, 32], "cart": [1, 8, 9, 21, 26, 28, 29, 31], "chaqu": [8, 28, 29], "chauff": 33, "circuit": [16, 29], "comment": 33, "commun": 15, "compar": [1, 21, 31], "complet": 16, "compos": [1, 10, 11, 12, 13, 14, 15, 16, 21, 29, 31], "composit": [1, 21, 31], "compteur": 33, "condens": [16, 29], "confect": 2, "configur": [10, 11, 12, 13, 14], "connecteur": [1, 11, 12, 13, 14, 16, 21, 29, 31], "conseil": 2, "consider": [1, 21, 22, 30, 31], "consomm": 33, "contenu": 6, "contr\u00f4l": [1, 2, 21, 31], "coup": 33, "croqu": 26, "ct": 24, "cuivr": [1, 21, 31], "c\u00e2bl": 2, "c\u00e9ram": [16, 29], "dan": 5, "dil": [1, 16, 21, 31], "diod": [16, 29], "dissip": [8, 23, 28, 32], "distribu": 33, "divers": 24, "document": 5, "e": 14, "eau": 33, "f_powercal": 33, "faibl": [1, 21, 31], "fil": 2, "flash": 33, "fonction": [1, 21, 22, 30, 31], "fusibl": [16, 29], "glossair": [4, 5], "grill": 24, "haut": [1, 21, 31], "ic3": [12, 13], "ic4": [12, 13], "induct": [16, 29], "insert": 29, "install": [1, 19, 21, 31], "integr": [16, 29], "introduct": 6, "inventair": 16, "jack": 2, "jumper": [11, 12, 13, 14], "kit": [1, 6, 21, 31], "led": 2, "lign": 33, "lm358": 29, "logiciel": [26, 34], "longueur": 2, "massif": [1, 21, 31], "math\u00e9mat": [16, 29], "mat\u00e9riel": 6, "mer": [8, 9, 28, 29], "mesur": [26, 33, 34], "mis": [2, 26], "mk2pvrout": 5, "modul": [13, 14, 16], "molex": [1, 16, 21, 29, 31], "monophas": [2, 9], "m\u00e9thod": 33, "napp": [11, 12, 13, 14], "neutr": 29, "n\u00e9cessair": [6, 8, 28], "optocoupleur": [1, 21, 31], "ordre": 3, "oscill": [16, 29], "outil": [8, 28], "part": [1, 21, 26, 31, 34], "per\u00e7ag": [8, 23, 28, 32], "peu": [16, 29], "plac": 26, "plus": 33, "pont": [11, 12, 13, 14, 16, 29], "port": [16, 29], "premi": 33, "princip": [1, 21, 22, 30, 31, 33], "principal": [19, 29], "pris": 2, "processeur": [19, 29], "programm": 26, "pr\u00e9": [26, 33], "pr\u00e9par": [8, 28], "puissanc": [1, 21, 31], "radiofr\u00e9quent": [13, 14, 16], "rapid": 33, "rappel": 13, "recommand": 6, "redresseur": [16, 29], "rel": [1, 21, 22, 30, 31], "remarqu": 26, "requ": [26, 33], "reten": 5, "rf": 16, "rien": [22, 30], "r\u00e9alis": [8, 28], "r\u00e9f\u00e9rent": 19, "r\u00e9gul": [16, 29], "r\u00e9seau": 24, "r\u00e9sist": [10, 11, 12, 13, 14, 16, 29], "secondair": [13, 14], "secteur": [16, 29], "sil": [16, 29], "simpl": 33, "socl": [10, 11, 12, 13, 14], "sommair": [1, 10, 11, 12, 13, 14, 16, 19, 21, 26, 29, 31], "sort": [1, 8, 10, 11, 12, 13, 14, 21, 22, 28, 30, 31], "soudur": [1, 3, 6, 17, 21, 29, 31], "sous": 29, "support": [1, 16, 21, 29, 31], "synthes": 18, "techniqu": [1, 21, 22, 30, 31], "tension": [1, 16, 19, 21, 29, 31], "terr": 2, "test": [1, 19, 20, 21, 22, 26, 29, 30, 31, 34], "tout": [22, 30], "transform": [16, 29], "triac": [1, 8, 21, 28, 31], "triphas": [2, 29, 33], "trouv": 33, "typ": [1, 21, 31], "typiqu": [1, 21, 31], "t\u00e9l\u00e9charg": 26, "t\u00e9moin": 2, "uart": 26, "usb": 26, "v": [13, 14], "varist": 16, "ver": 26, "version": 2, "vref": 29, "v\u00e9rif": 26, "wh": 33, "\u00c0": [5, 33], "\u00e9lectr": [19, 29], "\u00e9lectrolyt": [16, 29], "\u00e9lectron": [22, 30], "\u00e9tag": [1, 8, 21, 28, 31], "\u00e9talonnag": [24, 33], "\u00e9tap": [6, 8, 28]}}) \ No newline at end of file diff --git a/tri/assemblage-tri/index.html b/tri/assemblage-tri/index.html new file mode 100644 index 0000000..b5b8abe --- /dev/null +++ b/tri/assemblage-tri/index.html @@ -0,0 +1,205 @@ + + + + + + + + + + Assemblage — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/tri/boitier-tri/index.html b/tri/boitier-tri/index.html new file mode 100644 index 0000000..e3f3997 --- /dev/null +++ b/tri/boitier-tri/index.html @@ -0,0 +1,298 @@ + + + + + + + + + + Préparation du boîtier — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/tri/carte-mere-tri/index.html b/tri/carte-mere-tri/index.html new file mode 100644 index 0000000..f0cbc31 --- /dev/null +++ b/tri/carte-mere-tri/index.html @@ -0,0 +1,484 @@ + + + + + + + + + + Carte-mère triphasée — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/tri/carte-sortie-relais-tri/index.html b/tri/carte-sortie-relais-tri/index.html new file mode 100644 index 0000000..696a43d --- /dev/null +++ b/tri/carte-sortie-relais-tri/index.html @@ -0,0 +1,244 @@ + + + + + + + + + + Sortie relais tout-ou-rien — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/tri/carte-sortie-tri/index.html b/tri/carte-sortie-tri/index.html new file mode 100644 index 0000000..27209f6 --- /dev/null +++ b/tri/carte-sortie-tri/index.html @@ -0,0 +1,467 @@ + + + + + + + + + + Étage de sortie — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/tri/dissipateur-tri/index.html b/tri/dissipateur-tri/index.html new file mode 100644 index 0000000..3fa250e --- /dev/null +++ b/tri/dissipateur-tri/index.html @@ -0,0 +1,258 @@ + + + + + + + + + + Dissipateur — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/tri/etalonnage-tri/index.html b/tri/etalonnage-tri/index.html new file mode 100644 index 0000000..7d6bfbf --- /dev/null +++ b/tri/etalonnage-tri/index.html @@ -0,0 +1,320 @@ + + + + + + + + + + Étalonnage — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file diff --git a/tri/test-logiciel-tri/index.html b/tri/test-logiciel-tri/index.html new file mode 100644 index 0000000..26fa04e --- /dev/null +++ b/tri/test-logiciel-tri/index.html @@ -0,0 +1,219 @@ + + + + + + + + + + Test logiciel — Documentation Documentation du Mk2PVRouter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ +
+
+
+ + +
+ + Documentation + v (stable) + + +
+
+
Versions
+ +
latest
+ +
+
+
Téléchargements
+ +
PDF1
+ +
PDF2
+ +
+
+
On Github
+
View
+
Edit
+
+
+
Recherche
+
+
+
+ + + +
+
+
+
+
+ + + \ No newline at end of file