Vous êtes ici    News en

PlayOnLinux 5: Etat actuel

Mercredi 2 Décembre 2015 à 1:55 (9 commentaires)

Bonjour à tous

Je vous écris ce message afin de vous apporter des nouvelles de l'avancement de PlayOnLinux 5.

Avant tout, sâchez que le développement se passe bien. Ca prend beaucoup de de temps parce que nous devons également maintenir PlayOnLinux 4 et les serveurs, il reste encore beaucoup de travail. C'est pourquoi il n'est pas possible de donner une date de sortie. Cependant, je vais vous présenter ce qui a été fait.

Interface Utilisateur

Je suppose que c'est l'un des sujets qui vous intéresse le plus. La bonne nouvelle est que l'application est conçue pour être totalement découplé depuis le coeur de PlayOnLinx. Fondamentalement, cela signifie que nous pouvons nous retrouver avec plusieurs implémentations d'interface sans modifier le coeur du logiciel (contenant la plupart des fonctionnalités).

Interface JavaFX

Ceci est l'interface principale de référence. Elle est prise en charge sous Linux et OSX. Nous passons beaucoup de temps à essayer de la rendre aussi conviviale que possible afin d'éviter toutes confusions pour l'utilisateur.

Vous trouverez quelques impressions d'écran de la version actuelle :

Applications installées

 

Applications disponibles. (Les logos POL seront remplacés par )

 

 

Applications disponibles. Description d'un installateur.

 

 

 

Un script d'installation de Wine 1.7.39.

 

 

 

Fenêtre de configuration

 

 

Interface QT

Nous sommes également conscients que certains d'entre vous n'apprécie pas l'idée d'avoir une interface non-native. C'est pourquoi nous nous efforçons d'implétement une interface QT. (Le développement est principalement réalisé par seijikun, un grand merci à lui).

Cette interface vise à être aussi proche que possible de l'interface actuelle de PlayOnLinux 4.

Pour le moment, l'interface QT n'est pas complètement implémenté, je me concentre sur l'implémentation des fonctionnalités de base, ce qui me laisse peu de temps pour aider seikjun. Voici cependant une capture d'écran pour vous donner une idée :

Interface CLI

L'interface en ligne de commandes n'est pas encore implémentée. Nous voulons, sur le long terme, être en mesure d'exécute PlayOnLinux depuis la ligne de commandes.

Maquette d'interface de tests

Cette interface permet de lancer des tests automatisés. J'en parlerai prochainement dans un court paragraphe.

 

 

 

Scripting

Présentation de modèles

Les scripts (ou installateurs) sont écrits en Python. Fondamentalement, cela donnera aux scripteurs autant de liberté que ce que PlayOnLinux 4 leur offrait. Toutefois, nous allons également supporter un nouveau concept : les modèles d'installateurs.

Les modèles d'installateurs sont des scripts réutilisables. Par exemple, nous allons écrire un seul script pour tous les jeux Source.

Un exemple plus complexe ressemblerait à cela :

(Oui, certains de ces jeux sont déjà disponibles nativement sous Linux ;))

 

Avec cette exemple, le script de Diablo III devrait être "complexe", comme les scripts actuels, mais le script d'Half-Life devrait ressembler à ça :

class HalfLife(WineSteamInstaller):
    title = "Half-Life"
    prefix = "Prefix"
    wineversion = "1.7.34"
    steamId = 130
    packages = ["package1", "package2"]

Le choix du modèle de base est définie par l'auteur du script.

Nouveaux outils

Nous avons intégré une console Python directement dans l'application, ainsi les scripteurs pourront réaliser leurs propres tests.

 

Performances

Consommation de mémoire

En terme de mémoire, PlayOnLinux 5 semble en utiliser un petit peu plus que PlayOnLinux 4.

C'est normal parce que contrairement à PlayOnLinux 4, tout se lance dans un seul process multi-threadé. PlayOnLinux 4 crée plusieurs process, ce qui rend la mesure de l'empreinte mémoire difficile et faisant perdre des ressources.

 

Performances de l'interface

Nous avons lancé plusieurs benchmarks afin de comparer les performances de l'interface. PlayOnLinux 5 est plus rapide. En fait, il est impossible de créer une barre de chargement plus fluide avec PlayOnLinux 4 parce que l'assistant réagi trop lentement. Pour mesurer la réactivité de l'interface, nous comparons le temps nécessaire pour montrer 1000 messages dans l'assistant.

Voici les résultats (plus c'est bas, mieux c'est) :

Et une vidéo mettant en avant la différence :

https://www.youtube.com/watch?v=b57JIFCQg54 (PlayOnLinux est la fenêtre sur la droite

 

 

Tests

L'automatisation des tests fait partie de la qualité du code. Avec la conception d'une nouvelle application, nous pouvons lancer des tests automatisés chaque jour afin de détecter les problèmes (dans les scripts ou dans PlayOnLinux lui-même). Jusqu'à présent, nous avons écrit trois tests d'intégration :

Nous écrivons également des tests unitaires pour des classes non interfacées.

 

 

 

Je pense que cela est tout ce que je peux présenter pour le moment. Si vous avez des questions, n'hésitez pas à les poser dans les commentaires. J'éditerai cet article si j'oublie quelque chose.

Bien à vous,

BlondVador

PlayOnLinux 5: Nous voulons votre opinion !

Mercredi 3 Juin 2015 à 16:51 (15 commentaires)

Bonjour à tous,

Comme certains d'entre-vous le savent déjà, nous pensons sérieusement au futur de PlayOnLinux/PlayOnMac (a.k.a. PlayOnLinux 5).  La version 4 a une longue histoire et son code contient des choses qui deviennent difficiles à maintenir. Nous avons vraiment besoin d'une version stable si nous voulons continuer à vous fournir le meilleur. Si nous continuons avec PlayOnLinux v4 nous sommes certains que :

  • PlayOnLinux n'aura pas ou peu de nouvelles fonctionnalités.
  • PlayOnLinux risque d'être complètement cassé le jour ou ses dépendances ne seront plus maintenues.

Dans cette news, je vais vous expliquer l'option que nous préférons, pourquoi nous la préférons et nous allons aussi vous demander votre avis à ce sujet.

Merci de lire tout l'article avant de vous plaindre ou troller. Ce sujet est vraiment important ! Dès que vous aurez tout lu et compris le problème, n'hésitez pas à donner votre avis.

Comme certain l'ont entendu, nous pensons sérieusement passer de Python à Java. Je comprends parfaitement qu'il puisse y avoir des contestations et pour être honnête, certains membres de l'équipe étaient les premier à critiquer Java il y a quelques mois.

Cependant, il y a plusieurs raison qui nous permettent de penser que Java est une bonne solution :

  • Portabilité : Nous voulons que PlayOnLinux soit disponible sur Linux, FreeBSD, OpenBSD, Mac, ... et pourquoi pas, être prêt à fonctionner sur ARM/Android plus tard.
  • Maintenabilité :
    • Java fait pas mal de chose pour obliger les développeurs à bien faire
    • Java est un language statique. Ce qui simplifie grandement certaines tâches: refactoring, vérification de la syntaxe, audit de code...
    • Il existe des outils pour vérifier la qualité du code et la profondeur technique qui sont assez impressionants.
  • Contributions :
    • Nous avons remarqué qu'il était difficile de contribuer à PlayOnLinux v4 et nous voulons mettre en place des moyens et des guides pour que tout le monde puisse contribuer. (voyez le paragraphe "infrastructure" à la fin de la news)

PlayOnLinux est bien plus complexe qu'une simple interface graphique pour wine. Il s'agit principalement d'un ensemble d'outils qui permet d'écrire des scripts pour wine. C'est pourquoi la problématique à laquelle nous faisons face est un peu plus complexe que celle d'une interface graphique pour wine.

J'aimerais commencer par répondre aux principales inquiétudes que le passage vers Java peut soulever. Si vous voyez autre chose, n'hésitez pas à nous en faire part.

Réponses aux questions principales

Je ne veux pas installer Oracle JDK ou tout autres programme propriétaire sur mon ordinateur

À ce sujet, nous vous garantirons que PlayOnLinux v5 sera compatible avec OpenJDK JRE 8 (GPLv2)

PlayOnLinux va devenir très lent car Java est un langage  lent

Cette crainte aurait eu un sens il y a quelque années. Cependant, en 2015, Java a fait énormément de progrès. Il s'agit d'un des langages interprétés les plus rapide.

Entre autre, java est en général plus rapide que Python (http://benchmarksgame.alioth.debian.org/u64q/python.html). En outre, la branche v4 contient beaucoup de code non-optimisé. Les tests que nous avons déjà fait avec Java nous montre que ce que nous avons déjà coder est bien plus rapide que PlayOnLinux 4. Pour être honnête, il n'y a qu'un seul désagrément : la JVM prend un peu plus de temps à se lancer que l'interpréteur python.

Vous auriez dû utiliser QT! C'est plus logique.

Vous avez peut-être raison, mais notre principale problematique aujord'hui concerne plus le choix du langage et l'ensemble des dépendances qui va en découler. Actuellement, nous avons commencé à utiliser OpenJFX :

  • La librairie est Open Source
  • L'interface est personalisable avec le langage CSS.
  • L'accélération matérielle est supportée
  • Nous pourrions supporter plusieurs skin pour PlayOnLinux ou imaginer une interface à la Steam. Tout est permis.
  • Elle est portable

Inconvénients :

  • Le thème risque de ne pas complètement intégré avec votre thème système

Cependant, la conception de PlayOnLinux v5 autorise l'implémentation de plusieurs interface utilisateur et laisser ce dernier choisir. Il est donc possible d'inplémenter une autre interface en plus comme QTJambi par exemple : http://en.wikipedia.org/wiki/Qt_Jambi. (Mais ce n'est pas une priorité. Une interface console est plus importante)

Les applications Java sont moche, non intégrée au système.

Regardez le paragraphe précédent. Nous avons également posté quelques captures d'écran sur le forum anglophone et dans les commentaires. N'hésitez pas à faire part de vos retours.

Java n'est pas sûr, il y a énormément de patch de sécurité

La raison de cela est que Java possède aussi un mode sandbox qui autorise le navigateur à éxecuter un programme sans l'autorisation de l'utilisateur. Nous ne voulons pas exécuter PlayOnLinux dans votre navigateur web, donc ce n'est pas grave si vous ne voulez pas installer le plugin du navigateur. Ceci ramène donc Java au même niveau de risque que tout autre langage interprêté.

Proposition d'une nouvelle architecture

Nous souhaitons remplacer les script bash avec des scripts python.

  • Les scripts python seront directement exécuter par Java (possible et très simple grace à Jython).
  • Nous allons garder une petite partie du code de PlayOnLinux v4 pour assurer la rétro-compatibilité (après quelques nettoyages, bien entendu)
  • De gros effort sont fourni pour garantir une bonne qualité du code.

 

Donc vous voulez exécuter Wine dans Bash dans python dans Java :-O.

C'est là que Jython intervient. Jython n'utilise pas l'interpréteur installé sur votre ordinateur. En fait, il s'agit d'une librairie qui va compiler votre code python en classe Java durant l'exécution. Pour faire simple, il est capable de lancer vos script python directement dans la machine virtuel de Java sans dépendre de Python. En réalité, il y aura moins de couche qu'il y avait actuellement car les scripts seront capable d'exécuter directement du code Java sans nécessiter la mise en place de tout autre moyen de communication.

 

Tâche qui ont déjà été faite

Infrastructure

Nous avons mis en place trois outils :

Programmation

Nous avons déjà développé certaine choses comme preuve du concept. Si vous êtes d'accord avec nous, nous continurons dans cette voie pour vous proposer la meilleurs version de PlayOnLinux dans les prochains mois.

  • Le coeur de PlayOnLinux
    • Injection de dépendances
    • Tests unitaires
  • Le gestionnaire de scripts (toutes les fonctions ne sont pas encore implémentées)
    • Support des scripts python
    • Compatibilité des script PlayOnLinux Legacy (v4)
    • Exemples de scripts
  • Fenêtre d'installation (avec téléchargement à distance)
  • D'autre choses importantes
    • Vérification des signatures GPG des scripts
    • Analyseur complet de la base de registre de wine (cela signifie que vous serrez capables de naviguer dedans avec peu de ligne de script)
    • Gestion de wine : Création des wineprefix avec une barre de progression, ...
    • Gestion du système de fichier (copie et téléchargement avec une barre de progression)

 

Conclusion

Actuellement, nous sommes confiants sur le fait que cette version sera plus performante que la v4.

  • Le coeur actuel est plus rapide
  • Les scripts sont plus clairs
  • Nous avons un code très propre (pour le moment)
  • Nous avons une infrastructures propre qui nous permet d'être efficace dans notre travail
  • Des personnes extérieures ont déjà montré  un interêt particulier pour participer au développement de la v5 (en proposant notamment quelques patchs)

Cependant, nous souhaitons avoir votre opinion. Merci de poster vos commentaires et sentez vous libre de donner votre avis sur le sujet. Merci de donner des arguments pour que nous puissions progresser.

Maintenant, il est temps de commenter !

 

 

Traduction de la news d'origine par Tutul... Vous pouvez aussi allez lire les commentaires déjà présents sur la news d'origine ;)

Tutul

Adobe Photoshop CS6 disponible en test !

Mardi 28 Octobre 2014 à 18:54 (4 commentaires)

Nous sommes actuellement en train de tester un script écrit par un membre de l'équipe pour Adobe Photoshop CS6. Il a été testé avec les drivers propriétaires de Nvidia et AMD mais les chipsets Intel semblent ne pas être compatibles. Le logiciel s'exécute à peu près aussi rapidement que sous Windows. L'activation en ligne devrait également fonctionner.

MiniatureMiniature

logo Installer Adobe Photoshop CS6

Retrouvez le script ici :

http://www.playonmac.com/en/app-2316-Adobe_Photoshop_CS6.html

BlondVador

PlayOnLinux et les jeux sous Linux : Où en sommes nous en 2014 ?

Mardi 12 Aoüt 2014 à 19:05 (2 commentaires)

Bonsoir à tous,

Après presque 8 ans d'existence, j'aimerais consacrer un billet spécial pour donner un ressenti sur la situation actuelle du projet, sa place dans le monde du jeu vidéo sous Linux et pour répondre à certaines questions qui ont été soulevées à propos de PortMyApps.

Pour rappeler le contexte, en 2007, le 7 Mai pour être précis, nous avions décidé moi et un autre ami de lancer le projet PlayOnLinux. Le nom choisi à l'époque était assez significatif : nous souhaitions apporter une solution permettant de jouer sous Linux. À l'époque, vu la faible quantité de jeux natifs disponibles, la meilleure façon qui pouvait nous permettre de réussir le projet était d'utiliser wine. L'idée a eu un succès plutôt encourageant, puisque nous avions atteint les 100 premiers membres en moins d'une semaine.[1]

N'ayant pas suffisamment de ressources pour proposer un logiciel complet permettant d'utiliser toutes les plate-formes (dont les jeux natifs, qui étaient bien moins nombreux en 2007 que aujourd'hui), nous nous sommes concentrés essentiellement sur les jeux Windows (via Wine, DOSBox et ScummVM), et nous avons développé un ensemble d'outils permettant de faciliter l'installation et l'utilisation de ces derniers.

netappwm.jpgEn décembre 2012, Valve annonce la sortie de la version Linux de Steam[2]. Un an plus tard, SteamOS est annoncé[3]. Le mois dernier, GOG.Com (Good Old Games) annonce à leur tour le support de la plate-forme Linux[4]. Ces annonces sont très encourageantes, et montrent à quel point les éditeurs de jeux s'intéressent de plus en plus à de nouveaux systèmes d'exploitation, malgré une part de marché qui reste assez faible.[5].

De notre côté, nous souhaitons bien évidemment que cette explosion continue et nous ne pouvons qu'encourager vivement les éditeurs à suivre ce mouvement. Cependant, notre nom (historique) PlayOnLinux peut maintenant porter à confusion : Contrairement à ce qu'il peut laisser penser, nous n'apportons pas la solution pour jouer sous linux, nous proposons juste un outil pour utiliser wine simplement. Si vous cherchez un outil pour gérer votre bibliothèque de jeux sous Linux, il en existe plein qui le font très bien, pour ne pas citer un autre projet français : Lutris[6].

Ceci nous invite à nous questionner sur le problème suivant : Faut-il éviter d'encourager les éditeurs à se reposer sur wine maintenant qu'ils sont de plus en plus nombreux à s'intéresser à la question du support Linux ? Ce problème a été soulevé en commentaire sur le site GamingOnLinux[7] lorsque j'ai lancé le projet PortMyApps. (Il est important de noter que PortMyApps restera indépendant de PlayOnLinux, l'équipe de développement n'étant pas la même). Nous avions lancé l'idée de nous rapprocher des éditeurs en constatant que PlayOnLinux devenait de plus en plus difficile à maintenir, la quantité de scripts se multipliant exponentiellement. Bien entendu, il ne serait pas profitable pour la communauté de voir wine utilisé par les producteurs de jeux comme étant une solution "low-cost" de portage, au détriment d'un réel développement natif. Je vous rassure sur ce point, PortMyApps n'a certainement pas la prétention de porter le futur Elder Scroll, ou de s'emparer du marché du jeu sous Linux. Il est d'ailleurs très improbable de voir un éditeur s'intéresser sérieusement à Linux et proposer une solution basée sur wine. Il est encore plus improbable qu'un éditeur de jeu de la taille de Valve confie un tel chantier à un petit projet comme le notre.

Cependant, nous avons ciblé quelques cas (deux pour être très précis) où cette idée serait profitable pour tout le monde.

  • Il existe des logiciels dont l'informatique ou le jeu-vidéo n'est pas le coeur de métier. Je pense à des logiciels très spécifiques, utilisés par un très petit nombre de personnes. (Médecine, dessin spécialisé à un métier, ...). Ces logiciels sont souvent utilisés en interne dans les entreprises, où dévéloppés par des sociétés en B2B. Les éditeurs et utilisateurs de ces logiciels peuvent nécessiter un support Linux sans avoir les ressources nécessaires pour porter leur logiciel (choix technologiques, peu de développeurs).
  • Il existe de très anciens jeux dont le code source est perdu, ou dont l'intérêt et la notoriété n'est pas assez importante par rapport au travail nécessaire pour développer une versions Linux.

Ce sont typiquement dans ces deux cas de figures que nous envisageons de travailler. Nous connaissons assez bien le fonctionnement de wine, et nous proposons d'aider à l'intégrer de la meilleure façon que nous pouvons, pour une meilleure expérience utilisateur possible. L'upload sur le site PortMyApps est pour information, limité à 50Mo.

Pour en revenir à PlayOnLinux, nous savons qu'il finira par ne plus avoir de raisons d'exister et nous sommes convaincu que cela représenterait une victoire pour les principes que nous défendons. Cependant, nous pensons aussi que chacun doit pouvoir faire tourner chaque logiciel sur le système qu'il souhaite. C'est dans cette optique que nous continuerons à faire ce que nous faisons depuis bientôt huit ans, tant que chaque éditeur ne publiera pas une version native (et non basée sur wine) de son jeu systématiquement dès sa sortie. Il reste encore du travail à faire, et nous avons encore plein d'idées à vous présenter. Je tiens au passage à remercier tous ceux qui ont participé au projet depuis sa création.

Je reste bien entendu disponible pour répondre à vos questions en commentaire.

Sources

  1. http://museum.playonlinux.com
  2. http://korben.info/steam-pour-linux-enfin-ouvert-a-tous.html
  3. http://store.steampowered.com/livingroom/SteamOS/
  4. http://www.gog.com/news/gogcom_now_supports_linux
  5. http://www.developpez.com/actu/70849/Part-de-marche-des-OS-Windows-XP-baisse-mais-legerement/
  6. http://www.lutris.net
  7. http://www.gamingonlinux.com/articles/the-team-behind-playonlinux-playonmac-reveals-portmyapps-updated.4117

 

 

Quentin PÂRIS

Nouvelle interface

Dimanche 8 Juin 2014 à 16:46 (0 commentaires)

Bonjour à tous,

Nous sommes heureux de vous présenter une toute nouvelle interface pour les logiciels supportés.

Comment cela fonctionne ?

C'est assez simple. Il vous suffit de vous rendre sur l'onglet Logiciel supportés.

Vous aurez alors accès à l'ensemble des logiciels supportés par PlayOnLinux et PlayOnMac. En cliquant sur le nom d'un logiciel, vous aurez accès à des informations, et à des retours d'expériences d'autres utilisateurs.

 

Vous pourrez également installer le logiciel qui vous intéresse directement depuis le site internet à l'aide du bouton suivant :

 

Contribuez à l'améliration de PlayOnLinux et de PlayOnMac

Si vous voulez nous aider à améliorer notre logiciel, c'est très simple et cela ne demande que très peu d'efforts. Cherchez sur le jeu ou le programme qui vous intéresse le bouton suivant.

Vous pourrez alors contribuer à l'amélioration du programme.

Par un simple retour d'expérience

L'interface vous permet de dire si oui ou non le programme fonctionne chez vous. Si vous souhaitez donner plus de détails, vous pourrez rédiger un mini commentaire :

 

 

En améliorant le code de l'installateur

Si vous souhaitez nous aider à améliorer la compatibilité de PlayOnLinux, vous pouvez lire la documentation et proposer une amélioration pour l'installeur. Les utilisateurs pourront alors tester votre version très facilement.

Quentin PÂRIS

Wine 1.7.19 est disponible !

Vendredi 16 Mai 2014 à 23:17 (0 commentaires)

Wine 1.7.19 est maintenant disponible dans PlayOnLinux et PlayOnMac !

Vous pouvez lire des informations à propos de cette version ici : http://www.playonmac.com/w/wine-1.7.19

Voici quelques informations à propos de la compilation (en anglais) :

     
Les binaires wine sont synchronisés avec le gestionnaire de version toutes les demi-heures.
Vous pouvez avoir des informations à propos des compilations sur la page suivante : http://www.playonmac.com/wine/

Wine building service

Wine 1.7.18 est disponible !

Samedi 3 Mai 2014 à 0:52 (2 commentaires)

Wine 1.7.18 est maintenant disponible dans PlayOnLinux et PlayOnMac !

Vous pouvez lire des informations à propos de cette version ici : http://www.playonmac.com/w/wine-1.7.18

Voici quelques informations à propos de la compilation (en anglais) :

     
Les binaires wine sont synchronisés avec le gestionnaire de version toutes les demi-heures.
Vous pouvez avoir des informations à propos des compilations sur la page suivante : http://www.playonmac.com/wine/

Wine building service

Wine 1.7.15-CS-0.6-7173c38 est disponible !

Jeudi 1 Mai 2014 à 23:22 (1 commentaires)

Wine 1.7.15-CS-0.6-7173c38 est maintenant disponible dans PlayOnLinux et PlayOnMac !

Vous pouvez lire des informations à propos de cette version ici : http://www.playonmac.com/w/wine-1.7.15-CS-0.6-7173c38

Voici quelques informations à propos de la compilation (en anglais) :

     
Les binaires wine sont synchronisés avec le gestionnaire de version toutes les demi-heures.
Vous pouvez avoir des informations à propos des compilations sur la page suivante : http://www.playonmac.com/wine/

Wine building service

Wine 1.5.13-BaldursGate2_lowercase est disponible !

Samedi 19 Avril 2014 à 22:40 (0 commentaires)

Wine 1.5.13-BaldursGate2_lowercase est maintenant disponible dans PlayOnLinux et PlayOnMac !

Vous pouvez lire des informations à propos de cette version ici : http://www.playonmac.com/w/wine-1.5.13-BaldursGate2_lowercase

Voici quelques informations à propos de la compilation (en anglais) :

     
Les binaires wine sont synchronisés avec le gestionnaire de version toutes les demi-heures.
Vous pouvez avoir des informations à propos des compilations sur la page suivante : http://www.playonmac.com/wine/

Wine building service

Wine 1.7.17 est disponible !

Vendredi 18 Avril 2014 à 23:18 (3 commentaires)

Wine 1.7.17 est maintenant disponible dans PlayOnLinux et PlayOnMac !

Vous pouvez lire des informations à propos de cette version ici : http://www.playonmac.com/w/wine-1.7.17

Voici quelques informations à propos de la compilation (en anglais) :

     
Les binaires wine sont synchronisés avec le gestionnaire de version toutes les demi-heures.
Vous pouvez avoir des informations à propos des compilations sur la page suivante : http://www.playonmac.com/wine/

Wine building service

Pages: 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 40 - 41 - 42 - 43 - 44 - 45 - 46 - 47 - 48 - 49 - 50 - 51