diff --git a/.gitignore b/.gitignore index 164fc10a..86b0204d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ + +.run/ .gradle build/ #!gradle/wrapper/gradle-wrapper.jar diff --git a/Projekte/.run/MdgaApp.run.xml b/Projekte/.run/MdgaApp.run.xml new file mode 100644 index 00000000..776076f1 --- /dev/null +++ b/Projekte/.run/MdgaApp.run.xml @@ -0,0 +1,19 @@ + + + + diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/Asset.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/Asset.java index ffded4e9..6c210b7a 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/Asset.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/Asset.java @@ -39,6 +39,7 @@ public enum Asset { shieldCard, shieldSymbol("Models/shieldCard/shieldSymbol.j3o", "Models/shieldCard/shieldCard_diff.png"), dice, + missile("Models/missile/AVMT300.obj", "Models/missile/texture.jpg", 0.1f), tankShoot("Models/tank/tankShoot_bot.j3o", "Models/tank/tank_diff.png"), tankShootTop("Models/tank/tankShoot_top.j3o", "Models/tank/tank_diff.png"), treesSmallBackground("Models/treeSmall/treesSmallBackground.j3o", "Models/treeSmall/treeSmall_diff.png", 1.2f), diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/InputSynchronizer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/InputSynchronizer.java index bd258c59..bda4c252 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/InputSynchronizer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/InputSynchronizer.java @@ -149,25 +149,16 @@ else if(boardSelect != null) { if (name.equals("Right")) { isRotateRight = !isRotateRight; } - if(name.equals("Test") &&isPressed){ + if(name.equals("Test2") &&isPressed){ if(app.getView() instanceof GameView gameView){ if(p == null) { p = UUID.randomUUID(); gameView.getBoardHandler().addPlayer(Color.AIRFORCE,List.of(p,UUID.randomUUID(),UUID.randomUUID(),UUID.randomUUID())); gameView.getBoardHandler().movePieceStartAnim(p,0); - gameView.getGuiHandler().addCardOwn(BonusCard.SHIELD); - gameView.getGuiHandler().setSelectableCards(List.of(BonusCard.SHIELD)); - -// gameView.getBoardHandler().movePieceAnim(p,0, 8); + //gameView.getBoardHandler().movePieceAnim(p,0, 8); } else { -// gameView.getBoardHandler().throwBombAnim(p); - gameView.getBoardHandler().throwPiece(p,Color.ARMY); -// gameView.getBoardHandler().movePieceAnim(p,0,20); -// gameView.getBoardHandler().throwPiece(p,Color.CYBER); -// gameView.getBoardHandler().throwPiece(p,Color.AIRFORCE); - - + gameView.getBoardHandler().throwPiece(p, Color.ARMY); //gameView.getBoardHandler().movePieceStartAnim(p,0); } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSynchronizer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSynchronizer.java index 429b9ade..6b17eea6 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSynchronizer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/ModelSynchronizer.java @@ -1,16 +1,8 @@ package pp.mdga.client; -import pp.mdga.client.acoustic.MdgaSound; -import pp.mdga.client.server.MdgaServer; -import pp.mdga.client.view.CeremonyView; import pp.mdga.client.view.GameView; -import pp.mdga.client.view.LobbyView; import pp.mdga.game.BonusCard; import pp.mdga.game.Color; -import pp.mdga.message.client.LobbyReadyMessage; -import pp.mdga.notification.AcquireCardNotification; -import pp.mdga.notification.DrawCardNotification; -import pp.mdga.notification.TskSelectNotification; import java.util.UUID; import java.util.logging.Level; @@ -74,10 +66,11 @@ public void selectCard(BonusCard card) { this.card = card; GameView gameView = (GameView) app.getView(); + if(card != null) { gameView.needConfirm(); } else { - gameView.noConfirm(); + gameView.showNoPower(); } } @@ -87,20 +80,19 @@ public void confirm() { GameView gameView = (GameView) app.getView(); if(a != null && b != null) { - selectPiece(a); - selectPiece(b); + app.getGameLogic().selectPiece(a); + app.getGameLogic().selectPiece(b); gameView.getBoardHandler().clearSelectable(); } else if (a != null) { - selectPiece(a); + app.getGameLogic().selectPiece(a); gameView.getBoardHandler().clearSelectable(); - } else if (card != null){ - selectCard(card); - gameView.getGuiHandler().clearSelectableCards(); } else { - throw new RuntimeException("nothing to confirm"); + app.getGameLogic().selectCard(card); + gameView.getGuiHandler().clearSelectableCards(); } gameView.noConfirm(); + gameView.hideNoPower(); } public void selectTsk(Color color) { diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java index f36eee69..e652d1d7 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java @@ -1,5 +1,6 @@ package pp.mdga.client; +import pp.mdga.client.acoustic.MdgaSound; import pp.mdga.client.board.BoardHandler; import pp.mdga.client.gui.GuiHandler; import pp.mdga.client.view.CeremonyView; @@ -15,13 +16,26 @@ public class NotificationSynchronizer { private ArrayList notifications = new ArrayList<>(); + private NanoTimer timer = new NanoTimer(); + private float delay = 0; + + private static final float STANDARD_DELAY = 2.5f; + NotificationSynchronizer(MdgaApp app) { this.app = app; } public void update() { - Notification n = app.getGameLogic().getNotification(); - while (n != null) { + while (timer.getTimeInSeconds() >= delay) { + Notification n = app.getGameLogic().getNotification(); + + if(n == null) { + return; + } + + timer.reset(); + delay = 0; + if(n instanceof InfoNotification infoNotification) { app.getView().showInfo(infoNotification.getMessage(), infoNotification.isError()); return; @@ -89,9 +103,13 @@ private void handleGame(Notification notification) { if (notification instanceof AcquireCardNotification n) { guiHandler.addCardOwn(n.getBonusCard()); + app.getAcousticHandler().playSound(MdgaSound.BONUS); + delay = STANDARD_DELAY; } else if (notification instanceof ActivePlayerNotification n) { gameView.getGuiHandler().setActivePlayer(n.getColor()); if(n.getColor() != ownColor) boardHandler.showDice(n.getColor()); + app.getAcousticHandler().playSound(MdgaSound.UI90); + delay = STANDARD_DELAY; } else if (notification instanceof CeremonyNotification ceremonyNotification) { app.enter(MdgaState.CEREMONY); CeremonyView ceremonyView = (CeremonyView) app.getView(); @@ -126,8 +144,8 @@ private void handleGame(Notification notification) { } else if (notification instanceof HomeMoveNotification home) { boardHandler.movePieceHomeAnim(home.getPieceId(), home.getHomeIndex()); guiHandler.hideText(); - } else if (notification instanceof InterruptNotification) { - gameView.enterInterrupt(); + } else if (notification instanceof InterruptNotification notification1) { + gameView.enterInterrupt(notification1.getColor()); } else if (notification instanceof MovePieceNotification n) { if(n.isMoveStart()) { //StartMove @@ -160,8 +178,10 @@ private void handleGame(Notification notification) { if (n.isTurbo()) guiHandler.showRolledDiceMult(n.getEyes(), n.getMultiplier(), n.getColor()); else guiHandler.showRolledDice(n.getEyes(), n.getColor()); } + delay = 7; } else if (notification instanceof SelectableCardsNotification n) { guiHandler.setSelectableCards(n.getCards()); + gameView.showNoPower(); } else if (notification instanceof ShieldActiveNotification n) { boardHandler.shieldPiece(n.getPieceId()); } else if (notification instanceof ShieldSuppressedNotification n) { diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/AcousticHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/AcousticHandler.java index 8ff67526..5867a4c3 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/AcousticHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/AcousticHandler.java @@ -18,12 +18,14 @@ public class AcousticHandler { private boolean fading = false; // Indicates if a fade is in progress private NanoTimer fadeTimer = new NanoTimer(); // Timer to track fade progress - private static final float FADE_DURATION = 3.0f; // Duration for outfade + private static final float FADE_DURATION = 2.0f; // Duration for outfade private static final float CROSSFADE_DURATION = 1.5f; // Duration for infade private GameMusic playing = null; // Currently playing track private GameMusic scheduled = null; // Scheduled track to play next private GameMusic old = null; // Old track being faded out + private GameMusic birds; + private float mainVolume = 0.0f; private float musicVolume = 1.0f; private float soundVolume = 1.0f; @@ -38,6 +40,8 @@ public AcousticHandler(MdgaApp app) { mainVolume = prefs.getFloat("mainVolume", 1.0f); musicVolume = prefs.getFloat("musicVolume", 1.0f); soundVolume = prefs.getFloat("soundVolume", 1.0f); + + birds = new GameMusic(app, MusicAsset.BIRDS, getSoundVolumeTotal(), MusicAsset.BIRDS.getSubVolume(), MusicAsset.BIRDS.getLoop(), 0.0f); } /** @@ -60,6 +64,8 @@ public void update() { iterator.remove(); } } + + birds.update(Math.min(getSoundVolumeTotal(), getMusicVolumeTotal() > 0 ? 0 : 1)); } /** @@ -113,9 +119,9 @@ public void playSound(MdgaSound sound) { assets.add(new SoundAssetDelayVolume(SoundAsset.JET, 1.0f, 0.0f)); break; case EXPLOSION: - assets.add(new SoundAssetDelayVolume(SoundAsset.EXPLOSION_1, 1.0f, 4f)); - assets.add(new SoundAssetDelayVolume(SoundAsset.EXPLOSION_2, 1.0f, 4f)); - assets.add(new SoundAssetDelayVolume(SoundAsset.THUNDER, 1.0f, 4f)); + assets.add(new SoundAssetDelayVolume(SoundAsset.EXPLOSION_1, 1.0f, 0f)); + assets.add(new SoundAssetDelayVolume(SoundAsset.EXPLOSION_2, 1.0f, 0f)); + assets.add(new SoundAssetDelayVolume(SoundAsset.THUNDER, 1.0f, 0f)); break; case LOSE: assets.add(new SoundAssetDelayVolume(SoundAsset.LOSE, 1.0f, 0.0f)); @@ -123,6 +129,15 @@ public void playSound(MdgaSound sound) { case BONUS: assets.add(new SoundAssetDelayVolume(SoundAsset.BONUS, 1.0f, 0.0f)); break; + case UI90: + assets.add(new SoundAssetDelayVolume(SoundAsset.UI90, 1.0f, 0.0f)); + break; + case MISSILE: + assets.add(new SoundAssetDelayVolume(SoundAsset.MISSILE, 1.0f, 0.0f)); + break; + case MATRIX: + assets.add(new SoundAssetDelayVolume(SoundAsset.MATRIX, 1.0f, 0.0f)); + break; case TURRET_ROTATE: assets.add(new SoundAssetDelayVolume(SoundAsset.TURRET_ROTATE, 0.7f, 0f)); break; @@ -153,6 +168,10 @@ public void playState(MdgaState state) { } MusicAsset asset = null; + birds.pause(); + + float pause = 0.0f; + switch (state) { case MAIN: playGame = false; @@ -163,10 +182,12 @@ public void playState(MdgaState state) { asset = MusicAsset.LOBBY; break; case GAME: + birds.play(); addGameTracks(); playGame = true; assert (!gameTracks.isEmpty()) : "no more game music available"; asset = gameTracks.remove(0); + pause = 2.0f; break; case CEREMONY: playGame = false; @@ -178,7 +199,7 @@ public void playState(MdgaState state) { assert (null != asset) : "music sceduling went wrong"; - scheduled = new GameMusic(app, asset, getMusicVolumeTotal(), asset.getSubVolume(), asset.getLoop(), 0.0f); + scheduled = new GameMusic(app, asset, getMusicVolumeTotal(), asset.getSubVolume(), asset.getLoop(), pause); } /** @@ -454,7 +475,7 @@ public void setSoundVolume(float soundVolume) { */ float getMusicVolumeTotal() { - return getMusicVolume() * getMainVolume(); + return getMusicVolume() * getMainVolume() / 2; } /** diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MdgaSound.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MdgaSound.java index 9471e4f5..d7f93bae 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MdgaSound.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MdgaSound.java @@ -35,6 +35,9 @@ public enum MdgaSound { EXPLOSION, LOSE, BONUS, + UI90, + MISSILE, + MATRIX, TURRET_ROTATE, TANK_SHOOT, TANK_EXPLOSION diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MusicAsset.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MusicAsset.java index 1b211523..e31d6d95 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MusicAsset.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/MusicAsset.java @@ -10,12 +10,13 @@ enum MusicAsset { MAIN_MENU("Spaceship.wav", true, 1.0f), LOBBY("DeadPlanet.wav", true, 1.0f), CEREMONY("80s,Disco,Life.wav", true, 1.0f), - GAME_1("NeonRoadTrip.wav", 1.0f), - GAME_2("NoPressureTrance.wav", 1.0f), - GAME_3("TheSynthRave.wav", 1.0f), - GAME_4("LaserParty.wav", 1.0f), - GAME_5("RetroNoir.wav", 1.0f), - GAME_6("SpaceInvaders.wav", 1.0f); + GAME_1("NeonRoadTrip.wav", 0.5f), + GAME_2("NoPressureTrance.wav", 0.5f), + GAME_3("TheSynthRave.wav", 0.5f), + GAME_4("LaserParty.wav", 0.5f), + GAME_5("RetroNoir.wav", 0.5f), + GAME_6("SpaceInvaders.wav", 0.5f), + BIRDS("nature-ambience.ogg", true, 1.0f); private final String path; private final boolean loop; diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/SoundAsset.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/SoundAsset.java index c9c6b56f..09671259 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/SoundAsset.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/acoustic/SoundAsset.java @@ -35,6 +35,8 @@ enum SoundAsset { UI90("ui90.ogg"), BONUS("bonus.ogg"), LOSE("lose.ogg"), + MISSILE("missile.ogg"), + MATRIX("matrix.wav"), CONNECTED("connected.wav"), TURRET_ROTATE("turret_rotate.ogg"), TANK_SHOOT("tank_shoot.ogg") diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/Explosion.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/Explosion.java index 4fb01568..439e6ebc 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/Explosion.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/Explosion.java @@ -8,7 +8,12 @@ import com.jme3.scene.Node; import com.jme3.scene.control.AbstractControl; import pp.mdga.client.MdgaApp; +import pp.mdga.client.acoustic.MdgaSound; +/** + * The {@code Explosion} class represents an explosion effect in a 3D environment. + * It manages the creation, configuration, and triggering of particle emitters for fire and smoke effects. + */ public class Explosion { private final Node rootNode; @@ -22,11 +27,11 @@ public class Explosion { private final Material mat; /** - * Konstruktor für die Explosion. + * Constructor for the {@code Explosion} class. * - * @param app Die Hauptanwendung. - * @param rootNode Der Root-Knoten, an den die Explosion angefügt wird. - * @param location Der Ort der Explosion in World-Koordinaten. + * @param app The main application managing the explosion. + * @param rootNode The root node to which the explosion effects will be attached. + * @param location The location of the explosion in world coordinates. */ public Explosion(MdgaApp app, Node rootNode, Vector3f location) { this.app = app; @@ -34,51 +39,54 @@ public Explosion(MdgaApp app, Node rootNode, Vector3f location) { this.location = location; this.mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Particle.j3md"); - mat.getAdditionalRenderState().setDepthWrite(false); - mat.getAdditionalRenderState().setDepthTest(false); + mat.setTexture("Texture", app.getAssetManager().loadTexture("Images/particle/flame.png")); } /** - * Initialisiert den Partikel-Emitter für die Explosion. + * Initializes the particle emitters for the explosion effect. + * Configures the fire and smoke emitters with appearance, behavior, and lifespan. */ private void initializeEmitter() { fire = new ParticleEmitter("Effect", Type.Triangle,50); fire.setMaterial(mat); + fire.setImagesX(2); + fire.setImagesY(2); fire.setStartColor(ColorRGBA.Yellow); fire.setEndColor(ColorRGBA.Red); fire.getParticleInfluencer().setInitialVelocity(new Vector3f(0.2f,0.2f,4f)); fire.getParticleInfluencer().setVelocityVariation(0.4f); - fire.setStartSize(0.1f); - fire.setEndSize(0.8f); + fire.setStartSize(0.7f); + fire.setEndSize(1.8f); fire.setGravity(0, 0, -0.1f); fire.setLowLife(0.5f); fire.setHighLife(2.2f); fire.setParticlesPerSec(0); fire.setLocalTranslation(location); - fire.move(0, 0, 45); smoke = new ParticleEmitter("Effect2", Type.Triangle,40); smoke.setMaterial(mat); - smoke.setImagesX(2); - smoke.setImagesY(2); + smoke.setImagesX(3); + smoke.setImagesY(3); smoke.setStartColor(ColorRGBA.DarkGray); smoke.setEndColor(new ColorRGBA(0.05f, 0.05f, 0.05f, 1)); smoke.getParticleInfluencer().setInitialVelocity(new Vector3f(0.0f,0.0f,0.7f)); smoke.getParticleInfluencer().setVelocityVariation(0.5f); - smoke.setStartSize(0.2f); - smoke.setEndSize(0.5f); + smoke.setStartSize(0.8f); + smoke.setEndSize(1.5f); smoke.setGravity(0, 0, -0.3f); smoke.setLowLife(1.2f); smoke.setHighLife(5.5f); smoke.setParticlesPerSec(0); smoke.setLocalTranslation(location); - smoke.move(0, 0, 45); + + app.getAcousticHandler().playSound(MdgaSound.EXPLOSION); } /** - * Löst die Explosion aus. + * Triggers the explosion effect by attaching and activating the particle emitters for fire and smoke. + * Both emitters are automatically detached after a predefined duration. */ public void trigger() { if (!triggered) { diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/JetAnimation.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/JetAnimation.java index 0117825c..6607dd58 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/JetAnimation.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/JetAnimation.java @@ -17,31 +17,34 @@ import java.util.UUID; +/** + * The {@code JetAnimation} class handles the animation of a jet model in a 3D environment. + * It creates a jet model, animates its movement along a curved path, triggers an explosion at a target point, + * and performs additional actions upon animation completion. + */ public class JetAnimation { - private final MdgaApp app; // Referenz auf die Hauptanwendung - private final Node rootNode; // Root-Knoten, an dem die Animation hängt - private Spatial jetModel; // Das Model des "jet" - private final Vector3f spawnPoint; // Spawnpunkt des Jets - private final Vector3f nodePoint; // Punkt des überflogenen Knotens - private final Vector3f despawnPoint; // Punkt, an dem der Jet despawnt - private final float curveHeight; // Maximale Höhe der Kurve - private final float animationDuration; // Dauer der Animation + private final MdgaApp app; + private final Node rootNode; + private Spatial jetModel; + private final Vector3f spawnPoint; + private final Vector3f nodePoint; + private final Vector3f despawnPoint; + private final float curveHeight; + private final float animationDuration; private Explosion explosion; - private final UUID id; private Runnable actionAfter; /** - * Konstruktor für die ThrowAnimation-Klasse. + * Constructor for the {@code JetAnimation} class. * - * @param app Die Hauptanwendung - * @param rootNode Der Root-Knoten, an dem der Jet angefügt wird - * @param uuid Die UUID des pieces - * @param targetPoint Der Punkt, an dem der Jet spawnt - * @param curveHeight Die maximale Höhe der Flugkurve - * @param animationDuration Die Gesamtdauer der Animation in Sekunden + * @param app The main application managing the jet animation. + * @param rootNode The root node to which the jet model will be attached. + * @param targetPoint The target point where the explosion will occur. + * @param curveHeight The height of the curve for the jet's flight path. + * @param animationDuration The total duration of the jet animation. */ - public JetAnimation(MdgaApp app, Node rootNode, UUID uuid, Vector3f targetPoint, float curveHeight, float animationDuration, Runnable actionAfter) { + public JetAnimation(MdgaApp app, Node rootNode, Vector3f targetPoint, float curveHeight, float animationDuration, Runnable actionAfter) { Vector3f spawnPoint = targetPoint.add(170, 50, 50); Vector3f controlPoint = targetPoint.add(new Vector3f(0, 0, -45)); @@ -56,14 +59,12 @@ public JetAnimation(MdgaApp app, Node rootNode, UUID uuid, Vector3f targetPoint, this.curveHeight = curveHeight; this.animationDuration = animationDuration; - id = uuid; - - explosion = new Explosion(app, rootNode, nodePoint); + explosion = new Explosion(app, rootNode, targetPoint); this.actionAfter = actionAfter; } /** - * Startet die Animation. + * Starts the jet animation by spawning the jet model and initiating its movement along the predefined path. */ public void start() { app.getAcousticHandler().playSound(MdgaSound.JET); @@ -72,7 +73,7 @@ public void start() { } /** - * Spawnt den Jet an der spezifizierten Position. + * Spawns the jet model at the designated spawn point, applying material, scaling, and rotation. */ private void spawnJet() { jetModel = app.getAssetManager().loadModel(Asset.jet.getModelPath()); @@ -85,12 +86,11 @@ private void spawnJet() { jetModel.setMaterial(mat); rootNode.attachChild(jetModel); - - app.getAcousticHandler().playSound(MdgaSound.EXPLOSION); } - /** - * Animiert den Jet entlang einer Kurve und lässt ihn anschließend verschwinden. + /**actionAfter + * Animates the jet along a Bezier curve path, triggers the explosion effect at the appropriate time, + * and performs cleanup operations after the animation completes. */ private void animateJet() { Vector3f controlPoint1 = spawnPoint.add(0, curveHeight, 0); @@ -127,9 +127,7 @@ protected void controlUpdate(float tpf) { } @Override - protected void controlRender(RenderManager rm, ViewPort vp) { - // Wird hier nicht benötigt - } + protected void controlRender(RenderManager rm, ViewPort vp) {} }); } @@ -138,11 +136,20 @@ private void endAnim(){ } /** - * Repräsentiert eine 3D-Bezier-Kurve mit vier Kontrollpunkten. + * The {@code BezierCurve3f} class represents a 3D cubic Bezier curve. + * It provides methods to interpolate positions and derivatives along the curve. */ private static class BezierCurve3f { private final Vector3f p0, p1, p2, p3; + /** + * Constructor for the {@code BezierCurve3f} class. + * + * @param p0 The starting point of the curve. + * @param p1 The first control point influencing the curve's shape. + * @param p2 The second control point influencing the curve's shape. + * @param p3 The endpoint of the curve. + */ public BezierCurve3f(Vector3f p0, Vector3f p1, Vector3f p2, Vector3f p3) { this.p0 = p0; this.p1 = p1; @@ -150,6 +157,12 @@ public BezierCurve3f(Vector3f p0, Vector3f p1, Vector3f p2, Vector3f p3) { this.p3 = p3; } + /** + * Interpolates a position along the curve at a given progress value {@code t}. + * + * @param t The progress value (0.0 to 1.0) along the curve. + * @return The interpolated position on the curve. + */ public Vector3f interpolate(float t) { float u = 1 - t; float tt = t * t; @@ -164,6 +177,12 @@ public Vector3f interpolate(float t) { return point; } + /** + * Computes the derivative at a given progress value {@code t}, representing the direction along the curve. + * + * @param t The progress value (0.0 to 1.0) along the curve. + * @return The derivative (direction vector) at the specified progress. + */ public Vector3f interpolateDerivative(float t) { float u = 1 - t; float tt = t * t; diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/MissileAnimation.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/MissileAnimation.java new file mode 100644 index 00000000..90cca657 --- /dev/null +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/MissileAnimation.java @@ -0,0 +1,185 @@ +package pp.mdga.client.animation; + +import com.jme3.effect.ParticleEmitter; +import com.jme3.effect.ParticleMesh; +import com.jme3.material.Material; +import com.jme3.math.ColorRGBA; +import com.jme3.math.FastMath; +import com.jme3.math.Vector3f; +import com.jme3.renderer.RenderManager; +import com.jme3.renderer.ViewPort; +import com.jme3.renderer.queue.RenderQueue; +import com.jme3.scene.Node; +import com.jme3.scene.Spatial; +import com.jme3.scene.control.AbstractControl; +import pp.mdga.client.Asset; +import pp.mdga.client.MdgaApp; +import pp.mdga.client.acoustic.MdgaSound; +import pp.mdga.client.board.BoardHandler; + +import java.util.UUID; + +/** + * The {@code MissileAnimation} class handles the animation of a missile moving along a parabolic path + * towards a target point in a 3D environment. It also triggers an explosion at the target upon impact. + */ +public class MissileAnimation { + + private final Node rootNode; + private final MdgaApp app; + private final Vector3f start; + private final Vector3f target; + private final float flightTime; + private Explosion explosion; + private Spatial missileModel; + private Runnable actionAfter; + private ParticleEmitter smoke; + + private Node missileNode = new Node(); + + private final Material mat; + + /** + * Constructor for the {@code MissileAnimation} class. + * + * @param app The main application managing the missile animation. + * @param rootNode The root node to which the missile model will be attached. + * @param target The target point where the missile will explode. + * @param flightTime The total flight time of the missile. + */ + public MissileAnimation(MdgaApp app, Node rootNode, Vector3f target, float flightTime, Runnable actionAfter) { + this.app = app; + this.rootNode = rootNode; + this.flightTime = flightTime; + this.actionAfter = actionAfter; + + explosion = new Explosion(app, rootNode, target); + + this.target = target.add(new Vector3f(1.5f, -1, 0)); + + + start = BoardHandler.gridToWorld(12, 0); + start.add(new Vector3f(0, 0, 0)); + + this.mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Particle.j3md"); + mat.setTexture("Texture", app.getAssetManager().loadTexture("Images/particle/vapor_cloud.png")); + + smoke = new ParticleEmitter("Effect2", ParticleMesh.Type.Triangle,400); + smoke.setMaterial(mat); + smoke.setImagesX(3); + smoke.setImagesY(3); + smoke.setStartColor(ColorRGBA.DarkGray); + smoke.setEndColor(new ColorRGBA(0.05f, 0.05f, 0.05f, 1)); + smoke.getParticleInfluencer().setInitialVelocity(new Vector3f(0.0f,0.0f,0.0f)); + smoke.getParticleInfluencer().setVelocityVariation(0.1f); + smoke.setStartSize(0.8f); + smoke.setEndSize(1.5f); + smoke.setGravity(0, 0, -0.3f); + smoke.setLowLife(1.2f); + smoke.setHighLife(3.5f); + smoke.setParticlesPerSec(100); + missileNode.attachChild(smoke); + smoke.move(1, 0.85f, 1.0f); + } + + /** + * Starts the missile animation by loading the missile model and initiating its parabolic movement. + */ + public void start() { + Smoke s = new Smoke(app, rootNode, start); + s.trigger(); + loadMissile(); + app.getAcousticHandler().playSound(MdgaSound.MISSILE); + animateMissile(); + } + + /** + * Loads the missile model into the scene, applies scaling, material, and sets its initial position. + */ + private void loadMissile() { + missileModel = app.getAssetManager().loadModel(Asset.missile.getModelPath()); + missileModel.scale(Asset.missile.getSize()); + missileModel.setShadowMode(RenderQueue.ShadowMode.CastAndReceive); + Material mat = new Material(app.getAssetManager(), "Common/MatDefs/Light/Lighting.j3md"); + mat.setTexture("DiffuseMap", app.getAssetManager().loadTexture(Asset.missile.getDiffPath())); + missileModel.setMaterial(mat); + + missileNode.setLocalTranslation(start); + missileNode.attachChild(missileModel); + + rootNode.attachChild(missileNode); + } + + /** + * Animates the missile along a parabolic path, triggers the explosion near the target, + * and removes the missile model after the animation completes. + */ + private void animateMissile() { + missileNode.addControl(new AbstractControl() { + private float elapsedTime = 0; + + @Override + protected void controlUpdate(float tpf) { + if(elapsedTime > 6) { + endAnim(); + rootNode.detachChild(missileNode); + this.spatial.removeControl(this); + } + + elapsedTime += tpf; + float progress = elapsedTime / flightTime; + + if (progress >= 0.55) { + smoke.setParticlesPerSec(30); + } + + if (progress >= 0.7) { + smoke.setParticlesPerSec(0); + } + + if (progress >= 0.95f) { + explosion.trigger(); + } + + if (progress >= 1) { + explosion.trigger(); + missileNode.detachChild(missileModel); + } + + Vector3f currentPosition = computeParabolicPath(start, target, progress); + missileNode.setLocalTranslation(currentPosition); + + Vector3f direction = computeParabolicPath(start, target, progress + 0.01f) + .subtract(currentPosition) + .normalizeLocal(); + missileModel.lookAt(currentPosition.add(direction), Vector3f.UNIT_Y); + missileModel.rotate(0, FastMath.HALF_PI, 0); + } + + @Override + protected void controlRender(RenderManager rm, ViewPort vp) { + } + }); + } + + private void endAnim(){ + actionAfter.run(); + } + + /** + * Computes a position along a parabolic path at a given progress value {@code t}. + * + * @param start The starting point of the missile's flight. + * @param target The target point of the missile's flight. + * @param t The progress value (0.0 to 1.0) along the flight path. + * @return The interpolated position along the parabolic path. + */ + private Vector3f computeParabolicPath(Vector3f start, Vector3f target, float t) { + Vector3f midPoint = start.add(target).multLocal(0.5f); + midPoint.addLocal(0, 0, 20); + + Vector3f startToMid = FastMath.interpolateLinear(t, start, midPoint); + Vector3f midToTarget = FastMath.interpolateLinear(t, midPoint, target); + return FastMath.interpolateLinear(t, startToMid, midToTarget); + } +} diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/Smoke.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/Smoke.java new file mode 100644 index 00000000..1786a656 --- /dev/null +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/animation/Smoke.java @@ -0,0 +1,127 @@ +package pp.mdga.client.animation; + +import com.jme3.effect.ParticleEmitter; +import com.jme3.effect.ParticleMesh; +import com.jme3.material.Material; +import com.jme3.math.ColorRGBA; +import com.jme3.math.Vector3f; +import com.jme3.scene.Node; +import com.jme3.scene.control.AbstractControl; +import pp.mdga.client.MdgaApp; +import pp.mdga.client.acoustic.MdgaSound; + +public class Smoke { + + private final Node rootNode; + private final MdgaApp app; + private final Vector3f location; + private ParticleEmitter fire; + private ParticleEmitter smoke; + + private boolean triggered = false; + + private final Material mat; + + /** + * Constructor for the {@code Explosion} class. + * + * @param app The main application managing the explosion. + * @param rootNode The root node to which the explosion effects will be attached. + * @param location The location of the explosion in world coordinates. + */ + public Smoke(MdgaApp app, Node rootNode, Vector3f location) { + this.app = app; + this.rootNode = rootNode; + this.location = location; + + this.mat = new Material(app.getAssetManager(), "Common/MatDefs/Misc/Particle.j3md"); + mat.setTexture("Texture", app.getAssetManager().loadTexture("Images/particle/vapor_cloud.png")); + } + + /** + * Initializes the particle emitters for the explosion effect. + * Configures the fire and smoke emitters with appearance, behavior, and lifespan. + */ + private void initializeEmitter() { + fire = new ParticleEmitter("Effect", ParticleMesh.Type.Triangle,50); + fire.setMaterial(mat); + fire.setStartColor(ColorRGBA.DarkGray); + fire.setEndColor(ColorRGBA.DarkGray); + fire.getParticleInfluencer().setInitialVelocity(new Vector3f(0.2f,0.2f,4f)); + fire.getParticleInfluencer().setVelocityVariation(0.4f); + fire.setStartSize(0.7f); + fire.setEndSize(3.8f); + fire.setGravity(0, 0, -0.1f); + fire.setLowLife(0.5f); + fire.setHighLife(1.2f); + fire.setParticlesPerSec(0); + + fire.setLocalTranslation(location); + + smoke = new ParticleEmitter("Effect2", ParticleMesh.Type.Triangle,40); + smoke.setMaterial(mat); + smoke.setImagesX(2); + smoke.setImagesY(2); + smoke.setStartColor(ColorRGBA.DarkGray); + smoke.setEndColor(new ColorRGBA(0.05f, 0.05f, 0.05f, 1)); + smoke.getParticleInfluencer().setInitialVelocity(new Vector3f(0.0f,0.0f,2f)); + smoke.getParticleInfluencer().setVelocityVariation(0.5f); + smoke.setStartSize(0.5f); + smoke.setEndSize(1.5f); + smoke.setGravity(0, 0, -0.3f); + smoke.setLowLife(1.2f); + smoke.setHighLife(2.5f); + smoke.setParticlesPerSec(0); + + smoke.setLocalTranslation(location); + + app.getAcousticHandler().playSound(MdgaSound.EXPLOSION); + } + + /** + * Triggers the explosion effect by attaching and activating the particle emitters for fire and smoke. + * Both emitters are automatically detached after a predefined duration. + */ + public void trigger() { + if (!triggered) { + triggered = true; + initializeEmitter(); + } + + rootNode.attachChild(fire); + fire.emitAllParticles(); + fire.addControl(new AbstractControl() { + private float elapsedTime = 0; + + @Override + protected void controlUpdate(float tpf) { + elapsedTime += tpf; + if (elapsedTime > 10f) { + rootNode.detachChild(fire); + fire.removeControl(this); + } + } + + @Override + protected void controlRender(com.jme3.renderer.RenderManager rm, com.jme3.renderer.ViewPort vp) {} + }); + + rootNode.attachChild(smoke); + smoke.emitAllParticles(); + smoke.addControl(new AbstractControl() { + private float elapsedTime = 0; + + @Override + protected void controlUpdate(float tpf) { + elapsedTime += tpf; + if (elapsedTime > 10f) { + rootNode.detachChild(smoke); + smoke.removeControl(this); + } + } + + @Override + protected void controlRender(com.jme3.renderer.RenderManager rm, com.jme3.renderer.ViewPort vp) {} + }); + } +} diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java index 1ab76b22..3ec30a2c 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java @@ -224,7 +224,7 @@ private Spatial createModel(Asset asset, Vector3f pos, float rot) { * @param y The y-coordinate on the grid * @return The corresponding world position */ - private static Vector3f gridToWorld(int x, int y) { + public static Vector3f gridToWorld(int x, int y) { return new Vector3f(GRID_SIZE * x, GRID_SIZE * y, GRID_ELEVATION); } @@ -240,16 +240,38 @@ private Spatial displayAsset(AssetOnMap assetOnMap) { return createModel(assetOnMap.asset(), gridToWorld(x, y), assetOnMap.rot()); } + /** + * Adds a visual representation of an asset to the scene, attaches a control to it, and returns the control. + * + * @param assetOnMap The asset to be displayed in the 3D environment. + * @param control The control to be added to the spatial representing the asset. + * @param The type of control, extending {@code AbstractControl}. + * @return The control that was added to the spatial. + */ private T displayAndControl(AssetOnMap assetOnMap, T control) { Spatial spatial = displayAsset(assetOnMap); spatial.addControl(control); return control; } + /** + * Moves a piece in the 3D environment to the location of a specified node. + * + * @param pieceControl The control managing the piece to be moved. + * @param nodeControl The control managing the target node to which the piece will move. + */ private void movePieceToNode(PieceControl pieceControl, NodeControl nodeControl){ pieceControl.setLocation(nodeControl.getLocation()); } + /** + * Adds a home node for a specific player color, attaching it to the map of home nodes. + * + * @param map The map storing lists of home nodes by player color. + * @param color The color associated with the home nodes to be added. + * @param assetOnMap The asset representing the home node in the 3D environment. + * @throws RuntimeException if more than 4 home nodes are added for a single color. + */ private void addHomeNode(Map> map, Color color, AssetOnMap assetOnMap){ List homeNodes = addItemToMapList(map, color, displayAndControl(assetOnMap, new NodeControl(app, fpp))); if (homeNodes.size() > 4) throw new RuntimeException("too many homeNodes for " + color); @@ -293,6 +315,16 @@ private void movePieceRek(UUID uuid, int curIndex, int moveIndex){ movePieceRek(uuid, curIndex, moveIndex); } + /** + * Adds an item to a list in a map. If the key does not exist in the map, a new list is created. + * + * @param map The map containing lists of items. + * @param key The key associated with the list in the map. + * @param item The item to be added to the list. + * @param The type of items in the list. + * @param The type of the key in the map. + * @return The updated list associated with the specified key. + */ private List addItemToMapList(Map> map, E key, T item){ List list = map.getOrDefault(key, new ArrayList<>()); list.add(item); @@ -300,12 +332,27 @@ private List addItemToMapList(Map> map, E key, T item){ return list; } + /** + * Removes an item from a list in a map. If the key does not exist in the map, a new list is created. + * + * @param map The map containing lists of items. + * @param key The key associated with the list in the map. + * @param item The item to be removed from the list. + * @param The type of items in the list. + * @param The type of the key in the map. + */ private void removeItemFromMapList(Map> map, E key, T item){ List list = map.getOrDefault(key, new ArrayList<>()); list.remove(item); map.put(key, list); } + /** + * Calculates the mean position of the waiting nodes for a specific color. + * + * @param color The color associated with the waiting nodes. + * @return The mean position of the waiting nodes as a {@code Vector3f}. + */ private Vector3f getWaitingPos(Color color){ return getMeanPosition(waitingNodesMap.get(color).stream().map(NodeControl::getLocation).toList()); } @@ -753,7 +800,7 @@ public void throwPieceAnim(UUID uuid){ public void throwPiece(UUID uuid, Color throwColor){ switch(throwColor){ case ARMY -> throwShell(uuid); - case NAVY -> throwMissle(uuid); + case NAVY -> throwMissile(uuid); case CYBER -> throwMatrix(uuid); case AIRFORCE -> throwBomb(uuid); default -> throw new RuntimeException("invalid color"); @@ -768,7 +815,7 @@ public void throwPiece(UUID uuid, Color throwColor){ private void throwBomb(UUID uuid) { Vector3f targetPoint = pieces.get(uuid).getLocation(); - JetAnimation anim = new JetAnimation(app, rootNode, uuid, targetPoint, 40, 6, ()->throwPieceAnim(uuid)); + JetAnimation anim = new JetAnimation(app, rootNode, targetPoint, 40, 6, ()->throwPieceAnim(uuid)); anim.start(); } @@ -785,8 +832,11 @@ private void throwMatrix(UUID uuid) { })); } - private void throwMissle(UUID uuid) { + private void throwMissile(UUID uuid) { + Vector3f targetPoint = pieces.get(uuid).getLocation(); + MissileAnimation anim = new MissileAnimation(app, rootNode, targetPoint, 2f, ()->throwPieceAnim(uuid)); + anim.start(); } private void throwShell(UUID uuid) { diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/OutlineControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/OutlineControl.java index f0dfba51..aa1a999b 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/OutlineControl.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/OutlineControl.java @@ -18,17 +18,37 @@ public class OutlineControl extends InitControl { private static final int THICKNESS_DEFAULT = 6; private MdgaApp app; - + /** + * Constructs an {@code OutlineControl} with default thickness for the object outline. + * + * @param app The main application managing the outline control. + * @param fpp The {@code FilterPostProcessor} used for post-processing effects. + */ public OutlineControl(MdgaApp app, FilterPostProcessor fpp){ this.app = app; outlineOwn = new SelectObjectOutliner(THICKNESS_DEFAULT, fpp, app.getRenderManager(), app.getAssetManager(), app.getCamera(), app); } + /** + * Constructs an {@code OutlineControl} with default thickness, allowing a custom camera to be specified. + * + * @param app The main application managing the outline control. + * @param fpp The {@code FilterPostProcessor} used for post-processing effects. + * @param cam The camera used for rendering the outlined objects. + */ public OutlineControl(MdgaApp app, FilterPostProcessor fpp, Camera cam){ this.app = app; outlineOwn = new SelectObjectOutliner(THICKNESS_DEFAULT, fpp, app.getRenderManager(), app.getAssetManager(), cam, app); } + /** + * Constructs an {@code OutlineControl} with a specified thickness and custom camera. + * + * @param app The main application managing the outline control. + * @param fpp The {@code FilterPostProcessor} used for post-processing effects. + * @param cam The camera used for rendering the outlined objects. + * @param thickness The thickness of the outline. + */ public OutlineControl(MdgaApp app, FilterPostProcessor fpp, Camera cam, int thickness){ this.app = app; outlineOwn = new SelectObjectOutliner(thickness, fpp, app.getRenderManager(), app.getAssetManager(), cam, app); @@ -61,6 +81,11 @@ public void deOutline(){ outlineOwn.deselect(spatial); } + /** + * Retrieves the instance of the {@code MdgaApp} associated with this control. + * + * @return The {@code MdgaApp} instance. + */ public MdgaApp getApp() { return app; } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/button/SliderButton.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/button/SliderButton.java index 4a4ebf51..b4937576 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/button/SliderButton.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/button/SliderButton.java @@ -77,12 +77,17 @@ public SliderButton(MdgaApp app, Node node, String label) { QuadBackgroundComponent background = new QuadBackgroundComponent(BUTTON_NORMAL); slider.setBackground(background); + // Set label background + QuadBackgroundComponent labelBackground = new QuadBackgroundComponent(BUTTON_NORMAL); + this.label.setBackground(labelBackground); + // Configure the label font this.label.setFont(font); + this.label.setTextHAlignment(HAlignment.Center); // Default position and size pos = new Vector2f(0, 0); - size = new Vector2f(5.5f, 1); + size = new Vector2f(6f, 1); // Add label and slider to container container.addChild(this.label); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/AudioSettingsDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/AudioSettingsDialog.java index 80f5bf4f..0e8ed643 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/AudioSettingsDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/AudioSettingsDialog.java @@ -7,6 +7,11 @@ import pp.mdga.client.button.SliderButton; import pp.mdga.client.view.MdgaView; +/** + * The {@code AudioSettingsDialog} class represents a dialog for adjusting audio settings in the application. + * It provides controls for managing main volume, music volume, and sound effect volume, and includes + * a button to return to the previous menu. + */ public class AudioSettingsDialog extends Dialog { private final MdgaView view; @@ -18,6 +23,13 @@ public class AudioSettingsDialog extends Dialog { private boolean active = false; + /** + * Constructs an {@code AudioSettingsDialog}. + * + * @param app The main application managing the dialog. + * @param node The root node for attaching UI elements. + * @param view The current view, used for navigation and interaction with the dialog. + */ public AudioSettingsDialog(MdgaApp app, Node node, MdgaView view) { super(app, node); @@ -42,6 +54,9 @@ public AudioSettingsDialog(MdgaApp app, Node node, MdgaView view) { backButton.setPos(new Vector2f(0, 1.8f)); } + /** + * Called when the dialog is shown. Initializes and displays the volume controls and back button. + */ @Override protected void onShow() { active = true; @@ -57,6 +72,9 @@ protected void onShow() { soundVolume.show(); } + /** + * Called when the dialog is hidden. Hides all volume controls and the back button. + */ @Override protected void onHide() { active = false; @@ -68,6 +86,10 @@ protected void onHide() { soundVolume.hide(); } + /** + * Updates the application audio settings based on the current values of the sliders. + * This method is called continuously while the dialog is active. + */ public void update() { if(!active) { return; diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/CeremonyDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/CeremonyDialog.java index 97c47e10..fd688bc3 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/CeremonyDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/CeremonyDialog.java @@ -10,17 +10,30 @@ import java.util.ArrayList; +/** + * The {@code CeremonyDialog} class displays a dialog containing statistical data in a tabular format. + * It allows adding rows of statistics and manages their visibility when shown or hidden. + */ public class CeremonyDialog extends Dialog { private ArrayList> labels; float offsetX; + /** + * Constructs a {@code CeremonyDialog}. + * + * @param app The main application managing the dialog. + * @param node The root node for attaching UI elements. + */ public CeremonyDialog(MdgaApp app, Node node) { super(app, node); prepare(); } + /** + * Called when the dialog is shown. Makes all label buttons in the table visible. + */ @Override protected void onShow() { for (ArrayList row : labels) { @@ -30,6 +43,9 @@ protected void onShow() { } } + /** + * Called when the dialog is hidden. Hides all label buttons in the table. + */ @Override protected void onHide() { for (ArrayList row : labels) { @@ -39,6 +55,17 @@ protected void onHide() { } } + /** + * Adds a row of statistical data to the dialog. + * + * @param name The name of the player or category for the row. + * @param v1 The value for the first column. + * @param v2 The value for the second column. + * @param v3 The value for the third column. + * @param v4 The value for the fourth column. + * @param v5 The value for the fifth column. + * @param v6 The value for the sixth column. + */ public void addStatisticsRow(String name, int v1, int v2, int v3, int v4, int v5, int v6) { float offsetYSmall = 0.5f; @@ -76,6 +103,9 @@ public void addStatisticsRow(String name, int v1, int v2, int v3, int v4, int v5 labels.add(row); } + /** + * Prepares the initial layout of the dialog, including header labels. + */ public void prepare() { offsetX = 0.5f; diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/Dialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/Dialog.java index 46645895..d6e25481 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/Dialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/Dialog.java @@ -4,30 +4,53 @@ import com.simsilica.lemur.Container; import pp.mdga.client.MdgaApp; +/** + * The {@code Dialog} class serves as an abstract base class for dialogs in the application. + * It provides functionality for showing and hiding the dialog and defines abstract methods + * for custom behavior when the dialog is shown or hidden. + */ public abstract class Dialog { protected final MdgaApp app; protected final Node node = new Node(); private final Node root; + /** + * Constructs a {@code Dialog}. + * + * @param app The main application managing the dialog. + * @param node The root node to which the dialog's node will be attached. + */ Dialog(MdgaApp app, Node node) { this.app = app; this.root = node; } + /** + * Shows the dialog by attaching its node to the root node and invoking the {@code onShow} method. + */ public void show() { root.attachChild(node); onShow(); } + /** + * Hides the dialog by detaching its node from the root node and invoking the {@code onHide} method. + */ public void hide() { root.detachChild(node); onHide(); } + /** + * Called when the dialog is shown. Subclasses must implement this method to define custom behavior. + */ protected abstract void onShow(); + /** + * Called when the dialog is hidden. Subclasses must implement this method to define custom behavior. + */ protected abstract void onHide(); } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/HostDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/HostDialog.java index 829aff09..f09f9d80 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/HostDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/HostDialog.java @@ -12,6 +12,10 @@ import java.util.prefs.Preferences; +/** + * The {@code HostDialog} class represents a dialog for hosting a network game session. + * It allows users to input a port number, start hosting a server, and navigate back to the previous view. + */ public class HostDialog extends NetworkDialog { private InputButton portInput; @@ -22,6 +26,13 @@ public class HostDialog extends NetworkDialog { private Preferences prefs = Preferences.userNodeForPackage(JoinDialog.class); + /** + * Constructs a {@code HostDialog}. + * + * @param app The main application managing the dialog. + * @param node The root node for attaching UI elements. + * @param view The main view used for navigation and interaction with the dialog. + */ public HostDialog(MdgaApp app, Node node, MainView view) { super(app, node, (NetworkSupport) app.getNetworkSupport()); @@ -39,6 +50,9 @@ public HostDialog(MdgaApp app, Node node, MainView view) { offset += 1.5f; } + /** + * Called when the dialog is shown. Displays all input fields and buttons. + */ @Override protected void onShow() { portInput.show(); @@ -46,6 +60,9 @@ protected void onShow() { backButton.show(); } + /** + * Called when the dialog is hidden. Hides all input fields and buttons. + */ @Override protected void onHide() { portInput.hide(); @@ -53,27 +70,44 @@ protected void onHide() { backButton.hide(); } + /** + * Updates the state of the port input field. + * This method is called periodically to synchronize the dialog state. + */ public void update() { portInput.update(); } + /** + * Retrieves the currently entered port number, saves it to preferences, and sets it as the active port. + * + * @return The port number as a string. + */ public String getPort() { prefs.put("hostPort", portInput.getString()); setPortNumber(Integer.parseInt(portInput.getString())); return portInput.getString(); } + /** + * Resets the port input field to its default value and updates preferences accordingly. + */ public void resetPort() { portInput.reset(); prefs.put("hostPort", "11111"); } + /** + * Starts the server to host a network game. + */ public void hostServer() { startServer(); } + /** + * Connects to the server as a client. + */ public void connectServerAsClient() { connectServer(); } - } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/InterruptDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/InterruptDialog.java index 7b8d63e2..201ac65f 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/InterruptDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/InterruptDialog.java @@ -8,36 +8,77 @@ import pp.mdga.client.button.LabelButton; import pp.mdga.client.button.MenuButton; import pp.mdga.client.view.MdgaView; +import pp.mdga.game.Color; +/** + * The {@code InterruptDialog} class represents a dialog that interrupts the game flow, + * providing a message and the option to force an action if the user is a host. + */ public class InterruptDialog extends Dialog { private ButtonRight forceButton; private LabelButton label; + private String text = ""; + + /** + * Constructs an {@code InterruptDialog}. + * + * @param app The main application managing the dialog. + * @param node The root node for attaching UI elements. + */ public InterruptDialog(MdgaApp app, Node node) { super(app, node); forceButton = new ButtonRight(app, node, () -> app.getModelSynchronize().force(), "Erzwingen", 1); - - label = new LabelButton(app, node, "Warte auf Spieler...", new Vector2f(5.5f * 1.5f, 2), new Vector2f(0.5f, 0f), false); - - float offset = 2.8f; - - label.setPos(new Vector2f(0, MenuButton.VERTICAL - offset)); } + /** + * Called when the dialog is shown. Displays the label and optionally the force button if the user is the host. + */ + @Override protected void onShow() { if(app.getGameLogic().isHost()) { forceButton.show(); } + label = new LabelButton(app, node, "Warte auf " + text + "...", new Vector2f(5.5f * 1.5f, 2), new Vector2f(0.5f, 0f), false); + + float offset = 2.8f; + label.setPos(new Vector2f(0, MenuButton.VERTICAL - offset)); + label.show(); } + /** + * Called when the dialog is hidden. Hides the label and the force button. + */ @Override protected void onHide() { forceButton.hide(); label.hide(); } + + /** + * Sets the displayed text based on the specified color. + * + * @param color The color used to determine the text (e.g., "Luftwaffe" for AIRFORCE). + */ + public void setColor(Color color) { + switch (color) { + case AIRFORCE: + text = "Luftwaffe"; + break; + case ARMY: + text = "Heer"; + break; + case NAVY: + text = "Marine"; + break; + case CYBER: + text = "CIR"; + break; + } + } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/JoinDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/JoinDialog.java index eedd8cb8..5a1657a0 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/JoinDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/JoinDialog.java @@ -13,6 +13,10 @@ import java.util.prefs.Preferences; +/** + * The {@code JoinDialog} class represents a dialog for joining a network game. + * It allows users to input an IP address and port number, connect to a server, or navigate back to the previous view. + */ public class JoinDialog extends NetworkDialog { private InputButton ipInput; private InputButton portInput; @@ -24,6 +28,13 @@ public class JoinDialog extends NetworkDialog { private Preferences prefs = Preferences.userNodeForPackage(JoinDialog.class); + /** + * Constructs a {@code JoinDialog}. + * + * @param app The main application managing the dialog. + * @param node The root node for attaching UI elements. + * @param view The main view used for navigation and interaction with the dialog. + */ public JoinDialog(MdgaApp app, Node node, MainView view) { super(app, node, (NetworkSupport) app.getNetworkSupport()); @@ -46,6 +57,9 @@ public JoinDialog(MdgaApp app, Node node, MainView view) { offset += 1.5f; } + /** + * Called when the dialog is shown. Displays all input fields and buttons. + */ @Override protected void onShow() { ipInput.show(); @@ -54,6 +68,9 @@ protected void onShow() { backButton.show(); } + /** + * Called when the dialog is hidden. Hides all input fields and buttons. + */ @Override protected void onHide() { ipInput.hide(); @@ -62,37 +79,62 @@ protected void onHide() { backButton.hide(); } + /** + * Updates the state of the input fields. This method is called periodically to synchronize the dialog state. + */ public void update() { ipInput.update(); portInput.update(); } + /** + * Retrieves the currently entered IP address, saves it to preferences, and sets it as the hostname. + * + * @return The IP address as a string. + */ public String getIpt() { prefs.put("joinIp", ipInput.getString()); setHostname(ipInput.getString()); return ipInput.getString(); } + /** + * Resets the IP input field to its default value and updates preferences accordingly. + */ public void resetIp() { ipInput.reset(); prefs.put("joinIp", ""); } + /** + * Retrieves the currently entered port number, saves it to preferences, and sets it as the active port. + * + * @return The port number as a string. + */ public String getPort() { prefs.put("joinPort", portInput.getString()); setPortNumber(Integer.parseInt(portInput.getString())); return portInput.getString(); } + /** + * Resets the port input field to its default value and updates preferences accordingly. + */ public void resetPort() { portInput.reset(); prefs.put("joinPort", "11111"); } + /** + * Connects to the server using the current IP address and port number. + */ public void connectToServer() { connectServer(); } + /** + * Disconnects from the server if a network connection exists. + */ public void disconnect() { NetworkSupport network = getNetwork(); if (network != null) { @@ -104,4 +146,3 @@ public void disconnect() { } } } - diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/NetworkDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/NetworkDialog.java index d44de294..c3d204c9 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/NetworkDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/NetworkDialog.java @@ -8,6 +8,11 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; +/** + * The {@code NetworkDialog} class serves as an abstract base class for dialogs + * that involve network-related functionalities, such as connecting to a server or hosting a game. + * It provides methods for initializing, connecting to, and managing a network server. + */ public abstract class NetworkDialog extends Dialog { private NetworkSupport network; @@ -17,19 +22,41 @@ public abstract class NetworkDialog extends Dialog { private MdgaServer serverInstance; private Thread serverThread; + /** + * Constructs a {@code NetworkDialog}. + * + * @param app The main application managing the dialog. + * @param node The root node for attaching UI elements. + * @param network The network support instance for managing network interactions. + */ public NetworkDialog(MdgaApp app, Node node, NetworkSupport network) { super(app, node); this.network = network; } + /** + * Sets the hostname for the network connection. + * + * @param hostname The hostname or IP address of the server. + */ public void setHostname(String hostname) { this.hostname = hostname; } + /** + * Sets the port number for the network connection. + * + * @param portNumber The port number to use for the connection. + */ public void setPortNumber(int portNumber) { this.portNumber = portNumber; } + /** + * Initializes the network connection using the current hostname and port number. + * + * @return {@code null} if successful, otherwise throws an exception. + */ protected Object initNetwork() { try { this.network.initNetwork(this.hostname, this.portNumber); @@ -39,6 +66,9 @@ protected Object initNetwork() { } } + /** + * Starts the process of connecting to a server asynchronously. + */ protected void connectServer() { try { connectionFuture = this.network.getApp().getExecutor().submit(this::initNetwork); @@ -47,6 +77,9 @@ protected void connectServer() { } } + /** + * Starts hosting a server in a separate thread. + */ protected void startServer() { serverThread = new Thread(() -> { try { @@ -60,6 +93,9 @@ protected void startServer() { serverThread.start(); } + /** + * Shuts down the hosted server and cleans up resources. + */ public void shutdownServer() { try { @@ -85,6 +121,11 @@ public void shutdownServer() { } } + /** + * Updates the state of the connection process. + * + * @param delta The time elapsed since the last update call. + */ public void update(float delta) { if (this.connectionFuture != null && this.connectionFuture.isDone()) { try { @@ -97,6 +138,11 @@ public void update(float delta) { } } + /** + * Retrieves the {@code NetworkSupport} instance associated with this dialog. + * + * @return The {@code NetworkSupport} instance. + */ public NetworkSupport getNetwork() { return network; } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SettingsDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SettingsDialog.java index 455abfb9..16aab847 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SettingsDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/SettingsDialog.java @@ -8,6 +8,10 @@ import pp.mdga.client.view.MainView; import pp.mdga.client.view.MdgaView; +/** + * The {@code SettingsDialog} class represents a dialog for navigating to various settings sections, + * such as video and audio settings, or returning to the previous view. + */ public class SettingsDialog extends Dialog { private MenuButton videoButton; private MenuButton audioButton; @@ -15,6 +19,13 @@ public class SettingsDialog extends Dialog { private final MdgaView view; + /** + * Constructs a {@code SettingsDialog}. + * + * @param app The main application managing the dialog. + * @param node The root node for attaching UI elements. + * @param view The view managing navigation and interaction with the settings dialog. + */ public SettingsDialog(MdgaApp app, Node node, MdgaView view) { super(app, node); @@ -34,6 +45,9 @@ public SettingsDialog(MdgaApp app, Node node, MdgaView view) { backButton.setPos(new Vector2f(0, 1.8f)); } + /** + * Called when the dialog is shown. Displays all buttons for video settings, audio settings, and back navigation. + */ @Override protected void onShow() { videoButton.show(); @@ -41,6 +55,9 @@ protected void onShow() { backButton.show(); } + /** + * Called when the dialog is hidden. Hides all buttons for video settings, audio settings, and back navigation. + */ @Override protected void onHide() { videoButton.hide(); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/StartDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/StartDialog.java index 870e8ae7..14b61e65 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/StartDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/StartDialog.java @@ -14,6 +14,10 @@ import java.util.Random; import java.util.random.RandomGenerator; +/** + * The {@code StartDialog} class represents the initial dialog in the application, + * allowing the user to input their name, host or join a game, or exit the application. + */ public class StartDialog extends Dialog { private InputButton nameInput; @@ -23,6 +27,13 @@ public class StartDialog extends Dialog { private final MainView view; + /** + * Constructs a {@code StartDialog}. + * + * @param app The main application managing the dialog. + * @param node The root node for attaching UI elements. + * @param view The main view used for navigation and interaction with the dialog. + */ public StartDialog(MdgaApp app, Node node, MainView view) { super(app, node); @@ -48,6 +59,9 @@ public StartDialog(MdgaApp app, Node node, MainView view) { endButton.setPos(new Vector2f(0, 1.8f)); } + /** + * Called when the dialog is shown. Displays the name input field and all buttons. + */ @Override protected void onShow() { nameInput.show(); @@ -57,6 +71,9 @@ protected void onShow() { endButton.show(); } + /** + * Called when the dialog is hidden. Hides the name input field and all buttons. + */ @Override protected void onHide () { @@ -67,10 +84,18 @@ protected void onHide () endButton.hide(); } + /** + * Updates the state of the name input field. This method is called periodically to synchronize the dialog state. + */ public void update() { nameInput.update(); } + /** + * Retrieves the name entered by the user. If no name is provided, a random name is generated. + * + * @return The user's name or a randomly generated name. + */ public String getName() { String name = nameInput.getString(); @@ -206,7 +231,7 @@ public String getName() { "FluffiKopf", "DonutDöner", "VollpfostenX", - "Schraubenschlüssel", + "Waschlappen", "Witzepumper", "ToastTraum", "FroschFighter", @@ -263,22 +288,22 @@ public String getName() { "VulkanKeks", "WasserToast", "MenschSalat", - "KampfKohlenhydrate", + "KampfKohl", "SockenZirkus", "SchwimmBärchen", - "TanzenderDachgepäckträger", + "TanzenderPudel", "PizzamarktMensch", "ZahnarztZocker", - "RollerCoasterTester", - "WaschmaschinenPilot", + "RollerRudi", + "PupsPilot", "WitzigeZwiebel", "Pillenschlucker", "ZwiebelReiter", "HüpfenderKaktus", - "KochenderAsteroid", + "AsteroidenAlf", "ChaosKarotte", "WolkenFurz", - "SchnitzelPartikel", + "Krümelmonster", "WackelBiene", }; diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/VideoSettingsDialog.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/VideoSettingsDialog.java index 5aa98cfe..bb7b767a 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/VideoSettingsDialog.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/dialog/VideoSettingsDialog.java @@ -11,6 +11,11 @@ import java.util.prefs.Preferences; +/** + * The {@code VideoSettingsDialog} class represents a dialog for configuring video settings, + * such as resolution and fullscreen mode. It also provides an option to restart the application + * when certain settings are changed. + */ public class VideoSettingsDialog extends Dialog { private static Preferences prefs = Preferences.userNodeForPackage(JoinDialog.class); @@ -29,6 +34,13 @@ public class VideoSettingsDialog extends Dialog { private boolean active = false; + /** + * Constructs a {@code VideoSettingsDialog}. + * + * @param app The main application managing the dialog. + * @param node The root node for attaching UI elements. + * @param view The view managing navigation and interaction with the video settings dialog. + */ public VideoSettingsDialog(MdgaApp app, Node node, MdgaView view) { super(app, node); @@ -67,6 +79,9 @@ public VideoSettingsDialog(MdgaApp app, Node node, MdgaView view) { backButton.setPos(new Vector2f(0, 1.8f)); } + /** + * Called when the dialog is shown. Displays all buttons and marks the dialog as active. + */ @Override protected void onShow() { active = true; @@ -83,6 +98,9 @@ protected void onShow() { backButton.show(); } + /** + * Called when the dialog is hidden. Hides all buttons and marks the dialog as inactive. + */ @Override protected void onHide() { active = false; @@ -100,12 +118,23 @@ protected void onHide() { restartButton.hide(); } + /** + * Updates the dialog's state. This method can be used for periodic updates while the dialog is active. + */ public void update() { if(!active) { return; } } + /** + * Updates the resolution settings and optionally triggers the restart button if changes are detected. + * + * @param width The width of the resolution. + * @param height The height of the resolution. + * @param imageFactor The scaling factor for the resolution. + * @param isFullscreen {@code true} if fullscreen mode is enabled, {@code false} otherwise. + */ public void updateResolution(int width, int height, float imageFactor, boolean isFullscreen) { if(width != prefs.getInt("width", 1280) || height != prefs.getInt("height", 720) || isFullscreen != prefs.getBoolean("fullscreen", false)) { restartButton.show(); diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/ActionTextHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/ActionTextHandler.java index cd5d1cba..b769a2b7 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/ActionTextHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/ActionTextHandler.java @@ -10,12 +10,25 @@ import pp.mdga.client.animation.ZoomControl; import pp.mdga.game.Color; +/** + * The {@code ActionTextHandler} class manages the display of animated and stylized text messages in the game's UI. + * It supports dynamic text creation with spacing, color, and effects, such as dice rolls, player actions, and rankings. + */ class ActionTextHandler { private Node root; private BitmapFont font; private AppSettings appSettings; private int ranking; + float paddingRanked = 100; + + /** + * Constructs an {@code ActionTextHandler}. + * + * @param guiNode The GUI node where the text messages will be displayed. + * @param assetManager The asset manager used to load fonts and other assets. + * @param appSettings The application settings for positioning and sizing. + */ ActionTextHandler(Node guiNode, AssetManager assetManager, AppSettings appSettings){ root = new Node("actionTextRoot"); guiNode.attachChild(root); @@ -26,6 +39,16 @@ class ActionTextHandler { ranking = 0; } + /** + * Creates a {@code Node} containing text with specified spacing, size, and colors for each segment of the text. + * + * @param textArr An array of strings representing the text to be displayed. + * @param spacing The spacing between individual characters. + * @param size The size of the text. + * @param colorArr An array of {@code ColorRGBA} representing the color for each string in {@code textArr}. + * @return A {@code Node} containing the styled text with spacing and color applied. + * @throws RuntimeException if the lengths of {@code textArr} and {@code colorArr} do not match. + */ private Node createTextWithSpacing(String[] textArr, float spacing, float size, ColorRGBA[] colorArr) { if(textArr.length != colorArr.length) throw new RuntimeException("text and color are not the same length"); @@ -52,18 +75,55 @@ private Node createTextWithSpacing(String[] textArr, float spacing, float size, return textNode; } + /** + * Creates a {@code Node} containing text with specified spacing, size, and a single color. + * + * @param text The text to be displayed. + * @param spacing The spacing between individual characters. + * @param size The size of the text. + * @param color The color of the text. + * @return A {@code Node} containing the styled text. + */ private Node createTextWithSpacing(String text, float spacing, float size, ColorRGBA color) { return createTextWithSpacing(new String[]{text}, spacing, size, new ColorRGBA[]{color}); } + /** + * Calculates the center position of a rectangle given its width, height, and an origin position. + * + * @param width The width of the rectangle. + * @param height The height of the rectangle. + * @param pos The origin position of the rectangle. + * @return A {@code Vector3f} representing the center position. + */ private Vector3f center(float width, float height, Vector3f pos){ return new Vector3f(pos.x+width/2, pos.y+height/2,0); } + /** + * Creates and positions a single-line text at the top of the screen with a specified vertical offset. + * + * @param name The text to be displayed. + * @param spacing The spacing between individual characters. + * @param size The size of the text. + * @param color The color of the text. + * @param top The vertical offset from the top of the screen. + * @return A {@code Node} containing the styled text positioned at the top. + */ private Node createTopText(String name, float spacing, float size, ColorRGBA color, float top){ return createTopText(new String[]{name}, spacing, size, new ColorRGBA[]{color}, top); } + /** + * Creates and positions multi-line text at the top of the screen with specified vertical offset, spacing, and colors. + * + * @param name An array of strings representing the text to be displayed. + * @param spacing The spacing between individual characters. + * @param size The size of the text. + * @param color An array of {@code ColorRGBA} representing the color for each string in {@code name}. + * @param top The vertical offset from the top of the screen. + * @return A {@code Node} containing the styled text positioned at the top. + */ private Node createTopText(String[] name, float spacing, float size, ColorRGBA color[], float top){ Node text = createTextWithSpacing(name, spacing, size, color); text.setLocalTranslation(0, (appSettings.getHeight()/2f)*0.8f-top,0); @@ -71,18 +131,44 @@ private Node createTopText(String[] name, float spacing, float size, ColorRGBA c return text; } + /** + * Calculates the center position of a rectangle with negative width offset. + * + * @param width The negative width of the rectangle. + * @param height The height of the rectangle. + * @param pos The origin position of the rectangle. + * @return A {@code Vector3f} representing the center position. + */ private Vector3f centerText(float width, float height, Vector3f pos){ return center(-width, height, pos); } + /** + * Displays a message indicating the active player. + * + * @param name The name of the active player. + * @param color The color representing the player's team. + */ void activePlayer(String name, Color color){ createTopText(new String[]{name," ist dran"}, 10,90,new ColorRGBA[]{playerColorToColorRGBA(color),ColorRGBA.White}, 0).addControl(new ZoomControl()); } + /** + * Displays a message indicating that the current player is active. + * + * @param color The color representing the player's team. + */ void ownActive(Color color){ createTopText(new String[]{"Du"," bist dran"}, 10,90,new ColorRGBA[]{playerColorToColorRGBA(color),ColorRGBA.White}, 0).addControl(new ZoomControl()); } + /** + * Displays a dice roll result for a player. + * + * @param diceNum The number rolled on the dice. + * @param name The name of the player. + * @param color The color representing the player's team. + */ void diceNum(int diceNum, String name, Color color){ createTopText(new String[]{name," würfelt:"}, 10,90,new ColorRGBA[]{playerColorToColorRGBA(color),ColorRGBA.White}, 0); @@ -90,38 +176,84 @@ void diceNum(int diceNum, String name, Color color){ } + /** + * Displays a dice roll result with a multiplier for a player. + * + * @param diceNum The number rolled on the dice. + * @param mult The multiplier applied to the dice result. + * @param name The name of the player. + * @param color The color representing the player's team. + */ void diceNumMult(int diceNum,int mult, String name, Color color){ createTopText(new String[]{name," würfelt:"}, 10,90,new ColorRGBA[]{playerColorToColorRGBA(color),ColorRGBA.White}, 0); createTopText(new String[]{String.valueOf(diceNum), " x" + mult + " = " + (diceNum*mult)}, 20, 100, new ColorRGBA[]{ColorRGBA.White,ColorRGBA.Red}, 100); } + /** + * Displays the dice roll result for the current player. + * + * @param diceNum The number rolled on the dice. + */ void ownDice(int diceNum){ createTopText(String.valueOf(diceNum), 10, 100, ColorRGBA.White, 0); } + /** + * Displays the dice roll result with a multiplier for the current player. + * + * @param diceNum The number rolled on the dice. + * @param mult The multiplier applied to the dice result. + */ void ownDiceMult(int diceNum, int mult){ createTopText(new String[]{String.valueOf(diceNum), " x" + mult + " = " + (diceNum*mult)}, 20, 100, new ColorRGBA[]{ColorRGBA.White,ColorRGBA.Red}, 0); } + /** + * Displays a message indicating that a specified player received a bonus card. + * + * @param name The name of the player who received the bonus card. + * @param color The color representing the player's team. + */ void drawCard(String name, Color color){ createTopText(new String[]{name," erhält eine Bonuskarte"}, 7,70, new ColorRGBA[]{playerColorToColorRGBA(color),ColorRGBA.White}, 0).addControl(new ZoomControl()); } + /** + * Displays a message indicating that the current player received a bonus card. + * + * @param color The color representing the player's team. + */ void drawCardOwn(Color color){ createTopText(new String[]{"Du"," erhälst eine Bonuskarte"}, 5,70, new ColorRGBA[]{playerColorToColorRGBA(color),ColorRGBA.White}, 0).addControl(new ZoomControl()); } + /** + * Displays a message indicating that a specified player has completed their turn or action. + * + * @param name The name of the player who finished. + * @param color The color representing the player's team. + */ void finishText(String name, Color color){ createTopText(new String[]{name," ist fertig!"}, 7,70, new ColorRGBA[]{playerColorToColorRGBA(color),ColorRGBA.White}, 0).addControl(new ZoomControl()); } + /** + * Displays a message indicating that the current player has completed their turn or action. + * + * @param color The color representing the player's team. + */ void finishTextOwn(Color color){ createTopText(new String[]{"Du", " bist fertig!"}, 7,70, new ColorRGBA[]{playerColorToColorRGBA(color),ColorRGBA.White}, 0).addControl(new ZoomControl()); } - - + /** + * Converts a player's team color to a corresponding {@code ColorRGBA}. + * + * @param color The player's team color. + * @return The corresponding {@code ColorRGBA}. + * @throws RuntimeException if the color is invalid. + */ private ColorRGBA playerColorToColorRGBA(Color color){ return switch (color){ case ARMY -> ColorRGBA.Green; @@ -132,23 +264,40 @@ private ColorRGBA playerColorToColorRGBA(Color color){ }; } + /** + * Hides all text messages displayed by the handler and resets the ranking counter. + */ void hide(){ ranking = 0; root.detachAllChildren(); } - float paddingRanked = 100; - + /** + * Displays a ranked dice roll result for a specified player. + * + * @param name The name of the player. + * @param color The color representing the player's team. + * @param eye The dice roll result. + */ void rollRankingResult(String name, Color color, int eye){ createTopText(new String[]{name,": "+eye}, 10,90,new ColorRGBA[]{playerColorToColorRGBA(color),ColorRGBA.White}, paddingRanked*ranking); ranking++; } + /** + * Displays a ranked dice roll result for the current player. + * + * @param color The color representing the player's team. + * @param eye The dice roll result. + */ void rollRankingResultOwn(Color color, int eye){ createTopText(new String[]{"Du",": "+eye}, 10,90,new ColorRGBA[]{playerColorToColorRGBA(color),ColorRGBA.White}, paddingRanked*ranking); ranking++; } + /** + * Displays a message prompting the player to roll the dice. + */ void diceNow(){ createTopText("Klicke zum Würfeln", 5, 80, ColorRGBA.White, 0); } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java index 2d5c4d2d..94684ef9 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/CardLayerHandler.java @@ -131,6 +131,8 @@ public void selectCard(CardControl cardControl) { cardControl.select(); cardSelect = getKeyByValue(bonusCardControlMap, cardControl); } + + app.getModelSynchronize().selectCard(cardSelect); } public Camera getCardLayerCamera() { diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java index 0d54e6e7..14109ffc 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/server/MdgaServer.java @@ -5,6 +5,7 @@ import com.jme3.network.serializing.serializers.EnumSerializer; import pp.mdga.Resources; import pp.mdga.game.*; +import pp.mdga.game.card.*; import pp.mdga.message.client.*; import pp.mdga.message.server.*; import pp.mdga.server.ServerGameLogic; @@ -124,7 +125,7 @@ private void initializeSerializables() { Serializer.registerClass(NoTurnMessage.class); Serializer.registerClass(PauseGameMessage.class); Serializer.registerClass(PlayCardMessage.class); - Serializer.registerClass(PossibleCardMessage.class); + Serializer.registerClass(PossibleCardsMessage.class); Serializer.registerClass(PossiblePieceMessage.class); Serializer.registerClass(RankingResponseMessage.class); Serializer.registerClass(RankingRollAgainMessage.class); @@ -144,12 +145,17 @@ private void initializeSerializables() { Serializer.registerClass(Piece.class); Serializer.registerClass(BonusNode.class); Serializer.registerClass(StartNode.class); - Serializer.registerClass(PlayerData.class); Serializer.registerClass(HomeNode.class); + Serializer.registerClass(PowerCard.class); + Serializer.registerClass(TurboCard.class); + Serializer.registerClass(SwapCard.class); + Serializer.registerClass(ShieldCard.class); + Serializer.registerClass(HiddenCard.class); Serializer.registerClass(Color.class, new EnumSerializer()); Serializer.registerClass(PieceState.class, new EnumSerializer()); Serializer.registerClass(ShieldState.class, new EnumSerializer()); + Serializer.registerClass(BonusCard.class, new EnumSerializer()); } private void registerListeners() { diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java index 973327c2..bd77237a 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/view/GameView.java @@ -20,6 +20,8 @@ public class GameView extends MdgaView { private ButtonLeft leaveButton; private ButtonRight confirmButton; + private ButtonRight noPowerButton; + private Color ownColor = null; private InterruptDialog interruptDialog; @@ -35,6 +37,8 @@ public GameView(MdgaApp app) { confirmButton = new ButtonRight(app, guiNode, () -> app.getModelSynchronize().confirm(), "Bestätigen", 1); + noPowerButton = new ButtonRight(app, guiNode, () -> app.getModelSynchronize().confirm(), "Verzichten", 1); + interruptDialog = new InterruptDialog(app, guiNode); fpp = new FilterPostProcessor(app.getAssetManager()); @@ -65,6 +69,7 @@ public void onLeave() { confirmButton.hide(); + noPowerButton.hide(); app.getViewPort().removeProcessor(fpp); } @@ -109,6 +114,7 @@ public Color getOwnColor() { } public void needConfirm() { + noPowerButton.hide(); confirmButton.show(); } @@ -116,7 +122,16 @@ public void noConfirm() { confirmButton.hide(); } - public void enterInterrupt() { + public void showNoPower() { + confirmButton.hide(); + noPowerButton.show(); + } + + public void hideNoPower() { + noPowerButton.hide(); + } + + public void enterInterrupt(Color color) { enterOverlay(Overlay.INTERRUPT); guiNode.detachChild(guiHandlerNode); @@ -124,6 +139,7 @@ public void enterInterrupt() { app.getInputSynchronize().setClickAllowed(false); + interruptDialog.setColor(color); interruptDialog.show(); } @@ -135,6 +151,8 @@ public void leaveInterrupt() { app.getInputSynchronize().setClickAllowed(true); + app.getAcousticHandler().playSound(MdgaSound.START); + interruptDialog.hide(); } } diff --git a/Projekte/mdga/client/src/main/resources/Images/b1.png b/Projekte/mdga/client/src/main/resources/Images/b1.png deleted file mode 100644 index 99b070f8..00000000 Binary files a/Projekte/mdga/client/src/main/resources/Images/b1.png and /dev/null differ diff --git a/Projekte/mdga/client/src/main/resources/Images/b2.png b/Projekte/mdga/client/src/main/resources/Images/b2.png deleted file mode 100644 index a545aec5..00000000 Binary files a/Projekte/mdga/client/src/main/resources/Images/b2.png and /dev/null differ diff --git a/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/Outline.frag b/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/Outline.frag index d38250b7..44870146 100644 --- a/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/Outline.frag +++ b/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/Outline.frag @@ -1,7 +1,6 @@ // Samplers for textures uniform sampler2D m_Texture; uniform sampler2D m_OutlineDepthTexture; -uniform sampler2D m_DepthTexture; // Input texture coordinates from the vertex shader in vec2 texCoord; @@ -15,26 +14,25 @@ uniform float m_OutlineWidth; out vec4 fragColor; void main() { - // Sample depth textures + // Sample depth textures at various offsets vec4 depth = texture(m_OutlineDepthTexture, texCoord); - vec4 depth1 = texture(m_OutlineDepthTexture, ((texCoord * m_Resolution) + vec2(m_OutlineWidth, m_OutlineWidth)) / m_Resolution); - vec4 depth2 = texture(m_OutlineDepthTexture, ((texCoord * m_Resolution) + vec2(m_OutlineWidth, -m_OutlineWidth)) / m_Resolution); - vec4 depth3 = texture(m_OutlineDepthTexture, ((texCoord * m_Resolution) + vec2(-m_OutlineWidth, m_OutlineWidth)) / m_Resolution); - vec4 depth4 = texture(m_OutlineDepthTexture, ((texCoord * m_Resolution) + vec2(-m_OutlineWidth, -m_OutlineWidth)) / m_Resolution); - vec4 depth5 = texture(m_OutlineDepthTexture, ((texCoord * m_Resolution) + vec2(0.0, m_OutlineWidth)) / m_Resolution); - vec4 depth6 = texture(m_OutlineDepthTexture, ((texCoord * m_Resolution) + vec2(0.0, -m_OutlineWidth)) / m_Resolution); - vec4 depth7 = texture(m_OutlineDepthTexture, ((texCoord * m_Resolution) + vec2(m_OutlineWidth, 0.0)) / m_Resolution); - vec4 depth8 = texture(m_OutlineDepthTexture, ((texCoord * m_Resolution) + vec2(-m_OutlineWidth, 0.0)) / m_Resolution); + vec4 depth1 = texture(m_OutlineDepthTexture, (texCoord * m_Resolution + vec2(m_OutlineWidth, m_OutlineWidth)) / m_Resolution); + vec4 depth2 = texture(m_OutlineDepthTexture, (texCoord * m_Resolution + vec2(m_OutlineWidth, -m_OutlineWidth)) / m_Resolution); + vec4 depth3 = texture(m_OutlineDepthTexture, (texCoord * m_Resolution + vec2(-m_OutlineWidth, m_OutlineWidth)) / m_Resolution); + vec4 depth4 = texture(m_OutlineDepthTexture, (texCoord * m_Resolution + vec2(-m_OutlineWidth, -m_OutlineWidth)) / m_Resolution); + vec4 depth5 = texture(m_OutlineDepthTexture, (texCoord * m_Resolution + vec2(0.0, m_OutlineWidth)) / m_Resolution); + vec4 depth6 = texture(m_OutlineDepthTexture, (texCoord * m_Resolution + vec2(0.0, -m_OutlineWidth)) / m_Resolution); + vec4 depth7 = texture(m_OutlineDepthTexture, (texCoord * m_Resolution + vec2(m_OutlineWidth, 0.0)) / m_Resolution); + vec4 depth8 = texture(m_OutlineDepthTexture, (texCoord * m_Resolution + vec2(-m_OutlineWidth, 0.0)) / m_Resolution); // Sample the main texture vec4 color = texture(m_Texture, texCoord); - // Determine whether to apply the outline color - if (depth == vec4(0.0) && - (depth1 != depth || depth2 != depth || depth3 != depth || depth4 != depth || - depth5 != depth || depth6 != depth || depth7 != depth || depth8 != depth)) { - fragColor = m_OutlineColor; // Apply outline color - } else { - fragColor = color; // Use the original texture color - } + // Check if an outline should be applied + bool isEdge = (depth == vec4(0.0)) && + (depth1 != depth || depth2 != depth || depth3 != depth || depth4 != depth || + depth5 != depth || depth6 != depth || depth7 != depth || depth8 != depth); + + // Output the final color + fragColor = isEdge ? m_OutlineColor : color; } diff --git a/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/OutlinePre.frag b/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/OutlinePre.frag index a814e693..1c0c8c11 100644 --- a/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/OutlinePre.frag +++ b/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/OutlinePre.frag @@ -1,11 +1,10 @@ - -// Use 'in' instead of 'varying' for inputs from the vertex shader +// Input texture coordinates from the vertex shader in vec2 texCoord; -// Declare a custom output variable for the fragment color +// Output variable for the fragment color out vec4 fragColor; -// Uniform samplers +// Uniform samplers for textures uniform sampler2D m_Texture; uniform sampler2D m_NormalsTexture; uniform sampler2D m_DepthTexture; @@ -13,6 +12,7 @@ uniform sampler2D m_DepthTexture; void main() { // Sample the texture at the given texture coordinates vec4 color = texture(m_Texture, texCoord); + // Assign the color to the output variable fragColor = color; } diff --git a/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/OutlinePro.frag b/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/OutlinePro.frag index 26a9626e..5f52a2b3 100644 --- a/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/OutlinePro.frag +++ b/Projekte/mdga/client/src/main/resources/MatDefs/SelectObjectOutliner/OutlinePro.frag @@ -1,109 +1,78 @@ +// Uniform samplers uniform sampler2D m_Texture; uniform sampler2D m_OutlineDepthTexture; uniform sampler2D m_DepthTexture; -varying vec2 texCoord; +// Input texture coordinates from the vertex shader +in vec2 texCoord; + +// Uniforms for resolution, outline color, and width uniform vec2 m_Resolution; uniform vec4 m_OutlineColor; uniform float m_OutlineWidth; +// Output variable for fragment color +out vec4 fragColor; + void main() { - vec4 depth = texture2D(m_OutlineDepthTexture, texCoord); - vec4 depth1 = texture2D(m_OutlineDepthTexture, ((texCoord*m_Resolution)+vec2(m_OutlineWidth,m_OutlineWidth))/m_Resolution); - vec4 depth2 = texture2D(m_OutlineDepthTexture, ((texCoord*m_Resolution)+vec2(m_OutlineWidth,-m_OutlineWidth))/m_Resolution); - vec4 depth3 = texture2D(m_OutlineDepthTexture, ((texCoord*m_Resolution)+vec2(-m_OutlineWidth,m_OutlineWidth))/m_Resolution); - vec4 depth4 = texture2D(m_OutlineDepthTexture, ((texCoord*m_Resolution)+vec2(-m_OutlineWidth,-m_OutlineWidth))/m_Resolution); - vec4 depth5 = texture2D(m_OutlineDepthTexture, ((texCoord*m_Resolution)+vec2(0.,m_OutlineWidth))/m_Resolution); - vec4 depth6 = texture2D(m_OutlineDepthTexture, ((texCoord*m_Resolution)+vec2(0.,-m_OutlineWidth))/m_Resolution); - vec4 depth7 = texture2D(m_OutlineDepthTexture, ((texCoord*m_Resolution)+vec2(m_OutlineWidth,0.))/m_Resolution); - vec4 depth8 = texture2D(m_OutlineDepthTexture, ((texCoord*m_Resolution)+vec2(-m_OutlineWidth,0.))/m_Resolution); - vec4 color = texture2D(m_Texture, texCoord); - //如果是背景 - float ratio=0.; - if(depth==vec4(0.) && (depth1 != depth || depth2 != depth || depth3 != depth || depth4 != depth||depth5 != depth || depth6 != depth || depth7 != depth || depth8 != depth)){ - float dist=m_OutlineWidth; - //距离边的像素 - vec4 nearDepth; - if(depth1 != depth){ - for(float i=0.;i + + + + Blender User + Blender 2.70.0 commit date:2014-04-10, commit time:11:49, hash:f93bc76 + + 2015-09-28T01:25:42 + 2015-09-28T01:25:42 + + Z_UP + + + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.64 0.64 0.64 1 + + + 0.5 0.5 0.5 1 + + + 50 + + + 1 + + + + + + 1 + + + + 1 + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.64 0.64 0.64 1 + + + 0.5 0.5 0.5 1 + + + 50 + + + 1 + + + + + + 1 + + + + 1 + + + + + + + 0 0 0 1 + + + 0 0 0 1 + + + 0.64 0.64 0.64 1 + + + 0.5 0.5 0.5 1 + + + 50 + + + 1 + + + + + + 1 + + + + 1 + + + + + + + + + + + + + + + + + + 0.4320056 3.175161 -1.577862 0.4320056 3.175161 0.2421541 0.4237049 3.090883 -1.577862 0.4237049 3.090883 0.2421541 0.3991217 3.009843 -1.577862 0.3991217 3.009843 0.2421541 0.3592008 2.935156 -1.577862 0.3592008 2.935156 0.2421541 0.3054763 2.869693 -1.577862 0.3054763 2.869693 0.2421541 0.2400128 2.815968 -1.577862 0.2400128 2.815968 0.2421541 0.1653261 2.776047 -1.577862 0.1653261 2.776047 0.2421541 0.08428621 2.751464 -1.577862 0.08428621 2.751464 0.2421541 7.61263e-6 2.743163 -1.577862 7.61263e-6 2.743163 0.2421541 -0.08427101 2.751464 -1.577862 -0.08427101 2.751464 0.2421541 -0.1653108 2.776047 -1.577862 -0.1653108 2.776047 0.2421541 -0.2399975 2.815968 -1.577862 -0.2399975 2.815968 0.2421541 -0.305461 2.869693 -1.577862 -0.305461 2.869693 0.2421541 -0.3591855 2.935156 -1.577862 -0.3591855 2.935156 0.2421541 -0.3991063 3.009843 -1.577862 -0.3991063 3.009843 0.2421541 -0.4236894 3.090883 -1.577862 -0.4236894 3.090883 0.2421541 -0.43199 3.175162 -1.577862 -0.43199 3.175162 0.2421541 0.483367 3.175161 0.7027817 0.4740794 3.080862 0.7027817 0.4465735 2.990188 0.7027817 0.4019063 2.906621 0.7027817 0.3417943 2.833374 0.7027819 0.2685477 2.773262 0.7027819 0.1849812 2.728595 0.7027819 0.09430629 2.701089 0.7027819 7.59214e-6 2.691802 0.7027819 -0.09429115 2.701089 0.7027819 -0.184966 2.728595 0.7027819 -0.2685324 2.773263 0.7027819 -0.3417791 2.833374 0.7027819 -0.4018909 2.906621 0.7027817 -0.4465581 2.990188 0.7027817 -0.4740639 3.080863 0.7027817 -0.4833514 3.175162 0.7027817 0.4740794 3.080862 1.211037 0.4465735 2.990188 1.211037 0.4019063 2.906621 1.211037 0.3417943 2.833374 1.211037 0.2685477 2.773262 1.211037 0.1849812 2.728595 1.211037 0.09430629 2.701089 1.211037 7.59214e-6 2.691802 1.211037 -0.09429115 2.701089 1.211037 -0.184966 2.728595 1.211037 -0.2685324 2.773263 1.211037 -0.3417791 2.833374 1.211037 -0.4018909 2.906621 1.211037 -0.4465581 2.990188 1.211037 -0.4740639 3.080863 1.211037 0.4740795 3.080862 7.211111 0.4465736 2.990188 7.211111 0.4019064 2.906621 7.211111 0.3417944 2.833374 7.211111 0.2685478 2.773262 7.211111 0.1849813 2.728595 7.211111 0.0943064 2.701089 7.211111 7.67631e-6 2.691802 7.211111 -0.09429103 2.701089 7.211111 -0.1849659 2.728595 7.211111 -0.2685323 2.773263 7.211111 -0.3417789 2.833374 7.211111 -0.4018908 2.906621 7.211111 -0.446558 2.990188 7.211111 -0.4740639 3.080863 7.211111 0.4833669 3.175161 7.766767 0.4740793 3.080862 7.766767 0.4465734 2.990188 7.766767 0.4019061 2.906621 7.766767 0.3417942 2.833374 7.766767 0.2685476 2.773262 7.766767 0.1849811 2.728595 7.766767 0.09430617 2.701089 7.766767 7.43684e-6 2.691802 7.766767 -0.09429126 2.701089 7.766767 -0.1849662 2.728595 7.766767 -0.2685326 2.773263 7.766767 -0.3417792 2.833374 7.766767 -0.4018911 2.906621 7.766767 -0.4465582 2.990188 7.766767 -0.4740641 3.080863 7.766767 -0.4833515 3.175162 7.766767 0.4335876 3.175161 8.352459 0.4252565 3.090574 8.352459 0.4005833 3.009237 8.352459 0.3605163 2.934277 8.352459 0.306595 2.868574 8.352459 0.2408918 2.814653 8.352459 0.1659315 2.774585 8.352459 0.0845949 2.749912 8.352459 7.70111e-6 2.741581 8.352459 -0.08457952 2.749912 8.352459 -0.1659161 2.774586 8.352459 -0.2408763 2.814653 8.352459 -0.3065795 2.868574 8.352459 -0.3605006 2.934277 8.352459 -0.4005677 3.009238 8.352459 -0.4252408 3.090574 8.352459 -0.4335718 3.175162 8.352459 0.2710624 3.175161 8.818007 0.2658542 3.122281 8.818007 0.2504297 3.071433 8.818007 0.2253816 3.024571 8.818007 0.1916725 2.983497 8.818007 0.1505978 2.949788 8.818007 0.1037361 2.92474 8.818007 0.05288809 2.909315 8.818007 8.0131e-6 2.904107 8.818007 -0.05287206 2.909315 8.818007 -0.10372 2.92474 8.818007 -0.1505817 2.949788 8.818007 -0.1916564 2.983497 8.818007 -0.2253654 3.024572 8.818007 -0.2504135 3.071433 8.818007 -0.2658381 3.122281 8.818007 -0.2710462 3.175161 8.818007 0.1384637 3.175161 9.118361 0.1358033 3.14815 9.118361 0.1279244 3.122177 9.118361 0.1151297 3.098239 9.118361 0.09791094 3.077258 9.118361 0.0769298 3.060039 9.118361 0.05299258 3.047245 9.118361 0.0270192 3.039366 9.118361 7.84046e-6 3.036705 9.118361 -0.02700352 3.039366 9.118361 -0.0529769 3.047245 9.118361 -0.07691407 3.060039 9.118361 -0.0978952 3.077258 9.118361 -0.1151139 3.098239 9.118361 -0.1279086 3.122177 9.118361 -0.1357876 3.14815 9.118361 -0.1384479 3.175161 9.118361 0.04793769 3.175161 9.268538 0.04701668 3.16581 9.268538 0.04428917 3.156819 9.268538 0.03985983 3.148532 9.268538 0.033899 3.141269 9.268538 0.0266357 3.135308 9.268538 0.01834905 3.130879 9.268538 0.009357511 3.128151 9.268538 6.68853e-6 3.12723 9.268538 -0.00934416 3.128151 9.268538 -0.0183357 3.130879 9.268538 -0.02662229 3.135308 9.268538 -0.03388559 3.141269 9.268538 -0.03984642 3.148532 9.268538 -0.04427576 3.156819 9.268538 -0.04700326 3.16581 9.268538 -0.04792422 3.175161 9.268538 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.7018e-6 3.175161 9.30696 6.70622e-6 3.175161 9.30696 6.7018e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 6.71577e-6 3.175161 9.30696 0.09430629 2.701089 2.259932 7.59214e-6 2.691802 2.259932 0.3417943 2.833374 2.259932 0.2685477 2.773262 2.259932 0.4740794 3.080862 2.259932 0.4465735 2.990188 2.259932 -0.4740639 3.080863 2.259932 -0.3417791 2.833374 2.259932 -0.4018909 2.906621 2.259932 -0.09429115 2.701089 2.259932 -0.184966 2.728595 2.259932 0.1849812 2.728595 2.259932 0.4019063 2.906621 2.259932 -0.4465581 2.990188 2.259932 -0.2685324 2.773263 2.259932 -0.184966 2.728595 4.410946 -0.4018909 2.906621 4.410946 0.4465735 2.990188 4.410946 0.2685477 2.773262 4.410946 7.59214e-6 2.691802 4.410946 -0.2685324 2.773263 4.410946 -0.4465581 2.990188 4.410946 0.4019063 2.906621 4.410946 0.1849812 2.728595 4.410946 -0.09429115 2.701089 4.410946 -0.3417791 2.833374 4.410946 -0.4740639 3.080863 4.410946 0.4740794 3.080862 4.410946 0.3417943 2.833374 4.410946 0.09430629 2.701089 4.410946 0.3921777 3.175161 -1.577862 0.3846423 3.098653 -1.577862 0.3623255 3.025084 -1.577862 0.3260851 2.957283 -1.577862 0.2773137 2.897855 -1.577862 0.2178856 2.849084 -1.577862 0.1500846 2.812843 -1.577862 0.07651621 2.790526 -1.577862 7.62835e-6 2.782991 -1.577862 -0.07650095 2.790526 -1.577862 -0.1500693 2.812843 -1.577862 -0.2178703 2.849084 -1.577862 -0.2772984 2.897855 -1.577862 -0.3260697 2.957283 -1.577862 -0.3623101 3.025084 -1.577862 -0.3846268 3.098653 -1.577862 -0.392162 3.175162 -1.577862 0.3921776 3.175161 -0.855649 0.3846422 3.098653 -0.855649 0.3623254 3.025084 -0.855649 0.326085 2.957283 -0.855649 0.2773137 2.897855 -0.855649 0.2178856 2.849084 -0.855649 0.1500846 2.812843 -0.855649 0.07651615 2.790526 -0.855649 7.62835e-6 2.782991 -0.855649 -0.07650095 2.790526 -0.855649 -0.1500692 2.812843 -0.855649 -0.2178702 2.849084 -0.855649 -0.2772983 2.897855 -0.855649 -0.3260697 2.957283 -0.855649 -0.3623101 3.025084 -0.855649 -0.3846267 3.098653 -0.855649 -0.392162 3.175162 -0.855649 0.4320054 3.175161 -1.577862 0.4320054 3.175161 0.2421541 -0.4740641 3.080862 0.7027819 -0.4833515 3.175161 0.7027819 -0.4740641 3.080862 1.211037 -0.4833515 3.175161 1.211037 -0.474064 3.080862 7.211111 -0.4833515 3.175161 7.211111 -0.4740642 3.080862 7.766767 -0.4833517 3.175161 7.766767 -0.4740641 3.080862 2.259932 -0.4833515 3.175161 2.259932 -0.4833515 3.175161 4.410946 -0.4740641 3.080862 4.410946 0.3921775 3.175161 -1.577862 0.3921774 3.175161 -0.855649 0.4320056 3.175161 0.2421541 0.4320056 3.175161 -1.577862 -0.4833514 3.175162 0.7027817 -0.4740639 3.080863 0.7027817 -0.4740639 3.080863 1.211037 -0.4740639 3.080863 4.410946 -0.4740639 3.080863 7.211111 -0.4833515 3.175162 7.766767 -0.4740641 3.080863 7.766767 -0.4740639 3.080863 2.259932 0.3921777 3.175161 -1.577862 0.3921776 3.175161 -0.855649 0.4320054 3.175161 0.2421541 0.4320054 3.175161 -1.577862 -0.4833515 3.175161 0.7027819 -0.4740641 3.080862 0.7027819 -0.4740641 3.080862 1.211037 -0.4740641 3.080862 4.410946 -0.474064 3.080862 7.211111 -0.4833517 3.175161 7.766767 -0.4740642 3.080862 7.766767 -0.4740641 3.080862 2.259932 0.3921775 3.175161 -1.577862 0.3921774 3.175161 -0.855649 0.2054135 3.603282 1.556039 0.2982878 3.541753 1.556039 0.278625 3.554779 7.474885 0.2250708 3.590259 7.474885 0.2507373 3.671695 1.556039 0.3436115 3.610166 1.556039 0.3025768 3.590932 7.474885 0.2490227 3.626412 7.474885 0.3436087 3.610167 7.334525 0.298285 3.541754 7.334525 0.2507346 3.671696 7.334525 0.2054108 3.603283 7.334525 0.2518479 3.572519 7.474885 0.2757998 3.608672 7.474885 0.2518507 3.572518 1.556039 0.2971744 3.64093 1.556039 0.2971717 3.640931 7.334525 0.2518479 3.572519 7.334525 0.2758026 3.608671 1.415624 0.2518507 3.572518 1.415624 0.3025798 3.590931 1.415624 0.2490254 3.626411 1.415624 0.2786279 3.554778 1.415624 0.2250735 3.590258 1.415624 -0.2080877 2.777417 1.556039 -0.300962 2.838947 1.556039 -0.2813049 2.825923 7.474885 -0.2277505 2.790443 7.474885 -0.2534115 2.709005 1.556039 -0.3462857 2.770534 1.556039 -0.3052567 2.789769 7.474885 -0.2517024 2.754289 7.474885 -0.3462885 2.770535 7.334525 -0.3009647 2.838948 7.334525 -0.2534143 2.709005 7.334525 -0.2080906 2.777418 7.334525 -0.2545278 2.808183 7.474885 -0.2784796 2.77203 7.474885 -0.2545249 2.808182 1.556039 -0.2998486 2.73977 1.556039 -0.2998514 2.73977 7.334525 -0.2545277 2.808183 7.334525 -0.2784766 2.772029 1.415624 -0.2545248 2.808182 1.415624 -0.3052538 2.789769 1.415624 -0.2516995 2.754289 1.415624 -0.2813019 2.825922 1.415624 -0.2277475 2.790442 1.415624 -0.41427 3.397101 1.556039 -0.3527405 3.489975 1.55604 -0.3657682 3.470315 7.474886 -0.401248 3.416761 7.474886 -0.4826828 3.442424 1.55604 -0.4211533 3.535299 1.55604 -0.4019217 3.494267 7.474886 -0.4374017 3.440713 7.474886 -0.4211561 3.535299 7.334525 -0.3527433 3.489975 7.334525 -0.4826855 3.442425 7.334525 -0.4142727 3.397101 7.334525 -0.3835081 3.443538 7.474886 -0.4196617 3.46749 7.474886 -0.3835053 3.443538 1.55604 -0.4519181 3.488862 1.55604 -0.4519208 3.488862 7.334525 -0.383508 3.443538 7.334525 -0.4196587 3.46749 1.415625 -0.3835052 3.443538 1.415625 -0.4019188 3.494267 1.415625 -0.4373987 3.440712 1.415625 -0.3657653 3.470315 1.415625 -0.4012452 3.41676 1.415625 0.4115955 2.983599 1.556039 0.3500659 2.890725 1.556039 0.3630883 2.910386 7.474885 0.3985682 2.96394 7.474885 0.4800083 2.938276 1.556039 0.4184787 2.845402 1.556039 0.3992419 2.886434 7.474885 0.4347218 2.939988 7.474885 0.4184765 2.845402 7.334525 0.3500637 2.890726 7.334525 0.4800058 2.938276 7.334525 0.4115931 2.9836 7.334525 0.3808283 2.937163 7.474885 0.4169819 2.913211 7.474885 0.3808307 2.937162 1.556039 0.4492436 2.891839 1.556039 0.4492411 2.891839 7.334525 0.3808284 2.937163 7.334525 0.4169843 2.913211 1.415624 0.3808308 2.937162 1.415624 0.3992443 2.886433 1.415624 0.4347243 2.939988 1.415624 0.3630908 2.910385 1.415624 0.3985708 2.963939 1.415624 -0.2533673 2.796054 2.207124 -1.085605 1.539854 2.551209 -0.2533683 2.796055 4.350975 -1.085605 1.539855 3.209132 -0.2706856 2.807527 2.207124 -1.102923 1.551328 2.551209 -0.2706866 2.807528 4.350975 -1.102923 1.551328 3.209132 -0.2416665 2.788302 3.016956 -1.073904 1.532102 3.017132 -0.2823871 2.81528 3.016956 -1.114624 1.55908 3.017132 0.2485156 3.597901 2.207124 1.080753 4.8541 2.551209 0.2485146 3.597901 4.350975 1.080752 4.854101 3.209132 0.265834 3.586427 2.207124 1.098071 4.842627 2.551209 0.265833 3.586427 4.350975 1.098071 4.842627 3.209132 0.2368142 3.605653 3.016956 1.069051 4.861853 3.017132 0.2775347 3.578675 3.016956 1.109772 4.834875 3.017132 0.3984976 2.946036 2.207124 1.654698 2.113799 2.551209 0.398497 2.946036 4.350975 1.654697 2.113799 3.209133 0.3870241 2.928718 2.207124 1.643224 2.09648 2.551209 0.3870235 2.928718 4.350975 1.643224 2.09648 3.209133 0.4062494 2.957737 3.016956 1.662449 2.1255 3.017132 0.3792719 2.917017 3.016956 1.635472 2.084779 3.017132 -0.403349 3.447918 2.207124 -1.659549 4.280156 2.551208 -0.4033499 3.447918 4.350975 -1.659549 4.280156 3.209132 -0.3918755 3.465236 2.207124 -1.648076 4.297474 2.551208 -0.3918764 3.465237 4.350975 -1.648076 4.297474 3.209132 -0.4111014 3.436217 3.016956 -1.667301 4.268455 3.017132 -0.3841238 3.476938 3.016956 -1.640324 4.309175 3.017132 0.128125 3.390323 0.866617 0.1281248 3.390323 1.196025 0.7528569 4.333309 0.8666169 0.7528567 4.333309 1.127136 0.1188504 3.396467 0.866617 0.1188501 3.396467 1.196025 0.7435822 4.339453 0.8666169 0.743582 4.339453 1.127136 0.1324708 3.387444 1.031321 0.7572026 4.33043 0.9968766 0.1145043 3.399347 1.031321 0.7392362 4.342332 0.9968766 0.3371867 2.969171 0.8666172 0.3371866 2.969172 1.196025 1.280173 2.344439 0.8666176 1.280173 2.34444 1.127137 0.3433312 2.978446 0.8666172 0.3433312 2.978446 1.196025 1.286317 2.353714 0.8666176 1.286317 2.353714 1.127137 0.3343076 2.964825 1.031321 1.277294 2.340094 0.9968773 0.3462103 2.982792 1.031321 1.289196 2.35806 0.9968773 -0.3412104 3.418612 0.8666172 -0.3412105 3.418612 1.196025 -1.284196 4.043344 0.8666168 -1.284197 4.043344 1.127136 -0.347355 3.409337 0.8666172 -0.347355 3.409337 1.196025 -1.290341 4.034069 0.8666168 -1.290341 4.034069 1.127136 -0.3383314 3.422957 1.031321 -1.281317 4.047689 0.9968765 -0.3502342 3.404991 1.031321 -1.29322 4.029723 0.9968765 -0.3412097 3.418611 -1.403426 -0.3412098 3.418611 -1.074017 -1.284196 4.043343 -1.403426 -1.284196 4.043343 -1.142907 -0.3473542 3.409336 -1.403426 -0.3473543 3.409336 -1.074017 -1.29034 4.034069 -1.403426 -1.29034 4.034069 -1.142907 -0.3383306 3.422957 -1.238722 -1.281317 4.047689 -1.273166 -0.3502334 3.404991 -1.238722 -1.293219 4.029723 -1.273166 0.3371876 2.969171 -1.403426 0.3371875 2.969171 -1.074017 1.280174 2.344439 -1.403425 1.280174 2.344439 -1.142906 0.3433321 2.978446 -1.403426 0.3433321 2.978446 -1.074017 1.286318 2.353714 -1.403425 1.286318 2.353714 -1.142906 0.3343084 2.964825 -1.238721 1.277294 2.340093 -1.273166 0.3462112 2.982792 -1.238721 1.289197 2.35806 -1.273166 -0.2582594 2.807105 0.8666171 -0.2582595 2.807105 1.196025 -0.8829911 1.86412 0.8666172 -0.8829913 1.864119 1.127136 -0.2489846 2.800961 0.8666171 -0.2489847 2.800961 1.196025 -0.8737165 1.857975 0.8666172 -0.8737165 1.857975 1.127136 -0.2626053 2.809984 1.031321 -0.8873372 1.866999 0.9968768 -0.2446388 2.798081 1.031321 -0.8693708 1.855096 0.9968768 -0.2312344 2.847895 -1.403426 -0.2312344 2.847895 -1.074017 -0.8559663 1.904909 -1.403426 -0.8559663 1.904909 -1.142906 -0.2219597 2.841751 -1.403426 -0.2219597 2.841751 -1.074017 -0.8466917 1.898765 -1.403426 -0.8466916 1.898765 -1.142906 -0.2355802 2.850775 -1.238721 -0.8603122 1.907789 -1.273166 -0.2176138 2.838872 -1.238721 -0.8423458 1.895886 -1.273166 0.1281257 3.390322 -1.403426 0.1281255 3.390322 -1.074018 0.7528576 4.333308 -1.403426 0.7528574 4.333308 -1.142906 0.118851 3.396467 -1.403426 0.1188508 3.396467 -1.074018 0.7435829 4.339453 -1.403426 0.7435827 4.339453 -1.142906 0.1324715 3.387443 -1.238722 0.7572034 4.330429 -1.273166 0.1145051 3.399346 -1.238722 0.7392369 4.342332 -1.273166 0.4320057 3.175161 0.2421541 -0.4319897 3.175161 -1.577862 -0.4319899 3.175161 0.2421541 0.483367 3.175161 0.7027816 0.4740794 3.080862 0.7027816 -0.4833514 3.175161 0.7027816 0.483367 3.175161 1.211037 0.4740794 3.080862 1.211037 0.4833664 3.175161 7.21111 0.4740788 3.080862 7.21111 0.4833661 3.175161 7.766767 0.4740785 3.080862 7.766767 -0.4833522 3.175161 7.766767 0.4335868 3.175161 8.352458 -0.4335725 3.175161 8.352458 0.2710617 3.175161 8.818006 -0.2710469 3.175161 8.818006 0.1384629 3.175161 9.11836 -0.1384487 3.175161 9.11836 0.04793685 3.175161 9.268537 -0.04792505 3.175161 9.268537 5.87934e-6 3.175161 9.306959 5.87492e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.87492e-6 3.175161 9.306959 5.87934e-6 3.175161 9.306959 5.87492e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.87492e-6 3.175161 9.306959 0.4740793 3.080862 2.259931 0.4833669 3.175161 2.259931 0.4833667 3.175161 4.410946 0.4740791 3.080862 4.410946 -0.3921618 3.175161 -1.577862 7.96359e-6 3.56733 -0.8556489 0.07651644 3.559795 -0.8556489 0.1500848 3.537478 -0.8556489 0.2178858 3.501238 -0.8556489 0.2773139 3.452467 -0.8556489 0.3260853 3.393038 -0.8556489 0.3623256 3.325237 -0.8556489 0.3846423 3.251669 -0.8556489 0.3921778 3.175161 -0.8556489 0.3846424 3.098652 -0.8556489 0.3623256 3.025084 -0.8556489 0.3260852 2.957283 -0.8556489 0.2773138 2.897855 -0.8556489 0.2178857 2.849083 -0.8556489 0.1500847 2.812843 -0.8556489 0.07651633 2.790526 -0.8556489 7.78568e-6 2.782991 -0.8556489 -0.07650077 2.790526 -0.8556489 -0.1500691 2.812843 -0.8556489 -0.2178701 2.849083 -0.8556489 -0.2772982 2.897855 -0.8556489 -0.3260695 2.957283 -0.8556489 -0.3623099 3.025084 -0.8556489 -0.3846265 3.098652 -0.8556489 -0.3921618 3.175161 -0.8556489 -0.3846263 3.25167 -0.8556489 -0.3623095 3.325238 -0.8556489 -0.3260691 3.393039 -0.8556489 -0.2772976 3.452467 -0.8556489 -0.2178695 3.501238 -0.8556489 -0.1500684 3.537479 -0.8556489 -0.07649993 3.559795 -0.8556489 7.85418e-6 3.607158 -1.577862 7.67606e-6 3.607158 0.2421541 0.08428645 3.598858 -1.577862 0.08428627 3.598858 0.2421541 0.1653262 3.574274 -1.577862 0.1653261 3.574274 0.2421541 0.240013 3.534353 -1.577862 0.2400128 3.534353 0.2421541 0.3054764 3.480629 -1.577862 0.3054763 3.480629 0.2421541 0.3592009 3.415165 -1.577862 0.3592007 3.415165 0.2421541 0.3991218 3.340479 -1.577862 0.3991216 3.340479 0.2421541 0.4237049 3.259439 -1.577862 0.4237047 3.259439 0.2421541 0.4320057 3.17516 -1.577862 0.4320055 3.17516 0.2421541 -0.4319899 3.175161 -1.577862 -0.4319901 3.175161 0.2421541 -0.4236891 3.259439 -1.577862 -0.4236893 3.259439 0.2421541 -0.3991059 3.340479 -1.577862 -0.3991061 3.340479 0.2421541 -0.3591849 3.415166 -1.577862 -0.3591851 3.415166 0.2421541 -0.3054603 3.480629 -1.577862 -0.3054605 3.480629 0.2421541 -0.2399968 3.534354 -1.577862 -0.239997 3.534354 0.2421541 -0.16531 3.574275 -1.577862 -0.1653102 3.574275 0.2421541 -0.08427006 3.598858 -1.577862 -0.08427023 3.598858 0.2421541 7.63059e-6 3.658519 0.7027819 0.09430629 3.649232 0.7027819 0.1849812 3.621726 0.7027819 0.2685477 3.577059 0.7027819 0.3417942 3.516947 0.7027819 0.4019062 3.4437 0.7027819 0.4465733 3.360134 0.7027819 0.4740792 3.269459 0.7027819 0.4833669 3.17516 0.7027819 -0.4833515 3.175161 0.7027819 -0.4740639 3.269459 0.7027819 -0.4465578 3.360134 0.7027819 -0.4018905 3.443701 0.7027819 -0.3417785 3.516947 0.7027819 -0.2685318 3.577059 0.7027819 -0.1849653 3.621726 0.7027819 -0.09429031 3.649232 0.7027819 7.58085e-6 3.658519 1.211037 0.09430629 3.649232 1.211037 0.1849811 3.621726 1.211037 0.2685476 3.577059 1.211037 0.3417941 3.516947 1.211037 0.4019061 3.4437 1.211037 0.4465733 3.360134 1.211037 0.4740791 3.269459 1.211037 0.4833668 3.17516 1.211037 -0.4833516 3.175161 1.211037 -0.4740639 3.269459 1.211037 -0.4465579 3.360134 1.211037 -0.4018906 3.443701 1.211037 -0.3417786 3.516947 1.211037 -0.2685319 3.577059 1.211037 -0.1849653 3.621726 1.211037 -0.09429037 3.649232 1.211037 7.07792e-6 3.658519 7.21111 0.09430575 3.649232 7.21111 0.1849806 3.621726 7.21111 0.2685471 3.577059 7.21111 0.3417937 3.516947 7.21111 0.4019056 3.4437 7.21111 0.4465727 3.360134 7.21111 0.4740787 3.269459 7.21111 0.4833663 3.17516 7.21111 -0.4833521 3.175161 7.21111 -0.4740644 3.269459 7.21111 -0.4465584 3.360134 7.21111 -0.4018911 3.443701 7.21111 -0.3417791 3.516947 7.21111 -0.2685324 3.577059 7.21111 -0.1849658 3.621726 7.21111 -0.09429091 3.649232 7.21111 6.78396e-6 3.658519 7.766767 0.09430545 3.649232 7.766767 0.1849803 3.621726 7.766767 0.2685468 3.577059 7.766767 0.3417934 3.516947 7.766767 0.4019053 3.4437 7.766767 0.4465724 3.360134 7.766767 0.4740784 3.269459 7.766767 0.483366 3.17516 7.766767 -0.4833524 3.175161 7.766767 -0.4740647 3.269459 7.766767 -0.4465587 3.360134 7.766767 -0.4018914 3.443701 7.766767 -0.3417794 3.516947 7.766767 -0.2685327 3.577059 7.766767 -0.1849661 3.621726 7.766767 -0.09429121 3.649232 7.766767 6.97154e-6 3.60874 8.352458 0.08459419 3.600409 8.352458 0.1659307 3.575736 8.352458 0.2408909 3.535669 8.352458 0.3065941 3.481747 8.352458 0.3605154 3.416044 8.352458 0.4005824 3.341084 8.352458 0.4252555 3.259748 8.352458 0.4335867 3.17516 8.352458 -0.4335727 3.175161 8.352458 -0.4252415 3.259748 8.352458 -0.4005683 3.341084 8.352458 -0.3605011 3.416045 8.352458 -0.3065798 3.481748 8.352458 -0.2408765 3.535669 8.352458 -0.1659162 3.575736 8.352458 -0.08457958 3.600409 8.352458 7.17465e-6 3.446215 8.818006 0.0528872 3.441006 8.818006 0.1037352 3.425582 8.818006 0.1505969 3.400534 8.818006 0.1916715 3.366825 8.818006 0.2253806 3.32575 8.818006 0.2504287 3.278888 8.818006 0.2658532 3.22804 8.818006 0.2710615 3.17516 8.818006 -0.2710471 3.175161 8.818006 -0.2658389 3.228041 8.818006 -0.2504143 3.278888 8.818006 -0.2253661 3.32575 8.818006 -0.1916569 3.366825 8.818006 -0.1505822 3.400534 8.818006 -0.1037204 3.425582 8.818006 -0.05287247 3.441006 8.818006 6.92091e-6 3.313616 9.11836 0.0270183 3.310956 9.11836 0.05299162 3.303077 9.11836 0.07692885 3.290282 9.11836 0.09790992 3.273063 9.11836 0.1151287 3.252082 9.11836 0.1279234 3.228145 9.11836 0.1358023 3.202172 9.11836 0.1384627 3.17516 9.11836 -0.1384488 3.175161 9.11836 -0.1357885 3.202172 9.11836 -0.1279095 3.228145 9.11836 -0.1151148 3.252083 9.11836 -0.09789597 3.273063 9.11836 -0.07691484 3.290282 9.11836 -0.05297762 3.303077 9.11836 -0.02700424 3.310956 9.11836 5.71894e-6 3.223092 9.268537 0.009356558 3.22217 9.268537 0.01834809 3.219443 9.268537 0.02663475 3.215013 9.268537 0.03389799 3.209053 9.268537 0.03985887 3.201789 9.268537 0.04428815 3.193503 9.268537 0.04701566 3.184511 9.268537 0.04793667 3.17516 9.268537 -0.04792523 3.175161 9.268537 -0.04700422 3.184511 9.268537 -0.04427671 3.193503 9.268537 -0.03984737 3.201789 9.268537 -0.03388655 3.209053 9.268537 -0.02662324 3.215013 9.268537 -0.01833659 3.219443 9.268537 -0.009345054 3.22217 9.268537 5.71426e-6 3.17516 9.306959 5.70996e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.70996e-6 3.17516 9.306959 0.4465731 3.360134 2.259931 0.4740791 3.269459 2.259931 0.2685475 3.577059 2.259931 0.3417941 3.516947 2.259931 7.4782e-6 3.658519 2.259931 0.09430617 3.649232 2.259931 -0.268532 3.577059 2.259931 -0.1849654 3.621726 2.259931 -0.446558 3.360134 2.259931 -0.4018907 3.443701 2.259931 -0.4833517 3.175161 2.259931 0.4833667 3.17516 2.259931 0.401906 3.4437 2.259931 0.184981 3.621726 2.259931 -0.09429049 3.649232 2.259931 -0.3417787 3.516947 2.259931 -0.474064 3.269459 2.259931 -0.4833519 3.175161 4.410946 -0.4018909 3.443701 4.410946 -0.1849656 3.621726 4.410946 0.09430593 3.649232 4.410946 0.3417938 3.516947 4.410946 0.4740788 3.269459 4.410946 -0.4740642 3.269459 4.410946 -0.3417789 3.516947 4.410946 -0.09429067 3.649232 4.410946 0.1849808 3.621726 4.410946 0.4019058 3.4437 4.410946 0.4833665 3.17516 4.410946 -0.4465582 3.360134 4.410946 -0.2685322 3.577059 4.410946 7.26768e-6 3.658519 4.410946 0.2685473 3.577059 4.410946 0.446573 3.360134 4.410946 7.85452e-6 3.56733 -1.577862 0.07651638 3.559795 -1.577862 0.1500847 3.537478 -1.577862 0.2178857 3.501238 -1.577862 0.2773138 3.452466 -1.577862 0.3260852 3.393038 -1.577862 0.3623256 3.325237 -1.577862 0.3846423 3.251669 -1.577862 0.3921777 3.17516 -1.577862 -0.392162 3.175161 -1.577862 -0.3846265 3.251669 -1.577862 -0.3623097 3.325237 -1.577862 -0.3260692 3.393039 -1.577862 -0.2772977 3.452466 -1.577862 -0.2178696 3.501238 -1.577862 -0.1500685 3.537478 -1.577862 -0.07650005 3.559795 -1.577862 7.78384e-6 3.56733 -0.8556489 0.07651627 3.559795 -0.8556489 0.1500846 3.537478 -0.8556489 0.2178856 3.501238 -0.8556489 0.2773137 3.452466 -0.8556489 0.3260851 3.393038 -0.8556489 0.3623254 3.325237 -0.8556489 0.3846421 3.251669 -0.8556489 0.3921776 3.17516 -0.8556489 -0.392162 3.175161 -0.8556489 -0.3846265 3.251669 -0.8556489 -0.3623097 3.325237 -0.8556489 -0.3260692 3.393039 -0.8556489 -0.2772977 3.452466 -0.8556489 -0.2178696 3.501238 -0.8556489 -0.1500685 3.537478 -0.8556489 -0.07650011 3.559795 -0.8556489 0.4320057 3.175161 0.2421541 -0.4319899 3.175161 0.2421541 -0.4319897 3.175161 -1.577862 -0.4833514 3.175161 0.7027816 0.483367 3.175161 0.7027816 0.483367 3.175161 1.211037 0.4833667 3.175161 4.410946 0.4833664 3.175161 7.21111 -0.4833522 3.175161 7.766767 0.4833661 3.175161 7.766767 -0.4335725 3.175161 8.352458 0.4335868 3.175161 8.352458 -0.2710469 3.175161 8.818006 0.2710617 3.175161 8.818006 -0.1384487 3.175161 9.11836 0.1384629 3.175161 9.11836 -0.04792505 3.175161 9.268537 0.04793685 3.175161 9.268537 5.87492e-6 3.175161 9.306959 5.87934e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.88889e-6 3.175161 9.306959 5.87492e-6 3.175161 9.306959 0.4833669 3.175161 2.259931 -0.3921618 3.175161 -1.577862 7.96359e-6 3.56733 -0.8556489 0.07651644 3.559795 -0.8556489 0.1500848 3.537478 -0.8556489 0.2178858 3.501238 -0.8556489 0.2773139 3.452467 -0.8556489 0.3260853 3.393038 -0.8556489 0.3623256 3.325237 -0.8556489 0.3846423 3.251669 -0.8556489 0.3921778 3.175161 -0.8556489 -0.3921618 3.175161 -0.8556489 -0.3846263 3.25167 -0.8556489 -0.3623095 3.325238 -0.8556489 -0.3260691 3.393039 -0.8556489 -0.2772976 3.452467 -0.8556489 -0.2178695 3.501238 -0.8556489 -0.1500684 3.537479 -0.8556489 -0.07649993 3.559795 -0.8556489 0.4320055 3.17516 0.2421541 -0.4319901 3.175161 0.2421541 -0.4319899 3.175161 -1.577862 -0.4833515 3.175161 0.7027819 0.4833669 3.17516 0.7027819 0.4833668 3.17516 1.211037 0.4833665 3.17516 4.410946 0.4833663 3.17516 7.21111 -0.4833524 3.175161 7.766767 0.483366 3.17516 7.766767 -0.4335727 3.175161 8.352458 0.4335867 3.17516 8.352458 -0.2710471 3.175161 8.818006 0.2710615 3.17516 8.818006 -0.1384488 3.175161 9.11836 0.1384627 3.17516 9.11836 -0.04792523 3.175161 9.268537 0.04793667 3.17516 9.268537 5.70996e-6 3.17516 9.306959 5.71426e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.72393e-6 3.17516 9.306959 5.70996e-6 3.17516 9.306959 0.4833667 3.17516 2.259931 -0.392162 3.175161 -1.577862 7.78384e-6 3.56733 -0.8556489 0.07651627 3.559795 -0.8556489 0.1500846 3.537478 -0.8556489 0.2178856 3.501238 -0.8556489 0.2773137 3.452466 -0.8556489 0.3260851 3.393038 -0.8556489 0.3623254 3.325237 -0.8556489 0.3846421 3.251669 -0.8556489 0.3921776 3.17516 -0.8556489 -0.392162 3.175161 -0.8556489 -0.3846265 3.251669 -0.8556489 -0.3623097 3.325237 -0.8556489 -0.3260692 3.393039 -0.8556489 -0.2772977 3.452466 -0.8556489 -0.2178696 3.501238 -0.8556489 -0.1500685 3.537478 -0.8556489 -0.07650011 3.559795 -0.8556489 + + + + + + + + + + 0.9951847 -0.09801721 0 0.9569406 -0.2902841 0 0.8819213 -0.4713966 0 0.7730096 -0.6343944 0 0.6343935 -0.7730102 0 0.4713959 -0.8819218 0 0.2902865 -0.9569398 0 0.09801506 -0.9951849 0 -0.09801506 -0.9951849 0 -0.2902867 -0.9569398 0 -0.471396 -0.8819217 0 -0.6343953 -0.7730088 0 -0.773011 -0.6343926 0 -0.8819207 -0.4713978 0 -0.9569407 -0.2902835 0 -0.995185 -0.09801483 0 0.4685201 -0.8765416 -0.1102893 0.6343938 -0.7730101 0 0.6305235 -0.7682946 -0.1102893 0.7682939 -0.6305243 -0.1102893 0.8765416 -0.4685202 -0.1102892 0.9511027 -0.2885133 -0.1102892 0.9891136 -0.09741908 -0.1102892 -0.9891139 -0.09741699 -0.1102892 -0.9511029 -0.2885125 -0.1102891 -0.8765407 -0.4685221 -0.1102893 -0.7682964 -0.6305212 -0.1102896 -0.630522 -0.7682958 -0.1102889 -0.4685203 -0.8765416 -0.1102892 -0.2885156 -0.9511021 -0.1102892 -0.09741711 -0.9891138 -0.110289 0.09741652 -0.9891139 -0.1102891 0.2885156 -0.9511019 -0.1102896 0.09801441 -0.995185 0 0.9569404 -0.2902842 0 -0.7730122 -0.6343911 0 -0.2902865 -0.9569398 0 0.290284 -0.9569405 0 0.7730097 -0.6343941 0 -0.9569406 -0.2902839 0 -0.6343921 -0.7730115 0 -0.09801441 -0.995185 0 0.4713969 -0.8819211 0 0.8819217 -0.4713959 0 -0.8819213 -0.4713967 0 -0.4713973 -0.8819209 0 0.09801441 -0.995185 0 -0.4713974 -0.8819209 -2.02265e-7 0.6343938 -0.7730101 0 0.9569405 -0.2902842 0 -0.7730123 -0.6343911 0 -0.2902866 -0.9569399 0 0.290284 -0.9569405 0 0.7730097 -0.6343941 0 -0.9569406 -0.2902839 0 -0.6343921 -0.7730115 0 -0.09801441 -0.995185 0 0.4713969 -0.8819212 0 0.8819217 -0.4713959 0 -0.8819212 -0.4713967 0 -0.4713973 -0.8819209 0 -0.8787833 -0.4697194 0.08428275 0.09801441 -0.995185 0 0.6343937 -0.7730101 2.72203e-7 0.9569405 -0.2902842 4.106e-7 -0.7730122 -0.6343911 -3.31681e-7 -0.2902865 -0.9569398 -1.24555e-7 0.2902841 -0.9569405 1.24554e-7 0.7730097 -0.6343941 3.3168e-7 -0.9569406 -0.2902839 -4.106e-7 -0.6343921 -0.7730115 -2.72202e-7 -0.09801441 -0.995185 0 0.4713969 -0.8819212 2.02265e-7 0.8819217 -0.4713959 3.78411e-7 -0.8819213 -0.4713968 -3.78411e-7 -0.4697186 -0.8787839 0.08428263 0.09767049 -0.9916436 0.08428263 0.6321378 -0.7702586 0.08428251 0.9535356 -0.2892514 0.08428198 -0.9916439 -0.0976662 0.08428287 -0.7702602 -0.6321359 0.08428305 -0.2892523 -0.9535353 0.08428275 0.2892496 -0.9535362 0.08428227 0.7702585 -0.6321379 0.08428221 0.9916438 -0.09766829 0.0842821 -0.9535357 -0.2892504 0.08428281 -0.6321378 -0.7702586 0.08428245 -0.09767049 -0.9916437 0.08428198 0.4697204 -0.8787828 0.08428233 0.8787834 -0.4697195 0.08428204 -0.833074 -0.4452905 0.3281832 -0.4452868 -0.8330761 0.3281828 0.09258872 -0.9400657 0.3281826 0.5992566 -0.7301975 0.3281818 0.9039399 -0.2742062 0.3281822 -0.9400659 -0.09258598 0.3281828 -0.7301969 -0.5992569 0.3281826 -0.2742061 -0.9039397 0.3281828 0.2742049 -0.9039402 0.3281827 0.7301955 -0.5992588 0.3281822 0.9400659 -0.09258878 0.3281819 -0.9039399 -0.2742058 0.3281829 -0.5992565 -0.730197 0.3281828 -0.09258866 -0.9400655 0.3281829 0.4452866 -0.8330763 0.3281822 0.8330754 -0.4452887 0.3281821 -0.8074286 -0.4315826 0.402238 -0.4315789 -0.8074305 0.4022383 0.08973842 -0.9111265 0.4022381 0.5808084 -0.7077183 0.4022393 0.8761114 -0.2657677 0.4022391 -0.9111269 -0.08973544 0.4022381 -0.7077207 -0.5808058 0.4022388 -0.265761 -0.8761137 0.4022387 0.2657647 -0.8761126 0.4022385 0.7077184 -0.5808083 0.4022392 0.911126 -0.08973848 0.4022393 -0.8761128 -0.2657642 0.4022385 -0.5808089 -0.7077183 0.4022385 -0.08973842 -0.9111264 0.4022383 0.4315786 -0.8074303 0.402239 0.8074313 -0.4315759 0.4022397 -0.7562839 -0.4042374 0.514419 -0.4042415 -0.7562801 0.5144213 0.08404952 -0.8534068 0.5144246 0.5440154 -0.6628825 0.5144262 0.8206079 -0.2489308 0.514428 -0.8534103 -0.08405154 0.5144184 -0.6628833 -0.5440212 0.5144189 -0.2489255 -0.8206133 0.5144219 0.2489317 -0.8206094 0.5144252 0.662882 -0.5440147 0.5144272 0.8534043 -0.08405262 0.5144281 -0.8206132 -0.2489328 0.5144186 -0.5440225 -0.6628812 0.5144202 -0.08405709 -0.853407 0.514423 0.40424 -0.7562777 0.514426 0.7562796 -0.404235 0.5144271 -0.5532258 -0.2957028 0.7787818 -0.2957071 -0.5532235 0.7787818 0 0.6328327 -0.7742886 0.3979464 -0.4849097 0.778782 0 0 0 -0.6242744 -0.06148326 0.778782 -0.484909 -0.3979468 0.7787822 0 0.6328327 -0.7742885 0.1820916 -0.6002847 0.7787817 0 0 0 0.6242742 -0.0614863 0.7787819 0 0 0 0 0 0 -0.06148761 -0.6242742 0.7787817 0 0 0 0.5532222 -0.2957089 0.7787821 0.09801441 -0.995185 0 0.6343938 -0.7730101 0 0.9569405 -0.2902842 0 -0.7730123 -0.6343911 0 -0.2902865 -0.9569398 0 0.290284 -0.9569405 0 0.7730097 -0.6343941 0 -0.9569406 -0.2902839 0 -0.6343922 -0.7730115 0 -0.09801441 -0.995185 0 0.4713969 -0.8819211 0 0.8819217 -0.4713959 0 -0.8819213 -0.4713967 0 -0.4713973 -0.8819209 0 0.8819217 -0.4713959 0 -0.4713973 -0.8819209 0 0.4713969 -0.8819211 0 -0.8819212 -0.4713967 0 -0.09801441 -0.995185 0 0.7730097 -0.6343942 0 -0.6343922 -0.7730115 0 0.290284 -0.9569405 0 0.9569405 -0.2902842 0 -0.2902865 -0.9569398 0 -0.9569405 -0.2902839 0 0.6343938 -0.7730101 0 0.09801441 -0.995185 0 -0.7730122 -0.6343911 0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0.9569407 0.2902837 0 0.6343954 0.7730088 0 0.09801125 0.9951854 0 -0.471396 0.8819216 0 -0.8819212 0.4713969 0 0.8819214 0.4713966 0 0.4713963 0.8819216 0 -0.09801125 0.9951853 0 -0.6343933 0.7730104 0 -0.9569405 0.2902839 0 0.9951849 0.09801524 0 0.7730112 0.6343923 0 0.2902872 0.9569395 0 -0.2902871 0.9569397 0 -0.7730098 0.6343941 0 -0.9951847 0.09801709 0 -0.9951849 -0.09801524 0 -0.9951849 -0.09801524 0 -0.9951849 -0.09801524 -4.27009e-7 -0.9951848 -0.09801524 0 -0.995185 -0.09801524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.81781e-7 -2.39293e-6 -1 0.8221251 -0.5446608 0.1656953 0 0 1 -0.8336485 0.5522954 -4.59618e-7 -0.5522962 -0.833648 -5.06245e-7 0.5522963 0.833648 1.27321e-7 0.8336485 -0.5522954 4.91005e-7 -0.8221251 0.5446611 0.1656946 -0.5522955 -0.8336484 -1.30169e-7 0.5324325 0.8036652 0.2657776 0 0 -1 -0.5522963 -0.833648 -1.21624e-7 0.5522933 0.8336499 1.21623e-7 0 0 1 0.5324288 0.8036678 0.2657774 -0.5522976 -0.833647 -3.51802e-7 -0.822134 0.5446664 -0.1656327 0.5324481 0.8036866 -0.2656818 -0.5522962 -0.8336479 -2.15815e-7 0.5324472 0.8036873 -0.2656818 0 0 -1 6.18787e-6 -4.09949e-6 -1 0.8221338 -0.5446668 -0.1656326 -0.5522964 -0.8336479 -2.34444e-7 0 0 -1 -0.8221237 0.5446634 0.1656941 0 0 1 0.8336482 -0.552296 4.76816e-7 0.5522935 0.8336498 8.56152e-7 -0.5522933 -0.8336499 -1.96112e-7 -0.8336483 0.5522956 -4.4543e-7 0.822125 -0.5446611 0.1656949 0.552296 0.833648 1.90416e-7 -0.5324297 -0.8036671 0.2657777 0 0 -1 0.5522952 0.8336486 1.61717e-7 -0.5522963 -0.833648 -2.0181e-7 0 0 1 -0.5324376 -0.8036618 0.2657783 0.5522959 0.8336481 3.51801e-7 0.8221333 -0.5446676 -0.165632 -0.5324474 -0.8036874 -0.265681 0.5522952 0.8336488 4.76281e-7 -0.5324501 -0.8036855 -0.2656817 0 0 -1 0 0 -1 -0.8221338 0.5446665 -0.1656334 0.5522916 0.833651 1.88439e-6 0 0 -1 0.5446638 0.8221232 0.1656953 0 0 1 -0.5522943 -0.8336492 -1.56019e-7 0.8336487 -0.5522953 4.54133e-7 -0.8336486 0.5522952 -4.76816e-7 0.5522964 0.8336479 1.67414e-7 -0.5446601 -0.8221259 0.1656939 0.8336494 -0.552294 4.4543e-7 -0.8036661 0.5324317 0.265777 0 0 -1 0.8336486 -0.5522952 4.59618e-7 -0.83365 0.5522933 -4.59619e-7 0 0 1 -0.8036651 0.5324332 0.2657771 0.8336498 -0.5522934 5.31018e-7 -0.5446691 -0.8221325 -0.1656316 -0.8036862 0.5324484 -0.2656825 0.8336486 -0.5522952 8.63264e-7 -0.8036891 0.5324442 -0.2656821 0 0 -1 4.34128e-6 1.5758e-6 -1 0.5446661 0.8221342 -0.1656328 0.8336507 -0.5522921 7.07752e-7 0 0 -1 -0.5446633 -0.8221237 0.1656944 0 0 1 0.5522964 0.8336479 1.33233e-7 -0.8336484 0.5522956 -1.03483e-6 0.8336509 -0.5522918 3.72339e-7 -0.5522962 -0.833648 0 0.5446607 0.8221253 0.1656949 -0.8336478 0.5522964 -3.90826e-7 0.8036681 -0.5324283 0.2657774 0 0 -1 -0.8336489 0.5522948 -3.99425e-7 0.8336481 -0.5522959 4.25222e-7 0 0 1 0.8036655 -0.5324326 0.2657769 -0.833648 0.5522962 -5.31017e-7 0.5446658 0.8221344 -0.1656324 0.8036875 -0.5324463 -0.2656825 -0.8336489 0.5522948 -5.06049e-7 0.8036873 -0.5324468 -0.2656823 0 0 -1 -2.04973e-6 -3.09393e-6 -1 -0.5446653 -0.8221346 -0.1656332 -0.833649 0.5522947 2.30023e-7 -0.8291729 0.5588935 -0.01052117 0.8379787 -0.5456016 -0.01052004 0.5522931 0.8336501 0 0.1229503 0.1855809 0.9749066 0.3335623 0.50348 -0.797022 -0.5523011 -0.8336448 1.76955e-7 -0.8332685 0.5520479 0.03011113 0.8357022 -0.5489095 0.01732999 0.5522998 0.8336456 -9.58907e-7 -0.5522952 -0.8336487 0 0.829173 -0.5588932 -0.01052021 -0.8379788 0.5456014 -0.01052105 -0.5522825 -0.833657 -5.92351e-7 -0.1229482 -0.1855823 0.9749067 -0.3335607 -0.5034809 -0.7970221 0.5522918 0.8336509 2.75147e-7 0.8332685 -0.5520479 0.03011214 -0.8357022 0.5489094 0.01732873 -0.5522953 -0.8336485 -7.1375e-7 0.5522959 0.8336482 0 -0.5588932 -0.829173 -0.01052063 0.5456014 0.8379788 -0.01052051 -0.8336491 0.5522944 -3.33758e-7 -0.1855816 0.1229493 0.9749066 -0.5034824 0.3335582 -0.7970223 0.8336505 -0.5522924 3.61261e-7 -0.552048 -0.8332685 0.03011125 0.5489095 0.8357021 0.01732939 -0.8336478 0.5522965 -1.25061e-6 0.833648 -0.552296 2.86939e-7 0.5588933 0.8291729 -0.01052057 -0.5456016 -0.8379787 -0.01052057 0.8336483 -0.5522957 1.68385e-7 0.1855812 -0.122949 0.9749067 0.5034864 -0.3335528 -0.7970219 -0.8336492 0.5522944 -4.76254e-7 0.552048 0.8332685 0.03011167 -0.5489095 -0.8357021 0.01732927 0.8336477 -0.5522964 9.89942e-7 -0.8336479 0.5522965 -5.1134e-7 -0.8329816 0.5518537 0.0399875 0.8329816 -0.5518537 0.03998905 -0.03357338 -0.05067652 -0.9981507 0.552296 0.8336482 2.81921e-7 -0.5522969 -0.8336476 -2.48525e-7 0 0 1 -0.8336535 0.5508381 -0.03998905 0.8323085 -0.5528684 -0.03998792 0.5522949 0.8336488 2.79795e-7 -0.5522956 -0.8336483 -4.4579e-7 0.5518535 0.8329818 0.03998768 -0.5518535 -0.8329817 0.03998917 -0.05067616 0.03357309 -0.9981507 0.8336491 -0.5522944 0 -0.8336491 0.5522944 -1.63549e-6 -3.07498e-7 2.03714e-7 1 0.5508379 0.8336538 -0.03998869 -0.5528683 -0.8323085 -0.03998768 0.8336541 -0.5522869 7.77882e-7 -0.8336442 0.552302 2.61773e-7 -0.5518537 -0.8329817 0.03998869 0.5518535 0.8329818 0.03998869 0.0506767 -0.03357344 -0.9981507 -0.8336492 0.5522944 -4.11961e-7 0.8336557 -0.5522846 4.29261e-7 -3.07498e-7 2.03713e-7 1 -0.5508381 -0.8336535 -0.03998917 0.5528683 0.8323085 -0.03998816 -0.83365 0.552293 0 0.8336535 -0.5522879 -1.73648e-7 -0.5518537 -0.8329817 0.0399881 0.5518538 0.8329815 0.03998911 0.05067664 -0.03357338 -0.9981507 -0.8336492 0.5522944 -1.44435e-6 0.8336476 -0.5522969 2.54806e-7 -1.7571e-7 0 1 -0.5508382 -0.8336536 -0.03998917 0.5528684 0.8323085 -0.03998869 -0.8336454 0.5523001 0 0.8336467 -0.5522981 4.47087e-7 0.5518535 0.8329818 0.03998863 -0.5518537 -0.8329817 0.03999018 -0.0506761 0.03357303 -0.9981507 0.8336504 -0.5522925 1.89602e-7 -0.833654 0.5522869 2.18401e-7 -1.75711e-7 0 1 0.550838 0.8336536 -0.03998863 -0.5528682 -0.8323085 -0.03998911 0.83365 -0.552293 0 -0.8336501 0.552293 -1.08207e-6 0.8329817 -0.5518536 0.03998982 -0.8329817 0.5518537 0.0399875 0.03357315 0.0506764 -0.9981506 -0.5522938 -0.8336495 -1.29346e-6 0.552287 0.8336541 -7.24238e-7 0 0 1 0.8336535 -0.5508383 -0.03998917 -0.8323085 0.5528686 -0.03998792 -0.5522943 -0.8336493 -1.54758e-7 0.5522956 0.8336483 9.51192e-7 0.8329817 -0.5518536 0.03998917 -0.8329817 0.5518537 0.03998816 0.03357326 0.05067646 -0.9981507 -0.5522944 -0.8336492 0 0.5522944 0.8336492 -3.66509e-7 0 0 1 0.8336536 -0.5508382 -0.03998863 -0.8323086 0.5528684 -0.03998786 -0.5522943 -0.8336493 -1.54758e-7 0.5522956 0.8336484 -5.68901e-7 -0.8329816 0.5518537 0.03998798 0.8329816 -0.5518536 0.03998911 -0.03357321 -0.05067622 -0.9981507 0.5522957 0.8336484 2.93834e-7 -0.5522969 -0.8336476 0 0 0 1 -0.8336535 0.5508381 -0.03998899 0.8323085 -0.5528683 -0.03998821 0.5522949 0.8336488 3.79209e-7 -0.5522943 -0.8336492 -3.84883e-7 0.9951847 -0.09801703 0 0.9951848 -0.09801709 0 0.9951847 -0.09801703 5.33762e-7 0 0 0 0.9951848 -0.09801703 0 0.9951848 -0.09801703 0 0 0 -1 0.09801506 0.995185 0 0.2902867 0.9569398 0 0.471396 0.8819216 0 0.6343937 0.7730101 0 0.7730107 0.634393 0 0.8819216 0.471396 0 0.9569404 0.2902849 0 0.9951846 0.09801751 0 -0.9951846 0.09801751 0 -0.9569399 0.2902861 0 -0.8819209 0.4713975 0 -0.7730092 0.6343947 0 -0.634393 0.7730106 0 -0.4713956 0.881922 0 -0.09801584 0.9951849 0 -0.2902838 0.9569407 0 0 0 -1 0.9891136 0.09741955 -0.1102892 0.9511026 0.288514 -0.1102892 0.8765414 0.4685205 -0.1102892 0.7682951 0.6305229 -0.1102892 0.6305236 0.7682945 -0.1102889 0.4685203 0.8765415 -0.1102891 0.2885157 0.9511021 -0.1102891 -0.09741723 0.9891138 -0.1102892 -0.2885131 0.9511028 -0.1102891 -0.468519 0.8765422 -0.1102893 -0.630523 0.7682949 -0.1102897 -0.7682935 0.6305247 -0.1102892 -0.8765408 0.4685217 -0.1102893 -0.9511023 0.2885148 -0.1102892 -0.9891136 0.09741973 -0.1102892 0.09741717 0.9891139 -0.110289 0.9569404 0.2902845 0 0.6343924 0.7730112 0 0.09801447 0.995185 0 -0.4713947 0.8819223 0 -0.8819208 0.4713977 0 0.8819215 0.4713962 0 0.4713971 0.8819211 0 -0.09801518 0.9951849 0 -0.6343916 0.7730118 0 -0.9569401 0.2902857 0 0.9951847 0.09801739 0 0.7730107 0.6343929 0 0.2902866 0.9569397 0 -0.290284 0.9569406 0 -0.7730106 0.6343931 0 -0.9951846 0.09801769 0 0.9569404 0.2902845 0 0.6343924 0.7730112 0 0.09801447 0.995185 0 -0.4713948 0.8819223 0 -0.8819207 0.4713976 0 0.8819215 0.4713962 0 0.4713971 0.881921 0 -0.09801518 0.995185 0 -0.6343916 0.7730119 0 -0.9569401 0.2902857 0 0.9951848 0.09801739 0 0.7730107 0.6343929 0 0.2902866 0.9569398 0 -0.290284 0.9569405 0 -0.7730106 0.6343931 0 -0.9951847 0.09801769 0 0.9569404 0.2902845 5.1325e-7 0.6343924 0.7730112 3.40253e-7 0.09801447 0.995185 0 -0.4713947 0.8819223 -2.5283e-7 -0.8819208 0.4713977 -4.73013e-7 0.8819216 0.4713963 4.73014e-7 0.4713972 0.881921 2.52831e-7 -0.09801518 0.9951849 0 -0.6343916 0.7730119 -3.40252e-7 -0.9569401 0.2902857 -5.13249e-7 0.9951847 0.09801739 5.33762e-7 0.7730107 0.6343929 4.146e-7 0.2902866 0.9569398 1.51801e-7 -0.290284 0.9569406 -1.55692e-7 -0.7730106 0.6343931 -4.146e-7 -0.9951847 0.09801769 -5.33762e-7 -0.9400657 0.09258824 0.3281828 0.9535354 0.2892519 0.08428204 0.6321352 0.7702608 0.08428204 0.09766572 0.9916441 0.08428233 -0.4697175 0.8787844 0.08428299 -0.8787828 0.4697204 0.08428281 0.8787836 0.4697189 0.08428204 0.4697199 0.8787831 0.08428227 -0.09766644 0.9916439 0.08428269 -0.6321344 0.7702614 0.08428263 -0.9535351 0.2892528 0.08428281 0.9916438 0.09766829 0.0842821 0.7702603 0.6321356 0.08428245 0.2892537 0.9535348 0.08428251 -0.2892512 0.9535357 0.08428245 -0.7702602 0.6321359 0.08428251 -0.9916437 0.09766894 0.08428287 -0.7077171 0.5808108 0.4022378 0.9039396 0.2742071 0.3281823 0.5992588 0.7301954 0.3281825 0.09258782 0.9400658 0.3281825 -0.4452888 0.8330752 0.3281822 -0.8330754 0.4452883 0.3281829 0.8330758 0.4452876 0.3281822 0.4452871 0.8330761 0.3281823 -0.09258848 0.9400658 0.3281826 -0.5992535 0.7301994 0.328183 -0.9039392 0.274208 0.3281828 0.9400659 0.0925883 0.3281822 0.7301958 0.5992584 0.3281822 0.2742075 0.9039394 0.3281825 -0.2742048 0.9039403 0.3281823 -0.7301961 0.5992575 0.3281829 -0.2489065 0.8206196 0.5144209 -0.9111266 0.08973956 0.4022379 0.876112 0.265766 0.4022392 0.5808109 0.7077167 0.4022386 0.08973425 0.9111267 0.4022386 -0.431581 0.8074294 0.4022383 -0.8074312 0.4315778 0.4022382 0.8074305 0.4315782 0.4022392 0.4315809 0.8074291 0.4022387 -0.08973497 0.911127 0.4022378 -0.580815 0.7077132 0.4022386 -0.8761119 0.2657675 0.4022381 0.9111261 0.08973819 0.4022394 0.7077172 0.58081 0.402239 0.2657685 0.8761116 0.4022381 -0.2657608 0.8761141 0.4022379 -0.1820766 0.6002884 0.7787823 -0.6628986 0.5440006 0.5144208 -0.8534101 0.08405488 0.5144182 0.8206085 0.2489294 0.5144279 0.544007 0.6628885 0.5144272 0.08407765 0.8534055 0.5144221 -0.4042597 0.7562692 0.5144228 -0.7562787 0.4042482 0.5144181 0.7562742 0.4042438 0.5144281 0.404242 0.7562767 0.5144258 -0.08407813 0.8534038 0.5144248 -0.5439971 0.6629041 0.5144176 -0.8206136 0.2489323 0.5144181 0.8534044 0.08405244 0.5144281 0.6628872 0.544009 0.5144267 0.2489259 0.8206108 0.5144258 0 0 0 0 0 0 0.6002833 0.1820943 0.7787822 0 0 0 0.06150335 0.6242718 0.7787825 0 0 0 -0.553222 0.2957097 0.778782 0 0 0 0.2957069 0.5532237 0.7787818 0 0.6328327 0.7742885 -0.3979362 0.4849173 0.7787824 0 0 0 0.6242742 0.06148523 0.778782 0.4849084 0.3979479 0.7787821 0 0.6328327 0.7742885 0.9569404 0.2902845 0 0.6343924 0.7730112 0 0.09801447 0.995185 0 -0.4713947 0.8819223 0 -0.8819208 0.4713977 0 0.8819215 0.4713963 0 0.4713972 0.8819211 0 -0.09801518 0.995185 0 -0.6343916 0.7730118 0 -0.9569401 0.2902857 0 0.9951848 0.09801739 0 0.7730107 0.6343929 0 0.2902866 0.9569398 0 -0.290284 0.9569405 0 -0.7730106 0.6343931 0 -0.9951848 0.09801769 0 -0.09801518 0.995185 0 0.7730107 0.6343929 0 -0.8819207 0.4713977 0 0.9951847 0.09801739 0 -0.4713948 0.8819223 0 0.8819215 0.4713962 0 0.4713971 0.8819211 0 0.09801447 0.995185 0 0.6343924 0.7730112 0 0.9569404 0.2902845 0 -0.9951847 0.09801769 0 -0.7730106 0.6343931 0 -0.9569401 0.2902857 0 -0.290284 0.9569405 0 -0.6343916 0.7730119 0 0.2902866 0.9569398 0 0.6343932 -0.7730106 0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0.9569398 -0.2902867 0 -0.9951847 -0.09801745 -1.64266e-7 -0.7730111 -0.6343926 -1.27594e-7 -0.2902844 -0.9569404 0 0.2902812 -0.9569414 0 0.773008 -0.6343963 0 0.9951846 -0.09801781 0 -0.9569401 -0.2902857 -1.57954e-7 -0.6343916 -0.7730119 0 -0.09801435 -0.995185 0 0.4713982 -0.8819205 0 0.8819216 -0.4713962 0 -0.8819223 -0.471395 -1.45571e-7 -0.4713988 -0.8819202 0 0.09801512 -0.995185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9951847 -0.09801721 0 0.9569406 -0.2902841 0 0.8819213 -0.4713966 0 0.7730096 -0.6343944 0 0.6343935 -0.7730102 0 0.4713959 -0.8819218 0 0.2902865 -0.9569398 0 0.09801506 -0.9951849 0 -0.09801506 -0.9951849 0 -0.2902867 -0.9569398 0 -0.471396 -0.8819217 0 -0.6343953 -0.7730088 0 -0.773011 -0.6343926 0 -0.8819207 -0.4713978 0 -0.9569407 -0.2902835 0 -0.995185 -0.09801483 0 0.4685212 -0.876541 -0.1102896 0.6343938 -0.7730101 0 0.6305236 -0.7682944 -0.1102893 0.7682939 -0.6305243 -0.1102893 0.8765412 -0.4685208 -0.1102893 0.9511027 -0.2885132 -0.1102892 0.9891136 -0.09741926 -0.1102893 -0.9891139 -0.09741687 -0.1102893 -0.9511027 -0.288513 -0.1102892 -0.8765412 -0.4685209 -0.110289 -0.7682953 -0.6305224 -0.1102893 -0.6305251 -0.768293 -0.1102898 -0.4685217 -0.8765408 -0.1102889 -0.2885157 -0.9511019 -0.1102892 -0.09741652 -0.9891139 -0.1102892 0.09741711 -0.9891139 -0.110289 0.2885132 -0.9511027 -0.1102892 0.09801441 -0.995185 0 0.9569404 -0.2902842 0 -0.7730123 -0.6343911 0 -0.2902865 -0.9569398 0 0.290284 -0.9569405 0 0.7730098 -0.6343942 0 -0.9569406 -0.2902839 0 -0.6343921 -0.7730115 0 -0.09801441 -0.995185 0 0.4713969 -0.8819211 0 0.8819217 -0.4713959 0 -0.8819213 -0.4713967 0 -0.4713973 -0.8819209 0 0.09801441 -0.995185 0 -0.4713973 -0.8819209 -2.02265e-7 0.6343938 -0.7730101 0 0.9569405 -0.2902842 0 -0.7730123 -0.6343911 0 -0.2902865 -0.9569399 0 0.2902841 -0.9569405 0 0.7730097 -0.6343941 0 -0.9569406 -0.2902839 0 -0.6343921 -0.7730115 0 -0.09801441 -0.995185 0 0.4713968 -0.8819211 0 0.8819217 -0.4713959 0 -0.8819212 -0.4713967 0 -0.4713974 -0.8819209 0 -0.8787833 -0.4697194 0.08428275 0.09801441 -0.9951849 0 0.6343937 -0.7730101 2.72203e-7 0.9569405 -0.2902842 4.106e-7 -0.7730122 -0.6343912 -3.31681e-7 -0.2902865 -0.9569399 -1.24555e-7 0.2902841 -0.9569405 1.24554e-7 0.7730097 -0.6343941 3.3168e-7 -0.9569406 -0.2902839 -4.106e-7 -0.634392 -0.7730115 -2.72202e-7 -0.09801441 -0.9951849 0 0.4713969 -0.8819212 2.02265e-7 0.8819217 -0.4713959 3.78411e-7 -0.8819213 -0.4713968 -3.78411e-7 -0.4697202 -0.878783 0.08428239 0.09766566 -0.9916441 0.08428192 0.6321365 -0.7702596 0.08428227 0.9535354 -0.2892519 0.08428204 -0.991644 -0.09766584 0.08428293 -0.7702618 -0.6321339 0.08428269 -0.2892537 -0.9535349 0.08428257 0.2892513 -0.9535356 0.08428251 0.7702593 -0.6321369 0.08428239 0.9916439 -0.09766799 0.08428204 -0.9535356 -0.289251 0.08428287 -0.6321349 -0.7702611 0.08428305 -0.09766566 -0.991644 0.08428269 0.4697196 -0.8787832 0.08428221 0.8787838 -0.4697186 0.08428215 -0.8330754 -0.445288 0.3281828 -0.4452872 -0.8330759 0.3281828 0.09259039 -0.9400654 0.3281828 0.5992588 -0.7301955 0.3281822 0.9039396 -0.2742072 0.3281821 -0.940066 -0.09258556 0.3281829 -0.7301995 -0.5992534 0.3281832 -0.2742075 -0.9039394 0.3281826 0.2742059 -0.90394 0.3281825 0.7301976 -0.5992563 0.3281817 0.9400659 -0.092588 0.3281821 -0.90394 -0.2742055 0.3281829 -0.5992587 -0.7301954 0.3281825 -0.09259039 -0.9400655 0.3281828 0.445289 -0.8330749 0.3281825 0.8330757 -0.4452881 0.3281822 -0.8074318 -0.4315761 0.4022389 -0.4315814 -0.8074291 0.4022386 0.08973401 -0.9111267 0.4022386 0.5808101 -0.7077169 0.402239 0.8761122 -0.2657648 0.4022395 -0.9111267 -0.0897358 0.402238 -0.7077149 -0.5808137 0.4022377 -0.2657648 -0.8761126 0.4022382 0.2657683 -0.8761118 0.4022381 0.707717 -0.5808098 0.4022393 0.9111261 -0.08973777 0.4022392 -0.8761118 -0.2657684 0.402238 -0.5808154 -0.7077124 0.4022395 -0.0897423 -0.9111258 0.4022388 0.4315811 -0.8074291 0.4022386 0.8074293 -0.4315805 0.4022392 -0.7562837 -0.4042379 0.5144187 -0.4042437 -0.7562788 0.5144215 0.08405584 -0.8534065 0.5144239 0.5440067 -0.6628889 0.5144271 0.8206106 -0.248923 0.5144274 -0.8534103 -0.08405041 0.5144184 -0.6628912 -0.5440106 0.5144199 -0.2489268 -0.8206128 0.5144219 0.2489256 -0.8206109 0.5144257 0.6628868 -0.5440095 0.5144267 0.8534042 -0.08405363 0.5144283 -0.8206133 -0.2489322 0.5144187 -0.5440099 -0.6628926 0.5144187 -0.08405584 -0.8534072 0.5144228 0.4042418 -0.7562769 0.5144257 0.7562739 -0.4042444 0.5144281 0 0 0 0 0 0 0.06148767 -0.6242743 0.7787817 0 0 0 0.6002849 -0.18209 0.7787819 0 0 0 0 0 0 -0.1820916 -0.6002846 0.7787818 0 -0.6368815 0.7709618 0.4849084 -0.3979479 0.778782 0 0 0 -0.6002835 -0.1820949 0.7787819 -0.3979462 -0.4849095 0.7787821 0 -0.6 0.8 0.2957068 -0.5532238 0.7787817 0 0 0 0.09801441 -0.995185 0 0.6343938 -0.7730101 0 0.9569405 -0.2902842 0 -0.7730123 -0.6343911 0 -0.2902865 -0.9569398 0 0.290284 -0.9569405 0 0.7730097 -0.6343941 0 -0.9569406 -0.2902839 0 -0.6343922 -0.7730115 0 -0.09801441 -0.995185 0 0.4713969 -0.8819211 0 0.8819217 -0.4713959 0 -0.8819213 -0.4713967 0 -0.4713973 -0.8819209 0 0.8819217 -0.4713959 0 -0.4713973 -0.8819209 0 0.4713969 -0.8819211 0 -0.8819212 -0.4713967 0 -0.09801441 -0.995185 0 0.7730097 -0.6343942 0 -0.6343922 -0.7730115 0 0.290284 -0.9569405 0 0.9569405 -0.2902842 0 -0.2902865 -0.9569398 0 -0.9569405 -0.2902839 0 0.6343938 -0.7730101 0 0.09801441 -0.995185 0 -0.7730122 -0.6343911 0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0.9569407 0.2902837 0 0.6343956 0.7730087 0 0.09801125 0.9951853 0 -0.471396 0.8819216 0 -0.8819212 0.4713969 0 0.8819214 0.4713966 0 0.4713962 0.8819215 0 -0.09801125 0.9951853 0 -0.6343935 0.7730102 0 -0.9569405 0.2902839 0 0.995185 0.09801524 0 0.7730112 0.6343923 0 0.2902873 0.9569396 0 -0.2902871 0.9569396 0 -0.7730098 0.6343941 0 -0.9951847 0.09801709 0 -0.9951849 -0.09801524 0 -0.9951849 -0.09801524 0 -0.9951849 -0.09801524 -4.27009e-7 -0.9951848 -0.09801524 0 -0.995185 -0.09801524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0.822125 -0.5446609 0.1656953 0 0 1 -0.8336485 0.5522954 -4.59566e-7 -0.5522968 -0.8336476 -3.51802e-7 0.5522958 0.8336483 1.21624e-7 0.8336488 -0.5522952 4.95408e-7 -0.8221236 0.5446637 0.1656937 -0.5522962 -0.833648 -1.21624e-7 0.5324335 0.8036646 0.2657774 0 0 -1 -0.5522933 -0.8336499 -1.56019e-7 0.5522963 0.833648 1.56021e-7 0 0 1 0.5324298 0.8036672 0.2657777 -0.5522933 -0.8336499 8.56152e-7 -0.8221337 0.5446667 -0.1656326 0.5324466 0.8036875 -0.2656822 -0.5522962 -0.833648 -2.34444e-7 0.5324472 0.8036871 -0.2656818 0 0 -1 6.18787e-6 -4.09948e-6 -1 0.8221336 -0.5446671 -0.1656328 -0.5522955 -0.8336485 0 0 0 -1 -0.8221251 0.5446614 0.1656933 0 0 1 0.8336483 -0.5522955 4.85588e-7 0.5522917 0.833651 3.51798e-7 -0.5522928 -0.8336502 -2.01808e-7 -0.8336488 0.5522952 -4.36489e-7 0.8221251 -0.5446608 0.165695 0.5522935 0.8336497 1.61716e-7 -0.5324276 -0.8036683 0.2657782 0 0 -1 0.5522961 0.833648 1.73111e-7 -0.5522993 -0.8336459 -1.67416e-7 0 0 1 -0.5324327 -0.8036654 0.2657769 0.5522961 0.833648 3.12681e-7 0.8221336 -0.5446675 -0.1656321 -0.5324438 -0.8036895 -0.2656819 0.5523002 0.8336452 1.88438e-6 -0.5324474 -0.8036874 -0.265681 0 0 -1 0 0 -1 -0.8221338 0.5446665 -0.1656335 0.5522961 0.8336482 6.92097e-7 0 0 -1 0.544662 0.8221244 0.1656946 0 0 1 -0.5522943 -0.8336492 -1.56019e-7 0.8336485 -0.5522955 5.31017e-7 -0.8336476 0.5522967 -4.59618e-7 0.5522947 0.833649 1.95905e-7 -0.5446628 -0.8221243 0.165693 0.8336486 -0.5522953 4.59618e-7 -0.8036664 0.5324311 0.2657771 0 2.58635e-6 -1 0.8336486 -0.5522952 4.59685e-7 -0.83365 0.5522933 -4.59619e-7 0 0 1 -0.8036674 0.5324299 0.2657762 0.8336487 -0.5522953 0 -0.544666 -0.8221344 -0.1656327 -0.8036868 0.5324475 -0.2656827 0.833649 -0.5522947 7.0775e-7 -0.8036882 0.5324456 -0.2656825 0 0 -1 4.0995e-6 6.18786e-6 -1 0.5446662 0.8221341 -0.1656329 0.8336494 -0.552294 1.86048e-7 0 0 -1 -0.5446619 -0.8221246 0.1656938 0 0 1 0.552295 0.8336487 1.56135e-7 -0.8336471 0.5522974 -5.31016e-7 0.8336478 -0.5522964 4.25222e-7 -0.552294 -0.8336495 -1.47689e-7 0.5446594 0.822126 0.1656954 -0.8336484 0.5522956 -3.99425e-7 0.8036668 -0.5324305 0.2657769 0 0 -1 -0.833648 0.552296 -3.85236e-7 0.8336481 -0.5522959 4.25222e-7 0 0 1 0.8036656 -0.5324324 0.2657768 -0.8336482 0.5522961 -4.83912e-7 0.5446678 0.8221333 -0.1656318 0.8036871 -0.5324472 -0.2656823 -0.8336471 0.5522975 2.30029e-7 0.8036867 -0.5324476 -0.2656825 0 0 -1 -2.04973e-6 -3.09393e-6 -1 -0.5446655 -0.8221345 -0.1656333 -0.8336479 0.5522964 -2.307e-7 -0.8314344 0.5508183 -0.07291132 0.8314251 -0.5508328 -0.07290774 0.5522999 0.8336456 -5.37098e-7 0.1229483 0.1855822 0.9749066 0.3335623 0.50348 -0.797022 -0.5522952 -0.8336487 0 -0.8313313 0.555507 0.0173285 0.8332724 -0.5520421 0.0301119 0.552301 0.8336447 -1.22584e-6 -0.5523024 -0.8336439 4.72273e-7 0.8314346 -0.5508184 -0.07290846 -0.831425 0.5508326 -0.07291018 -0.5522953 -0.8336486 5.58199e-7 -0.1229459 -0.1855838 0.9749066 -0.3335567 -0.5034836 -0.7970221 0.5522959 0.8336482 1.46498e-7 0.8313313 -0.555507 0.01732975 -0.8332725 0.5520421 0.03011095 -0.5522984 -0.8336464 0 0.5522927 0.8336502 2.49112e-7 -0.5508185 -0.8314346 -0.07290905 0.5508327 0.8314251 -0.07290887 -0.8336479 0.5522965 -5.14081e-7 -0.1855821 0.1229486 0.9749066 -0.5034827 0.3335589 -0.7970218 0.8336482 -0.5522961 2.49225e-7 -0.5555069 -0.8313313 0.01732915 0.5520421 0.8332723 0.03011125 -0.8336492 0.5522944 -8.09925e-7 0.8336469 -0.5522977 1.98944e-7 0.5508185 0.8314344 -0.07290911 -0.5508326 -0.8314251 -0.07290852 0.8336479 -0.5522964 2.32104e-7 0.1855819 -0.1229488 0.9749066 0.5034826 -0.3335578 -0.7970222 -0.8336478 0.5522964 -5.39542e-7 0.555507 0.8313313 0.01732927 -0.5520421 -0.8332725 0.03011137 0.8336553 -0.5522851 3.44399e-6 -0.8336469 0.5522977 -5.77803e-7 -0.8326988 0.5528218 0.03163433 0.8337629 -0.5512157 0.03163576 -0.03357344 -0.05067646 -0.9981507 0.5522949 0.8336489 4.05856e-7 -0.5522955 -0.8336483 -4.4579e-7 0 0 1 -0.8342937 0.5504118 -0.03163528 0.8321655 -0.5536241 -0.03163474 0.5522957 0.8336483 1.90595e-7 -0.5522944 -0.8336491 -6.20054e-7 0.5528215 0.832699 0.03163534 -0.5512156 -0.8337629 0.03163641 -0.05067616 0.03357309 -0.9981507 0.8336541 -0.552287 7.74808e-7 -0.833644 0.552302 -5.00219e-7 -3.07496e-7 2.03717e-7 1 0.5504117 0.8342939 -0.03163653 -0.553624 -0.8321657 -0.03163528 0.8336492 -0.5522944 0 -0.8336541 0.552287 -1.99322e-6 -0.5528218 -0.8326988 0.03163498 0.5512155 0.833763 0.03163552 0.05067682 -0.03357261 -0.9981507 -0.83365 0.552293 -2.45973e-7 0.8336535 -0.5522879 9.35629e-7 -3.07496e-7 2.03717e-7 1 -0.5504118 -0.8342938 -0.03163528 0.553624 0.8321657 -0.03163516 -0.8336492 0.5522944 -2.62067e-7 0.8336557 -0.5522845 3.3638e-7 -0.5528218 -0.8326988 0.03163468 0.5512157 0.8337628 0.03163462 0.05067652 -0.0335735 -0.9981507 -0.8336454 0.5523 -7.75845e-7 0.8336467 -0.5522981 4.47089e-7 -1.75712e-7 0 1 -0.5504118 -0.8342938 -0.03163522 0.5536243 0.8321657 -0.03163403 -0.8336491 0.5522944 6.86932e-7 0.8336425 -0.5523043 1.37569e-6 0.5528216 0.8326989 0.03163564 -0.5512155 -0.833763 0.03163522 -0.05067628 0.03357219 -0.9981507 0.83365 -0.552293 2.44948e-7 -0.8336501 0.552293 -6.946e-7 -1.75712e-7 0 1 0.5504117 0.8342939 -0.03163528 -0.553624 -0.8321657 -0.0316354 0.8336492 -0.5522944 2.60082e-7 -0.8336426 0.5523043 6.12533e-7 0.8326987 -0.5528219 0.03163439 -0.8337628 0.5512158 0.03163576 0.03357279 0.05067658 -0.9981507 -0.5522943 -0.8336493 -1.35285e-6 0.5522955 0.8336483 5.68901e-7 0 0 1 0.8342937 -0.5504118 -0.03163462 -0.8321655 0.5536242 -0.03163534 -0.5522938 -0.8336495 -2.12433e-7 0.5522994 0.8336459 3.86596e-7 0.8326988 -0.5528218 0.03163534 -0.8337628 0.5512157 0.03163528 0.03357326 0.05067634 -0.9981507 -0.5522943 -0.8336493 0 0.5522956 0.8336484 -1.94385e-7 0 0 1 0.8342937 -0.5504118 -0.03163492 -0.8321657 0.553624 -0.03163534 -0.5522944 -0.8336491 -1.38975e-7 0.5522994 0.8336459 -1.13468e-6 -0.8326988 0.5528218 0.03163474 0.8337629 -0.5512157 0.03163576 -0.03357326 -0.05067616 -0.9981508 0.552295 0.8336489 3.7716e-7 -0.5522943 -0.8336492 -3.84882e-7 0 0 1 -0.8342937 0.5504118 -0.03163558 0.8321655 -0.5536241 -0.03163462 0.5522957 0.8336483 2.89862e-7 -0.5522944 -0.8336492 -3.6651e-7 0.9951847 -0.09801703 0 0.9951848 -0.09801709 0 0.9951847 -0.09801703 5.33762e-7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9951848 -0.09801703 0 0.9951848 -0.09801703 0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0.09801506 0.995185 0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0.2902867 0.9569398 0 0.471396 0.8819216 0 0.6343937 0.7730101 0 0.7730107 0.634393 0 0.8819216 0.471396 0 0.9569404 0.2902849 0 0.9951846 0.09801751 0 -0.9951846 0.09801751 0 -0.9569399 0.2902861 0 -0.8819209 0.4713975 0 -0.7730092 0.6343947 0 -0.634393 0.7730106 0 -0.4713956 0.881922 0 -0.09801584 0.9951849 0 -0.2902838 0.9569407 0 0 0 -1 0.9891136 0.09741944 -0.1102891 0.9511026 0.2885136 -0.1102891 0.8765415 0.4685204 -0.1102892 0.768295 0.6305229 -0.1102892 0.6305223 0.7682955 -0.1102892 0.4685214 0.876541 -0.1102889 0.2885158 0.9511019 -0.1102892 -0.09741789 0.9891138 -0.110289 -0.288513 0.9511028 -0.1102892 -0.4685198 0.8765418 -0.1102891 -0.6305215 0.768296 -0.1102893 -0.7682949 0.6305231 -0.1102896 -0.8765406 0.468522 -0.1102892 -0.9511021 0.2885152 -0.1102892 -0.9891136 0.09741955 -0.1102892 0.09741652 0.9891139 -0.1102891 0.9569404 0.2902845 0 0.6343924 0.7730112 0 0.09801447 0.995185 0 -0.4713948 0.8819223 0 -0.8819208 0.4713977 0 0.8819215 0.4713962 0 0.4713972 0.8819211 0 -0.09801518 0.9951849 0 -0.6343916 0.7730118 0 -0.9569401 0.2902857 0 0.9951847 0.09801739 0 0.7730107 0.6343929 0 0.2902865 0.9569398 0 -0.290284 0.9569405 0 -0.7730106 0.6343931 0 -0.9951846 0.09801769 0 0.9569404 0.2902845 0 0.6343924 0.7730112 0 0.09801447 0.995185 0 -0.4713947 0.8819224 0 -0.8819207 0.4713976 0 0.8819215 0.4713962 0 0.4713972 0.8819211 0 -0.09801518 0.9951849 0 -0.6343916 0.7730118 0 -0.9569401 0.2902857 0 0.9951848 0.09801739 0 0.7730107 0.6343929 0 0.2902866 0.9569398 0 -0.290284 0.9569406 0 -0.7730106 0.6343931 0 -0.9951847 0.09801769 0 0.9569404 0.2902845 5.12967e-7 0.6343924 0.7730112 3.36083e-7 0.09801447 0.995185 0 -0.4713947 0.8819223 -2.52062e-7 -0.8819208 0.4713977 -4.68746e-7 0.8819216 0.4713963 4.73168e-7 0.4713972 0.881921 2.52061e-7 -0.09801518 0.9951849 0 -0.6343916 0.7730119 -3.36082e-7 -0.9569401 0.2902857 -5.12967e-7 0.9951847 0.09801739 5.33762e-7 0.7730107 0.6343929 4.1568e-7 0.2902866 0.9569398 1.59197e-7 -0.290284 0.9569405 -1.54775e-7 -0.7730106 0.6343931 -4.1568e-7 -0.9951847 0.09801769 -5.33762e-7 -0.9400656 0.09258854 0.3281827 0.9535356 0.2892516 0.08428204 0.6321379 0.7702586 0.08428257 0.09766775 0.9916438 0.08428263 -0.4697202 0.8787829 0.08428251 -0.8787834 0.4697194 0.08428263 0.8787837 0.4697189 0.08428204 0.4697185 0.8787839 0.08428198 -0.09766846 0.9916438 0.08428233 -0.6321324 0.7702628 0.08428299 -0.9535351 0.2892528 0.08428281 0.9916437 0.09766858 0.0842821 0.7702586 0.6321379 0.08428198 0.2892523 0.9535353 0.08428233 -0.2892494 0.9535361 0.08428275 -0.7702595 0.6321367 0.08428269 -0.9916437 0.09766858 0.08428281 -0.7077138 0.5808145 0.4022384 0.9039394 0.2742079 0.3281822 0.5992568 0.7301971 0.3281822 0.09258866 0.9400658 0.3281826 -0.4452865 0.8330763 0.3281825 -0.8330754 0.445288 0.3281829 0.8330764 0.4452863 0.3281824 0.44529 0.8330743 0.3281828 -0.09258931 0.9400657 0.3281826 -0.5992588 0.7301955 0.3281822 -0.9039389 0.2742089 0.3281829 0.9400659 0.09258812 0.3281821 0.7301954 0.5992588 0.3281823 0.2742061 0.9039399 0.3281823 -0.2742018 0.903941 0.3281828 -0.7301953 0.5992583 0.3281831 -0.248925 0.8206129 0.5144227 -0.9111266 0.08973801 0.402238 0.8761118 0.2657664 0.4022393 0.5808089 0.7077181 0.4022389 0.08973848 0.9111264 0.4022381 -0.4315786 0.8074308 0.402238 -0.8074299 0.4315804 0.4022378 0.8074303 0.4315786 0.4022391 0.4315819 0.8074287 0.4022386 -0.08973914 0.9111263 0.4022383 -0.580811 0.7077169 0.402238 -0.8761122 0.2657669 0.402238 0.911126 0.08973795 0.4022393 0.7077168 0.5808104 0.4022391 0.2657648 0.8761126 0.4022386 -0.2657605 0.8761141 0.402238 0 -0.6163083 -0.787505 -0.6628829 0.5440221 0.5144185 -0.85341 0.0840553 0.5144183 0.8206085 0.2489292 0.5144279 0.5440158 0.662882 0.5144262 0.08404958 0.8534068 0.5144246 -0.4042413 0.7562804 0.514421 -0.7562831 0.4042388 0.5144191 0.7562782 0.4042373 0.5144275 0.4042399 0.7562777 0.5144261 -0.08405035 0.853408 0.5144222 -0.5440218 0.6628814 0.5144206 -0.8206138 0.2489317 0.5144182 0.8534042 0.08405309 0.5144281 0.662882 0.5440147 0.5144273 0.2489318 0.8206092 0.5144252 -0.4849146 0.3979398 0.7787823 -0.6242738 0.06148678 0.778782 0 0 0 0.3979465 0.4849095 0.778782 0 -0.6 -0.8 -0.295719 0.5532165 0.7787823 0 0 0 0.5532224 0.2957085 0.7787821 0 0 0 -0.06150382 0.6242718 0.7787824 0 0 0 -0.600283 0.1820952 0.7787821 0 0 0 0 0 0 0.1820917 0.6002847 0.7787817 0.9569404 0.2902845 0 0.6343924 0.7730112 0 0.09801447 0.995185 0 -0.4713948 0.8819223 0 -0.8819208 0.4713977 0 0.8819215 0.4713963 0 0.4713971 0.8819211 0 -0.09801518 0.995185 0 -0.6343916 0.7730118 0 -0.9569401 0.2902857 0 0.9951848 0.09801739 0 0.7730107 0.6343929 0 0.2902866 0.9569398 0 -0.290284 0.9569405 0 -0.7730107 0.6343931 0 -0.9951848 0.09801769 0 -0.09801518 0.995185 0 0.7730107 0.6343929 0 -0.8819207 0.4713977 0 0.9951847 0.09801739 0 -0.4713948 0.8819223 0 0.8819215 0.4713962 0 0.4713971 0.8819211 0 0.09801447 0.995185 0 0.6343924 0.7730112 0 0.9569404 0.2902845 0 -0.9951847 0.09801769 0 -0.7730106 0.6343931 0 -0.9569401 0.2902857 0 -0.290284 0.9569405 0 -0.6343916 0.7730119 0 0.2902866 0.9569398 0 0.6343933 -0.7730104 0 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0.9569398 -0.2902867 0 -0.9951847 -0.09801745 -1.64266e-7 -0.7730111 -0.6343926 -1.27594e-7 -0.2902844 -0.9569404 0 0.2902813 -0.9569414 0 0.773008 -0.6343963 0 0.9951846 -0.09801781 0 -0.9569401 -0.2902857 -1.57954e-7 -0.6343918 -0.7730118 0 -0.09801435 -0.995185 0 0.4713982 -0.8819205 0 0.8819216 -0.4713962 0 -0.8819223 -0.471395 -1.45571e-7 -0.4713988 -0.8819202 0 0.09801512 -0.995185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + + + + + + + + + + 0.6745052 0.4798676 0.8258413 0.4798677 0.8258413 0.4806725 0.6745052 0.4806725 0.8258413 0.4806725 0.8258413 0.4830562 0.6745052 0.4830562 0.8258413 0.4830562 0.8258413 0.4869271 0.6745052 0.486927 0.8258413 0.4869271 0.8258413 0.4921364 0.6745052 0.4921364 0.8258413 0.4921364 0.8258413 0.498484 0.6745052 0.4984839 0.8258413 0.498484 0.8258413 0.5057259 0.6745052 0.5057258 0.8258413 0.5057259 0.8258413 0.5135837 0.6745052 0.5135837 0.8258413 0.5135837 0.8258413 0.5217556 0.6745052 0.5217556 0.8258413 0.5217556 0.8258413 0.5299276 0.6745052 0.5299276 0.8258413 0.5299276 0.8258413 0.5377855 0.6745052 0.5377855 0.8258413 0.5377855 0.8258413 0.5450274 0.6745052 0.5450274 0.8258413 0.5450274 0.8258413 0.551375 0.6745052 0.5513749 0.8258413 0.551375 0.8258413 0.5565842 0.6745052 0.5565842 0.8258413 0.5565842 0.8258411 0.5604551 0.6745052 0.560455 0.8258411 0.5604551 0.8258411 0.5628388 0.6745052 0.5628387 0.8258411 0.5628388 0.8258411 0.5636436 0.8258413 0.5057259 0.8258413 0.498484 0.8641428 0.4957171 0.1386653 0.08363986 0.1386653 0.07423043 0.1946563 0.07423043 0.8258413 0.498484 0.8258413 0.4921364 0.8641428 0.4886149 0.8258413 0.4921364 0.8258413 0.4869271 0.8641428 0.4827862 0.8258413 0.4830562 0.8641428 0.4784551 0.8641428 0.4827862 0.8258413 0.4806725 0.8641428 0.4757881 0.8641428 0.4784551 0.8258413 0.4798677 0.8641428 0.4748876 0.8641428 0.4757881 0.8258411 0.5628388 0.8641428 0.5677233 0.8641428 0.5686239 0.8258411 0.5628388 0.8258411 0.5604551 0.8641428 0.5650562 0.8258411 0.5604551 0.8258413 0.5565842 0.8641428 0.5607252 0.8258413 0.551375 0.8641428 0.5548965 0.8641428 0.5607252 0.8258413 0.5450274 0.8641428 0.5477943 0.8641428 0.5548965 0.8258413 0.5450274 0.8258413 0.5377855 0.8641428 0.5396913 0.8258413 0.5299276 0.8641428 0.5308993 0.8641428 0.5396913 0.8258413 0.5299276 0.8258413 0.5217556 0.8641428 0.5217557 0.8258413 0.5135837 0.8641428 0.5126122 0.8641428 0.5217557 0.8258413 0.5135837 0.8258413 0.5057259 0.8641428 0.50382 0.5471681 0.1181374 0.5471681 0.1060235 0.8556429 0.1060235 0.1386653 0.06077015 0.1386653 0.05723667 0.1946563 0.05723667 0.1386653 0.162044 0.1946562 0.1620441 0.1946562 0.1697661 0.1386653 0.1418994 0.1386653 0.1302511 0.1946562 0.1302511 0.1386653 0.1060234 0.1386653 0.09437495 0.1946563 0.09437507 0.1386653 0.07423043 0.1386653 0.06650829 0.1946563 0.06650829 0.1386651 0.1790377 0.1386651 0.1755042 0.1946562 0.1755043 0.1386653 0.162044 0.1386653 0.1526346 0.1946562 0.1526346 0.1386653 0.1302511 0.1386653 0.1181373 0.1946563 0.1181373 0.1386653 0.09437495 0.1386653 0.08363986 0.1946563 0.08363991 0.1386653 0.06650829 0.1386653 0.06077015 0.1946563 0.06077021 0.1386651 0.1755042 0.1386651 0.1697661 0.1946562 0.1697661 0.1386653 0.1526346 0.1386653 0.1418994 0.1946562 0.1418994 0.1386653 0.1181373 0.1386653 0.1060234 0.1946563 0.1060234 0.8556429 0.1526347 0.8556429 0.1418995 0.9168558 0.1418995 0.5471681 0.08363991 0.5471681 0.07423049 0.8556429 0.07423049 0.5471681 0.06077027 0.5471681 0.05723679 0.8556429 0.05723685 0.5471681 0.1697662 0.5471681 0.1620441 0.8556429 0.1620442 0.5471681 0.1418995 0.5471681 0.1302512 0.8556429 0.1302512 0.5471681 0.1060235 0.5471681 0.09437507 0.8556429 0.09437513 0.5471681 0.07423049 0.5471681 0.06650841 0.8556429 0.06650841 0.5471681 0.1790378 0.5471681 0.1755043 0.8556429 0.1755043 0.5471681 0.1620441 0.5471681 0.1526347 0.8556429 0.1526347 0.5471681 0.1302512 0.5471681 0.1181374 0.8556429 0.1181374 0.5471681 0.09437507 0.5471681 0.08363991 0.8556429 0.08364003 0.5471681 0.06650841 0.5471681 0.06077027 0.8556429 0.06077033 0.5471681 0.1755043 0.5471681 0.1697662 0.8556429 0.1697663 0.5471681 0.1526347 0.5471681 0.1418995 0.8556429 0.1418995 0.9168558 0.1697663 0.9813775 0.1644492 0.9813775 0.1695963 0.8556429 0.1181374 0.8556429 0.1060235 0.9168558 0.1060236 0.8556429 0.08364003 0.8556429 0.07423049 0.9168558 0.07423061 0.8556429 0.06077033 0.8556429 0.05723685 0.9168558 0.05723685 0.8556429 0.1697663 0.8556429 0.1620442 0.9168558 0.1620442 0.8556429 0.1418995 0.8556429 0.1302512 0.9168558 0.1302513 0.8556429 0.1060235 0.8556429 0.09437513 0.9168558 0.09437525 0.8556429 0.07423049 0.8556429 0.06650841 0.9168558 0.06650847 0.8556429 0.1790378 0.8556429 0.1755043 0.9168558 0.1755045 0.8556429 0.1620442 0.8556429 0.1526347 0.9168558 0.1526347 0.8556429 0.1302512 0.8556429 0.1181374 0.9168558 0.1181374 0.8556429 0.09437513 0.8556429 0.08364003 0.9168558 0.08364003 0.8556429 0.06650841 0.8556429 0.06077033 0.9168558 0.06077039 0.8556429 0.1755043 0.8556429 0.1697663 0.9168558 0.1697663 0.9168558 0.1418995 0.9813775 0.1394523 0.9813775 0.149082 0.9168558 0.1060236 0.9813775 0.1072711 0.9813775 0.1181374 0.9168558 0.07423061 0.9813775 0.07875239 0.9813775 0.08719283 0.9168558 0.06077039 0.9168558 0.05723685 0.9813775 0.0635088 0.9168558 0.180231 0.9168558 0.1790379 0.9813775 0.1727659 0.9168558 0.1620442 0.9813775 0.1575223 0.9813775 0.1644492 0.9168558 0.1302513 0.9813775 0.1290037 0.9813775 0.1394523 0.9168558 0.09437525 0.9813775 0.09682232 0.9813775 0.1072711 0.9168558 0.06650847 0.9813775 0.07182544 0.9813775 0.07875239 0.9168558 0.05723685 0.9168558 0.05604374 0.9813775 0.06243854 0.9168558 0.1755045 0.9813775 0.1695963 0.9813775 0.1727659 0.9168558 0.1526347 0.9813775 0.149082 0.9813775 0.1575223 0.9168558 0.1181374 0.9813775 0.1181374 0.9813775 0.1290037 0.9168558 0.08364003 0.9813775 0.08719283 0.9813775 0.09682232 0.9168558 0.06077039 0.9813775 0.06667834 0.9813775 0.07182544 0.9813775 0.1644492 1.032664 0.1470894 1.032664 0.1503072 0.9813775 0.1394523 1.032664 0.1314626 1.032664 0.1374825 0.9813775 0.1072711 1.032664 0.1113442 1.032664 0.1181374 0.9813775 0.07875239 1.032664 0.09351563 1.032664 0.09879219 0.9813775 0.0635088 1.032664 0.0839861 1.032664 0.08596748 0.9813775 0.1738361 0.9813775 0.1727659 1.032664 0.1522886 0.9813775 0.1644492 0.9813775 0.1575223 1.032664 0.1427591 0.9813775 0.1290037 1.032664 0.1249305 1.032664 0.1314626 0.9813775 0.1072711 0.9813775 0.09682232 1.032664 0.1048122 0.9813775 0.07875239 0.9813775 0.07182544 1.032664 0.08918529 0.9813775 0.06243854 1.032664 0.08331692 1.032664 0.0839861 0.9813775 0.1727659 0.9813775 0.1695963 1.032664 0.1503072 0.9813775 0.149082 1.032664 0.1374825 1.032664 0.1427591 0.9813775 0.1181374 1.032664 0.1181374 1.032664 0.1249305 0.9813775 0.08719283 1.032664 0.09879219 1.032664 0.1048122 0.9813775 0.06667834 1.032664 0.08596748 1.032664 0.08918529 1.032664 0.1503072 1.032664 0.1470894 1.065752 0.1329262 1.032664 0.1374825 1.032664 0.1314626 1.065752 0.1249439 1.032664 0.1181374 1.032664 0.1113442 1.065752 0.1146674 1.032664 0.09879219 1.032664 0.09351563 1.065752 0.1055605 1.032664 0.0839861 1.065752 0.1006928 1.065752 0.1017049 1.032664 0.1529577 1.032664 0.1522886 1.065752 0.1355819 1.032664 0.1470894 1.032664 0.1427591 1.065752 0.1307142 1.032664 0.1249305 1.065752 0.1216074 1.065752 0.1249439 1.032664 0.1113442 1.032664 0.1048122 1.065752 0.1113308 1.032664 0.09351563 1.032664 0.08918529 1.065752 0.1033485 1.032664 0.0839861 1.032664 0.08331692 1.065752 0.100351 1.032664 0.1522886 1.032664 0.1503072 1.065752 0.1345699 1.032664 0.1427591 1.032664 0.1374825 1.065752 0.128019 1.032664 0.1249305 1.032664 0.1181374 1.065752 0.1181374 1.032664 0.1048122 1.032664 0.09879219 1.065752 0.1082558 1.032664 0.08596748 1.065752 0.1017049 1.065752 0.1033485 1.065752 0.1345699 1.065752 0.1329262 1.082295 0.1232571 1.065752 0.128019 1.065752 0.1249439 1.082295 0.1204939 1.065752 0.1181374 1.065752 0.1146674 1.082295 0.1169363 1.065752 0.1082558 1.065752 0.1055605 1.082295 0.1137836 1.065752 0.1017049 1.065752 0.1006928 1.082295 0.1120985 1.065752 0.1359238 1.065752 0.1355819 1.082295 0.1241766 1.065752 0.1329262 1.065752 0.1307142 1.082295 0.1224914 1.065752 0.1249439 1.065752 0.1216074 1.082295 0.1193388 1.065752 0.1146674 1.065752 0.1113308 1.082295 0.1157812 1.065752 0.1055605 1.065752 0.1033485 1.082295 0.1130179 1.065752 0.1006928 1.065752 0.100351 1.082295 0.1119802 1.065752 0.1355819 1.065752 0.1345699 1.082295 0.1238262 1.065752 0.1307142 1.065752 0.128019 1.082295 0.1215583 1.065752 0.1216074 1.065752 0.1181374 1.082295 0.1181375 1.065752 0.1113308 1.065752 0.1082558 1.082295 0.1147167 1.065752 0.1033485 1.065752 0.1017049 1.082295 0.1124489 1.082295 0.1238262 1.082295 0.1232571 1.086528 0.1181375 1.082295 0.1215583 1.082295 0.1204939 1.086528 0.1181375 1.082295 0.1169363 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1147167 1.082295 0.1137836 1.086528 0.1181375 1.082295 0.1120985 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1242949 1.082295 0.1241766 1.086528 0.1181375 1.082295 0.1232571 1.082295 0.1224914 1.086528 0.1181375 1.082295 0.1193388 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1169363 1.082295 0.1157812 1.086528 0.1181375 1.082295 0.1130179 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1120985 1.082295 0.1119802 1.086528 0.1181375 1.082295 0.1238262 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1215583 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1193388 1.082295 0.1181375 1.086528 0.1181375 1.082295 0.1147167 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1130179 1.082295 0.1124489 1.086528 0.1181375 0.1946563 0.1181373 0.1946563 0.1060234 0.3102057 0.1060234 0.1946563 0.08363991 0.1946563 0.07423043 0.3102057 0.07423043 0.1946563 0.06077021 0.1946563 0.05723667 0.3102057 0.05723673 0.1946562 0.1697661 0.1946562 0.1620441 0.3102057 0.1620441 0.1946562 0.1418994 0.1946562 0.1302511 0.3102057 0.1302511 0.1946563 0.1060234 0.1946563 0.09437507 0.3102057 0.09437507 0.1946563 0.07423043 0.1946563 0.06650829 0.3102057 0.06650829 0.1946562 0.1790377 0.1946562 0.1755043 0.3102057 0.1755043 0.1946562 0.1620441 0.1946562 0.1526346 0.3102057 0.1526346 0.1946562 0.1302511 0.1946563 0.1181373 0.3102057 0.1181373 0.1946563 0.09437507 0.1946563 0.08363991 0.3102057 0.08363991 0.1946563 0.06650829 0.1946563 0.06077021 0.3102057 0.06077021 0.1946562 0.1755043 0.1946562 0.1697661 0.3102057 0.1697662 0.1946562 0.1526346 0.1946562 0.1418994 0.3102057 0.1418995 0.3102057 0.06650829 0.3102057 0.06077021 0.5471681 0.06077027 0.3102057 0.1526346 0.3102057 0.1418995 0.5471681 0.1418995 0.3102057 0.09437507 0.3102057 0.08363991 0.5471681 0.08363991 0.3102057 0.1755043 0.3102057 0.1697662 0.5471681 0.1697662 0.3102057 0.1302511 0.3102057 0.1181373 0.5471681 0.1181374 0.3102057 0.07423043 0.3102057 0.06650829 0.5471681 0.06650841 0.3102057 0.1620441 0.3102057 0.1526346 0.5471681 0.1526347 0.3102057 0.1060234 0.3102057 0.09437507 0.5471681 0.09437507 0.3102057 0.06077021 0.3102057 0.05723673 0.5471681 0.05723679 0.3102057 0.1418995 0.3102057 0.1302511 0.5471681 0.1302512 0.3102057 0.1790377 0.3102057 0.1755043 0.5471681 0.1755043 0.3102057 0.08363991 0.3102057 0.07423043 0.5471681 0.07423049 0.3102057 0.1181373 0.3102057 0.1060234 0.5471681 0.1060235 0.3102057 0.1697662 0.3102057 0.1620441 0.5471681 0.1620441 0.6745052 0.5636436 0.6745052 0.5597817 0.6745052 0.559051 0.6745052 0.5628387 0.6745052 0.559051 0.6745052 0.5568872 0.6745052 0.560455 0.6745052 0.5568872 0.6745052 0.5533732 0.6745052 0.5513749 0.6745052 0.5565842 0.6745052 0.5533732 0.6745052 0.5513749 0.6745052 0.5486441 0.6745052 0.5428818 0.6745052 0.5377855 0.6745052 0.5450274 0.6745052 0.5428818 0.6745052 0.5377855 0.6745052 0.5363075 0.6745052 0.5291742 0.6745052 0.5217556 0.6745052 0.5299276 0.6745052 0.5291742 0.6745052 0.5217556 0.6745052 0.5217556 0.6745052 0.514337 0.6745052 0.5057258 0.6745052 0.5135837 0.6745052 0.514337 0.6745052 0.5057258 0.6745052 0.5072037 0.6745052 0.5006295 0.6745052 0.4984839 0.6745052 0.5006295 0.6745052 0.494867 0.6745052 0.4921364 0.6745052 0.494867 0.6745052 0.4901381 0.6745052 0.486927 0.6745052 0.4901381 0.6745052 0.486624 0.6745052 0.4830562 0.6745052 0.486624 0.6745052 0.4844601 0.6745052 0.4798676 0.6745052 0.4806725 0.6745052 0.4844601 0.6745052 0.5568872 0.6745052 0.559051 0.7345578 0.5590512 0.6745052 0.5428818 0.6745052 0.5486441 0.7345578 0.5486441 0.6745052 0.5217556 0.6745052 0.5291742 0.7345579 0.5291742 0.6745052 0.5006295 0.6745052 0.5072037 0.7345579 0.5072037 0.6745052 0.486624 0.6745052 0.4901381 0.7345579 0.4901381 0.6745052 0.5533732 0.6745052 0.5568872 0.7345578 0.5568872 0.6745052 0.5363075 0.6745052 0.5428818 0.7345578 0.5428819 0.6745052 0.514337 0.6745052 0.5217556 0.7345579 0.5217556 0.6745052 0.494867 0.6745052 0.5006295 0.7345579 0.5006295 0.6745052 0.4844601 0.6745052 0.486624 0.7345579 0.486624 0.6745052 0.559051 0.6745052 0.5597817 0.7345578 0.5597818 0.6745052 0.5486441 0.6745052 0.5533732 0.7345578 0.5533732 0.6745052 0.5291742 0.6745052 0.5363075 0.7345579 0.5363075 0.6745052 0.5072037 0.6745052 0.514337 0.7345579 0.5143371 0.6745052 0.4901381 0.6745052 0.494867 0.7345579 0.4948672 0.6745052 0.4837295 0.6745052 0.4844601 0.7345579 0.4844601 0.1386653 0.1802308 0.1386653 0.1790377 0.1946562 0.1790377 0.5471681 0.1802309 0.5471681 0.1790378 0.8556429 0.1790379 0.8556429 0.180231 0.8556429 0.1790379 0.9168558 0.1790379 0.1946562 0.1802308 0.1946562 0.1790377 0.3102057 0.1790377 0.3102057 0.1802308 0.3102057 0.1790377 0.5471681 0.1790378 0.8258413 0.4798677 0.6745052 0.4798676 0.6745052 0.4798676 0.1386651 0.1802308 0.1386651 0.1790377 0.1386651 0.1790377 0.1386651 0.1790377 0.1946562 0.1790377 0.1946562 0.1790377 0.5471681 0.1790378 0.8556429 0.1790378 0.8556429 0.1790378 0.9168558 0.1790379 0.9168558 0.180231 0.9168558 0.180231 0.8556429 0.1790378 0.9168558 0.1790379 0.9168558 0.1790379 0.1946562 0.1790377 0.3102057 0.1790377 0.3102057 0.1790377 0.3102057 0.1790377 0.5471681 0.1790378 0.5471681 0.1790378 0.6745052 0.4798676 0.6745052 0.4837295 0.6745052 0.4837295 0.6745052 0.4837295 0.7345579 0.4837295 0.7345579 0.4837295 0.6745052 0.4798676 0.8258413 0.4798677 0.8258413 0.4798677 0.1386653 0.1790377 0.1386653 0.1802308 0.1386653 0.1802308 0.1946562 0.1790377 0.1386653 0.1790377 0.1386653 0.1790377 0.8556429 0.1790379 0.5471681 0.1790378 0.5471681 0.1790378 0.9168558 0.180231 0.9168558 0.1790379 0.9168558 0.1790379 0.9168558 0.1790379 0.8556429 0.1790379 0.8556429 0.1790379 0.3102057 0.1790377 0.1946562 0.1790377 0.1946562 0.1790377 0.5471681 0.1790378 0.3102057 0.1790377 0.3102057 0.1790377 0.6745052 0.4837295 0.6745052 0.4798676 0.6745052 0.4798676 0.7345579 0.4837295 0.6745052 0.4837295 0.6745052 0.4837295 0.3164696 0.7776088 0.3164696 0.7824457 0.3164696 0.7874015 0.9481284 0.7819877 0.9481284 0.7845439 0.933149 0.7824458 0.9481284 0.787703 0.9481284 0.7902592 0.9481284 0.7874017 0.933149 0.7875204 0.3164696 0.7875202 0.3164696 0.7923572 0.933149 0.7874017 0.933149 0.7824458 0.9481284 0.7845439 0.933149 0.7825647 0.933149 0.7776089 0.3164696 0.7776088 0.3164696 0.7776088 0.933149 0.7776089 0.933149 0.7824458 0.9481284 0.787703 0.933149 0.7875204 0.933149 0.7923574 0.3164696 0.7874015 0.3164696 0.7824457 0.933149 0.7824458 0.9481284 0.7819877 0.933149 0.7776089 0.933149 0.7825647 0.3164696 0.7825645 0.3164696 0.7874015 0.3164696 0.7923572 0.3164696 0.7923572 0.3164696 0.7874015 0.933149 0.7874017 0.933149 0.7875204 0.933149 0.7825647 0.3164696 0.7825645 0.9481284 0.7819877 0.9481284 0.7848455 0.9481284 0.7874017 0.9481284 0.787703 0.9481284 0.7848455 0.933149 0.7825647 0.933149 0.7874017 0.9481284 0.7874017 0.9481284 0.7902592 0.3014845 0.7877029 0.3014845 0.7902592 0.3164696 0.7923572 0.3014845 0.7819877 0.3014845 0.7848454 0.3164696 0.7825645 0.3164696 0.7874015 0.3164696 0.7923572 0.3014845 0.7902592 0.3014845 0.7877029 0.3164696 0.7875202 0.3164696 0.7825645 0.3014845 0.7848454 0.3014845 0.7874015 0.3014845 0.7902592 0.3014845 0.7819877 0.3014845 0.7845439 0.3014845 0.7874015 0.3014845 0.7819877 0.3164696 0.7776088 0.3164696 0.7824457 0.3164696 0.7874015 0.3014845 0.7874015 0.3014845 0.7845439 0.3164696 0.8462788 0.3164696 0.8512345 0.3164696 0.8463975 0.9481284 0.8468558 0.9481284 0.8442996 0.933149 0.8463977 0.9481284 0.843998 0.9481284 0.8411403 0.9481284 0.8385843 0.933149 0.8413231 0.3164696 0.841323 0.3164696 0.8364861 0.933149 0.8414418 0.933149 0.8463977 0.9481284 0.8442996 0.933149 0.8462788 0.933149 0.8512347 0.3164696 0.8512345 0.3164696 0.8512345 0.933149 0.8512347 0.933149 0.8463977 0.9481284 0.8411403 0.933149 0.8413231 0.933149 0.8364861 0.3164696 0.8414418 0.3164696 0.8463975 0.933149 0.8463977 0.9481284 0.8468558 0.933149 0.8512347 0.933149 0.8462788 0.3164696 0.8462788 0.3164696 0.8414418 0.3164696 0.8364861 0.3164696 0.8364861 0.3164696 0.8414418 0.933149 0.8414418 0.933149 0.8413231 0.933149 0.8462788 0.3164696 0.8462788 0.9481284 0.843998 0.9481284 0.841442 0.9481284 0.8442996 0.9481284 0.8411403 0.9481284 0.843998 0.933149 0.8462788 0.933149 0.8414418 0.9481284 0.841442 0.9481284 0.8385843 0.3014845 0.8411403 0.3014845 0.8385842 0.3164696 0.8364861 0.3014845 0.8468556 0.3014845 0.843998 0.3164696 0.8462788 0.3164696 0.8414418 0.3164696 0.8364861 0.3014845 0.8385842 0.3014845 0.8411403 0.3164696 0.841323 0.3164696 0.8462788 0.3014845 0.843998 0.3014845 0.8414418 0.3014845 0.8385842 0.3014845 0.8468556 0.3014845 0.8442994 0.3014845 0.8414418 0.3014845 0.8468556 0.3164696 0.8512345 0.3164696 0.8463975 0.3164696 0.8414418 0.3014845 0.8414418 0.3014845 0.8442994 0.3164697 0.8625076 0.3164697 0.8592244 0.3164697 0.8519233 0.9481284 0.8571717 0.9481284 0.8533136 0.9331491 0.8519235 0.9481284 0.8590649 0.9481284 0.8609582 0.9481284 0.8570998 0.3164697 0.8657907 0.3164697 0.8584898 0.9331491 0.8584899 0.9331491 0.8552066 0.9331491 0.8519235 0.9481284 0.8533136 0.9331491 0.8625077 0.9331491 0.8592246 0.3164697 0.8592244 0.3164697 0.8592244 0.9331491 0.8592246 0.9331491 0.8519235 0.9481284 0.8609582 0.9331491 0.8657909 0.9331491 0.8584899 0.3164697 0.8552066 0.3164697 0.8519233 0.9331491 0.8519235 0.9481284 0.8571717 0.9331491 0.8592246 0.9331491 0.8625077 0.3164697 0.8657907 0.3164697 0.8625076 0.3164697 0.8552066 0.3164697 0.8552066 0.9331491 0.8552066 0.9331491 0.8584899 0.9331491 0.8657909 0.9331491 0.8625077 0.3164697 0.8625076 0.9481284 0.8590649 0.9481284 0.8552066 0.9481284 0.8533136 0.9481284 0.8609582 0.9481284 0.8590649 0.9331491 0.8625077 0.9331491 0.8552066 0.9481284 0.8552066 0.9481284 0.8570998 0.3014847 0.860958 0.3014847 0.8570998 0.3164697 0.8584898 0.3014847 0.8571717 0.3014847 0.8590648 0.3164697 0.8625076 0.3164697 0.8552066 0.3164697 0.8584898 0.3014847 0.8570998 0.3014847 0.860958 0.3164697 0.8657907 0.3164697 0.8625076 0.3014847 0.860958 0.3014847 0.8590648 0.3014847 0.8552066 0.3014847 0.8590648 0.3014847 0.8571717 0.3014847 0.8533134 0.3014847 0.8571717 0.3164697 0.8592244 0.3164697 0.8519233 0.3164697 0.8552066 0.3014847 0.8552066 0.3014847 0.8533134 0.3164696 0.7696189 0.3164696 0.77692 0.3164696 0.7736367 0.9481284 0.7716718 0.9481284 0.77553 0.933149 0.77692 0.9481284 0.7697786 0.9481284 0.7678853 0.9481284 0.7717437 0.933149 0.7630526 0.3164696 0.7630525 0.3164696 0.7703535 0.933149 0.7736369 0.933149 0.77692 0.9481284 0.77553 0.933149 0.7663358 0.933149 0.7696191 0.3164696 0.7696189 0.933149 0.7696191 0.933149 0.77692 0.3164696 0.77692 0.9481284 0.7678853 0.933149 0.7630526 0.933149 0.7703536 0.3164696 0.7736367 0.3164696 0.77692 0.933149 0.77692 0.9481284 0.7716718 0.933149 0.7696191 0.933149 0.7663358 0.3164696 0.7663358 0.3164696 0.7736367 0.3164696 0.7703535 0.3164696 0.7703535 0.3164696 0.7736367 0.933149 0.7736369 0.933149 0.7630526 0.933149 0.7663358 0.3164696 0.7663358 0.9481284 0.7716718 0.9481284 0.7697786 0.9481284 0.7736369 0.9481284 0.7678853 0.9481284 0.7697786 0.933149 0.7663358 0.933149 0.7736369 0.9481284 0.7736369 0.9481284 0.7717437 0.3014845 0.7678852 0.3014845 0.7717435 0.3164696 0.7703535 0.3014845 0.7716716 0.3014845 0.7697784 0.3164696 0.7663358 0.3164696 0.7736367 0.3164696 0.7703535 0.3014845 0.7717435 0.3014845 0.7678852 0.3164696 0.7630525 0.3164696 0.7663358 0.3014845 0.7697784 0.3014845 0.7736367 0.3014845 0.7717435 0.3014845 0.7716716 0.3014845 0.7755299 0.3014845 0.7736367 0.3014845 0.7716716 0.3164696 0.7696189 0.3164696 0.77692 0.3164696 0.7736367 0.3014845 0.7736367 0.3014845 0.7755299 0.4928875 0.9301345 0.614745 0.8413183 0.4723786 0.8400695 0.4723785 0.8444151 0.614745 0.8431665 0.4928875 0.9319828 0.4723973 0.9288858 0.422674 0.9301345 0.422674 0.9319828 0.3859533 0.8413181 0.3859533 0.8431665 0.422674 0.9319828 0.614745 0.8413183 0.4928875 0.9301345 0.4928875 0.9319828 0.614745 0.8413183 0.614745 0.8431665 0.4723785 0.8444151 0.422674 0.9301345 0.4723973 0.9288858 0.4723786 0.8400695 0.422674 0.9319828 0.3859533 0.8431665 0.4723785 0.8444151 0.4928875 0.9301345 0.4723973 0.9288858 0.4723973 0.9332315 0.4723786 0.8400695 0.4723785 0.8444151 0.3859533 0.8431665 0.4928875 0.6989412 0.614745 0.7877573 0.4723786 0.789006 0.4723786 0.7846603 0.614745 0.7859092 0.4928875 0.6970929 0.422674 0.6989412 0.422674 0.6970929 0.4723973 0.6958442 0.422674 0.6989412 0.3859534 0.7877573 0.3859534 0.7859092 0.614745 0.7877573 0.4928875 0.6989412 0.4928875 0.6970929 0.4723786 0.789006 0.614745 0.7877573 0.614745 0.7859092 0.422674 0.6989412 0.4723973 0.7001898 0.4723786 0.789006 0.422674 0.6970929 0.3859534 0.7859092 0.4723786 0.7846603 0.4723973 0.7001898 0.4723973 0.6958442 0.4928875 0.6970929 0.3859534 0.7877573 0.4723786 0.789006 0.4723786 0.7846603 0.4928875 0.6376898 0.614745 0.7717514 0.4723786 0.770924 0.4723786 0.7738031 0.614745 0.7729757 0.4928875 0.6389142 0.4723973 0.6368625 0.422674 0.6376898 0.422674 0.6389142 0.422674 0.6376898 0.3859534 0.7717514 0.3859534 0.7729757 0.4928875 0.6376898 0.4928875 0.6389142 0.614745 0.7729757 0.4723786 0.770924 0.614745 0.7717514 0.614745 0.7729757 0.422674 0.6376898 0.4723973 0.6368625 0.4723786 0.770924 0.422674 0.6389142 0.3859534 0.7729757 0.4723786 0.7738031 0.4928875 0.6376898 0.4723973 0.6368625 0.4723973 0.6397416 0.3859534 0.7717514 0.4723786 0.770924 0.4723786 0.7738031 0.4928875 0.9913858 0.614745 0.8573243 0.4723786 0.8581515 0.4723786 0.8552726 0.614745 0.8560998 0.4928875 0.9901614 0.422674 0.9913858 0.422674 0.9901614 0.4723973 0.9893341 0.3859534 0.8573242 0.3859534 0.8560998 0.422674 0.9901614 0.4928875 0.9913858 0.4928875 0.9901614 0.614745 0.8560998 0.4723786 0.8581515 0.614745 0.8573243 0.614745 0.8560998 0.422674 0.9913858 0.4723973 0.9922131 0.4723786 0.8581515 0.422674 0.9901614 0.3859534 0.8560998 0.4723786 0.8552726 0.4928875 0.9913858 0.4723973 0.9922131 0.4723973 0.9893341 0.3859534 0.8573242 0.4723786 0.8581515 0.4723786 0.8552726 0.2567958 0.7334703 0.2428945 0.7339342 0.2428945 0.8006055 0.2428945 0.8015953 0.2428945 0.734924 0.2567958 0.7353877 0.2706971 0.7339342 0.278049 0.8006055 0.278049 0.8015953 0.2604718 0.8001416 0.2428945 0.8006055 0.2428945 0.8015953 0.2706971 0.7339342 0.2706971 0.734924 0.2567958 0.7353877 0.2428945 0.8006055 0.2428945 0.7339342 0.2428945 0.734924 0.2706971 0.7339342 0.2567958 0.7334703 0.2604718 0.8001416 0.2604718 0.802059 0.2567958 0.7353877 0.2706971 0.734924 0.278049 0.8006055 0.2604718 0.8001416 0.2604718 0.802059 0.2567958 0.7334703 0.2567958 0.7353877 0.2428945 0.734924 0.2567959 0.6779663 0.2428946 0.677659 0.2428945 0.7782945 0.2428945 0.7776387 0.2428946 0.6770033 0.2567959 0.6766961 0.2706971 0.677659 0.278049 0.7782945 0.278049 0.7776387 0.2604718 0.7786017 0.2428945 0.7782945 0.2428945 0.7776387 0.2706971 0.677659 0.2706971 0.6770033 0.2567959 0.6766961 0.2428945 0.7782945 0.2428946 0.677659 0.2428946 0.6770033 0.2706971 0.677659 0.2567959 0.6779663 0.2604718 0.7786017 0.2604718 0.7773315 0.2567959 0.6766961 0.2706971 0.6770033 0.278049 0.7782945 0.2604718 0.7786017 0.2604718 0.7773315 0.2567959 0.6779663 0.2567959 0.6766961 0.2428946 0.6770033 0.2567958 0.951021 0.2428945 0.9513282 0.2428945 0.8506929 0.2428945 0.8513486 0.2428945 0.9519839 0.2567958 0.9522913 0.278049 0.8506929 0.278049 0.8513486 0.2706971 0.9519839 0.2604718 0.8503856 0.2428945 0.8506929 0.2428945 0.8513486 0.2706971 0.9513282 0.2706971 0.9519839 0.2567958 0.9522913 0.2428945 0.8506929 0.2428945 0.9513282 0.2428945 0.9519839 0.2706971 0.9513282 0.2567958 0.951021 0.2604718 0.8503856 0.2604718 0.8516559 0.2567958 0.9522913 0.2706971 0.9519839 0.278049 0.8506929 0.2604718 0.8503856 0.2604718 0.8516559 0.2428945 0.9513282 0.2567958 0.951021 0.2567958 0.9522913 0.01453715 0.951021 6.35833e-4 0.9513282 6.35862e-4 0.8506929 6.35862e-4 0.8513486 6.35833e-4 0.9519839 0.01453715 0.9522913 0.02843838 0.9513282 0.0357902 0.8506929 0.0357902 0.8513486 6.35862e-4 0.8506929 6.35862e-4 0.8513486 0.01821303 0.8516559 0.02843838 0.9513282 0.02843838 0.9519839 0.01453715 0.9522913 6.35833e-4 0.9513282 6.35833e-4 0.9519839 6.35862e-4 0.8513486 0.02843838 0.9513282 0.01453715 0.951021 0.01821303 0.8503856 0.01821303 0.8516559 0.01453715 0.9522913 0.02843838 0.9519839 0.0357902 0.8506929 0.01821303 0.8503856 0.01821303 0.8516559 0.01453715 0.951021 0.01453715 0.9522913 6.35833e-4 0.9519839 0.01453721 0.6779663 6.35862e-4 0.677659 6.35833e-4 0.7782945 6.35833e-4 0.7776387 6.35862e-4 0.6770033 0.01453721 0.6766961 0.0357902 0.7782945 0.0357902 0.7776387 0.0284385 0.6770033 6.35833e-4 0.7782945 6.35833e-4 0.7776387 0.01821303 0.7773315 0.01453721 0.6779663 0.0284385 0.677659 0.0284385 0.6770033 6.35833e-4 0.7782945 6.35862e-4 0.677659 6.35862e-4 0.6770033 0.0284385 0.677659 0.01453721 0.6779663 0.01821303 0.7786017 0.01821303 0.7773315 0.01453721 0.6766961 0.0284385 0.6770033 0.01821303 0.7786017 0.01821303 0.7773315 0.0357902 0.7776387 0.01453721 0.6779663 0.01453721 0.6766961 6.35862e-4 0.6770033 0.2567958 0.9089754 0.2428945 0.9085116 0.2428945 0.8418403 0.2428945 0.8408507 0.2428945 0.907522 0.2567958 0.9070581 0.278049 0.8418403 0.278049 0.8408507 0.2706971 0.907522 0.2604718 0.8423041 0.2428945 0.8418403 0.2428945 0.8408507 0.2706971 0.9085116 0.2706971 0.907522 0.2567958 0.9070581 0.2428945 0.8418403 0.2428945 0.9085116 0.2428945 0.907522 0.2706971 0.9085116 0.2567958 0.9089754 0.2604718 0.8423041 0.2604718 0.8403868 0.2567958 0.9070581 0.2706971 0.907522 0.2604718 0.8423041 0.2604718 0.8403868 0.278049 0.8408507 0.2428945 0.9085116 0.2567958 0.9089754 0.2567958 0.9070581 0.01453715 0.9060915 6.35833e-4 0.9056276 6.35862e-4 0.8389563 6.35862e-4 0.8379666 6.35833e-4 0.9046379 0.01453715 0.9041741 0.0357902 0.8389563 0.0357902 0.8379666 0.02843844 0.9046379 0.01821309 0.8394201 6.35862e-4 0.8389563 6.35862e-4 0.8379666 0.02843844 0.9056276 0.02843844 0.9046379 0.01453715 0.9041741 6.35862e-4 0.8389563 6.35833e-4 0.9056276 6.35833e-4 0.9046379 0.02843844 0.9056276 0.01453715 0.9060915 0.01821309 0.8394201 0.01821309 0.8375028 0.01453715 0.9041741 0.02843844 0.9046379 0.01821309 0.8394201 0.01821309 0.8375028 0.0357902 0.8379666 6.35833e-4 0.9056276 0.01453715 0.9060915 0.01453715 0.9041741 0.01453715 0.7334703 6.35862e-4 0.7339342 6.35862e-4 0.8006055 6.35862e-4 0.8015953 6.35862e-4 0.734924 0.01453715 0.7353877 0.02843838 0.7339342 0.0357902 0.8006055 0.0357902 0.8015953 0.01821303 0.8001416 6.35862e-4 0.8006055 6.35862e-4 0.8015953 0.02843838 0.7339342 0.02843838 0.734924 0.01453715 0.7353877 6.35862e-4 0.8006055 6.35862e-4 0.7339342 6.35862e-4 0.734924 0.02843838 0.7339342 0.01453715 0.7334703 0.01821303 0.8001416 0.01821303 0.802059 0.01453715 0.7353877 0.02843838 0.734924 0.0357902 0.8006055 0.01821303 0.8001416 0.01821303 0.802059 0.01453715 0.7334703 0.01453715 0.7353877 6.35862e-4 0.734924 0.6935515 0.2334218 0.6935515 0.2320804 0.6377521 0.2320805 0.2864438 0.2334219 0.2864438 0.2320806 -0.02097761 0.2320806 -0.02097761 0.2334219 -0.02097761 0.2320806 -0.08198142 0.2320806 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 0.6377521 0.2334219 0.6377521 0.2320805 0.5225971 0.2320805 0.5225971 0.2334219 0.5225971 0.2320805 0.2864438 0.2320806 0.8019385 0.6410663 0.8019385 0.6637867 0.8019385 0.6567163 0.8591893 0.6410663 0.7149143 0.6410663 0.7149143 0.6322777 0.8591893 0.6322777 0.7149143 0.6322777 0.7149143 0.6238267 0.8591893 0.6238267 0.7149143 0.6238267 0.7149143 0.6160385 0.8591893 0.6160383 0.7149143 0.6160385 0.7149143 0.6092116 0.8591893 0.6092116 0.7149143 0.6092116 0.7149143 0.6036093 0.8591891 0.6036093 0.7149143 0.6036093 0.7149143 0.5994462 0.8591891 0.5994462 0.7149143 0.5994462 0.7149143 0.5968828 0.8591891 0.5968828 0.7149143 0.5968828 0.7149143 0.5960173 0.8591893 0.6861153 0.7149143 0.6861153 0.7149143 0.6852498 0.8591893 0.6852498 0.7149143 0.6852498 0.7149143 0.6826862 0.8591893 0.6826862 0.7149143 0.6826862 0.7149143 0.6785233 0.8591893 0.6785231 0.7149143 0.6785233 0.7149143 0.6729208 0.8591893 0.6729208 0.7149143 0.6729208 0.7149143 0.6660942 0.8591893 0.6660942 0.7149143 0.6660942 0.7149143 0.6583058 0.8591893 0.6498548 0.7149143 0.6498548 0.7149143 0.6410663 0.8591893 0.6583058 0.7149143 0.6583058 0.7149143 0.6498548 0.8591893 0.6498548 0.8591893 0.6490446 0.8591893 0.6567163 0.7441225 0.2394983 0.7441225 0.2406971 0.6935515 0.2334219 0.7441225 0.2406971 0.7441225 0.2442475 0.6935515 0.2373943 0.7441225 0.2500131 0.6935515 0.2438453 0.6935515 0.2373943 0.7441225 0.2577721 0.6935515 0.2525271 0.6935515 0.2438453 0.7441225 0.2577721 0.7441225 0.2672268 0.6935515 0.2631056 0.7441225 0.2672268 0.7441225 0.2780133 0.6935515 0.2751746 0.7441225 0.2897174 0.6935515 0.2882702 0.6935515 0.2751746 0.7441225 0.3140609 0.6935515 0.3155081 0.6935515 0.3018892 0.7441225 0.325765 0.6935515 0.3286037 0.6935515 0.3155081 0.7441225 0.3365517 0.6935515 0.3406729 0.6935515 0.3286037 0.7441225 0.3365517 0.7441225 0.3460062 0.6935515 0.3512514 0.7441225 0.3460062 0.7441225 0.3537654 0.6935515 0.359933 0.7441225 0.3537654 0.7441225 0.3595309 0.6935515 0.3663842 0.7441225 0.3630813 0.6935515 0.3703566 0.6935515 0.3663842 0.7441225 0.3642802 0.6935515 0.3716981 0.6935515 0.3703566 0.7441225 0.2897174 0.7441225 0.3018892 0.6935515 0.3018892 0.6935515 0.2334219 0.6935515 0.2373943 0.6377521 0.2373943 0.6935515 0.2525271 0.6935515 0.2631056 0.6377521 0.2631056 0.6935515 0.3018892 0.6377521 0.3018892 0.6377521 0.2882702 0.6935515 0.3406729 0.6377521 0.3406729 0.6377521 0.3286038 0.6935515 0.359933 0.6935515 0.3663842 0.6377521 0.3663842 0.6935515 0.2438453 0.6377521 0.2438454 0.6377521 0.2373943 0.6935515 0.2631056 0.6935515 0.2751746 0.6377521 0.2751746 0.6935515 0.3018892 0.6935515 0.3155081 0.6377521 0.3155082 0.6935515 0.3512514 0.6377521 0.3512514 0.6377521 0.3406729 0.6935515 0.3663842 0.6935515 0.3703566 0.6377521 0.3703566 0.6935515 0.2320805 0.6935515 0.2334219 0.6377521 0.2334219 0.6935515 0.2525271 0.6377521 0.2525271 0.6377521 0.2438454 0.6935515 0.2751746 0.6935515 0.2882702 0.6377521 0.2882702 0.6935515 0.3155081 0.6935515 0.3286037 0.6377521 0.3286038 0.6935515 0.359933 0.6377521 0.359933 0.6377521 0.3512514 0.6935515 0.3703566 0.6935515 0.3716981 0.6377521 0.3716981 0.2864438 0.2334219 0.2864438 0.2373945 -0.02097761 0.2373945 0.2864438 0.2525271 0.2864438 0.2631057 -0.02097761 0.2631057 0.2864438 0.2882704 0.2864438 0.3018894 -0.02097761 0.3018895 0.2864438 0.3286039 0.2864438 0.3406729 -0.02097761 0.340673 0.2864438 0.3599331 0.2864438 0.3663842 -0.02097761 0.3663842 0.2864438 0.2373945 0.2864438 0.2438455 -0.02097761 0.2438455 0.2864438 0.2631057 0.2864438 0.2751747 -0.02097761 0.2751747 0.2864438 0.3018894 0.2864438 0.3155082 -0.02097761 0.3155083 0.2864438 0.3406729 0.2864438 0.3512515 -0.02097761 0.3512517 0.2864438 0.3663842 0.2864438 0.3703568 -0.02097761 0.3703568 0.2864438 0.2320806 0.2864438 0.2334219 -0.02097761 0.2334221 0.2864438 0.2438455 0.2864438 0.2525271 -0.02097761 0.2525272 0.2864438 0.2751747 0.2864438 0.2882704 -0.02097761 0.2882704 0.2864438 0.3155082 0.2864438 0.3286039 -0.02097761 0.3286039 0.2864438 0.3512515 0.2864438 0.3599331 -0.02097761 0.3599333 0.2864438 0.3703568 0.2864438 0.3716981 -0.02097761 0.3716981 -0.02097761 0.2373945 -0.08198142 0.2373945 -0.08198142 0.2334221 -0.02097761 0.2631057 -0.08198142 0.2631058 -0.08198142 0.2525272 -0.02097761 0.3018895 -0.08198142 0.3018895 -0.08198142 0.2882705 -0.02097761 0.340673 -0.08198142 0.340673 -0.08198142 0.3286039 -0.02097761 0.3663842 -0.08198142 0.3663842 -0.08198142 0.3599333 -0.02097761 0.2438455 -0.08198142 0.2438455 -0.08198142 0.2373945 -0.02097761 0.2751747 -0.08198142 0.2751747 -0.08198142 0.2631058 -0.02097761 0.3155083 -0.08198142 0.3155083 -0.08198142 0.3018895 -0.02097761 0.3512517 -0.08198142 0.3512517 -0.08198142 0.340673 -0.02097761 0.3703568 -0.08198142 0.3703569 -0.08198142 0.3663842 -0.02097761 0.2320806 -0.02097761 0.2334221 -0.08198142 0.2334221 -0.02097761 0.2525272 -0.08198142 0.2525272 -0.08198142 0.2438455 -0.02097761 0.2882704 -0.08198142 0.2882705 -0.08198142 0.2751747 -0.02097761 0.3286039 -0.08198142 0.3286039 -0.08198142 0.3155083 -0.02097761 0.3599333 -0.08198142 0.3599333 -0.08198142 0.3512517 -0.02097761 0.3703568 -0.02097761 0.3716981 -0.08198142 0.3716983 -0.1462828 0.3645088 -0.1973938 0.3410363 -0.1973938 0.3402841 -0.08198142 0.2373945 -0.1462828 0.2440366 -0.1462828 0.2404732 -0.08198142 0.2525272 -0.08198142 0.2631058 -0.1462828 0.2670999 -0.08198142 0.2882705 -0.08198142 0.3018895 -0.1462828 0.3018895 -0.08198142 0.3286039 -0.08198142 0.340673 -0.1462828 0.3366788 -0.08198142 0.3599333 -0.08198142 0.3663842 -0.1462828 0.3597421 -0.08198142 0.2373945 -0.08198142 0.2438455 -0.1462828 0.2498233 -0.08198142 0.2631058 -0.08198142 0.2751747 -0.1462828 0.277926 -0.08198142 0.3018895 -0.08198142 0.3155083 -0.1462828 0.3141058 -0.08198142 0.340673 -0.08198142 0.3512517 -0.1462828 0.3461679 -0.08198142 0.3663842 -0.08198142 0.3703569 -0.1462828 0.3633057 -0.08198142 0.2334221 -0.1462828 0.2404732 -0.1462828 0.23927 -0.08198142 0.2438455 -0.08198142 0.2525272 -0.1462828 0.2576108 -0.08198142 0.2751747 -0.08198142 0.2882705 -0.1462828 0.289673 -0.08198142 0.3155083 -0.08198142 0.3286039 -0.1462828 0.3258526 -0.08198142 0.3512517 -0.08198142 0.3599333 -0.1462828 0.3539555 -0.08198142 0.3703569 -0.08198142 0.3716983 -0.1462828 0.3645088 -0.1973938 0.3295704 -0.1973938 0.3344388 -0.2303687 0.3185158 -0.1462828 0.2404732 -0.1462828 0.2440366 -0.1973938 0.2657225 -0.1462828 0.2576108 -0.1462828 0.2670999 -0.1973938 0.2801406 -0.1462828 0.289673 -0.1462828 0.3018895 -0.1973938 0.3018895 -0.1462828 0.3258526 -0.1462828 0.3366788 -0.1973938 0.3236381 -0.1462828 0.3597421 -0.1973938 0.3380564 -0.1973938 0.3344388 -0.1462828 0.2440366 -0.1462828 0.2498233 -0.1973938 0.26934 -0.1462828 0.2670999 -0.1462828 0.277926 -0.1973938 0.2869086 -0.1462828 0.3018895 -0.1462828 0.3141058 -0.1973938 0.3095265 -0.1462828 0.3366788 -0.1462828 0.3461679 -0.1973938 0.3295704 -0.1462828 0.3597421 -0.1462828 0.3633057 -0.1973938 0.3402841 -0.1462828 0.23927 -0.1462828 0.2404732 -0.1973938 0.2634948 -0.1462828 0.2576108 -0.1973938 0.2742086 -0.1973938 0.26934 -0.1462828 0.277926 -0.1462828 0.289673 -0.1973938 0.2942522 -0.1462828 0.3141058 -0.1462828 0.3258526 -0.1973938 0.3168701 -0.1462828 0.3461679 -0.1462828 0.3539555 -0.1973938 0.3344388 -0.2303687 0.3095417 -0.2468562 0.3045387 -0.2468562 0.3032401 -0.1973938 0.3410363 -0.2303687 0.321886 -0.2303687 0.3215016 -0.1973938 0.2657225 -0.2303687 0.2834152 -0.2303687 0.2822772 -0.1973938 0.2801406 -0.2303687 0.29078 -0.2303687 0.2877498 -0.1973938 0.3018895 -0.2303687 0.3018895 -0.2303687 0.2979884 -0.1973938 0.3236381 -0.2303687 0.3129988 -0.2303687 0.3095417 -0.1973938 0.3380564 -0.2303687 0.3203637 -0.2303687 0.3185158 -0.1973938 0.2657225 -0.1973938 0.26934 -0.2303687 0.2852631 -0.1973938 0.2869086 -0.2303687 0.2942371 -0.2303687 0.29078 -0.1973938 0.3095265 -0.2303687 0.3057906 -0.2303687 0.3018895 -0.1973938 0.3295704 -0.2303687 0.3160291 -0.2303687 0.3129988 -0.1973938 0.3380564 -0.1973938 0.3402841 -0.2303687 0.3215016 -0.1973938 0.2634948 -0.2303687 0.2822772 -0.2303687 0.2818931 -0.1973938 0.2742086 -0.2303687 0.2877498 -0.2303687 0.2852631 -0.1973938 0.2942522 -0.2303687 0.2979884 -0.2303687 0.2942371 -0.1973938 0.3095265 -0.1973938 0.3168701 -0.2303687 0.3095417 -0.2468562 0.3032401 -0.2468562 0.3045387 -0.2510744 0.3018896 -0.2303687 0.3185158 -0.2468562 0.3076454 -0.2468562 0.3067845 -0.2303687 0.3215016 -0.2303687 0.321886 -0.2468562 0.308812 -0.2303687 0.2834152 -0.2468562 0.2954941 -0.2468562 0.2951003 -0.2303687 0.29078 -0.2468562 0.2980437 -0.2468562 0.2969948 -0.2303687 0.3018895 -0.2468562 0.3018896 -0.2468562 0.300539 -0.2303687 0.3129988 -0.2468562 0.3057355 -0.2468562 0.3045387 -0.2303687 0.3203637 -0.2468562 0.3082851 -0.2468562 0.3076454 -0.2303687 0.2852631 -0.2468562 0.2961339 -0.2468562 0.2954941 -0.2303687 0.2942371 -0.2468562 0.2992405 -0.2468562 0.2980437 -0.2303687 0.3057906 -0.2468562 0.3032401 -0.2468562 0.3018896 -0.2303687 0.3160291 -0.2468562 0.3067845 -0.2468562 0.3057355 -0.2303687 0.3215016 -0.2468562 0.308679 -0.2468562 0.3082851 -0.2303687 0.2822772 -0.2468562 0.2951003 -0.2468562 0.2949672 -0.2303687 0.2877498 -0.2468562 0.2969948 -0.2468562 0.2961339 -0.2303687 0.2979884 -0.2468562 0.300539 -0.2468562 0.2992405 -0.2468562 0.3076454 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.308812 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.2951003 -0.2468562 0.2954941 -0.2510744 0.3018896 -0.2468562 0.2980437 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.300539 -0.2468562 0.3018896 -0.2510744 0.3018896 -0.2468562 0.3057355 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.3076454 -0.2468562 0.3082851 -0.2510744 0.3018896 -0.2468562 0.2961339 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.2980437 -0.2468562 0.2992405 -0.2510744 0.3018896 -0.2468562 0.3032401 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.3057355 -0.2468562 0.3067845 -0.2510744 0.3018896 -0.2468562 0.308679 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.2949672 -0.2468562 0.2951003 -0.2510744 0.3018896 -0.2468562 0.2961339 -0.2468562 0.2969948 -0.2510744 0.3018896 -0.2468562 0.300539 -0.2510744 0.3018896 -0.2510744 0.3018896 0.6377521 0.2334219 0.6377521 0.2373943 0.5225971 0.2373945 0.6377521 0.2525271 0.6377521 0.2631056 0.5225971 0.2631056 0.6377521 0.2882702 0.6377521 0.3018892 0.5225971 0.3018892 0.6377521 0.3286038 0.6377521 0.3406729 0.5225971 0.3406729 0.6377521 0.359933 0.6377521 0.3663842 0.5225971 0.3663842 0.6377521 0.2373943 0.6377521 0.2438454 0.5225971 0.2438454 0.6377521 0.2631056 0.6377521 0.2751746 0.5225971 0.2751746 0.6377521 0.3018892 0.6377521 0.3155082 0.5225971 0.3155082 0.6377521 0.3406729 0.6377521 0.3512514 0.5225971 0.3512514 0.6377521 0.3663842 0.6377521 0.3703566 0.5225971 0.3703566 0.6377521 0.2320805 0.6377521 0.2334219 0.5225971 0.2334219 0.6377521 0.2438454 0.6377521 0.2525271 0.5225971 0.2525271 0.6377521 0.2751746 0.6377521 0.2882702 0.5225971 0.2882702 0.6377521 0.3155082 0.6377521 0.3286038 0.5225971 0.3286038 0.6377521 0.3512514 0.6377521 0.359933 0.5225971 0.3599331 0.6377521 0.3703566 0.6377521 0.3716981 0.5225971 0.3716981 0.5225971 0.3018892 0.5225971 0.3155082 0.2864438 0.3155082 0.5225971 0.2438454 0.5225971 0.2525271 0.2864438 0.2525271 0.5225971 0.3599331 0.5225971 0.3663842 0.2864438 0.3663842 0.5225971 0.2320805 0.5225971 0.2334219 0.2864438 0.2334219 0.5225971 0.3286038 0.5225971 0.3406729 0.2864438 0.3406729 0.5225971 0.2373945 0.5225971 0.2438454 0.2864438 0.2438455 0.5225971 0.2631056 0.5225971 0.2751746 0.2864438 0.2751747 0.5225971 0.2882702 0.5225971 0.3018892 0.2864438 0.3018894 0.5225971 0.2525271 0.5225971 0.2631056 0.2864438 0.2631057 0.5225971 0.2334219 0.5225971 0.2373945 0.2864438 0.2373945 0.5225971 0.3703566 0.5225971 0.3716981 0.2864438 0.3716981 0.5225971 0.3512514 0.5225971 0.3599331 0.2864438 0.3599331 0.5225971 0.3663842 0.5225971 0.3703566 0.2864438 0.3703568 0.5225971 0.3155082 0.5225971 0.3286038 0.2864438 0.3286039 0.5225971 0.3406729 0.5225971 0.3512514 0.2864438 0.3512515 0.5225971 0.2751746 0.5225971 0.2882702 0.2864438 0.2882704 0.8591893 0.669984 0.8591893 0.6637867 0.8019385 0.6637867 0.8591893 0.6660942 0.8591893 0.6583058 0.8591893 0.6567163 0.8591893 0.6729208 0.8591893 0.6660942 0.8591893 0.6637867 0.8591893 0.6729208 0.8591893 0.669984 0.8591893 0.6750698 0.8591893 0.6826862 0.8591893 0.6785231 0.8591893 0.6750698 0.8591893 0.6852498 0.8591893 0.6826862 0.8591893 0.6788489 0.8591893 0.6852498 0.8591893 0.6811763 0.8591893 0.6819621 0.8591893 0.6410663 0.8591893 0.6322777 0.8591893 0.6330879 0.8591891 0.5968828 0.8591891 0.5960173 0.8591891 0.6001704 0.8591891 0.5968828 0.8591891 0.6009562 0.8591891 0.6032835 0.8591891 0.5994462 0.8591891 0.6032835 0.8591891 0.6070626 0.8591893 0.6092116 0.8591891 0.6036093 0.8591891 0.6070626 0.8591893 0.6160383 0.8591893 0.6092116 0.8591893 0.6121485 0.8591893 0.6160383 0.8591893 0.6183457 0.8591893 0.6254161 0.8591893 0.6238267 0.8591893 0.6254161 0.8591893 0.6330879 0.8591893 0.6410663 0.8591893 0.6410663 0.8591893 0.6490446 0.8591893 0.6811763 0.8591893 0.6788489 0.8019385 0.6788489 0.8591891 0.6009562 0.8591891 0.6001704 0.8019385 0.6001704 0.8591893 0.6121485 0.8591891 0.6070626 0.8019385 0.6070626 0.8591893 0.6330879 0.8591893 0.6254161 0.8019385 0.6254162 0.8591893 0.6567163 0.8591893 0.6490446 0.8019385 0.6490446 0.8591893 0.6750698 0.8591893 0.669984 0.8019385 0.669984 0.8591893 0.6819621 0.8591893 0.6811763 0.8019385 0.6811763 0.8591891 0.6032835 0.8591891 0.6009562 0.8019385 0.6009562 0.8591893 0.6183457 0.8591893 0.6121485 0.8019385 0.6121485 0.8591893 0.6410663 0.8591893 0.6330879 0.8019385 0.6330879 0.8591893 0.6637867 0.8591893 0.6567163 0.8019385 0.6567163 0.8591893 0.6788489 0.8591893 0.6750698 0.8019385 0.6750698 0.8591891 0.6070626 0.8591891 0.6032835 0.8019385 0.6032835 0.8591893 0.6254161 0.8591893 0.6183457 0.8019385 0.6183458 0.8591893 0.6490446 0.8591893 0.6410663 0.8019385 0.6410663 0.8591893 0.6861153 0.7149143 0.6861153 0.7149143 0.6861153 0.6935515 0.2320804 0.7441225 0.2394983 0.7441225 0.2394983 0.7441225 0.3642802 0.6935515 0.371698 0.6935515 0.371698 0.6377521 0.2320805 0.6935515 0.2320804 0.6935515 0.2320804 -0.02097761 0.2320806 0.2864438 0.2320806 0.2864438 0.2320806 -0.08198142 0.2320806 -0.02097761 0.2320806 -0.02097761 0.2320806 -0.08198142 0.3716983 -0.1462828 0.3645088 -0.1462828 0.3645088 -0.1462828 0.23927 -0.08198142 0.2320806 -0.08198142 0.2320806 -0.1462828 0.3645088 -0.1973938 0.3410363 -0.1973938 0.3410363 -0.1973938 0.2627426 -0.1462828 0.23927 -0.1462828 0.23927 -0.1973938 0.3410363 -0.2303687 0.3218857 -0.2303687 0.3218857 -0.2303687 0.2818931 -0.1973938 0.2627426 -0.1973938 0.2627426 -0.2303687 0.3218857 -0.2468562 0.308812 -0.2468562 0.308812 -0.2468562 0.2949671 -0.2303687 0.2818931 -0.2303687 0.2818931 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.308812 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.2949671 -0.2468562 0.2949671 0.5225971 0.2320805 0.6377521 0.2320805 0.6377521 0.2320805 0.2864438 0.2320806 0.5225971 0.2320805 0.5225971 0.2320805 0.8591893 0.6819621 0.8591893 0.6861153 0.8591893 0.6861153 0.8019385 0.6330879 0.8019385 0.6410663 0.8019385 0.6410663 0.8019385 0.6254161 0.8019385 0.6330879 0.8019385 0.6330879 0.8019385 0.6183457 0.8019385 0.6254161 0.8019385 0.6254161 0.8019385 0.6121485 0.8019385 0.6183457 0.8019385 0.6183457 0.8019385 0.6070626 0.8019385 0.6121485 0.8019385 0.6121485 0.8019385 0.6032835 0.8019385 0.6070626 0.8019385 0.6070626 0.8019385 0.6009562 0.8019385 0.6032835 0.8019385 0.6032835 0.8019385 0.6001704 0.8019385 0.6009562 0.8019385 0.6009562 0.8019385 0.6811763 0.8019385 0.6819621 0.8019385 0.6819621 0.8019385 0.6788489 0.8019385 0.6811763 0.8019385 0.6811763 0.8019385 0.6750698 0.8019385 0.6788489 0.8019385 0.6788489 0.8019385 0.669984 0.8019385 0.6750698 0.8019385 0.6750698 0.8019385 0.6637867 0.8019385 0.669984 0.8019385 0.669984 0.8019385 0.6567163 0.8019385 0.6637867 0.8019385 0.6637867 0.8019385 0.6490446 0.8019385 0.6567163 0.8019385 0.6567163 0.8019385 0.6410663 0.8019385 0.6490446 0.8019385 0.6490446 0.8019385 0.6819621 0.8591893 0.6819621 0.8591893 0.6819621 0.7149143 0.6861153 0.8591893 0.6861153 0.8591893 0.6861153 0.7441225 0.2394983 0.6935515 0.2320805 0.6935515 0.2320805 0.6935515 0.3716981 0.7441225 0.3642802 0.7441225 0.3642802 0.6935515 0.2320805 0.6377521 0.2320805 0.6377521 0.2320805 0.2864438 0.2320806 -0.02097761 0.2320806 -0.02097761 0.2320806 -0.02097761 0.2320806 -0.08198142 0.2320806 -0.08198142 0.2320806 -0.1462828 0.3645088 -0.08198142 0.3716983 -0.08198142 0.3716983 -0.08198142 0.2320806 -0.1462828 0.23927 -0.1462828 0.23927 -0.1973938 0.3410363 -0.1462828 0.3645088 -0.1462828 0.3645088 -0.1462828 0.23927 -0.1973938 0.2627426 -0.1973938 0.2627426 -0.2303687 0.321886 -0.1973938 0.3410363 -0.1973938 0.3410363 -0.1973938 0.2627426 -0.2303687 0.2818931 -0.2303687 0.2818931 -0.2468562 0.308812 -0.2303687 0.321886 -0.2303687 0.321886 -0.2303687 0.2818931 -0.2468562 0.2949672 -0.2468562 0.2949672 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.308812 -0.2468562 0.308812 -0.2468562 0.2949672 -0.2510744 0.3018896 -0.2510744 0.3018896 0.6377521 0.2320805 0.5225971 0.2320805 0.5225971 0.2320805 0.5225971 0.2320805 0.2864438 0.2320806 0.2864438 0.2320806 0.8591893 0.6861153 0.8591893 0.6819621 0.8591893 0.6819621 0.8019385 0.6410663 0.8019385 0.6330879 0.8019385 0.6330879 0.8019385 0.6330879 0.8019385 0.6254162 0.8019385 0.6254162 0.8019385 0.6254162 0.8019385 0.6183458 0.8019385 0.6183458 0.8019385 0.6183458 0.8019385 0.6121485 0.8019385 0.6121485 0.8019385 0.6121485 0.8019385 0.6070626 0.8019385 0.6070626 0.8019385 0.6070626 0.8019385 0.6032835 0.8019385 0.6032835 0.8019385 0.6032835 0.8019385 0.6009562 0.8019385 0.6009562 0.8019385 0.6009562 0.8019385 0.6001704 0.8019385 0.6001704 0.8019385 0.6819621 0.8019385 0.6811763 0.8019385 0.6811763 0.8019385 0.6811763 0.8019385 0.6788489 0.8019385 0.6788489 0.8019385 0.6788489 0.8019385 0.6750698 0.8019385 0.6750698 0.8019385 0.6750698 0.8019385 0.669984 0.8019385 0.669984 0.8019385 0.669984 0.8019385 0.6637867 0.8019385 0.6637867 0.8019385 0.6637867 0.8019385 0.6567163 0.8019385 0.6567163 0.8019385 0.6567163 0.8019385 0.6490446 0.8019385 0.6490446 0.8019385 0.6490446 0.8019385 0.6410663 0.8019385 0.6410663 0.8591893 0.6819621 0.8019385 0.6819621 0.8019385 0.6819621 0.6745052 0.4806725 0.6745052 0.4798676 0.8258413 0.4806725 0.6745052 0.4830562 0.6745052 0.4806725 0.8258413 0.4830562 0.6745052 0.486927 0.6745052 0.4830562 0.8258413 0.4869271 0.6745052 0.4921364 0.6745052 0.486927 0.8258413 0.4921364 0.6745052 0.4984839 0.6745052 0.4921364 0.8258413 0.498484 0.6745052 0.5057258 0.6745052 0.4984839 0.8258413 0.5057259 0.6745052 0.5135837 0.6745052 0.5057258 0.8258413 0.5135837 0.6745052 0.5217556 0.6745052 0.5135837 0.8258413 0.5217556 0.6745052 0.5299276 0.6745052 0.5217556 0.8258413 0.5299276 0.6745052 0.5377855 0.6745052 0.5299276 0.8258413 0.5377855 0.6745052 0.5450274 0.6745052 0.5377855 0.8258413 0.5450274 0.6745052 0.5513749 0.6745052 0.5450274 0.8258413 0.551375 0.6745052 0.5565842 0.6745052 0.5513749 0.8258413 0.5565842 0.6745052 0.560455 0.6745052 0.5565842 0.8258411 0.5604551 0.6745052 0.5628387 0.6745052 0.560455 0.8258411 0.5628388 0.6745052 0.5636436 0.6745052 0.5628387 0.8258411 0.5636436 0.8641428 0.50382 0.8258413 0.5057259 0.8641428 0.4957171 0.1946563 0.08363991 0.1386653 0.08363986 0.1946563 0.07423043 0.8641428 0.4957171 0.8258413 0.498484 0.8641428 0.4886149 0.8641428 0.4886149 0.8258413 0.4921364 0.8641428 0.4827862 0.8258413 0.4869271 0.8258413 0.4830562 0.8641428 0.4827862 0.8258413 0.4830562 0.8258413 0.4806725 0.8641428 0.4784551 0.8258413 0.4806725 0.8258413 0.4798677 0.8641428 0.4757881 0.8258411 0.5636436 0.8258411 0.5628388 0.8641428 0.5686239 0.8641428 0.5677233 0.8258411 0.5628388 0.8641428 0.5650562 0.8641428 0.5650562 0.8258411 0.5604551 0.8641428 0.5607252 0.8258413 0.5565842 0.8258413 0.551375 0.8641428 0.5607252 0.8258413 0.551375 0.8258413 0.5450274 0.8641428 0.5548965 0.8641428 0.5477943 0.8258413 0.5450274 0.8641428 0.5396913 0.8258413 0.5377855 0.8258413 0.5299276 0.8641428 0.5396913 0.8641428 0.5308993 0.8258413 0.5299276 0.8641428 0.5217557 0.8258413 0.5217556 0.8258413 0.5135837 0.8641428 0.5217557 0.8641428 0.5126122 0.8258413 0.5135837 0.8641428 0.50382 0.8556429 0.1181374 0.5471681 0.1181374 0.8556429 0.1060235 0.1946563 0.06077021 0.1386653 0.06077015 0.1946563 0.05723667 0.1386651 0.1697661 0.1386653 0.162044 0.1946562 0.1697661 0.1946562 0.1418994 0.1386653 0.1418994 0.1946562 0.1302511 0.1946563 0.1060234 0.1386653 0.1060234 0.1946563 0.09437507 0.1946563 0.07423043 0.1386653 0.07423043 0.1946563 0.06650829 0.1946562 0.1790377 0.1386651 0.1790377 0.1946562 0.1755043 0.1946562 0.1620441 0.1386653 0.162044 0.1946562 0.1526346 0.1946562 0.1302511 0.1386653 0.1302511 0.1946563 0.1181373 0.1946563 0.09437507 0.1386653 0.09437495 0.1946563 0.08363991 0.1946563 0.06650829 0.1386653 0.06650829 0.1946563 0.06077021 0.1946562 0.1755043 0.1386651 0.1755042 0.1946562 0.1697661 0.1946562 0.1526346 0.1386653 0.1526346 0.1946562 0.1418994 0.1946563 0.1181373 0.1386653 0.1181373 0.1946563 0.1060234 0.9168558 0.1526347 0.8556429 0.1526347 0.9168558 0.1418995 0.8556429 0.08364003 0.5471681 0.08363991 0.8556429 0.07423049 0.8556429 0.06077033 0.5471681 0.06077027 0.8556429 0.05723685 0.8556429 0.1697663 0.5471681 0.1697662 0.8556429 0.1620442 0.8556429 0.1418995 0.5471681 0.1418995 0.8556429 0.1302512 0.8556429 0.1060235 0.5471681 0.1060235 0.8556429 0.09437513 0.8556429 0.07423049 0.5471681 0.07423049 0.8556429 0.06650841 0.8556429 0.1790378 0.5471681 0.1790378 0.8556429 0.1755043 0.8556429 0.1620442 0.5471681 0.1620441 0.8556429 0.1526347 0.8556429 0.1302512 0.5471681 0.1302512 0.8556429 0.1181374 0.8556429 0.09437513 0.5471681 0.09437507 0.8556429 0.08364003 0.8556429 0.06650841 0.5471681 0.06650841 0.8556429 0.06077033 0.8556429 0.1755043 0.5471681 0.1755043 0.8556429 0.1697663 0.8556429 0.1526347 0.5471681 0.1526347 0.8556429 0.1418995 0.9168558 0.1755045 0.9168558 0.1697663 0.9813775 0.1695963 0.9168558 0.1181374 0.8556429 0.1181374 0.9168558 0.1060236 0.9168558 0.08364003 0.8556429 0.08364003 0.9168558 0.07423061 0.9168558 0.06077039 0.8556429 0.06077033 0.9168558 0.05723685 0.9168558 0.1697663 0.8556429 0.1697663 0.9168558 0.1620442 0.9168558 0.1418995 0.8556429 0.1418995 0.9168558 0.1302513 0.9168558 0.1060236 0.8556429 0.1060235 0.9168558 0.09437525 0.9168558 0.07423061 0.8556429 0.07423049 0.9168558 0.06650847 0.9168558 0.1790379 0.8556429 0.1790378 0.9168558 0.1755045 0.9168558 0.1620442 0.8556429 0.1620442 0.9168558 0.1526347 0.9168558 0.1302513 0.8556429 0.1302512 0.9168558 0.1181374 0.9168558 0.09437525 0.8556429 0.09437513 0.9168558 0.08364003 0.9168558 0.06650847 0.8556429 0.06650841 0.9168558 0.06077039 0.9168558 0.1755045 0.8556429 0.1755043 0.9168558 0.1697663 0.9168558 0.1526347 0.9168558 0.1418995 0.9813775 0.149082 0.9168558 0.1181374 0.9168558 0.1060236 0.9813775 0.1181374 0.9168558 0.08364003 0.9168558 0.07423061 0.9813775 0.08719283 0.9813775 0.06667834 0.9168558 0.06077039 0.9813775 0.0635088 0.9813775 0.1738361 0.9168558 0.180231 0.9813775 0.1727659 0.9168558 0.1697663 0.9168558 0.1620442 0.9813775 0.1644492 0.9168558 0.1418995 0.9168558 0.1302513 0.9813775 0.1394523 0.9168558 0.1060236 0.9168558 0.09437525 0.9813775 0.1072711 0.9168558 0.07423061 0.9168558 0.06650847 0.9813775 0.07875239 0.9813775 0.0635088 0.9168558 0.05723685 0.9813775 0.06243854 0.9168558 0.1790379 0.9168558 0.1755045 0.9813775 0.1727659 0.9168558 0.1620442 0.9168558 0.1526347 0.9813775 0.1575223 0.9168558 0.1302513 0.9168558 0.1181374 0.9813775 0.1290037 0.9168558 0.09437525 0.9168558 0.08364003 0.9813775 0.09682232 0.9168558 0.06650847 0.9168558 0.06077039 0.9813775 0.07182544 0.9813775 0.1695963 0.9813775 0.1644492 1.032664 0.1503072 0.9813775 0.149082 0.9813775 0.1394523 1.032664 0.1374825 0.9813775 0.1181374 0.9813775 0.1072711 1.032664 0.1181374 0.9813775 0.08719283 0.9813775 0.07875239 1.032664 0.09879219 0.9813775 0.06667834 0.9813775 0.0635088 1.032664 0.08596748 1.032664 0.1529577 0.9813775 0.1738361 1.032664 0.1522886 1.032664 0.1470894 0.9813775 0.1644492 1.032664 0.1427591 0.9813775 0.1394523 0.9813775 0.1290037 1.032664 0.1314626 1.032664 0.1113442 0.9813775 0.1072711 1.032664 0.1048122 1.032664 0.09351563 0.9813775 0.07875239 1.032664 0.08918529 0.9813775 0.0635088 0.9813775 0.06243854 1.032664 0.0839861 1.032664 0.1522886 0.9813775 0.1727659 1.032664 0.1503072 0.9813775 0.1575223 0.9813775 0.149082 1.032664 0.1427591 0.9813775 0.1290037 0.9813775 0.1181374 1.032664 0.1249305 0.9813775 0.09682232 0.9813775 0.08719283 1.032664 0.1048122 0.9813775 0.07182544 0.9813775 0.06667834 1.032664 0.08918529 1.065752 0.1345699 1.032664 0.1503072 1.065752 0.1329262 1.065752 0.128019 1.032664 0.1374825 1.065752 0.1249439 1.065752 0.1181374 1.032664 0.1181374 1.065752 0.1146674 1.065752 0.1082558 1.032664 0.09879219 1.065752 0.1055605 1.032664 0.08596748 1.032664 0.0839861 1.065752 0.1017049 1.065752 0.1359238 1.032664 0.1529577 1.065752 0.1355819 1.065752 0.1329262 1.032664 0.1470894 1.065752 0.1307142 1.032664 0.1314626 1.032664 0.1249305 1.065752 0.1249439 1.065752 0.1146674 1.032664 0.1113442 1.065752 0.1113308 1.065752 0.1055605 1.032664 0.09351563 1.065752 0.1033485 1.065752 0.1006928 1.032664 0.0839861 1.065752 0.100351 1.065752 0.1355819 1.032664 0.1522886 1.065752 0.1345699 1.065752 0.1307142 1.032664 0.1427591 1.065752 0.128019 1.065752 0.1216074 1.032664 0.1249305 1.065752 0.1181374 1.065752 0.1113308 1.032664 0.1048122 1.065752 0.1082558 1.032664 0.08918529 1.032664 0.08596748 1.065752 0.1033485 1.082295 0.1238262 1.065752 0.1345699 1.082295 0.1232571 1.082295 0.1215583 1.065752 0.128019 1.082295 0.1204939 1.082295 0.1181375 1.065752 0.1181374 1.082295 0.1169363 1.082295 0.1147167 1.065752 0.1082558 1.082295 0.1137836 1.082295 0.1124489 1.065752 0.1017049 1.082295 0.1120985 1.082295 0.1242949 1.065752 0.1359238 1.082295 0.1241766 1.082295 0.1232571 1.065752 0.1329262 1.082295 0.1224914 1.082295 0.1204939 1.065752 0.1249439 1.082295 0.1193388 1.082295 0.1169363 1.065752 0.1146674 1.082295 0.1157812 1.082295 0.1137836 1.065752 0.1055605 1.082295 0.1130179 1.082295 0.1120985 1.065752 0.1006928 1.082295 0.1119802 1.082295 0.1241766 1.065752 0.1355819 1.082295 0.1238262 1.082295 0.1224914 1.065752 0.1307142 1.082295 0.1215583 1.082295 0.1193388 1.065752 0.1216074 1.082295 0.1181375 1.082295 0.1157812 1.065752 0.1113308 1.082295 0.1147167 1.082295 0.1130179 1.065752 0.1033485 1.082295 0.1124489 1.086528 0.1181375 1.082295 0.1238262 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1215583 1.086528 0.1181375 1.082295 0.1181375 1.082295 0.1169363 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1147167 1.086528 0.1181375 1.082295 0.1124489 1.082295 0.1120985 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1242949 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1232571 1.086528 0.1181375 1.082295 0.1204939 1.082295 0.1193388 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1169363 1.086528 0.1181375 1.082295 0.1137836 1.082295 0.1130179 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1120985 1.086528 0.1181375 1.082295 0.1241766 1.082295 0.1238262 1.086528 0.1181375 1.082295 0.1224914 1.082295 0.1215583 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1193388 1.086528 0.1181375 1.082295 0.1157812 1.082295 0.1147167 1.086528 0.1181375 1.086528 0.1181375 1.082295 0.1130179 1.086528 0.1181375 0.3102057 0.1181373 0.1946563 0.1181373 0.3102057 0.1060234 0.3102057 0.08363991 0.1946563 0.08363991 0.3102057 0.07423043 0.3102057 0.06077021 0.1946563 0.06077021 0.3102057 0.05723673 0.3102057 0.1697662 0.1946562 0.1697661 0.3102057 0.1620441 0.3102057 0.1418995 0.1946562 0.1418994 0.3102057 0.1302511 0.3102057 0.1060234 0.1946563 0.1060234 0.3102057 0.09437507 0.3102057 0.07423043 0.1946563 0.07423043 0.3102057 0.06650829 0.3102057 0.1790377 0.1946562 0.1790377 0.3102057 0.1755043 0.3102057 0.1620441 0.1946562 0.1620441 0.3102057 0.1526346 0.3102057 0.1302511 0.1946562 0.1302511 0.3102057 0.1181373 0.3102057 0.09437507 0.1946563 0.09437507 0.3102057 0.08363991 0.3102057 0.06650829 0.1946563 0.06650829 0.3102057 0.06077021 0.3102057 0.1755043 0.1946562 0.1755043 0.3102057 0.1697662 0.3102057 0.1526346 0.1946562 0.1526346 0.3102057 0.1418995 0.5471681 0.06650841 0.3102057 0.06650829 0.5471681 0.06077027 0.5471681 0.1526347 0.3102057 0.1526346 0.5471681 0.1418995 0.5471681 0.09437507 0.3102057 0.09437507 0.5471681 0.08363991 0.5471681 0.1755043 0.3102057 0.1755043 0.5471681 0.1697662 0.5471681 0.1302512 0.3102057 0.1302511 0.5471681 0.1181374 0.5471681 0.07423049 0.3102057 0.07423043 0.5471681 0.06650841 0.5471681 0.1620441 0.3102057 0.1620441 0.5471681 0.1526347 0.5471681 0.1060235 0.3102057 0.1060234 0.5471681 0.09437507 0.5471681 0.06077027 0.3102057 0.06077021 0.5471681 0.05723679 0.5471681 0.1418995 0.3102057 0.1418995 0.5471681 0.1302512 0.5471681 0.1790378 0.3102057 0.1790377 0.5471681 0.1755043 0.5471681 0.08363991 0.3102057 0.08363991 0.5471681 0.07423049 0.5471681 0.1181374 0.3102057 0.1181373 0.5471681 0.1060235 0.5471681 0.1697662 0.3102057 0.1697662 0.5471681 0.1620441 0.6745052 0.5628387 0.6745052 0.5636436 0.6745052 0.559051 0.6745052 0.560455 0.6745052 0.5628387 0.6745052 0.5568872 0.6745052 0.5565842 0.6745052 0.560455 0.6745052 0.5533732 0.6745052 0.5486441 0.6745052 0.5513749 0.6745052 0.5533732 0.6745052 0.5450274 0.6745052 0.5513749 0.6745052 0.5428818 0.6745052 0.5363075 0.6745052 0.5377855 0.6745052 0.5428818 0.6745052 0.5299276 0.6745052 0.5377855 0.6745052 0.5291742 0.6745052 0.5217556 0.6745052 0.5217556 0.6745052 0.5291742 0.6745052 0.5135837 0.6745052 0.5217556 0.6745052 0.514337 0.6745052 0.5072037 0.6745052 0.5057258 0.6745052 0.514337 0.6745052 0.4984839 0.6745052 0.5057258 0.6745052 0.5006295 0.6745052 0.4921364 0.6745052 0.4984839 0.6745052 0.494867 0.6745052 0.486927 0.6745052 0.4921364 0.6745052 0.4901381 0.6745052 0.4830562 0.6745052 0.486927 0.6745052 0.486624 0.6745052 0.4806725 0.6745052 0.4830562 0.6745052 0.4844601 0.6745052 0.4837295 0.6745052 0.4798676 0.6745052 0.4844601 0.7345578 0.5568872 0.6745052 0.5568872 0.7345578 0.5590512 0.7345578 0.5428819 0.6745052 0.5428818 0.7345578 0.5486441 0.7345579 0.5217556 0.6745052 0.5217556 0.7345579 0.5291742 0.7345579 0.5006295 0.6745052 0.5006295 0.7345579 0.5072037 0.7345579 0.486624 0.6745052 0.486624 0.7345579 0.4901381 0.7345578 0.5533732 0.6745052 0.5533732 0.7345578 0.5568872 0.7345579 0.5363075 0.6745052 0.5363075 0.7345578 0.5428819 0.7345579 0.5143371 0.6745052 0.514337 0.7345579 0.5217556 0.7345579 0.4948672 0.6745052 0.494867 0.7345579 0.5006295 0.7345579 0.4844601 0.6745052 0.4844601 0.7345579 0.486624 0.7345578 0.5590512 0.6745052 0.559051 0.7345578 0.5597818 0.7345578 0.5486441 0.6745052 0.5486441 0.7345578 0.5533732 0.7345579 0.5291742 0.6745052 0.5291742 0.7345579 0.5363075 0.7345579 0.5072037 0.6745052 0.5072037 0.7345579 0.5143371 0.7345579 0.4901381 0.6745052 0.4901381 0.7345579 0.4948672 0.7345579 0.4837295 0.6745052 0.4837295 0.7345579 0.4844601 0.1946562 0.1802308 0.1386653 0.1802308 0.1946562 0.1790377 0.8556429 0.180231 0.5471681 0.1802309 0.8556429 0.1790379 0.9168558 0.180231 0.8556429 0.180231 0.9168558 0.1790379 0.3102057 0.1802308 0.1946562 0.1802308 0.3102057 0.1790377 0.5471681 0.1802309 0.3102057 0.1802308 0.5471681 0.1790378 0.8258413 0.4798677 0.8258413 0.4798677 0.6745052 0.4798676 0.1386651 0.1802308 0.1386651 0.1802308 0.1386651 0.1790377 0.1386651 0.1790377 0.1386651 0.1790377 0.1946562 0.1790377 0.5471681 0.1790378 0.5471681 0.1790378 0.8556429 0.1790378 0.9168558 0.1790379 0.9168558 0.1790379 0.9168558 0.180231 0.8556429 0.1790378 0.8556429 0.1790378 0.9168558 0.1790379 0.1946562 0.1790377 0.1946562 0.1790377 0.3102057 0.1790377 0.3102057 0.1790377 0.3102057 0.1790377 0.5471681 0.1790378 0.6745052 0.4798676 0.6745052 0.4798676 0.6745052 0.4837295 0.6745052 0.4837295 0.6745052 0.4837295 0.7345579 0.4837295 0.6745052 0.4798676 0.6745052 0.4798676 0.8258413 0.4798677 0.1386653 0.1790377 0.1386653 0.1790377 0.1386653 0.1802308 0.1946562 0.1790377 0.1946562 0.1790377 0.1386653 0.1790377 0.8556429 0.1790379 0.8556429 0.1790379 0.5471681 0.1790378 0.9168558 0.180231 0.9168558 0.180231 0.9168558 0.1790379 0.9168558 0.1790379 0.9168558 0.1790379 0.8556429 0.1790379 0.3102057 0.1790377 0.3102057 0.1790377 0.1946562 0.1790377 0.5471681 0.1790378 0.5471681 0.1790378 0.3102057 0.1790377 0.6745052 0.4837295 0.6745052 0.4837295 0.6745052 0.4798676 0.7345579 0.4837295 0.7345579 0.4837295 0.6745052 0.4837295 0.3164696 0.7825645 0.3164696 0.7776088 0.3164696 0.7874015 0.933149 0.7776089 0.9481284 0.7819877 0.933149 0.7824458 0.9481284 0.7848455 0.9481284 0.787703 0.9481284 0.7874017 0.933149 0.7923574 0.933149 0.7875204 0.3164696 0.7923572 0.9481284 0.7874017 0.933149 0.7874017 0.9481284 0.7845439 0.3164696 0.7825645 0.933149 0.7825647 0.3164696 0.7776088 0.3164696 0.7824457 0.3164696 0.7776088 0.933149 0.7824458 0.9481284 0.7902592 0.9481284 0.787703 0.933149 0.7923574 0.933149 0.7874017 0.3164696 0.7874015 0.933149 0.7824458 0.9481284 0.7848455 0.9481284 0.7819877 0.933149 0.7825647 0.3164696 0.7875202 0.3164696 0.7825645 0.3164696 0.7923572 0.933149 0.7923574 0.3164696 0.7923572 0.933149 0.7874017 0.3164696 0.7875202 0.933149 0.7875204 0.3164696 0.7825645 0.9481284 0.7845439 0.9481284 0.7819877 0.9481284 0.7874017 0.933149 0.7875204 0.9481284 0.787703 0.933149 0.7825647 0.933149 0.7923574 0.933149 0.7874017 0.9481284 0.7902592 0.3164696 0.7875202 0.3014845 0.7877029 0.3164696 0.7923572 0.3164696 0.7776088 0.3014845 0.7819877 0.3164696 0.7825645 0.3014845 0.7874015 0.3164696 0.7874015 0.3014845 0.7902592 0.3014845 0.7848454 0.3014845 0.7877029 0.3164696 0.7825645 0.3014845 0.7877029 0.3014845 0.7848454 0.3014845 0.7902592 0.3014845 0.7848454 0.3014845 0.7819877 0.3014845 0.7874015 0.3014845 0.7845439 0.3014845 0.7819877 0.3164696 0.7824457 0.3164696 0.7824457 0.3164696 0.7874015 0.3014845 0.7845439 0.3164696 0.8414418 0.3164696 0.8462788 0.3164696 0.8463975 0.933149 0.8512347 0.9481284 0.8468558 0.933149 0.8463977 0.9481284 0.841442 0.9481284 0.843998 0.9481284 0.8385843 0.933149 0.8364861 0.933149 0.8413231 0.3164696 0.8364861 0.9481284 0.841442 0.933149 0.8414418 0.9481284 0.8442996 0.3164696 0.8462788 0.933149 0.8462788 0.3164696 0.8512345 0.3164696 0.8463975 0.3164696 0.8512345 0.933149 0.8463977 0.9481284 0.8385843 0.9481284 0.8411403 0.933149 0.8364861 0.933149 0.8414418 0.3164696 0.8414418 0.933149 0.8463977 0.9481284 0.843998 0.9481284 0.8468558 0.933149 0.8462788 0.3164696 0.841323 0.3164696 0.8462788 0.3164696 0.8364861 0.933149 0.8364861 0.3164696 0.8364861 0.933149 0.8414418 0.3164696 0.841323 0.933149 0.8413231 0.3164696 0.8462788 0.9481284 0.8468558 0.9481284 0.843998 0.9481284 0.8442996 0.933149 0.8413231 0.9481284 0.8411403 0.933149 0.8462788 0.933149 0.8364861 0.933149 0.8414418 0.9481284 0.8385843 0.3164696 0.841323 0.3014845 0.8411403 0.3164696 0.8364861 0.3164696 0.8512345 0.3014845 0.8468556 0.3164696 0.8462788 0.3014845 0.8414418 0.3164696 0.8414418 0.3014845 0.8385842 0.3014845 0.843998 0.3014845 0.8411403 0.3164696 0.8462788 0.3014845 0.8411403 0.3014845 0.843998 0.3014845 0.8385842 0.3014845 0.843998 0.3014845 0.8468556 0.3014845 0.8414418 0.3014845 0.8442994 0.3014845 0.8468556 0.3164696 0.8463975 0.3164696 0.8463975 0.3164696 0.8414418 0.3014845 0.8442994 0.3164697 0.8552066 0.3164697 0.8625076 0.3164697 0.8519233 0.9331491 0.8592246 0.9481284 0.8571717 0.9331491 0.8519235 0.9481284 0.8552066 0.9481284 0.8590649 0.9481284 0.8570998 0.9331491 0.8657909 0.3164697 0.8657907 0.9331491 0.8584899 0.9481284 0.8552066 0.9331491 0.8552066 0.9481284 0.8533136 0.3164697 0.8625076 0.9331491 0.8625077 0.3164697 0.8592244 0.3164697 0.8519233 0.3164697 0.8592244 0.9331491 0.8519235 0.9481284 0.8570998 0.9481284 0.8609582 0.9331491 0.8584899 0.9331491 0.8552066 0.3164697 0.8552066 0.9331491 0.8519235 0.9481284 0.8590649 0.9481284 0.8571717 0.9331491 0.8625077 0.3164697 0.8584898 0.3164697 0.8657907 0.3164697 0.8552066 0.3164697 0.8584898 0.3164697 0.8552066 0.9331491 0.8584899 0.3164697 0.8657907 0.9331491 0.8657909 0.3164697 0.8625076 0.9481284 0.8571717 0.9481284 0.8590649 0.9481284 0.8533136 0.9331491 0.8657909 0.9481284 0.8609582 0.9331491 0.8625077 0.9331491 0.8584899 0.9331491 0.8552066 0.9481284 0.8570998 0.3164697 0.8657907 0.3014847 0.860958 0.3164697 0.8584898 0.3164697 0.8592244 0.3014847 0.8571717 0.3164697 0.8625076 0.3014847 0.8552066 0.3164697 0.8552066 0.3014847 0.8570998 0.3014847 0.8590648 0.3014847 0.860958 0.3164697 0.8625076 0.3014847 0.8570998 0.3014847 0.860958 0.3014847 0.8552066 0.3014847 0.8552066 0.3014847 0.8590648 0.3014847 0.8533134 0.3014847 0.8533134 0.3014847 0.8571717 0.3164697 0.8519233 0.3164697 0.8519233 0.3164697 0.8552066 0.3014847 0.8533134 0.3164696 0.7663358 0.3164696 0.7696189 0.3164696 0.7736367 0.933149 0.7696191 0.9481284 0.7716718 0.933149 0.77692 0.9481284 0.7736369 0.9481284 0.7697786 0.9481284 0.7717437 0.933149 0.7703536 0.933149 0.7630526 0.3164696 0.7703535 0.9481284 0.7736369 0.933149 0.7736369 0.9481284 0.77553 0.3164696 0.7663358 0.933149 0.7663358 0.3164696 0.7696189 0.3164696 0.7696189 0.933149 0.7696191 0.3164696 0.77692 0.9481284 0.7717437 0.9481284 0.7678853 0.933149 0.7703536 0.933149 0.7736369 0.3164696 0.7736367 0.933149 0.77692 0.9481284 0.7697786 0.9481284 0.7716718 0.933149 0.7663358 0.3164696 0.7630525 0.3164696 0.7663358 0.3164696 0.7703535 0.933149 0.7703536 0.3164696 0.7703535 0.933149 0.7736369 0.3164696 0.7630525 0.933149 0.7630526 0.3164696 0.7663358 0.9481284 0.77553 0.9481284 0.7716718 0.9481284 0.7736369 0.933149 0.7630526 0.9481284 0.7678853 0.933149 0.7663358 0.933149 0.7703536 0.933149 0.7736369 0.9481284 0.7717437 0.3164696 0.7630525 0.3014845 0.7678852 0.3164696 0.7703535 0.3164696 0.7696189 0.3014845 0.7716716 0.3164696 0.7663358 0.3014845 0.7736367 0.3164696 0.7736367 0.3014845 0.7717435 0.3014845 0.7697784 0.3014845 0.7678852 0.3164696 0.7663358 0.3014845 0.7678852 0.3014845 0.7697784 0.3014845 0.7717435 0.3014845 0.7697784 0.3014845 0.7716716 0.3014845 0.7736367 0.3014845 0.7755299 0.3014845 0.7716716 0.3164696 0.77692 0.3164696 0.77692 0.3164696 0.7736367 0.3014845 0.7755299 0.4723973 0.9288858 0.4928875 0.9301345 0.4723786 0.8400695 0.4723973 0.9332315 0.4723785 0.8444151 0.4928875 0.9319828 0.4723973 0.9332315 0.4723973 0.9288858 0.422674 0.9319828 0.422674 0.9301345 0.3859533 0.8413181 0.422674 0.9319828 0.614745 0.8431665 0.614745 0.8413183 0.4928875 0.9319828 0.4723786 0.8400695 0.614745 0.8413183 0.4723785 0.8444151 0.3859533 0.8413181 0.422674 0.9301345 0.4723786 0.8400695 0.4723973 0.9332315 0.422674 0.9319828 0.4723785 0.8444151 0.4928875 0.9319828 0.4928875 0.9301345 0.4723973 0.9332315 0.3859533 0.8413181 0.4723786 0.8400695 0.3859533 0.8431665 0.4723973 0.7001898 0.4928875 0.6989412 0.4723786 0.789006 0.4723973 0.6958442 0.4723786 0.7846603 0.4928875 0.6970929 0.4723973 0.7001898 0.422674 0.6989412 0.4723973 0.6958442 0.422674 0.6970929 0.422674 0.6989412 0.3859534 0.7859092 0.614745 0.7859092 0.614745 0.7877573 0.4928875 0.6970929 0.4723786 0.7846603 0.4723786 0.789006 0.614745 0.7859092 0.3859534 0.7877573 0.422674 0.6989412 0.4723786 0.789006 0.4723973 0.6958442 0.422674 0.6970929 0.4723786 0.7846603 0.4928875 0.6989412 0.4723973 0.7001898 0.4928875 0.6970929 0.3859534 0.7859092 0.3859534 0.7877573 0.4723786 0.7846603 0.4723973 0.6368625 0.4928875 0.6376898 0.4723786 0.770924 0.4723973 0.6397416 0.4723786 0.7738031 0.4928875 0.6389142 0.4723973 0.6397416 0.4723973 0.6368625 0.422674 0.6389142 0.422674 0.6389142 0.422674 0.6376898 0.3859534 0.7729757 0.614745 0.7717514 0.4928875 0.6376898 0.614745 0.7729757 0.4723786 0.7738031 0.4723786 0.770924 0.614745 0.7729757 0.3859534 0.7717514 0.422674 0.6376898 0.4723786 0.770924 0.4723973 0.6397416 0.422674 0.6389142 0.4723786 0.7738031 0.4928875 0.6389142 0.4928875 0.6376898 0.4723973 0.6397416 0.3859534 0.7729757 0.3859534 0.7717514 0.4723786 0.7738031 0.4723973 0.9922131 0.4928875 0.9913858 0.4723786 0.8581515 0.4723973 0.9893341 0.4723786 0.8552726 0.4928875 0.9901614 0.4723973 0.9922131 0.422674 0.9913858 0.4723973 0.9893341 0.422674 0.9913858 0.3859534 0.8573242 0.422674 0.9901614 0.614745 0.8573243 0.4928875 0.9913858 0.614745 0.8560998 0.4723786 0.8552726 0.4723786 0.8581515 0.614745 0.8560998 0.3859534 0.8573242 0.422674 0.9913858 0.4723786 0.8581515 0.4723973 0.9893341 0.422674 0.9901614 0.4723786 0.8552726 0.4928875 0.9901614 0.4928875 0.9913858 0.4723973 0.9893341 0.3859534 0.8560998 0.3859534 0.8573242 0.4723786 0.8552726 0.2604718 0.8001416 0.2567958 0.7334703 0.2428945 0.8006055 0.2604718 0.802059 0.2428945 0.8015953 0.2567958 0.7353877 0.2706971 0.734924 0.2706971 0.7339342 0.278049 0.8015953 0.2604718 0.802059 0.2604718 0.8001416 0.2428945 0.8015953 0.2567958 0.7334703 0.2706971 0.7339342 0.2567958 0.7353877 0.2428945 0.8015953 0.2428945 0.8006055 0.2428945 0.734924 0.278049 0.8006055 0.2706971 0.7339342 0.2604718 0.8001416 0.278049 0.8015953 0.2604718 0.802059 0.2706971 0.734924 0.278049 0.8015953 0.278049 0.8006055 0.2604718 0.802059 0.2428945 0.7339342 0.2567958 0.7334703 0.2428945 0.734924 0.2604718 0.7786017 0.2567959 0.6779663 0.2428945 0.7782945 0.2604718 0.7773315 0.2428945 0.7776387 0.2567959 0.6766961 0.2706971 0.6770033 0.2706971 0.677659 0.278049 0.7776387 0.2604718 0.7773315 0.2604718 0.7786017 0.2428945 0.7776387 0.2567959 0.6779663 0.2706971 0.677659 0.2567959 0.6766961 0.2428945 0.7776387 0.2428945 0.7782945 0.2428946 0.6770033 0.278049 0.7782945 0.2706971 0.677659 0.2604718 0.7786017 0.278049 0.7776387 0.2604718 0.7773315 0.2706971 0.6770033 0.278049 0.7776387 0.278049 0.7782945 0.2604718 0.7773315 0.2428946 0.677659 0.2567959 0.6779663 0.2428946 0.6770033 0.2604718 0.8503856 0.2567958 0.951021 0.2428945 0.8506929 0.2604718 0.8516559 0.2428945 0.8513486 0.2567958 0.9522913 0.2706971 0.9513282 0.278049 0.8506929 0.2706971 0.9519839 0.2604718 0.8516559 0.2604718 0.8503856 0.2428945 0.8513486 0.2567958 0.951021 0.2706971 0.9513282 0.2567958 0.9522913 0.2428945 0.8513486 0.2428945 0.8506929 0.2428945 0.9519839 0.278049 0.8506929 0.2706971 0.9513282 0.2604718 0.8503856 0.278049 0.8513486 0.2604718 0.8516559 0.2706971 0.9519839 0.278049 0.8513486 0.278049 0.8506929 0.2604718 0.8516559 0.2428945 0.9519839 0.2428945 0.9513282 0.2567958 0.9522913 0.01821303 0.8503856 0.01453715 0.951021 6.35862e-4 0.8506929 0.01821303 0.8516559 6.35862e-4 0.8513486 0.01453715 0.9522913 0.02843838 0.9519839 0.02843838 0.9513282 0.0357902 0.8513486 0.01821303 0.8503856 6.35862e-4 0.8506929 0.01821303 0.8516559 0.01453715 0.951021 0.02843838 0.9513282 0.01453715 0.9522913 6.35862e-4 0.8506929 6.35833e-4 0.9513282 6.35862e-4 0.8513486 0.0357902 0.8506929 0.02843838 0.9513282 0.01821303 0.8503856 0.0357902 0.8513486 0.01821303 0.8516559 0.02843838 0.9519839 0.0357902 0.8513486 0.0357902 0.8506929 0.01821303 0.8516559 6.35833e-4 0.9513282 0.01453715 0.951021 6.35833e-4 0.9519839 0.01821303 0.7786017 0.01453721 0.6779663 6.35833e-4 0.7782945 0.01821303 0.7773315 6.35833e-4 0.7776387 0.01453721 0.6766961 0.0284385 0.677659 0.0357902 0.7782945 0.0284385 0.6770033 0.01821303 0.7786017 6.35833e-4 0.7782945 0.01821303 0.7773315 0.01453721 0.6766961 0.01453721 0.6779663 0.0284385 0.6770033 6.35833e-4 0.7776387 6.35833e-4 0.7782945 6.35862e-4 0.6770033 0.0357902 0.7782945 0.0284385 0.677659 0.01821303 0.7786017 0.0357902 0.7776387 0.01821303 0.7773315 0.0284385 0.6770033 0.0357902 0.7782945 0.01821303 0.7786017 0.0357902 0.7776387 6.35862e-4 0.677659 0.01453721 0.6779663 6.35862e-4 0.6770033 0.2604718 0.8423041 0.2567958 0.9089754 0.2428945 0.8418403 0.2604718 0.8403868 0.2428945 0.8408507 0.2567958 0.9070581 0.2706971 0.9085116 0.278049 0.8418403 0.2706971 0.907522 0.2604718 0.8403868 0.2604718 0.8423041 0.2428945 0.8408507 0.2567958 0.9089754 0.2706971 0.9085116 0.2567958 0.9070581 0.2428945 0.8408507 0.2428945 0.8418403 0.2428945 0.907522 0.278049 0.8418403 0.2706971 0.9085116 0.2604718 0.8423041 0.278049 0.8408507 0.2604718 0.8403868 0.2706971 0.907522 0.278049 0.8418403 0.2604718 0.8423041 0.278049 0.8408507 0.2428945 0.907522 0.2428945 0.9085116 0.2567958 0.9070581 0.01821309 0.8394201 0.01453715 0.9060915 6.35862e-4 0.8389563 0.01821309 0.8375028 6.35862e-4 0.8379666 0.01453715 0.9041741 0.02843844 0.9056276 0.0357902 0.8389563 0.02843844 0.9046379 0.01821309 0.8375028 0.01821309 0.8394201 6.35862e-4 0.8379666 0.01453715 0.9060915 0.02843844 0.9056276 0.01453715 0.9041741 6.35862e-4 0.8379666 6.35862e-4 0.8389563 6.35833e-4 0.9046379 0.0357902 0.8389563 0.02843844 0.9056276 0.01821309 0.8394201 0.0357902 0.8379666 0.01821309 0.8375028 0.02843844 0.9046379 0.0357902 0.8389563 0.01821309 0.8394201 0.0357902 0.8379666 6.35833e-4 0.9046379 6.35833e-4 0.9056276 0.01453715 0.9041741 0.01821303 0.8001416 0.01453715 0.7334703 6.35862e-4 0.8006055 0.01821303 0.802059 6.35862e-4 0.8015953 0.01453715 0.7353877 0.02843838 0.734924 0.02843838 0.7339342 0.0357902 0.8015953 0.01821303 0.802059 0.01821303 0.8001416 6.35862e-4 0.8015953 0.01453715 0.7334703 0.02843838 0.7339342 0.01453715 0.7353877 6.35862e-4 0.8015953 6.35862e-4 0.8006055 6.35862e-4 0.734924 0.0357902 0.8006055 0.02843838 0.7339342 0.01821303 0.8001416 0.0357902 0.8015953 0.01821303 0.802059 0.02843838 0.734924 0.0357902 0.8015953 0.0357902 0.8006055 0.01821303 0.802059 6.35862e-4 0.7339342 0.01453715 0.7334703 6.35862e-4 0.734924 0.6377521 0.2334219 0.6935515 0.2334218 0.6377521 0.2320805 -0.02097761 0.2334219 0.2864438 0.2334219 -0.02097761 0.2320806 -0.08198142 0.2334221 -0.02097761 0.2334219 -0.08198142 0.2320806 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 0.5225971 0.2334219 0.6377521 0.2334219 0.5225971 0.2320805 0.2864438 0.2334219 0.5225971 0.2334219 0.2864438 0.2320806 0.8019385 0.6183457 0.8019385 0.6070626 0.8019385 0.6032835 0.8019385 0.6183457 0.8019385 0.6410663 0.8019385 0.6254161 0.8019385 0.6183457 0.8019385 0.6121485 0.8019385 0.6070626 0.8019385 0.6121485 0.8019385 0.6183458 0.8019385 0.6254162 0.8019385 0.6009562 0.8019385 0.6032835 0.8019385 0.6001704 0.8019385 0.6009562 0.8019385 0.6032835 0.8019385 0.6070626 0.8591893 0.6322777 0.8591893 0.6410663 0.7149143 0.6322777 0.8019385 0.6330879 0.8019385 0.6410663 0.8019385 0.6254162 0.8019385 0.6032835 0.8019385 0.6009562 0.8019385 0.6121485 0.8019385 0.6637867 0.8019385 0.669984 0.8019385 0.6567163 0.8019385 0.6750699 0.8019385 0.6410663 0.8019385 0.669984 0.8019385 0.6750699 0.8019385 0.6788491 0.8019385 0.6811763 0.8019385 0.6788489 0.8019385 0.669984 0.8019385 0.6750699 0.8019385 0.6750698 0.8019385 0.669984 0.8019385 0.6788489 0.8019385 0.6637867 0.8019385 0.6410663 0.8019385 0.669984 0.8019385 0.6490446 0.8019385 0.6410663 0.8019385 0.6567163 0.8019385 0.6410663 0.8019385 0.6330879 0.8019385 0.6254161 0.8019385 0.6009562 0.8019385 0.6070626 0.8019385 0.6121485 0.8019385 0.6032835 0.8019385 0.6009562 0.8019385 0.6001704 0.8019385 0.6183457 0.8019385 0.6032835 0.8019385 0.6410663 0.8019385 0.669984 0.8019385 0.6410663 0.8019385 0.6567163 0.8019385 0.6811763 0.8019385 0.6819621 0.8019385 0.6750699 0.8019385 0.6410663 0.8019385 0.6032835 0.8019385 0.6410663 0.8019385 0.6819621 0.8019385 0.6811763 0.8019385 0.6788489 0.8019385 0.6121485 0.8019385 0.6410663 0.8019385 0.6032835 0.8019385 0.6410663 0.8019385 0.6121485 0.8019385 0.6254162 0.8019385 0.669984 0.8019385 0.6410663 0.8019385 0.6750699 0.8019385 0.6819621 0.8019385 0.6788489 0.8019385 0.6750699 0.8019385 0.6410663 0.8019385 0.6490447 0.8019385 0.6567163 0.8019385 0.6410663 0.8019385 0.6410663 0.8019385 0.669984 0.8591893 0.6238267 0.8591893 0.6322777 0.7149143 0.6238267 0.8591893 0.6160383 0.8591893 0.6238267 0.7149143 0.6160385 0.8591893 0.6092116 0.8591893 0.6160383 0.7149143 0.6092116 0.8591891 0.6036093 0.8591893 0.6092116 0.7149143 0.6036093 0.8591891 0.5994462 0.8591891 0.6036093 0.7149143 0.5994462 0.8591891 0.5968828 0.8591891 0.5994462 0.7149143 0.5968828 0.8591891 0.5960173 0.8591891 0.5968828 0.7149143 0.5960173 0.8591893 0.6852498 0.8591893 0.6861153 0.7149143 0.6852498 0.8591893 0.6826862 0.8591893 0.6852498 0.7149143 0.6826862 0.8591893 0.6785231 0.8591893 0.6826862 0.7149143 0.6785233 0.8591893 0.6729208 0.8591893 0.6785231 0.7149143 0.6729208 0.8591893 0.6660942 0.8591893 0.6729208 0.7149143 0.6660942 0.8591893 0.6583058 0.8591893 0.6660942 0.7149143 0.6583058 0.8591893 0.6410663 0.8591893 0.6498548 0.7149143 0.6410663 0.8591893 0.6498548 0.8591893 0.6583058 0.7149143 0.6498548 0.8591893 0.6583058 0.8591893 0.6498548 0.8591893 0.6567163 0.6935515 0.2320805 0.7441225 0.2394983 0.6935515 0.2334219 0.6935515 0.2334219 0.7441225 0.2406971 0.6935515 0.2373943 0.7441225 0.2442475 0.7441225 0.2500131 0.6935515 0.2373943 0.7441225 0.2500131 0.7441225 0.2577721 0.6935515 0.2438453 0.6935515 0.2525271 0.7441225 0.2577721 0.6935515 0.2631056 0.6935515 0.2631056 0.7441225 0.2672268 0.6935515 0.2751746 0.7441225 0.2780133 0.7441225 0.2897174 0.6935515 0.2751746 0.7441225 0.3018892 0.7441225 0.3140609 0.6935515 0.3018892 0.7441225 0.3140609 0.7441225 0.325765 0.6935515 0.3155081 0.7441225 0.325765 0.7441225 0.3365517 0.6935515 0.3286037 0.6935515 0.3406729 0.7441225 0.3365517 0.6935515 0.3512514 0.6935515 0.3512514 0.7441225 0.3460062 0.6935515 0.359933 0.6935515 0.359933 0.7441225 0.3537654 0.6935515 0.3663842 0.7441225 0.3595309 0.7441225 0.3630813 0.6935515 0.3663842 0.7441225 0.3630813 0.7441225 0.3642802 0.6935515 0.3703566 0.6935515 0.2882702 0.7441225 0.2897174 0.6935515 0.3018892 0.6377521 0.2334219 0.6935515 0.2334219 0.6377521 0.2373943 0.6377521 0.2525271 0.6935515 0.2525271 0.6377521 0.2631056 0.6935515 0.2882702 0.6935515 0.3018892 0.6377521 0.2882702 0.6935515 0.3286037 0.6935515 0.3406729 0.6377521 0.3286038 0.6377521 0.359933 0.6935515 0.359933 0.6377521 0.3663842 0.6935515 0.2373943 0.6935515 0.2438453 0.6377521 0.2373943 0.6377521 0.2631056 0.6935515 0.2631056 0.6377521 0.2751746 0.6377521 0.3018892 0.6935515 0.3018892 0.6377521 0.3155082 0.6935515 0.3406729 0.6935515 0.3512514 0.6377521 0.3406729 0.6377521 0.3663842 0.6935515 0.3663842 0.6377521 0.3703566 0.6377521 0.2320805 0.6935515 0.2320805 0.6377521 0.2334219 0.6935515 0.2438453 0.6935515 0.2525271 0.6377521 0.2438454 0.6377521 0.2751746 0.6935515 0.2751746 0.6377521 0.2882702 0.6377521 0.3155082 0.6935515 0.3155081 0.6377521 0.3286038 0.6935515 0.3512514 0.6935515 0.359933 0.6377521 0.3512514 0.6377521 0.3703566 0.6935515 0.3703566 0.6377521 0.3716981 -0.02097761 0.2334221 0.2864438 0.2334219 -0.02097761 0.2373945 -0.02097761 0.2525272 0.2864438 0.2525271 -0.02097761 0.2631057 -0.02097761 0.2882704 0.2864438 0.2882704 -0.02097761 0.3018895 -0.02097761 0.3286039 0.2864438 0.3286039 -0.02097761 0.340673 -0.02097761 0.3599333 0.2864438 0.3599331 -0.02097761 0.3663842 -0.02097761 0.2373945 0.2864438 0.2373945 -0.02097761 0.2438455 -0.02097761 0.2631057 0.2864438 0.2631057 -0.02097761 0.2751747 -0.02097761 0.3018895 0.2864438 0.3018894 -0.02097761 0.3155083 -0.02097761 0.340673 0.2864438 0.3406729 -0.02097761 0.3512517 -0.02097761 0.3663842 0.2864438 0.3663842 -0.02097761 0.3703568 -0.02097761 0.2320806 0.2864438 0.2320806 -0.02097761 0.2334221 -0.02097761 0.2438455 0.2864438 0.2438455 -0.02097761 0.2525272 -0.02097761 0.2751747 0.2864438 0.2751747 -0.02097761 0.2882704 -0.02097761 0.3155083 0.2864438 0.3155082 -0.02097761 0.3286039 -0.02097761 0.3512517 0.2864438 0.3512515 -0.02097761 0.3599333 -0.02097761 0.3703568 0.2864438 0.3703568 -0.02097761 0.3716981 -0.02097761 0.2334221 -0.02097761 0.2373945 -0.08198142 0.2334221 -0.02097761 0.2525272 -0.02097761 0.2631057 -0.08198142 0.2525272 -0.02097761 0.2882704 -0.02097761 0.3018895 -0.08198142 0.2882705 -0.02097761 0.3286039 -0.02097761 0.340673 -0.08198142 0.3286039 -0.02097761 0.3599333 -0.02097761 0.3663842 -0.08198142 0.3599333 -0.02097761 0.2373945 -0.02097761 0.2438455 -0.08198142 0.2373945 -0.02097761 0.2631057 -0.02097761 0.2751747 -0.08198142 0.2631058 -0.02097761 0.3018895 -0.02097761 0.3155083 -0.08198142 0.3018895 -0.02097761 0.340673 -0.02097761 0.3512517 -0.08198142 0.340673 -0.02097761 0.3663842 -0.02097761 0.3703568 -0.08198142 0.3663842 -0.08198142 0.2320806 -0.02097761 0.2320806 -0.08198142 0.2334221 -0.02097761 0.2438455 -0.02097761 0.2525272 -0.08198142 0.2438455 -0.02097761 0.2751747 -0.02097761 0.2882704 -0.08198142 0.2751747 -0.02097761 0.3155083 -0.02097761 0.3286039 -0.08198142 0.3155083 -0.02097761 0.3512517 -0.02097761 0.3599333 -0.08198142 0.3512517 -0.08198142 0.3703569 -0.02097761 0.3703568 -0.08198142 0.3716983 -0.1462828 0.3633057 -0.1462828 0.3645088 -0.1973938 0.3402841 -0.08198142 0.2334221 -0.08198142 0.2373945 -0.1462828 0.2404732 -0.1462828 0.2576108 -0.08198142 0.2525272 -0.1462828 0.2670999 -0.1462828 0.289673 -0.08198142 0.2882705 -0.1462828 0.3018895 -0.1462828 0.3258526 -0.08198142 0.3286039 -0.1462828 0.3366788 -0.1462828 0.3539555 -0.08198142 0.3599333 -0.1462828 0.3597421 -0.1462828 0.2440366 -0.08198142 0.2373945 -0.1462828 0.2498233 -0.1462828 0.2670999 -0.08198142 0.2631058 -0.1462828 0.277926 -0.1462828 0.3018895 -0.08198142 0.3018895 -0.1462828 0.3141058 -0.1462828 0.3366788 -0.08198142 0.340673 -0.1462828 0.3461679 -0.1462828 0.3597421 -0.08198142 0.3663842 -0.1462828 0.3633057 -0.08198142 0.2320806 -0.08198142 0.2334221 -0.1462828 0.23927 -0.1462828 0.2498233 -0.08198142 0.2438455 -0.1462828 0.2576108 -0.1462828 0.277926 -0.08198142 0.2751747 -0.1462828 0.289673 -0.1462828 0.3141058 -0.08198142 0.3155083 -0.1462828 0.3258526 -0.1462828 0.3461679 -0.08198142 0.3512517 -0.1462828 0.3539555 -0.1462828 0.3633057 -0.08198142 0.3703569 -0.1462828 0.3645088 -0.2303687 0.3160291 -0.1973938 0.3295704 -0.2303687 0.3185158 -0.1973938 0.2634948 -0.1462828 0.2404732 -0.1973938 0.2657225 -0.1973938 0.2742086 -0.1462828 0.2576108 -0.1973938 0.2801406 -0.1973938 0.2942522 -0.1462828 0.289673 -0.1973938 0.3018895 -0.1973938 0.3168701 -0.1462828 0.3258526 -0.1973938 0.3236381 -0.1462828 0.3539555 -0.1462828 0.3597421 -0.1973938 0.3344388 -0.1973938 0.2657225 -0.1462828 0.2440366 -0.1973938 0.26934 -0.1973938 0.2801406 -0.1462828 0.2670999 -0.1973938 0.2869086 -0.1973938 0.3018895 -0.1462828 0.3018895 -0.1973938 0.3095265 -0.1973938 0.3236381 -0.1462828 0.3366788 -0.1973938 0.3295704 -0.1973938 0.3380564 -0.1462828 0.3597421 -0.1973938 0.3402841 -0.1973938 0.2627426 -0.1462828 0.23927 -0.1973938 0.2634948 -0.1462828 0.2498233 -0.1462828 0.2576108 -0.1973938 0.26934 -0.1973938 0.2869086 -0.1462828 0.277926 -0.1973938 0.2942522 -0.1973938 0.3095265 -0.1462828 0.3141058 -0.1973938 0.3168701 -0.1973938 0.3295704 -0.1462828 0.3461679 -0.1973938 0.3344388 -0.2303687 0.3057906 -0.2303687 0.3095417 -0.2468562 0.3032401 -0.1973938 0.3402841 -0.1973938 0.3410363 -0.2303687 0.3215016 -0.1973938 0.2634948 -0.1973938 0.2657225 -0.2303687 0.2822772 -0.1973938 0.2742086 -0.1973938 0.2801406 -0.2303687 0.2877498 -0.1973938 0.2942522 -0.1973938 0.3018895 -0.2303687 0.2979884 -0.1973938 0.3168701 -0.1973938 0.3236381 -0.2303687 0.3095417 -0.1973938 0.3344388 -0.1973938 0.3380564 -0.2303687 0.3185158 -0.2303687 0.2834152 -0.1973938 0.2657225 -0.2303687 0.2852631 -0.1973938 0.2801406 -0.1973938 0.2869086 -0.2303687 0.29078 -0.1973938 0.3018895 -0.1973938 0.3095265 -0.2303687 0.3018895 -0.1973938 0.3236381 -0.1973938 0.3295704 -0.2303687 0.3129988 -0.2303687 0.3203637 -0.1973938 0.3380564 -0.2303687 0.3215016 -0.1973938 0.2627426 -0.1973938 0.2634948 -0.2303687 0.2818931 -0.1973938 0.26934 -0.1973938 0.2742086 -0.2303687 0.2852631 -0.1973938 0.2869086 -0.1973938 0.2942522 -0.2303687 0.2942371 -0.2303687 0.3057906 -0.1973938 0.3095265 -0.2303687 0.3095417 -0.2510744 0.3018896 -0.2468562 0.3032401 -0.2510744 0.3018896 -0.2303687 0.3160291 -0.2303687 0.3185158 -0.2468562 0.3067845 -0.2468562 0.308679 -0.2303687 0.3215016 -0.2468562 0.308812 -0.2303687 0.2822772 -0.2303687 0.2834152 -0.2468562 0.2951003 -0.2303687 0.2877498 -0.2303687 0.29078 -0.2468562 0.2969948 -0.2303687 0.2979884 -0.2303687 0.3018895 -0.2468562 0.300539 -0.2303687 0.3095417 -0.2303687 0.3129988 -0.2468562 0.3045387 -0.2303687 0.3185158 -0.2303687 0.3203637 -0.2468562 0.3076454 -0.2303687 0.2834152 -0.2303687 0.2852631 -0.2468562 0.2954941 -0.2303687 0.29078 -0.2303687 0.2942371 -0.2468562 0.2980437 -0.2303687 0.3018895 -0.2303687 0.3057906 -0.2468562 0.3018896 -0.2303687 0.3129988 -0.2303687 0.3160291 -0.2468562 0.3057355 -0.2303687 0.3203637 -0.2303687 0.3215016 -0.2468562 0.3082851 -0.2303687 0.2818931 -0.2303687 0.2822772 -0.2468562 0.2949672 -0.2303687 0.2852631 -0.2303687 0.2877498 -0.2468562 0.2961339 -0.2303687 0.2942371 -0.2303687 0.2979884 -0.2468562 0.2992405 -0.2468562 0.3067845 -0.2468562 0.3076454 -0.2510744 0.3018896 -0.2468562 0.308679 -0.2468562 0.308812 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.2951003 -0.2510744 0.3018896 -0.2468562 0.2969948 -0.2468562 0.2980437 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.300539 -0.2510744 0.3018896 -0.2468562 0.3045387 -0.2468562 0.3057355 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.3076454 -0.2510744 0.3018896 -0.2468562 0.2954941 -0.2468562 0.2961339 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.2980437 -0.2510744 0.3018896 -0.2468562 0.3018896 -0.2468562 0.3032401 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.3057355 -0.2510744 0.3018896 -0.2468562 0.3082851 -0.2468562 0.308679 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.2949672 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.2961339 -0.2510744 0.3018896 -0.2468562 0.2992405 -0.2468562 0.300539 -0.2510744 0.3018896 0.5225971 0.2334219 0.6377521 0.2334219 0.5225971 0.2373945 0.5225971 0.2525271 0.6377521 0.2525271 0.5225971 0.2631056 0.5225971 0.2882702 0.6377521 0.2882702 0.5225971 0.3018892 0.5225971 0.3286038 0.6377521 0.3286038 0.5225971 0.3406729 0.5225971 0.3599331 0.6377521 0.359933 0.5225971 0.3663842 0.5225971 0.2373945 0.6377521 0.2373943 0.5225971 0.2438454 0.5225971 0.2631056 0.6377521 0.2631056 0.5225971 0.2751746 0.5225971 0.3018892 0.6377521 0.3018892 0.5225971 0.3155082 0.5225971 0.3406729 0.6377521 0.3406729 0.5225971 0.3512514 0.5225971 0.3663842 0.6377521 0.3663842 0.5225971 0.3703566 0.5225971 0.2320805 0.6377521 0.2320805 0.5225971 0.2334219 0.5225971 0.2438454 0.6377521 0.2438454 0.5225971 0.2525271 0.5225971 0.2751746 0.6377521 0.2751746 0.5225971 0.2882702 0.5225971 0.3155082 0.6377521 0.3155082 0.5225971 0.3286038 0.5225971 0.3512514 0.6377521 0.3512514 0.5225971 0.3599331 0.5225971 0.3703566 0.6377521 0.3703566 0.5225971 0.3716981 0.2864438 0.3018894 0.5225971 0.3018892 0.2864438 0.3155082 0.2864438 0.2438455 0.5225971 0.2438454 0.2864438 0.2525271 0.2864438 0.3599331 0.5225971 0.3599331 0.2864438 0.3663842 0.2864438 0.2320806 0.5225971 0.2320805 0.2864438 0.2334219 0.2864438 0.3286039 0.5225971 0.3286038 0.2864438 0.3406729 0.2864438 0.2373945 0.5225971 0.2373945 0.2864438 0.2438455 0.2864438 0.2631057 0.5225971 0.2631056 0.2864438 0.2751747 0.2864438 0.2882704 0.5225971 0.2882702 0.2864438 0.3018894 0.2864438 0.2525271 0.5225971 0.2525271 0.2864438 0.2631057 0.2864438 0.2334219 0.5225971 0.2334219 0.2864438 0.2373945 0.2864438 0.3703568 0.5225971 0.3703566 0.2864438 0.3716981 0.2864438 0.3512515 0.5225971 0.3512514 0.2864438 0.3599331 0.2864438 0.3663842 0.5225971 0.3663842 0.2864438 0.3703568 0.2864438 0.3155082 0.5225971 0.3155082 0.2864438 0.3286039 0.2864438 0.3406729 0.5225971 0.3406729 0.2864438 0.3512515 0.2864438 0.2751747 0.5225971 0.2751746 0.2864438 0.2882704 0.8019385 0.669984 0.8591893 0.669984 0.8019385 0.6637867 0.8591893 0.6637867 0.8591893 0.6660942 0.8591893 0.6567163 0.8591893 0.669984 0.8591893 0.6729208 0.8591893 0.6637867 0.8591893 0.6785231 0.8591893 0.6729208 0.8591893 0.6750698 0.8591893 0.6788489 0.8591893 0.6826862 0.8591893 0.6750698 0.8591893 0.6811763 0.8591893 0.6852498 0.8591893 0.6788489 0.8591893 0.6861153 0.8591893 0.6852498 0.8591893 0.6819621 0.8591893 0.6410663 0.8591893 0.6410663 0.8591893 0.6330879 0.8591891 0.6009562 0.8591891 0.5968828 0.8591891 0.6001704 0.8591891 0.5994462 0.8591891 0.5968828 0.8591891 0.6032835 0.8591891 0.6036093 0.8591891 0.5994462 0.8591891 0.6070626 0.8591893 0.6121485 0.8591893 0.6092116 0.8591891 0.6070626 0.8591893 0.6183457 0.8591893 0.6160383 0.8591893 0.6121485 0.8591893 0.6238267 0.8591893 0.6160383 0.8591893 0.6254161 0.8591893 0.6322777 0.8591893 0.6238267 0.8591893 0.6330879 0.8591893 0.6498548 0.8591893 0.6410663 0.8591893 0.6490446 0.8019385 0.6811763 0.8591893 0.6811763 0.8019385 0.6788489 0.8019385 0.6009562 0.8591891 0.6009562 0.8019385 0.6001704 0.8019385 0.6121485 0.8591893 0.6121485 0.8019385 0.6070626 0.8019385 0.6330879 0.8591893 0.6330879 0.8019385 0.6254162 0.8019385 0.6567163 0.8591893 0.6567163 0.8019385 0.6490446 0.8019385 0.6750698 0.8591893 0.6750698 0.8019385 0.669984 0.8019385 0.6819621 0.8591893 0.6819621 0.8019385 0.6811763 0.8019385 0.6032835 0.8591891 0.6032835 0.8019385 0.6009562 0.8019385 0.6183458 0.8591893 0.6183457 0.8019385 0.6121485 0.8019385 0.6410663 0.8591893 0.6410663 0.8019385 0.6330879 0.8019385 0.6637867 0.8591893 0.6637867 0.8019385 0.6567163 0.8019385 0.6788489 0.8591893 0.6788489 0.8019385 0.6750698 0.8019385 0.6070626 0.8591891 0.6070626 0.8019385 0.6032835 0.8019385 0.6254162 0.8591893 0.6254161 0.8019385 0.6183458 0.8019385 0.6490446 0.8591893 0.6490446 0.8019385 0.6410663 0.8591893 0.6861153 0.8591893 0.6861153 0.7149143 0.6861153 0.6935515 0.2320804 0.6935515 0.2320804 0.7441225 0.2394983 0.7441225 0.3642802 0.7441225 0.3642802 0.6935515 0.371698 0.6377521 0.2320805 0.6377521 0.2320805 0.6935515 0.2320804 -0.02097761 0.2320806 -0.02097761 0.2320806 0.2864438 0.2320806 -0.08198142 0.2320806 -0.08198142 0.2320806 -0.02097761 0.2320806 -0.08198142 0.3716983 -0.08198142 0.3716983 -0.1462828 0.3645088 -0.1462828 0.23927 -0.1462828 0.23927 -0.08198142 0.2320806 -0.1462828 0.3645088 -0.1462828 0.3645088 -0.1973938 0.3410363 -0.1973938 0.2627426 -0.1973938 0.2627426 -0.1462828 0.23927 -0.1973938 0.3410363 -0.1973938 0.3410363 -0.2303687 0.3218857 -0.2303687 0.2818931 -0.2303687 0.2818931 -0.1973938 0.2627426 -0.2303687 0.3218857 -0.2303687 0.3218857 -0.2468562 0.308812 -0.2468562 0.2949671 -0.2468562 0.2949671 -0.2303687 0.2818931 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.308812 -0.2468562 0.308812 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.2949671 0.5225971 0.2320805 0.5225971 0.2320805 0.6377521 0.2320805 0.2864438 0.2320806 0.2864438 0.2320806 0.5225971 0.2320805 0.8591893 0.6819621 0.8591893 0.6819621 0.8591893 0.6861153 0.8019385 0.6330879 0.8019385 0.6330879 0.8019385 0.6410663 0.8019385 0.6254161 0.8019385 0.6254161 0.8019385 0.6330879 0.8019385 0.6183457 0.8019385 0.6183457 0.8019385 0.6254161 0.8019385 0.6121485 0.8019385 0.6121485 0.8019385 0.6183457 0.8019385 0.6070626 0.8019385 0.6070626 0.8019385 0.6121485 0.8019385 0.6032835 0.8019385 0.6032835 0.8019385 0.6070626 0.8019385 0.6009562 0.8019385 0.6009562 0.8019385 0.6032835 0.8019385 0.6001704 0.8019385 0.6001704 0.8019385 0.6009562 0.8019385 0.6811763 0.8019385 0.6811763 0.8019385 0.6819621 0.8019385 0.6788489 0.8019385 0.6788489 0.8019385 0.6811763 0.8019385 0.6750698 0.8019385 0.6750698 0.8019385 0.6788489 0.8019385 0.669984 0.8019385 0.669984 0.8019385 0.6750698 0.8019385 0.6637867 0.8019385 0.6637867 0.8019385 0.669984 0.8019385 0.6567163 0.8019385 0.6567163 0.8019385 0.6637867 0.8019385 0.6490446 0.8019385 0.6490446 0.8019385 0.6567163 0.8019385 0.6410663 0.8019385 0.6410663 0.8019385 0.6490446 0.8019385 0.6819621 0.8019385 0.6819621 0.8591893 0.6819621 0.7149143 0.6861153 0.7149143 0.6861153 0.8591893 0.6861153 0.7441225 0.2394983 0.7441225 0.2394983 0.6935515 0.2320805 0.6935515 0.3716981 0.6935515 0.3716981 0.7441225 0.3642802 0.6935515 0.2320805 0.6935515 0.2320805 0.6377521 0.2320805 0.2864438 0.2320806 0.2864438 0.2320806 -0.02097761 0.2320806 -0.02097761 0.2320806 -0.02097761 0.2320806 -0.08198142 0.2320806 -0.1462828 0.3645088 -0.1462828 0.3645088 -0.08198142 0.3716983 -0.08198142 0.2320806 -0.08198142 0.2320806 -0.1462828 0.23927 -0.1973938 0.3410363 -0.1973938 0.3410363 -0.1462828 0.3645088 -0.1462828 0.23927 -0.1462828 0.23927 -0.1973938 0.2627426 -0.2303687 0.321886 -0.2303687 0.321886 -0.1973938 0.3410363 -0.1973938 0.2627426 -0.1973938 0.2627426 -0.2303687 0.2818931 -0.2468562 0.308812 -0.2468562 0.308812 -0.2303687 0.321886 -0.2303687 0.2818931 -0.2303687 0.2818931 -0.2468562 0.2949672 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2510744 0.3018896 -0.2468562 0.308812 -0.2468562 0.2949672 -0.2468562 0.2949672 -0.2510744 0.3018896 0.6377521 0.2320805 0.6377521 0.2320805 0.5225971 0.2320805 0.5225971 0.2320805 0.5225971 0.2320805 0.2864438 0.2320806 0.8591893 0.6861153 0.8591893 0.6861153 0.8591893 0.6819621 0.8019385 0.6410663 0.8019385 0.6410663 0.8019385 0.6330879 0.8019385 0.6330879 0.8019385 0.6330879 0.8019385 0.6254162 0.8019385 0.6254162 0.8019385 0.6254162 0.8019385 0.6183458 0.8019385 0.6183458 0.8019385 0.6183458 0.8019385 0.6121485 0.8019385 0.6121485 0.8019385 0.6121485 0.8019385 0.6070626 0.8019385 0.6070626 0.8019385 0.6070626 0.8019385 0.6032835 0.8019385 0.6032835 0.8019385 0.6032835 0.8019385 0.6009562 0.8019385 0.6009562 0.8019385 0.6009562 0.8019385 0.6001704 0.8019385 0.6819621 0.8019385 0.6819621 0.8019385 0.6811763 0.8019385 0.6811763 0.8019385 0.6811763 0.8019385 0.6788489 0.8019385 0.6788489 0.8019385 0.6788489 0.8019385 0.6750698 0.8019385 0.6750698 0.8019385 0.6750698 0.8019385 0.669984 0.8019385 0.669984 0.8019385 0.669984 0.8019385 0.6637867 0.8019385 0.6637867 0.8019385 0.6637867 0.8019385 0.6567163 0.8019385 0.6567163 0.8019385 0.6567163 0.8019385 0.6490446 0.8019385 0.6490446 0.8019385 0.6490446 0.8019385 0.6410663 0.8591893 0.6819621 0.8591893 0.6819621 0.8019385 0.6819621 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

0 0 0 1 0 1 3 0 2 2 1 3 3 1 4 5 1 5 4 2 6 5 2 7 7 2 8 6 3 9 7 3 10 9 3 11 8 4 12 9 4 13 11 4 14 10 5 15 11 5 16 13 5 17 12 6 18 13 6 19 15 6 20 14 7 21 15 7 22 17 7 23 16 8 24 17 8 25 19 8 26 18 9 27 19 9 28 21 9 29 20 10 30 21 10 31 23 10 32 22 11 33 23 11 34 25 11 35 24 12 36 25 12 37 27 12 38 26 13 39 27 13 40 29 13 41 28 14 42 29 14 43 31 14 44 30 15 45 31 15 46 33 15 47 13 16 48 11 16 49 39 16 50 39 17 51 38 17 52 54 17 53 11 18 54 9 18 55 38 18 56 9 19 57 7 19 58 37 19 59 5 20 60 36 20 61 37 20 62 3 21 63 35 21 64 36 21 65 1 22 66 34 22 67 35 22 68 31 23 69 49 23 70 50 23 71 31 24 72 29 24 73 48 24 74 29 25 75 27 25 76 47 25 77 25 26 78 46 26 79 47 26 80 23 27 81 45 27 82 46 27 83 23 28 84 21 28 85 44 28 86 19 29 87 43 29 88 44 29 89 19 30 90 17 30 91 42 30 92 15 31 93 41 31 94 42 31 95 15 32 96 13 32 97 40 32 98 202 33 99 212 33 100 72 33 101 36 34 102 35 34 103 51 34 104 46 35 105 62 35 106 63 35 107 44 36 108 43 36 109 59 36 110 41 37 111 40 37 112 56 37 113 38 38 114 37 38 115 53 38 116 49 39 117 48 39 118 64 39 119 46 40 120 45 40 121 61 40 122 43 41 123 42 41 124 58 41 125 40 42 126 39 42 127 55 42 128 37 43 129 36 43 130 52 43 131 48 44 132 47 44 133 63 44 134 45 45 135 44 45 136 60 45 137 42 46 138 41 46 139 57 46 140 76 47 141 75 47 142 91 47 143 201 48 144 211 48 145 69 48 146 200 49 147 210 49 148 66 49 149 199 50 150 208 50 151 77 50 152 198 51 153 207 51 154 74 51 155 212 52 156 206 52 157 71 52 158 211 53 159 205 53 160 68 53 161 209 54 162 204 54 163 79 54 164 208 55 165 203 55 166 76 55 167 207 56 168 202 56 169 73 56 170 206 57 171 201 57 172 70 57 173 205 58 174 200 58 175 67 58 176 204 59 177 199 59 178 78 59 179 203 60 180 198 60 181 75 60 182 94 61 183 111 61 184 112 61 185 73 62 186 72 62 187 88 62 188 70 63 189 69 63 190 85 63 191 67 64 192 66 64 193 82 64 194 78 65 195 77 65 196 93 65 197 75 66 198 74 66 199 90 66 200 72 67 201 71 67 202 87 67 203 69 68 204 68 68 205 84 68 206 80 69 207 79 69 208 95 69 209 77 70 210 76 70 211 92 70 212 74 71 213 73 71 214 89 71 215 71 72 216 70 72 217 86 72 218 68 73 219 67 73 220 83 73 221 79 74 222 78 74 223 94 74 224 91 75 225 108 75 226 109 75 227 88 76 228 105 76 229 106 76 230 85 77 231 102 77 232 103 77 233 83 78 234 82 78 235 99 78 236 97 79 237 96 79 238 113 79 239 93 80 240 110 80 241 111 80 242 90 81 243 107 81 244 108 81 245 87 82 246 104 82 247 105 82 248 84 83 249 101 83 250 102 83 251 82 84 252 81 84 253 98 84 254 95 85 255 112 85 256 113 85 257 92 86 258 109 86 259 110 86 260 89 87 261 106 87 262 107 87 263 86 88 264 103 88 265 104 88 266 83 89 267 100 89 268 101 89 269 111 90 270 128 90 271 129 90 272 108 91 273 125 91 274 126 91 275 105 92 276 122 92 277 123 92 278 102 93 279 119 93 280 120 93 281 99 94 282 116 94 283 117 94 284 114 95 285 113 95 286 130 95 287 111 96 288 110 96 289 127 96 290 107 97 291 124 97 292 125 97 293 105 98 294 104 98 295 121 98 296 102 99 297 101 99 298 118 99 299 98 100 300 115 100 301 116 100 302 113 101 303 112 101 304 129 101 305 109 102 306 126 102 307 127 102 308 106 103 309 123 103 310 124 103 311 103 104 312 120 104 313 121 104 314 100 105 315 117 105 316 118 105 317 129 106 318 128 106 319 145 106 320 126 107 321 125 107 322 142 107 323 123 108 324 122 108 325 139 108 326 120 109 327 119 109 328 136 109 329 116 110 330 133 110 331 134 110 332 131 111 333 130 111 334 147 111 335 128 112 336 127 112 337 144 112 338 124 113 339 141 113 340 142 113 341 122 114 342 121 114 343 138 114 344 119 115 345 118 115 346 135 115 347 116 116 348 115 116 349 132 116 350 130 117 351 129 117 352 146 117 353 127 118 354 126 118 355 143 118 356 124 119 357 123 119 358 140 119 359 121 120 360 120 120 361 137 120 362 117 121 363 134 121 364 135 121 365 146 122 366 145 122 367 162 122 368 143 123 369 142 123 370 159 123 371 140 124 372 139 124 373 156 124 374 137 125 375 136 125 376 153 125 377 134 126 378 133 126 379 150 126 380 148 127 381 147 127 382 164 127 383 145 128 384 144 128 385 161 128 386 142 129 387 141 129 388 158 129 389 139 130 390 138 130 391 155 130 392 136 131 393 135 131 394 152 131 395 133 132 396 132 132 397 149 132 398 147 133 399 146 133 400 163 133 401 144 134 402 143 134 403 160 134 404 141 135 405 140 135 406 157 135 407 138 136 408 137 136 409 154 136 410 135 137 411 134 137 412 151 137 413 163 138 414 162 138 415 179 138 416 160 139 417 159 139 418 176 139 419 156 140 420 173 140 421 174 140 422 154 141 423 153 141 424 170 141 425 150 142 426 167 142 427 168 142 428 165 143 429 164 143 430 181 143 431 162 144 432 161 144 433 178 144 434 158 145 435 175 145 436 176 145 437 156 146 438 155 146 439 172 146 440 152 147 441 169 147 442 170 147 443 150 148 444 149 148 445 166 148 446 163 149 447 180 149 448 181 149 449 160 150 450 177 150 451 178 150 452 158 151 453 157 151 454 174 151 455 154 152 456 171 152 457 172 152 458 152 153 459 151 153 460 168 153 461 58 154 462 57 154 463 183 154 464 55 155 465 54 155 466 185 155 467 52 156 468 51 156 469 187 156 470 63 157 471 62 157 472 190 157 473 60 158 474 59 158 475 192 158 476 57 159 477 56 159 478 194 159 479 54 160 480 53 160 481 195 160 482 65 161 483 64 161 484 196 161 485 62 162 486 61 162 487 197 162 488 59 163 489 58 163 490 184 163 491 56 164 492 55 164 493 186 164 494 53 165 495 52 165 496 188 165 497 64 166 498 63 166 499 191 166 500 61 167 501 60 167 502 193 167 503 195 168 504 188 168 505 200 168 506 197 169 507 193 169 508 198 169 509 194 170 510 186 170 511 201 170 512 196 171 513 191 171 514 199 171 515 192 172 516 184 172 517 202 172 518 185 173 519 195 173 520 205 173 521 190 174 522 197 174 523 203 174 524 183 175 525 194 175 526 206 175 527 188 176 528 187 176 529 210 176 530 193 177 531 192 177 532 207 177 533 189 178 534 196 178 535 204 178 536 186 179 537 185 179 538 211 179 539 184 180 540 183 180 541 212 180 542 191 181 543 190 181 544 208 181 545 32 182 546 229 182 547 228 182 548 30 183 549 228 183 550 227 183 551 28 184 552 227 184 553 226 184 554 24 185 555 26 185 556 226 185 557 24 186 558 225 186 559 224 186 560 20 187 561 22 187 562 224 187 563 20 188 564 223 188 565 222 188 566 16 189 567 18 189 568 222 189 569 16 190 570 221 190 571 220 190 572 12 191 573 14 191 574 220 191 575 12 192 576 219 192 577 218 192 578 10 193 579 218 193 580 217 193 581 8 194 582 217 194 583 216 194 584 6 195 585 216 195 586 215 195 587 4 196 588 215 196 589 214 196 590 0 197 591 2 197 592 214 197 593 227 198 594 228 198 595 245 198 596 224 199 597 225 199 598 242 199 599 221 200 600 222 200 601 239 200 602 218 201 603 219 201 604 236 201 605 215 202 606 216 202 607 233 202 608 226 203 609 227 203 610 244 203 611 223 204 612 224 204 613 241 204 614 220 205 615 221 205 616 238 205 617 217 206 618 218 206 619 235 206 620 214 207 621 215 207 622 232 207 623 228 208 624 229 208 625 246 208 626 225 209 627 226 209 628 243 209 629 222 210 630 223 210 631 240 210 632 219 211 633 220 211 634 237 211 635 216 212 636 217 212 637 234 212 638 213 213 639 214 213 640 231 213 641 250 214 642 249 214 643 251 214 644 259 215 645 260 215 646 253 215 647 254 216 648 253 216 649 255 216 650 252 217 651 251 217 652 257 217 653 258 218 654 257 218 655 260 218 656 1 219 657 0 219 658 264 219 659 50 220 660 49 220 661 266 220 662 49 221 663 65 221 664 267 221 665 209 222 666 80 222 667 269 222 668 96 223 669 97 223 670 270 223 671 80 224 672 96 224 673 271 224 674 65 225 675 189 225 676 272 225 677 189 226 678 209 226 679 268 226 680 0 227 681 213 227 682 273 227 683 213 228 684 230 228 685 274 228 686 247 229 687 248 229 688 275 229 689 249 230 690 250 230 691 277 230 692 251 231 693 249 231 694 278 231 695 253 232 696 260 232 697 280 232 698 256 233 699 255 233 700 283 233 701 255 234 702 253 234 703 281 234 704 257 235 705 251 235 706 279 235 707 260 236 708 257 236 709 284 236 710 261 237 711 247 237 712 276 237 713 262 238 714 261 238 715 285 238 716 2 790 2370 0 790 2371 3 790 2372 4 791 2373 2 791 2374 5 791 2375 6 792 2376 4 792 2377 7 792 2378 8 793 2379 6 793 2380 9 793 2381 10 794 2382 8 794 2383 11 794 2384 12 795 2385 10 795 2386 13 795 2387 14 796 2388 12 796 2389 15 796 2390 16 797 2391 14 797 2392 17 797 2393 18 798 2394 16 798 2395 19 798 2396 20 799 2397 18 799 2398 21 799 2399 22 800 2400 20 800 2401 23 800 2402 24 801 2403 22 801 2404 25 801 2405 26 802 2406 24 802 2407 27 802 2408 28 803 2409 26 803 2410 29 803 2411 30 804 2412 28 804 2413 31 804 2414 32 805 2415 30 805 2416 33 805 2417 40 806 2418 13 806 2419 39 806 2420 55 807 2421 39 807 2422 54 807 2423 39 808 2424 11 808 2425 38 808 2426 38 809 2427 9 809 2428 37 809 2429 7 810 2430 5 810 2431 37 810 2432 5 811 2433 3 811 2434 36 811 2435 3 812 2436 1 812 2437 35 812 2438 33 813 2439 31 813 2440 50 813 2441 49 814 2442 31 814 2443 48 814 2444 48 815 2445 29 815 2446 47 815 2447 27 816 2448 25 816 2449 47 816 2450 25 817 2451 23 817 2452 46 817 2453 45 818 2454 23 818 2455 44 818 2456 21 819 2457 19 819 2458 44 819 2459 43 820 2460 19 820 2461 42 820 2462 17 821 2463 15 821 2464 42 821 2465 41 822 2466 15 822 2467 40 822 2468 73 823 2469 202 823 2470 72 823 2471 52 824 2472 36 824 2473 51 824 2474 47 825 2475 46 825 2476 63 825 2477 60 826 2478 44 826 2479 59 826 2480 57 827 2481 41 827 2482 56 827 2483 54 828 2484 38 828 2485 53 828 2486 65 829 2487 49 829 2488 64 829 2489 62 830 2490 46 830 2491 61 830 2492 59 831 2493 43 831 2494 58 831 2495 56 832 2496 40 832 2497 55 832 2498 53 833 2499 37 833 2500 52 833 2501 64 834 2502 48 834 2503 63 834 2504 61 835 2505 45 835 2506 60 835 2507 58 836 2508 42 836 2509 57 836 2510 92 837 2511 76 837 2512 91 837 2513 70 838 2514 201 838 2515 69 838 2516 67 839 2517 200 839 2518 66 839 2519 78 840 2520 199 840 2521 77 840 2522 75 841 2523 198 841 2524 74 841 2525 72 842 2526 212 842 2527 71 842 2528 69 843 2529 211 843 2530 68 843 2531 80 844 2532 209 844 2533 79 844 2534 77 845 2535 208 845 2536 76 845 2537 74 846 2538 207 846 2539 73 846 2540 71 847 2541 206 847 2542 70 847 2543 68 848 2544 205 848 2545 67 848 2546 79 849 2547 204 849 2548 78 849 2549 76 850 2550 203 850 2551 75 850 2552 95 851 2553 94 851 2554 112 851 2555 89 852 2556 73 852 2557 88 852 2558 86 853 2559 70 853 2560 85 853 2561 83 854 2562 67 854 2563 82 854 2564 94 855 2565 78 855 2566 93 855 2567 91 856 2568 75 856 2569 90 856 2570 88 857 2571 72 857 2572 87 857 2573 85 858 2574 69 858 2575 84 858 2576 96 859 2577 80 859 2578 95 859 2579 93 860 2580 77 860 2581 92 860 2582 90 861 2583 74 861 2584 89 861 2585 87 862 2586 71 862 2587 86 862 2588 84 863 2589 68 863 2590 83 863 2591 95 864 2592 79 864 2593 94 864 2594 92 865 2595 91 865 2596 109 865 2597 89 866 2598 88 866 2599 106 866 2600 86 867 2601 85 867 2602 103 867 2603 100 868 2604 83 868 2605 99 868 2606 114 869 2607 97 869 2608 113 869 2609 94 870 2610 93 870 2611 111 870 2612 91 871 2613 90 871 2614 108 871 2615 88 872 2616 87 872 2617 105 872 2618 85 873 2619 84 873 2620 102 873 2621 99 874 2622 82 874 2623 98 874 2624 96 875 2625 95 875 2626 113 875 2627 93 876 2628 92 876 2629 110 876 2630 90 877 2631 89 877 2632 107 877 2633 87 878 2634 86 878 2635 104 878 2636 84 879 2637 83 879 2638 101 879 2639 112 880 2640 111 880 2641 129 880 2642 109 881 2643 108 881 2644 126 881 2645 106 882 2646 105 882 2647 123 882 2648 103 883 2649 102 883 2650 120 883 2651 100 884 2652 99 884 2653 117 884 2654 131 885 2655 114 885 2656 130 885 2657 128 886 2658 111 886 2659 127 886 2660 108 887 2661 107 887 2662 125 887 2663 122 888 2664 105 888 2665 121 888 2666 119 889 2667 102 889 2668 118 889 2669 99 890 2670 98 890 2671 116 890 2672 130 891 2673 113 891 2674 129 891 2675 110 892 2676 109 892 2677 127 892 2678 107 893 2679 106 893 2680 124 893 2681 104 894 2682 103 894 2683 121 894 2684 101 895 2685 100 895 2686 118 895 2687 146 896 2688 129 896 2689 145 896 2690 143 897 2691 126 897 2692 142 897 2693 140 898 2694 123 898 2695 139 898 2696 137 899 2697 120 899 2698 136 899 2699 117 900 2700 116 900 2701 134 900 2702 148 901 2703 131 901 2704 147 901 2705 145 902 2706 128 902 2707 144 902 2708 125 903 2709 124 903 2710 142 903 2711 139 904 2712 122 904 2713 138 904 2714 136 905 2715 119 905 2716 135 905 2717 133 906 2718 116 906 2719 132 906 2720 147 907 2721 130 907 2722 146 907 2723 144 908 2724 127 908 2725 143 908 2726 141 909 2727 124 909 2728 140 909 2729 138 910 2730 121 910 2731 137 910 2732 118 911 2733 117 911 2734 135 911 2735 163 912 2736 146 912 2737 162 912 2738 160 913 2739 143 913 2740 159 913 2741 157 914 2742 140 914 2743 156 914 2744 154 915 2745 137 915 2746 153 915 2747 151 916 2748 134 916 2749 150 916 2750 165 917 2751 148 917 2752 164 917 2753 162 918 2754 145 918 2755 161 918 2756 159 919 2757 142 919 2758 158 919 2759 156 920 2760 139 920 2761 155 920 2762 153 921 2763 136 921 2764 152 921 2765 150 922 2766 133 922 2767 149 922 2768 164 923 2769 147 923 2770 163 923 2771 161 924 2772 144 924 2773 160 924 2774 158 925 2775 141 925 2776 157 925 2777 155 926 2778 138 926 2779 154 926 2780 152 927 2781 135 927 2782 151 927 2783 180 928 2784 163 928 2785 179 928 2786 177 929 2787 160 929 2788 176 929 2789 157 930 2790 156 930 2791 174 930 2792 171 931 2793 154 931 2794 170 931 2795 151 932 2796 150 932 2797 168 932 2798 182 933 2799 165 933 2800 181 933 2801 179 934 2802 162 934 2803 178 934 2804 159 935 2805 158 935 2806 176 935 2807 173 936 2808 156 936 2809 172 936 2810 153 937 2811 152 937 2812 170 937 2813 167 938 2814 150 938 2815 166 938 2816 164 939 2817 163 939 2818 181 939 2819 161 940 2820 160 940 2821 178 940 2822 175 941 2823 158 941 2824 174 941 2825 155 942 2826 154 942 2827 172 942 2828 169 943 2829 152 943 2830 168 943 2831 184 944 2832 58 944 2833 183 944 2834 186 945 2835 55 945 2836 185 945 2837 188 946 2838 52 946 2839 187 946 2840 191 947 2841 63 947 2842 190 947 2843 193 948 2844 60 948 2845 192 948 2846 183 949 2847 57 949 2848 194 949 2849 185 950 2850 54 950 2851 195 950 2852 189 951 2853 65 951 2854 196 951 2855 190 952 2856 62 952 2857 197 952 2858 192 953 2859 59 953 2860 184 953 2861 194 954 2862 56 954 2863 186 954 2864 195 955 2865 53 955 2866 188 955 2867 196 956 2868 64 956 2869 191 956 2870 197 957 2871 61 957 2872 193 957 2873 205 958 2874 195 958 2875 200 958 2876 203 959 2877 197 959 2878 198 959 2879 206 960 2880 194 960 2881 201 960 2882 204 961 2883 196 961 2884 199 961 2885 207 962 2886 192 962 2887 202 962 2888 211 963 2889 185 963 2890 205 963 2891 208 964 2892 190 964 2893 203 964 2894 212 965 2895 183 965 2896 206 965 2897 200 966 2898 188 966 2899 210 966 2900 198 967 2901 193 967 2902 207 967 2903 209 968 2904 189 968 2905 204 968 2906 201 969 2907 186 969 2908 211 969 2909 202 970 2910 184 970 2911 212 970 2912 199 971 2913 191 971 2914 208 971 2915 30 972 2916 32 972 2917 228 972 2918 28 973 2919 30 973 2920 227 973 2921 26 974 2922 28 974 2923 226 974 2924 225 975 2925 24 975 2926 226 975 2927 22 976 2928 24 976 2929 224 976 2930 223 977 2931 20 977 2932 224 977 2933 18 978 2934 20 978 2935 222 978 2936 221 979 2937 16 979 2938 222 979 2939 14 980 2940 16 980 2941 220 980 2942 219 981 2943 12 981 2944 220 981 2945 10 982 2946 12 982 2947 218 982 2948 8 983 2949 10 983 2950 217 983 2951 6 984 2952 8 984 2953 216 984 2954 4 985 2955 6 985 2956 215 985 2957 2 986 2958 4 986 2959 214 986 2960 213 987 2961 0 987 2962 214 987 2963 244 988 2964 227 988 2965 245 988 2966 241 989 2967 224 989 2968 242 989 2969 238 990 2970 221 990 2971 239 990 2972 235 991 2973 218 991 2974 236 991 2975 232 992 2976 215 992 2977 233 992 2978 243 993 2979 226 993 2980 244 993 2981 240 994 2982 223 994 2983 241 994 2984 237 995 2985 220 995 2986 238 995 2987 234 996 2988 217 996 2989 235 996 2990 231 997 2991 214 997 2992 232 997 2993 245 998 2994 228 998 2995 246 998 2996 242 999 2997 225 999 2998 243 999 2999 239 1000 3000 222 1000 3001 240 1000 3002 236 1001 3003 219 1001 3004 237 1001 3005 233 1002 3006 216 1002 3007 234 1002 3008 230 1003 3009 213 1003 3010 231 1003 3011 252 1004 3012 250 1004 3013 251 1004 3014 254 1005 3015 259 1005 3016 253 1005 3017 256 1006 3018 254 1006 3019 255 1006 3020 258 1007 3021 252 1007 3022 257 1007 3023 259 1008 3024 258 1008 3025 260 1008 3026 263 1009 3027 1 1009 3028 264 1009 3029 265 1010 3030 50 1010 3031 266 1010 3032 266 1011 3033 49 1011 3034 267 1011 3035 268 1012 3036 209 1012 3037 269 1012 3038 271 1013 3039 96 1013 3040 270 1013 3041 269 1014 3042 80 1014 3043 271 1014 3044 267 1015 3045 65 1015 3046 272 1015 3047 272 1016 3048 189 1016 3049 268 1016 3050 264 1017 3051 0 1017 3052 273 1017 3053 273 1018 3054 213 1018 3055 274 1018 3056 276 1019 3057 247 1019 3058 275 1019 3059 278 1020 3060 249 1020 3061 277 1020 3062 279 1021 3063 251 1021 3064 278 1021 3065 281 1022 3066 253 1022 3067 280 1022 3068 282 1023 3069 256 1023 3070 283 1023 3071 283 1024 3072 255 1024 3073 281 1024 3074 284 1025 3075 257 1025 3076 279 1025 3077 280 1026 3078 260 1026 3079 284 1026 3080 285 1027 3081 261 1027 3082 276 1027 3083 286 1028 3084 262 1028 3085 285 1028 3086

+
+ + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

531 455 1365 530 455 1366 533 455 1367 583 456 1368 582 456 1369 535 456 1370 536 457 1371 535 457 1372 537 457 1373 566 458 1374 558 458 1375 550 458 1376 534 459 1377 533 459 1378 581 459 1379 580 460 1380 581 460 1381 582 460 1382 585 461 1383 614 461 1384 615 461 1385 617 462 1386 618 462 1387 620 462 1388 619 463 1389 620 463 1390 622 463 1391 621 464 1392 622 464 1393 624 464 1394 623 465 1395 624 465 1396 626 465 1397 625 466 1398 626 466 1399 628 466 1400 627 467 1401 628 467 1402 630 467 1403 629 468 1404 630 468 1405 632 468 1406 631 469 1407 632 469 1408 634 469 1409 635 470 1410 636 470 1411 638 470 1412 637 471 1413 638 471 1414 640 471 1415 639 472 1416 640 472 1417 642 472 1418 641 473 1419 642 473 1420 644 473 1421 643 474 1422 644 474 1423 646 474 1424 645 475 1425 646 475 1426 648 475 1427 649 476 1428 650 476 1429 618 476 1430 647 477 1431 648 477 1432 650 477 1433 649 478 1434 854 478 1435 853 478 1436 634 479 1437 632 479 1438 658 479 1439 632 480 1440 630 480 1441 657 480 1442 628 481 1443 656 481 1444 657 481 1445 626 482 1446 655 482 1447 656 482 1448 626 483 1449 624 483 1450 654 483 1451 624 484 1452 622 484 1453 653 484 1454 620 485 1455 652 485 1456 653 485 1457 650 486 1458 667 486 1459 651 486 1460 648 487 1461 666 487 1462 667 487 1463 646 488 1464 665 488 1465 666 488 1466 646 489 1467 644 489 1468 664 489 1469 644 490 1470 642 490 1471 663 490 1472 642 491 1473 640 491 1474 662 491 1475 638 492 1476 661 492 1477 662 492 1478 636 493 1479 660 493 1480 661 493 1481 620 494 1482 618 494 1483 651 494 1484 658 495 1485 657 495 1486 674 495 1487 655 496 1488 654 496 1489 671 496 1490 651 497 1491 668 497 1492 669 497 1493 665 498 1494 682 498 1495 683 498 1496 663 499 1497 662 499 1498 679 499 1499 656 500 1500 673 500 1501 674 500 1502 654 501 1503 653 501 1504 670 501 1505 651 502 1506 667 502 1507 684 502 1508 664 503 1509 681 503 1510 682 503 1511 662 504 1512 661 504 1513 678 504 1514 659 505 1515 658 505 1516 675 505 1517 655 506 1518 672 506 1519 673 506 1520 653 507 1521 652 507 1522 669 507 1523 667 508 1524 666 508 1525 683 508 1526 663 509 1527 680 509 1528 681 509 1529 661 510 1530 660 510 1531 677 510 1532 826 511 1533 837 511 1534 691 511 1535 825 512 1536 836 512 1537 688 512 1538 824 513 1539 835 513 1540 685 513 1541 823 514 1542 834 514 1543 699 514 1544 822 515 1545 833 515 1546 696 515 1547 837 516 1548 831 516 1549 690 516 1550 836 517 1551 830 517 1552 687 517 1553 835 518 1554 829 518 1555 701 518 1556 834 519 1557 828 519 1558 698 519 1559 833 520 1560 827 520 1561 695 520 1562 832 521 1563 826 521 1564 692 521 1565 831 522 1566 825 522 1567 689 522 1568 830 523 1569 824 523 1570 686 523 1571 829 524 1572 823 524 1573 700 524 1574 828 525 1575 822 525 1576 697 525 1577 827 526 1578 821 526 1579 694 526 1580 691 527 1581 708 527 1582 709 527 1583 688 528 1584 705 528 1585 706 528 1586 685 529 1587 702 529 1588 703 529 1589 699 530 1590 716 530 1591 717 530 1592 696 531 1593 713 531 1594 714 531 1595 690 532 1596 707 532 1597 708 532 1598 687 533 1599 704 533 1600 705 533 1601 701 534 1602 718 534 1603 702 534 1604 698 535 1605 715 535 1606 716 535 1607 695 536 1608 712 536 1609 713 536 1610 693 537 1611 692 537 1612 709 537 1613 689 538 1614 706 538 1615 707 538 1616 686 539 1617 703 539 1618 704 539 1619 700 540 1620 717 540 1621 718 540 1622 697 541 1623 714 541 1624 715 541 1625 695 542 1626 694 542 1627 711 542 1628 728 543 1629 745 543 1630 746 543 1631 708 544 1632 725 544 1633 726 544 1634 706 545 1635 705 545 1636 722 545 1637 703 546 1638 702 546 1639 719 546 1640 717 547 1641 716 547 1642 733 547 1643 714 548 1644 713 548 1645 730 548 1646 708 549 1647 707 549 1648 724 549 1649 705 550 1650 704 550 1651 721 550 1652 702 551 1653 718 551 1654 735 551 1655 716 552 1656 715 552 1657 732 552 1658 713 553 1659 712 553 1660 729 553 1661 709 554 1662 726 554 1663 727 554 1664 707 555 1665 706 555 1666 723 555 1667 704 556 1668 703 556 1669 720 556 1670 718 557 1671 717 557 1672 734 557 1673 715 558 1674 714 558 1675 731 558 1676 712 559 1677 711 559 1678 728 559 1679 749 560 1680 748 560 1681 765 560 1682 726 561 1683 725 561 1684 742 561 1685 723 562 1686 722 562 1687 739 562 1688 720 563 1689 719 563 1690 736 563 1691 734 564 1692 733 564 1693 750 564 1694 730 565 1695 747 565 1696 748 565 1697 725 566 1698 724 566 1699 741 566 1700 722 567 1701 721 567 1702 738 567 1703 719 568 1704 735 568 1705 752 568 1706 733 569 1707 732 569 1708 749 569 1709 730 570 1710 729 570 1711 746 570 1712 727 571 1713 726 571 1714 743 571 1715 723 572 1716 740 572 1717 741 572 1718 721 573 1719 720 573 1720 737 573 1721 735 574 1722 734 574 1723 751 574 1724 732 575 1725 731 575 1726 748 575 1727 768 576 1728 785 576 1729 786 576 1730 745 577 1731 762 577 1732 763 577 1733 742 578 1734 759 578 1735 760 578 1736 739 579 1737 756 579 1738 757 579 1739 736 580 1740 753 580 1741 754 580 1742 750 581 1743 767 581 1744 768 581 1745 747 582 1746 764 582 1747 765 582 1748 742 583 1749 741 583 1750 758 583 1751 738 584 1752 755 584 1753 756 584 1754 752 585 1755 769 585 1756 753 585 1757 749 586 1758 766 586 1759 767 586 1760 747 587 1761 746 587 1762 763 587 1763 743 588 1764 760 588 1765 761 588 1766 740 589 1767 757 589 1768 758 589 1769 737 590 1770 754 590 1771 755 590 1772 752 591 1773 751 591 1774 768 591 1775 786 592 1776 785 592 1777 802 592 1778 765 593 1779 782 593 1780 783 593 1781 763 594 1782 762 594 1783 779 594 1784 759 595 1785 776 595 1786 777 595 1787 756 596 1788 773 596 1789 774 596 1790 753 597 1791 770 597 1792 771 597 1793 767 598 1794 784 598 1795 785 598 1796 764 599 1797 781 599 1798 782 599 1799 758 600 1800 775 600 1801 776 600 1802 755 601 1803 772 601 1804 773 601 1805 769 602 1806 786 602 1807 770 602 1808 766 603 1809 783 603 1810 784 603 1811 763 604 1812 780 604 1813 781 604 1814 760 605 1815 777 605 1816 778 605 1817 757 606 1818 774 606 1819 775 606 1820 754 607 1821 771 607 1822 772 607 1823 782 608 1824 799 608 1825 800 608 1826 779 609 1827 796 609 1828 797 609 1829 777 610 1830 776 610 1831 793 610 1832 773 611 1833 790 611 1834 791 611 1835 771 612 1836 770 612 1837 787 612 1838 784 613 1839 801 613 1840 802 613 1841 782 614 1842 781 614 1843 798 614 1844 775 615 1845 792 615 1846 793 615 1847 773 616 1848 772 616 1849 789 616 1850 786 617 1851 803 617 1852 787 617 1853 784 618 1854 783 618 1855 800 618 1856 780 619 1857 797 619 1858 798 619 1859 778 620 1860 777 620 1861 794 620 1862 775 621 1863 774 621 1864 791 621 1865 771 622 1866 788 622 1867 789 622 1868 675 623 1869 674 623 1870 804 623 1871 672 624 1872 671 624 1873 806 624 1874 669 625 1875 668 625 1876 808 625 1877 683 626 1878 682 626 1879 810 626 1880 680 627 1881 679 627 1882 812 627 1883 674 628 1884 673 628 1885 816 628 1886 671 629 1887 670 629 1888 817 629 1889 668 630 1890 684 630 1891 818 630 1892 682 631 1893 681 631 1894 819 631 1895 679 632 1896 678 632 1897 820 632 1898 676 633 1899 675 633 1900 805 633 1901 673 634 1902 672 634 1903 807 634 1904 670 635 1905 669 635 1906 809 635 1907 684 636 1908 683 636 1909 811 636 1910 681 637 1911 680 637 1912 813 637 1913 678 638 1914 677 638 1915 814 638 1916 808 639 1917 818 639 1918 829 639 1919 816 640 1920 807 640 1921 825 640 1922 813 641 1923 812 641 1924 833 641 1925 815 642 1926 805 642 1927 826 642 1928 811 643 1929 810 643 1930 834 643 1931 804 644 1932 816 644 1933 831 644 1934 806 645 1935 817 645 1936 830 645 1937 809 646 1938 808 646 1939 835 646 1940 807 647 1941 806 647 1942 836 647 1943 805 648 1944 804 648 1945 837 648 1946 820 649 1947 814 649 1948 821 649 1949 819 650 1950 813 650 1951 822 650 1952 812 651 1953 820 651 1954 827 651 1955 818 652 1956 811 652 1957 823 652 1958 810 653 1959 819 653 1960 828 653 1961 817 654 1962 809 654 1963 824 654 1964 851 655 1965 852 655 1966 869 655 1967 645 656 1968 647 656 1969 853 656 1970 643 657 1971 645 657 1972 852 657 1973 643 658 1974 851 658 1975 850 658 1976 639 659 1977 641 659 1978 850 659 1979 637 660 1980 639 660 1981 849 660 1982 637 661 1983 848 661 1984 847 661 1985 617 662 1986 619 662 1987 839 662 1988 631 663 1989 633 663 1990 846 663 1991 631 664 1992 845 664 1993 844 664 1994 629 665 1995 844 665 1996 843 665 1997 625 666 1998 627 666 1999 843 666 2000 623 667 2001 625 667 2002 842 667 2003 623 668 2004 841 668 2005 840 668 2006 621 669 2007 840 669 2008 839 669 2009 617 670 2010 838 670 2011 854 670 2012 848 671 2013 849 671 2014 866 671 2015 845 672 2016 846 672 2017 863 672 2018 842 673 2019 843 673 2020 860 673 2021 839 674 2022 840 674 2023 857 674 2024 853 675 2025 854 675 2026 871 675 2027 850 676 2028 851 676 2029 868 676 2030 847 677 2031 848 677 2032 865 677 2033 844 678 2034 845 678 2035 862 678 2036 841 679 2037 842 679 2038 859 679 2039 838 680 2040 839 680 2041 856 680 2042 852 681 2043 853 681 2044 870 681 2045 849 682 2046 850 682 2047 867 682 2048 843 683 2049 844 683 2050 861 683 2051 840 684 2052 841 684 2053 858 684 2054 854 685 2055 838 685 2056 855 685 2057 528 686 2058 529 686 2059 873 686 2060 530 687 2061 527 687 2062 872 687 2063 529 688 2064 532 688 2065 875 688 2066 533 689 2067 530 689 2068 876 689 2069 535 690 2070 582 690 2071 878 690 2072 537 691 2073 535 691 2074 879 691 2075 539 692 2076 541 692 2077 882 692 2078 540 693 2079 537 693 2080 881 693 2081 541 694 2082 543 694 2083 884 694 2084 542 695 2085 540 695 2086 883 695 2087 543 696 2088 545 696 2089 886 696 2090 544 697 2091 542 697 2092 885 697 2093 545 698 2094 547 698 2095 888 698 2096 546 699 2097 544 699 2098 887 699 2099 548 700 2100 549 700 2101 890 700 2102 549 701 2103 550 701 2104 892 701 2105 550 702 2106 551 702 2107 893 702 2108 551 703 2109 552 703 2110 894 703 2111 552 704 2112 553 704 2113 895 704 2114 553 705 2115 554 705 2116 896 705 2117 554 706 2118 555 706 2119 897 706 2120 555 707 2121 556 707 2122 898 707 2123 572 708 2124 573 708 2125 899 708 2126 573 709 2127 574 709 2128 901 709 2129 574 710 2130 575 710 2131 902 710 2132 575 711 2133 576 711 2134 903 711 2135 576 712 2136 577 712 2137 904 712 2138 577 713 2139 578 713 2140 905 713 2141 578 714 2142 579 714 2143 906 714 2144 579 715 2145 548 715 2146 891 715 2147 547 716 2148 572 716 2149 900 716 2150 556 717 2151 546 717 2152 889 717 2153 581 718 2154 533 718 2155 877 718 2156 582 719 2157 581 719 2158 907 719 2159 584 720 2160 528 720 2161 874 720 2162 586 721 2163 585 721 2164 909 721 2165 587 722 2166 586 722 2167 910 722 2168 588 723 2169 587 723 2170 911 723 2171 589 724 2172 588 724 2173 912 724 2174 590 725 2175 589 725 2176 913 725 2177 591 726 2178 590 726 2179 914 726 2180 592 727 2181 591 727 2182 915 727 2183 593 728 2184 592 728 2185 916 728 2186 610 729 2187 609 729 2188 918 729 2189 611 730 2190 610 730 2191 919 730 2192 612 731 2193 611 731 2194 920 731 2195 613 732 2196 612 732 2197 921 732 2198 614 733 2199 613 733 2200 922 733 2201 615 734 2202 614 734 2203 923 734 2204 616 735 2205 615 735 2206 924 735 2207 585 736 2208 616 736 2209 925 736 2210 609 737 2211 584 737 2212 908 737 2213 636 738 2214 635 738 2215 928 738 2216 634 739 2217 659 739 2218 930 739 2219 660 740 2220 636 740 2221 927 740 2222 659 741 2223 676 741 2224 931 741 2225 832 742 2226 693 742 2227 933 742 2228 693 743 2229 710 743 2230 935 743 2231 728 744 2232 711 744 2233 934 744 2234 710 745 2235 727 745 2236 937 745 2237 745 746 2238 728 746 2239 936 746 2240 727 747 2241 744 747 2242 939 747 2243 762 748 2244 745 748 2245 938 748 2246 744 749 2247 761 749 2248 941 749 2249 779 750 2250 762 750 2251 940 750 2252 761 751 2253 778 751 2254 943 751 2255 788 752 2256 787 752 2257 945 752 2258 789 753 2259 788 753 2260 944 753 2261 790 754 2262 789 754 2263 946 754 2264 791 755 2265 790 755 2266 947 755 2267 792 756 2268 791 756 2269 948 756 2270 793 757 2271 792 757 2272 949 757 2273 794 758 2274 793 758 2275 950 758 2276 795 759 2277 794 759 2278 951 759 2279 797 760 2280 796 760 2281 954 760 2282 798 761 2283 797 761 2284 953 761 2285 799 762 2286 798 762 2287 955 762 2288 800 763 2289 799 763 2290 956 763 2291 801 764 2292 800 764 2293 957 764 2294 802 765 2295 801 765 2296 958 765 2297 803 766 2298 802 766 2299 959 766 2300 787 767 2301 803 767 2302 960 767 2303 796 768 2304 779 768 2305 942 768 2306 778 769 2307 795 769 2308 952 769 2309 676 770 2310 815 770 2311 961 770 2312 815 771 2313 832 771 2314 932 771 2315 635 772 2316 847 772 2317 962 772 2318 855 773 2319 856 773 2320 964 773 2321 856 774 2322 857 774 2323 965 774 2324 857 775 2325 858 775 2326 966 775 2327 858 776 2328 859 776 2329 967 776 2330 859 777 2331 860 777 2332 968 777 2333 860 778 2334 861 778 2335 969 778 2336 861 779 2337 862 779 2338 970 779 2339 862 780 2340 863 780 2341 971 780 2342 864 781 2343 865 781 2344 973 781 2345 865 782 2346 866 782 2347 974 782 2348 866 783 2349 867 783 2350 975 783 2351 867 784 2352 868 784 2353 976 784 2354 868 785 2355 869 785 2356 977 785 2357 869 786 2358 870 786 2359 978 786 2360 870 787 2361 871 787 2362 979 787 2363 871 788 2364 855 788 2365 963 788 2366 847 789 2367 864 789 2368 972 789 2369 534 1245 3735 531 1245 3736 533 1245 3737 536 1246 3738 583 1246 3739 535 1246 3740 538 1247 3741 536 1247 3742 537 1247 3743 550 1248 3744 549 1248 3745 548 1248 3746 548 1249 3747 579 1249 3748 578 1249 3749 578 1250 3750 577 1250 3751 576 1250 3752 576 1251 3753 575 1251 3754 574 1251 3755 574 1252 3756 573 1252 3757 572 1252 3758 572 1253 3759 571 1253 3760 570 1253 3761 570 1254 3762 569 1254 3763 568 1254 3764 568 1255 3765 567 1255 3766 566 1255 3767 566 1256 3768 565 1256 3769 564 1256 3770 564 1257 3771 563 1257 3772 562 1257 3773 562 1258 3774 561 1258 3775 560 1258 3776 560 1259 3777 559 1259 3778 558 1259 3779 558 1260 3780 557 1260 3781 556 1260 3782 556 1261 3783 555 1261 3784 554 1261 3785 554 1262 3786 553 1262 3787 552 1262 3788 552 1263 3789 551 1263 3790 550 1263 3791 550 1264 3792 548 1264 3793 578 1264 3794 578 1265 3795 576 1265 3796 574 1265 3797 574 1266 3798 572 1266 3799 570 1266 3800 570 1267 3801 568 1267 3802 566 1267 3803 566 1268 3804 564 1268 3805 562 1268 3806 562 1269 3807 560 1269 3808 558 1269 3809 558 1270 3810 556 1270 3811 554 1270 3812 554 1271 3813 552 1271 3814 550 1271 3815 550 1272 3816 578 1272 3817 574 1272 3818 574 1273 3819 570 1273 3820 566 1273 3821 566 1274 3822 562 1274 3823 558 1274 3824 558 1275 3825 554 1275 3826 550 1275 3827 550 1276 3828 574 1276 3829 566 1276 3830 580 1277 3831 534 1277 3832 581 1277 3833 583 1278 3834 580 1278 3835 582 1278 3836 588 1279 3837 590 1279 3838 591 1279 3839 588 1280 3840 585 1280 3841 587 1280 3842 588 1281 3843 589 1281 3844 590 1281 3845 597 1282 3846 598 1282 3847 599 1282 3848 594 1283 3849 591 1283 3850 593 1283 3851 594 1284 3852 595 1284 3853 596 1284 3854 619 1285 3855 617 1285 3856 620 1285 3857 600 1286 3858 601 1286 3859 599 1286 3860 591 1287 3861 594 1287 3862 597 1287 3863 604 1288 3864 605 1288 3865 603 1288 3866 606 1289 3867 601 1289 3868 605 1289 3869 606 1290 3870 607 1290 3871 608 1290 3872 611 1291 3873 613 1291 3874 606 1291 3875 612 1292 3876 613 1292 3877 611 1292 3878 614 1293 3879 585 1293 3880 613 1293 3881 616 1294 3882 585 1294 3883 615 1294 3884 585 1295 3885 586 1295 3886 587 1295 3887 594 1296 3888 596 1296 3889 597 1296 3890 591 1297 3891 592 1297 3892 593 1297 3893 588 1298 3894 591 1298 3895 585 1298 3896 605 1299 3897 601 1299 3898 603 1299 3899 608 1300 3900 609 1300 3901 606 1300 3902 585 1301 3903 591 1301 3904 601 1301 3905 609 1302 3906 610 1302 3907 611 1302 3908 597 1303 3909 601 1303 3910 591 1303 3911 601 1304 3912 597 1304 3913 599 1304 3914 613 1305 3915 601 1305 3916 606 1305 3917 609 1306 3918 611 1306 3919 606 1306 3920 601 1307 3921 602 1307 3922 603 1307 3923 585 1308 3924 601 1308 3925 613 1308 3926 621 1309 3927 619 1309 3928 622 1309 3929 623 1310 3930 621 1310 3931 624 1310 3932 625 1311 3933 623 1311 3934 626 1311 3935 627 1312 3936 625 1312 3937 628 1312 3938 629 1313 3939 627 1313 3940 630 1313 3941 631 1314 3942 629 1314 3943 632 1314 3944 633 1315 3945 631 1315 3946 634 1315 3947 637 1316 3948 635 1316 3949 638 1316 3950 639 1317 3951 637 1317 3952 640 1317 3953 641 1318 3954 639 1318 3955 642 1318 3956 643 1319 3957 641 1319 3958 644 1319 3959 645 1320 3960 643 1320 3961 646 1320 3962 647 1321 3963 645 1321 3964 648 1321 3965 617 1322 3966 649 1322 3967 618 1322 3968 649 1323 3969 647 1323 3970 650 1323 3971 647 1324 3972 649 1324 3973 853 1324 3974 659 1325 3975 634 1325 3976 658 1325 3977 658 1326 3978 632 1326 3979 657 1326 3980 630 1327 3981 628 1327 3982 657 1327 3983 628 1328 3984 626 1328 3985 656 1328 3986 655 1329 3987 626 1329 3988 654 1329 3989 654 1330 3990 624 1330 3991 653 1330 3992 622 1331 3993 620 1331 3994 653 1331 3995 618 1332 3996 650 1332 3997 651 1332 3998 650 1333 3999 648 1333 4000 667 1333 4001 648 1334 4002 646 1334 4003 666 1334 4004 665 1335 4005 646 1335 4006 664 1335 4007 664 1336 4008 644 1336 4009 663 1336 4010 663 1337 4011 642 1337 4012 662 1337 4013 640 1338 4014 638 1338 4015 662 1338 4016 638 1339 4017 636 1339 4018 661 1339 4019 652 1340 4020 620 1340 4021 651 1340 4022 675 1341 4023 658 1341 4024 674 1341 4025 672 1342 4026 655 1342 4027 671 1342 4028 652 1343 4029 651 1343 4030 669 1343 4031 666 1344 4032 665 1344 4033 683 1344 4034 680 1345 4035 663 1345 4036 679 1345 4037 657 1346 4038 656 1346 4039 674 1346 4040 671 1347 4041 654 1347 4042 670 1347 4043 668 1348 4044 651 1348 4045 684 1348 4046 665 1349 4047 664 1349 4048 682 1349 4049 679 1350 4050 662 1350 4051 678 1350 4052 676 1351 4053 659 1351 4054 675 1351 4055 656 1352 4056 655 1352 4057 673 1352 4058 670 1353 4059 653 1353 4060 669 1353 4061 684 1354 4062 667 1354 4063 683 1354 4064 664 1355 4065 663 1355 4066 681 1355 4067 678 1356 4068 661 1356 4069 677 1356 4070 692 1357 4071 826 1357 4072 691 1357 4073 689 1358 4074 825 1358 4075 688 1358 4076 686 1359 4077 824 1359 4078 685 1359 4079 700 1360 4080 823 1360 4081 699 1360 4082 697 1361 4083 822 1361 4084 696 1361 4085 691 1362 4086 837 1362 4087 690 1362 4088 688 1363 4089 836 1363 4090 687 1363 4091 685 1364 4092 835 1364 4093 701 1364 4094 699 1365 4095 834 1365 4096 698 1365 4097 696 1366 4098 833 1366 4099 695 1366 4100 693 1367 4101 832 1367 4102 692 1367 4103 690 1368 4104 831 1368 4105 689 1368 4106 687 1369 4107 830 1369 4108 686 1369 4109 701 1370 4110 829 1370 4111 700 1370 4112 698 1371 4113 828 1371 4114 697 1371 4115 695 1372 4116 827 1372 4117 694 1372 4118 692 1373 4119 691 1373 4120 709 1373 4121 689 1374 4122 688 1374 4123 706 1374 4124 686 1375 4125 685 1375 4126 703 1375 4127 700 1376 4128 699 1376 4129 717 1376 4130 697 1377 4131 696 1377 4132 714 1377 4133 691 1378 4134 690 1378 4135 708 1378 4136 688 1379 4137 687 1379 4138 705 1379 4139 685 1380 4140 701 1380 4141 702 1380 4142 699 1381 4143 698 1381 4144 716 1381 4145 696 1382 4146 695 1382 4147 713 1382 4148 710 1383 4149 693 1383 4150 709 1383 4151 690 1384 4152 689 1384 4153 707 1384 4154 687 1385 4155 686 1385 4156 704 1385 4157 701 1386 4158 700 1386 4159 718 1386 4160 698 1387 4161 697 1387 4162 715 1387 4163 712 1388 4164 695 1388 4165 711 1388 4166 729 1389 4167 728 1389 4168 746 1389 4169 709 1390 4170 708 1390 4171 726 1390 4172 723 1391 4173 706 1391 4174 722 1391 4175 720 1392 4176 703 1392 4177 719 1392 4178 734 1393 4179 717 1393 4180 733 1393 4181 731 1394 4182 714 1394 4183 730 1394 4184 725 1395 4185 708 1395 4186 724 1395 4187 722 1396 4188 705 1396 4189 721 1396 4190 719 1397 4191 702 1397 4192 735 1397 4193 733 1398 4194 716 1398 4195 732 1398 4196 730 1399 4197 713 1399 4198 729 1399 4199 710 1400 4200 709 1400 4201 727 1400 4202 724 1401 4203 707 1401 4204 723 1401 4205 721 1402 4206 704 1402 4207 720 1402 4208 735 1403 4209 718 1403 4210 734 1403 4211 732 1404 4212 715 1404 4213 731 1404 4214 729 1405 4215 712 1405 4216 728 1405 4217 766 1406 4218 749 1406 4219 765 1406 4220 743 1407 4221 726 1407 4222 742 1407 4223 740 1408 4224 723 1408 4225 739 1408 4226 737 1409 4227 720 1409 4228 736 1409 4229 751 1410 4230 734 1410 4231 750 1410 4232 731 1411 4233 730 1411 4234 748 1411 4235 742 1412 4236 725 1412 4237 741 1412 4238 739 1413 4239 722 1413 4240 738 1413 4241 736 1414 4242 719 1414 4243 752 1414 4244 750 1415 4245 733 1415 4246 749 1415 4247 747 1416 4248 730 1416 4249 746 1416 4250 744 1417 4251 727 1417 4252 743 1417 4253 724 1418 4254 723 1418 4255 741 1418 4256 738 1419 4257 721 1419 4258 737 1419 4259 752 1420 4260 735 1420 4261 751 1420 4262 749 1421 4263 732 1421 4264 748 1421 4265 769 1422 4266 768 1422 4267 786 1422 4268 746 1423 4269 745 1423 4270 763 1423 4271 743 1424 4272 742 1424 4273 760 1424 4274 740 1425 4275 739 1425 4276 757 1425 4277 737 1426 4278 736 1426 4279 754 1426 4280 751 1427 4281 750 1427 4282 768 1427 4283 748 1428 4284 747 1428 4285 765 1428 4286 759 1429 4287 742 1429 4288 758 1429 4289 739 1430 4290 738 1430 4291 756 1430 4292 736 1431 4293 752 1431 4294 753 1431 4295 750 1432 4296 749 1432 4297 767 1432 4298 764 1433 4299 747 1433 4300 763 1433 4301 744 1434 4302 743 1434 4303 761 1434 4304 741 1435 4305 740 1435 4306 758 1435 4307 738 1436 4308 737 1436 4309 755 1436 4310 769 1437 4311 752 1437 4312 768 1437 4313 803 1438 4314 786 1438 4315 802 1438 4316 766 1439 4317 765 1439 4318 783 1439 4319 780 1440 4320 763 1440 4321 779 1440 4322 760 1441 4323 759 1441 4324 777 1441 4325 757 1442 4326 756 1442 4327 774 1442 4328 754 1443 4329 753 1443 4330 771 1443 4331 768 1444 4332 767 1444 4333 785 1444 4334 765 1445 4335 764 1445 4336 782 1445 4337 759 1446 4338 758 1446 4339 776 1446 4340 756 1447 4341 755 1447 4342 773 1447 4343 753 1448 4344 769 1448 4345 770 1448 4346 767 1449 4347 766 1449 4348 784 1449 4349 764 1450 4350 763 1450 4351 781 1450 4352 761 1451 4353 760 1451 4354 778 1451 4355 758 1452 4356 757 1452 4357 775 1452 4358 755 1453 4359 754 1453 4360 772 1453 4361 783 1454 4362 782 1454 4363 800 1454 4364 780 1455 4365 779 1455 4366 797 1455 4367 794 1456 4368 777 1456 4369 793 1456 4370 774 1457 4371 773 1457 4372 791 1457 4373 788 1458 4374 771 1458 4375 787 1458 4376 785 1459 4377 784 1459 4378 802 1459 4379 799 1460 4380 782 1460 4381 798 1460 4382 776 1461 4383 775 1461 4384 793 1461 4385 790 1462 4386 773 1462 4387 789 1462 4388 770 1463 4389 786 1463 4390 787 1463 4391 801 1464 4392 784 1464 4393 800 1464 4394 781 1465 4395 780 1465 4396 798 1465 4397 795 1466 4398 778 1466 4399 794 1466 4400 792 1467 4401 775 1467 4402 791 1467 4403 772 1468 4404 771 1468 4405 789 1468 4406 805 1469 4407 675 1469 4408 804 1469 4409 807 1470 4410 672 1470 4411 806 1470 4412 809 1471 4413 669 1471 4414 808 1471 4415 811 1472 4416 683 1472 4417 810 1472 4418 813 1473 4419 680 1473 4420 812 1473 4421 804 1474 4422 674 1474 4423 816 1474 4424 806 1475 4425 671 1475 4426 817 1475 4427 808 1476 4428 668 1476 4429 818 1476 4430 810 1477 4431 682 1477 4432 819 1477 4433 812 1478 4434 679 1478 4435 820 1478 4436 815 1479 4437 676 1479 4438 805 1479 4439 816 1480 4440 673 1480 4441 807 1480 4442 817 1481 4443 670 1481 4444 809 1481 4445 818 1482 4446 684 1482 4447 811 1482 4448 819 1483 4449 681 1483 4450 813 1483 4451 820 1484 4452 678 1484 4453 814 1484 4454 835 1485 4455 808 1485 4456 829 1485 4457 831 1486 4458 816 1486 4459 825 1486 4460 822 1487 4461 813 1487 4462 833 1487 4463 832 1488 4464 815 1488 4465 826 1488 4466 823 1489 4467 811 1489 4468 834 1489 4469 837 1490 4470 804 1490 4471 831 1490 4472 836 1491 4473 806 1491 4474 830 1491 4475 824 1492 4476 809 1492 4477 835 1492 4478 825 1493 4479 807 1493 4480 836 1493 4481 826 1494 4482 805 1494 4483 837 1494 4484 827 1495 4485 820 1495 4486 821 1495 4487 828 1496 4488 819 1496 4489 822 1496 4490 833 1497 4491 812 1497 4492 827 1497 4493 829 1498 4494 818 1498 4495 823 1498 4496 834 1499 4497 810 1499 4498 828 1499 4499 830 1500 4500 817 1500 4501 824 1500 4502 868 1501 4503 851 1501 4504 869 1501 4505 852 1502 4506 645 1502 4507 853 1502 4508 851 1503 4509 643 1503 4510 852 1503 4511 641 1504 4512 643 1504 4513 850 1504 4514 849 1505 4515 639 1505 4516 850 1505 4517 848 1506 4518 637 1506 4519 849 1506 4520 635 1507 4521 637 1507 4522 847 1507 4523 838 1508 4524 617 1508 4525 839 1508 4526 845 1509 4527 631 1509 4528 846 1509 4529 629 1510 4530 631 1510 4531 844 1510 4532 627 1511 4533 629 1511 4534 843 1511 4535 842 1512 4536 625 1512 4537 843 1512 4538 841 1513 4539 623 1513 4540 842 1513 4541 621 1514 4542 623 1514 4543 840 1514 4544 619 1515 4545 621 1515 4546 839 1515 4547 649 1516 4548 617 1516 4549 854 1516 4550 865 1517 4551 848 1517 4552 866 1517 4553 862 1518 4554 845 1518 4555 863 1518 4556 859 1519 4557 842 1519 4558 860 1519 4559 856 1520 4560 839 1520 4561 857 1520 4562 870 1521 4563 853 1521 4564 871 1521 4565 867 1522 4566 850 1522 4567 868 1522 4568 864 1523 4569 847 1523 4570 865 1523 4571 861 1524 4572 844 1524 4573 862 1524 4574 858 1525 4575 841 1525 4576 859 1525 4577 855 1526 4578 838 1526 4579 856 1526 4580 869 1527 4581 852 1527 4582 870 1527 4583 866 1528 4584 849 1528 4585 867 1528 4586 860 1529 4587 843 1529 4588 861 1529 4589 857 1530 4590 840 1530 4591 858 1530 4592 871 1531 4593 854 1531 4594 855 1531 4595 874 1532 4596 528 1532 4597 873 1532 4598 876 1533 4599 530 1533 4600 872 1533 4601 873 1534 4602 529 1534 4603 875 1534 4604 877 1535 4605 533 1535 4606 876 1535 4607 879 1536 4608 535 1536 4609 878 1536 4610 881 1537 4611 537 1537 4612 879 1537 4613 880 1538 4614 539 1538 4615 882 1538 4616 883 1539 4617 540 1539 4618 881 1539 4619 882 1540 4620 541 1540 4621 884 1540 4622 885 1541 4623 542 1541 4624 883 1541 4625 884 1542 4626 543 1542 4627 886 1542 4628 887 1543 4629 544 1543 4630 885 1543 4631 886 1544 4632 545 1544 4633 888 1544 4634 889 1545 4635 546 1545 4636 887 1545 4637 891 1546 4638 548 1546 4639 890 1546 4640 890 1547 4641 549 1547 4642 892 1547 4643 892 1548 4644 550 1548 4645 893 1548 4646 893 1549 4647 551 1549 4648 894 1549 4649 894 1550 4650 552 1550 4651 895 1550 4652 895 1551 4653 553 1551 4654 896 1551 4655 896 1552 4656 554 1552 4657 897 1552 4658 897 1553 4659 555 1553 4660 898 1553 4661 900 1554 4662 572 1554 4663 899 1554 4664 899 1555 4665 573 1555 4666 901 1555 4667 901 1556 4668 574 1556 4669 902 1556 4670 902 1557 4671 575 1557 4672 903 1557 4673 903 1558 4674 576 1558 4675 904 1558 4676 904 1559 4677 577 1559 4678 905 1559 4679 905 1560 4680 578 1560 4681 906 1560 4682 906 1561 4683 579 1561 4684 891 1561 4685 888 1562 4686 547 1562 4687 900 1562 4688 898 1563 4689 556 1563 4690 889 1563 4691 907 1564 4692 581 1564 4693 877 1564 4694 878 1565 4695 582 1565 4696 907 1565 4697 908 1566 4698 584 1566 4699 874 1566 4700 910 1567 4701 586 1567 4702 909 1567 4703 911 1568 4704 587 1568 4705 910 1568 4706 912 1569 4707 588 1569 4708 911 1569 4709 913 1570 4710 589 1570 4711 912 1570 4712 914 1571 4713 590 1571 4714 913 1571 4715 915 1572 4716 591 1572 4717 914 1572 4718 916 1573 4719 592 1573 4720 915 1573 4721 917 1574 4722 593 1574 4723 916 1574 4724 919 1575 4725 610 1575 4726 918 1575 4727 920 1576 4728 611 1576 4729 919 1576 4730 921 1577 4731 612 1577 4732 920 1577 4733 922 1578 4734 613 1578 4735 921 1578 4736 923 1579 4737 614 1579 4738 922 1579 4739 924 1580 4740 615 1580 4741 923 1580 4742 925 1581 4743 616 1581 4744 924 1581 4745 909 1582 4746 585 1582 4747 925 1582 4748 918 1583 4749 609 1583 4750 908 1583 4751 927 1584 4752 636 1584 4753 928 1584 4754 926 1585 4755 634 1585 4756 930 1585 4757 929 1586 4758 660 1586 4759 927 1586 4760 930 1587 4761 659 1587 4762 931 1587 4763 932 1588 4764 832 1588 4765 933 1588 4766 933 1589 4767 693 1589 4768 935 1589 4769 936 1590 4770 728 1590 4771 934 1590 4772 935 1591 4773 710 1591 4774 937 1591 4775 938 1592 4776 745 1592 4777 936 1592 4778 937 1593 4779 727 1593 4780 939 1593 4781 940 1594 4782 762 1594 4783 938 1594 4784 939 1595 4785 744 1595 4786 941 1595 4787 942 1596 4788 779 1596 4789 940 1596 4790 941 1597 4791 761 1597 4792 943 1597 4793 944 1598 4794 788 1598 4795 945 1598 4796 946 1599 4797 789 1599 4798 944 1599 4799 947 1600 4800 790 1600 4801 946 1600 4802 948 1601 4803 791 1601 4804 947 1601 4805 949 1602 4806 792 1602 4807 948 1602 4808 950 1603 4809 793 1603 4810 949 1603 4811 951 1604 4812 794 1604 4813 950 1604 4814 952 1605 4815 795 1605 4816 951 1605 4817 953 1606 4818 797 1606 4819 954 1606 4820 955 1607 4821 798 1607 4822 953 1607 4823 956 1608 4824 799 1608 4825 955 1608 4826 957 1609 4827 800 1609 4828 956 1609 4829 958 1610 4830 801 1610 4831 957 1610 4832 959 1611 4833 802 1611 4834 958 1611 4835 960 1612 4836 803 1612 4837 959 1612 4838 945 1613 4839 787 1613 4840 960 1613 4841 954 1614 4842 796 1614 4843 942 1614 4844 943 1615 4845 778 1615 4846 952 1615 4847 931 1616 4848 676 1616 4849 961 1616 4850 961 1617 4851 815 1617 4852 932 1617 4853 928 1618 4854 635 1618 4855 962 1618 4856 963 1619 4857 855 1619 4858 964 1619 4859 964 1620 4860 856 1620 4861 965 1620 4862 965 1621 4863 857 1621 4864 966 1621 4865 966 1622 4866 858 1622 4867 967 1622 4868 967 1623 4869 859 1623 4870 968 1623 4871 968 1624 4872 860 1624 4873 969 1624 4874 969 1625 4875 861 1625 4876 970 1625 4877 970 1626 4878 862 1626 4879 971 1626 4880 972 1627 4881 864 1627 4882 973 1627 4883 973 1628 4884 865 1628 4885 974 1628 4886 974 1629 4887 866 1629 4888 975 1629 4889 975 1630 4890 867 1630 4891 976 1630 4892 976 1631 4893 868 1631 4894 977 1631 4895 977 1632 4896 869 1632 4897 978 1632 4898 978 1633 4899 870 1633 4900 979 1633 4901 979 1634 4902 871 1634 4903 963 1634 4904 962 1635 4905 847 1635 4906 972 1635 4907

+
+ + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

292 239 717 288 239 718 301 239 719 293 240 720 289 240 721 296 240 722 294 241 723 290 241 724 299 241 725 297 242 726 291 242 727 287 242 728 304 243 729 296 243 730 289 243 731 303 244 732 295 244 733 292 244 734 292 245 735 295 245 736 296 245 737 294 246 738 297 246 739 298 246 740 301 247 741 288 247 742 296 247 743 293 248 744 295 248 745 303 248 746 302 249 747 301 249 748 287 249 749 287 250 750 301 250 751 304 250 752 297 251 753 303 251 754 302 251 755 293 252 756 300 252 757 299 252 758 294 253 759 300 253 760 303 253 761 304 254 762 299 254 763 290 254 764 308 255 765 310 255 766 287 255 767 307 256 768 305 256 769 302 256 770 301 257 771 287 257 772 310 257 773 308 258 774 291 258 775 302 258 776 305 259 777 306 259 778 310 259 779 307 260 780 309 260 781 306 260 782 307 261 783 292 261 784 288 261 785 301 262 786 306 262 787 309 262 788 326 263 789 316 263 790 312 263 791 317 264 792 313 264 793 320 264 794 324 265 795 318 265 796 314 265 797 321 266 798 315 266 799 311 266 800 328 267 801 320 267 802 313 267 803 327 268 804 319 268 805 316 268 806 316 269 807 319 269 808 320 269 809 318 270 810 321 270 811 322 270 812 325 271 813 312 271 814 320 271 815 317 272 816 319 272 817 327 272 818 326 273 819 325 273 820 311 273 821 311 274 822 325 274 823 328 274 824 321 275 825 327 275 826 326 275 827 324 276 828 323 276 829 313 276 830 318 277 831 324 277 832 327 277 833 328 278 834 323 278 835 314 278 836 332 279 837 334 279 838 311 279 839 331 280 840 329 280 841 326 280 842 325 281 843 311 281 844 334 281 845 332 282 846 315 282 847 326 282 848 329 283 849 330 283 850 334 283 851 331 284 852 333 284 853 330 284 854 331 285 855 316 285 856 312 285 857 325 286 858 330 286 859 333 286 860 350 287 861 340 287 862 336 287 863 341 288 864 337 288 865 344 288 866 348 289 867 342 289 868 338 289 869 339 290 870 335 290 871 346 290 872 352 291 873 344 291 874 337 291 875 351 292 876 343 292 877 340 292 878 340 293 879 343 293 880 344 293 881 342 294 882 345 294 883 346 294 884 349 295 885 336 295 886 344 295 887 341 296 888 343 296 889 351 296 890 339 297 891 350 297 892 349 297 893 349 298 894 352 298 895 346 298 896 345 299 897 351 299 898 350 299 899 348 300 900 347 300 901 337 300 902 342 301 903 348 301 904 351 301 905 352 302 906 347 302 907 338 302 908 356 303 909 358 303 910 335 303 911 355 304 912 353 304 913 350 304 914 349 305 915 335 305 916 358 305 917 356 306 918 339 306 919 350 306 920 356 307 921 353 307 922 354 307 923 353 308 924 355 308 925 357 308 926 355 309 927 340 309 928 336 309 929 349 310 930 354 310 931 357 310 932 364 311 933 360 311 934 373 311 935 365 312 936 361 312 937 368 312 938 372 313 939 366 313 940 362 313 941 369 314 942 363 314 943 359 314 944 376 315 945 368 315 946 361 315 947 375 316 948 367 316 949 364 316 950 367 317 951 368 317 952 360 317 953 366 318 954 369 318 955 370 318 956 373 319 957 360 319 958 368 319 959 365 320 960 367 320 961 375 320 962 374 321 963 373 321 964 359 321 965 359 322 966 373 322 967 376 322 968 369 323 969 375 323 970 374 323 971 365 324 972 372 324 973 371 324 974 366 325 975 372 325 976 375 325 977 376 326 978 371 326 979 362 326 980 380 327 981 382 327 982 359 327 983 379 328 984 377 328 985 374 328 986 373 329 987 359 329 988 382 329 989 380 330 990 363 330 991 374 330 992 377 331 993 378 331 994 382 331 995 379 332 996 381 332 997 378 332 998 379 333 999 364 333 1000 360 333 1001 373 334 1002 378 334 1003 381 334 1004 386 335 1005 385 335 1006 391 335 1007 393 336 1008 389 336 1009 390 336 1010 392 337 1011 384 337 1012 388 337 1013 383 338 1014 387 338 1015 388 338 1016 385 339 1017 386 339 1018 390 339 1019 385 340 1020 389 340 1021 393 340 1022 384 341 1023 392 341 1024 391 341 1025 388 342 1026 387 342 1027 393 342 1028 386 343 1029 392 343 1030 394 343 1031 391 344 1032 393 344 1033 387 344 1034 398 345 1035 397 345 1036 403 345 1037 405 346 1038 401 346 1039 402 346 1040 396 347 1041 400 347 1042 406 347 1043 396 348 1044 395 348 1045 399 348 1046 397 349 1047 398 349 1048 402 349 1049 403 350 1050 397 350 1051 401 350 1052 396 351 1053 404 351 1054 403 351 1055 400 352 1056 399 352 1057 405 352 1058 404 353 1059 406 353 1060 402 353 1061 395 354 1062 403 354 1063 405 354 1064 410 355 1065 409 355 1066 415 355 1067 417 356 1068 413 356 1069 414 356 1070 416 357 1071 408 357 1072 412 357 1073 408 358 1074 407 358 1075 411 358 1076 410 359 1077 414 359 1078 413 359 1079 415 360 1080 409 360 1081 413 360 1082 408 361 1083 416 361 1084 415 361 1085 412 362 1086 411 362 1087 417 362 1088 410 363 1089 416 363 1090 418 363 1091 407 364 1092 415 364 1093 417 364 1094 422 365 1095 421 365 1096 427 365 1097 429 366 1098 425 366 1099 426 366 1100 420 367 1101 424 367 1102 430 367 1103 419 368 1104 423 368 1105 424 368 1106 422 369 1107 426 369 1108 425 369 1109 427 370 1110 421 370 1111 425 370 1112 420 371 1113 428 371 1114 427 371 1115 424 372 1116 423 372 1117 429 372 1118 422 373 1119 428 373 1120 430 373 1121 419 374 1122 427 374 1123 429 374 1124 440 375 1125 433 375 1126 431 375 1127 435 376 1128 437 376 1129 442 376 1130 434 377 1131 432 377 1132 436 377 1133 439 378 1134 431 378 1135 435 378 1136 434 379 1137 438 379 1138 442 379 1139 431 380 1140 433 380 1141 437 380 1142 434 381 1143 440 381 1144 439 381 1145 441 382 1146 442 382 1147 438 382 1148 432 383 1149 439 383 1150 441 383 1151 440 384 1152 442 384 1153 437 384 1154 452 385 1155 445 385 1156 443 385 1157 447 386 1158 449 386 1159 454 386 1160 446 387 1161 444 387 1162 448 387 1163 451 388 1164 443 388 1165 447 388 1166 446 389 1167 450 389 1168 454 389 1169 443 390 1170 445 390 1171 449 390 1172 446 391 1173 452 391 1174 451 391 1175 453 392 1176 454 392 1177 450 392 1178 444 393 1179 451 393 1180 453 393 1181 452 394 1182 454 394 1183 449 394 1184 464 395 1185 457 395 1186 455 395 1187 459 396 1188 461 396 1189 466 396 1190 456 397 1191 460 397 1192 462 397 1193 463 398 1194 455 398 1195 459 398 1196 458 399 1197 462 399 1198 466 399 1199 455 400 1200 457 400 1201 461 400 1202 458 401 1203 464 401 1204 463 401 1205 465 402 1206 466 402 1207 462 402 1208 456 403 1209 463 403 1210 465 403 1211 457 404 1212 464 404 1213 466 404 1214 476 405 1215 469 405 1216 467 405 1217 471 406 1218 473 406 1219 478 406 1220 470 407 1221 468 407 1222 472 407 1223 467 408 1224 471 408 1225 477 408 1226 470 409 1227 474 409 1228 478 409 1229 469 410 1230 473 410 1231 471 410 1232 470 411 1233 476 411 1234 475 411 1235 477 412 1236 478 412 1237 474 412 1238 468 413 1239 475 413 1240 477 413 1241 476 414 1242 478 414 1243 473 414 1244 488 415 1245 481 415 1246 479 415 1247 483 416 1248 485 416 1249 490 416 1250 480 417 1251 484 417 1252 486 417 1253 479 418 1254 483 418 1255 489 418 1256 488 419 1257 482 419 1258 486 419 1259 479 420 1260 481 420 1261 485 420 1262 482 421 1263 488 421 1264 487 421 1265 489 422 1266 490 422 1267 486 422 1268 487 423 1269 489 423 1270 484 423 1271 488 424 1272 490 424 1273 485 424 1274 500 425 1275 493 425 1276 491 425 1277 495 426 1278 497 426 1279 502 426 1280 492 427 1281 496 427 1282 498 427 1283 499 428 1284 491 428 1285 495 428 1286 494 429 1287 498 429 1288 502 429 1289 491 430 1290 493 430 1291 497 430 1292 494 431 1293 500 431 1294 499 431 1295 501 432 1296 502 432 1297 498 432 1298 499 433 1299 501 433 1300 496 433 1301 493 434 1302 500 434 1303 502 434 1304 512 435 1305 505 435 1306 503 435 1307 507 436 1308 509 436 1309 514 436 1310 504 437 1311 508 437 1312 510 437 1313 511 438 1314 503 438 1315 507 438 1316 506 439 1317 510 439 1318 514 439 1319 503 440 1320 505 440 1321 509 440 1322 506 441 1323 512 441 1324 511 441 1325 513 442 1326 514 442 1327 510 442 1328 511 443 1329 513 443 1330 508 443 1331 505 444 1332 512 444 1333 514 444 1334 524 445 1335 517 445 1336 515 445 1337 519 446 1338 521 446 1339 526 446 1340 518 447 1341 516 447 1342 520 447 1343 523 448 1344 515 448 1345 519 448 1346 518 449 1347 522 449 1348 526 449 1349 515 450 1350 517 450 1351 521 450 1352 518 451 1353 524 451 1354 523 451 1355 525 452 1356 526 452 1357 522 452 1358 516 453 1359 523 453 1360 525 453 1361 524 454 1362 526 454 1363 521 454 1364 302 1029 3087 292 1029 3088 301 1029 3089 295 1030 3090 293 1030 3091 296 1030 3092 300 1031 3093 294 1031 3094 299 1031 3095 298 1032 3096 297 1032 3097 287 1032 3098 299 1033 3099 304 1033 3100 289 1033 3101 302 1034 3102 303 1034 3103 292 1034 3104 288 1035 3105 292 1035 3106 296 1035 3107 290 1036 3108 294 1036 3109 298 1036 3110 304 1037 3111 301 1037 3112 296 1037 3113 300 1038 3114 293 1038 3115 303 1038 3116 291 1039 3117 302 1039 3118 287 1039 3119 298 1040 3120 287 1040 3121 304 1040 3122 291 1041 3123 297 1041 3124 302 1041 3125 289 1042 3126 293 1042 3127 299 1042 3128 297 1043 3129 294 1043 3130 303 1043 3131 298 1044 3132 304 1044 3133 290 1044 3134 291 1045 3135 308 1045 3136 287 1045 3137 292 1046 3138 307 1046 3139 302 1046 3140 306 1047 3141 301 1047 3142 310 1047 3143 305 1048 3144 308 1048 3145 302 1048 3146 308 1049 3147 305 1049 3148 310 1049 3149 305 1050 3150 307 1050 3151 306 1050 3152 309 1051 3153 307 1051 3154 288 1051 3155 288 1052 3156 301 1052 3157 309 1052 3158 325 1053 3159 326 1053 3160 312 1053 3161 319 1054 3162 317 1054 3163 320 1054 3164 323 1055 3165 324 1055 3166 314 1055 3167 322 1056 3168 321 1056 3169 311 1056 3170 323 1057 3171 328 1057 3172 313 1057 3173 326 1058 3174 327 1058 3175 316 1058 3176 312 1059 3177 316 1059 3178 320 1059 3179 314 1060 3180 318 1060 3181 322 1060 3182 328 1061 3183 325 1061 3184 320 1061 3185 324 1062 3186 317 1062 3187 327 1062 3188 315 1063 3189 326 1063 3190 311 1063 3191 322 1064 3192 311 1064 3193 328 1064 3194 315 1065 3195 321 1065 3196 326 1065 3197 317 1066 3198 324 1066 3199 313 1066 3200 321 1067 3201 318 1067 3202 327 1067 3203 322 1068 3204 328 1068 3205 314 1068 3206 315 1069 3207 332 1069 3208 311 1069 3209 316 1070 3210 331 1070 3211 326 1070 3212 330 1071 3213 325 1071 3214 334 1071 3215 329 1072 3216 332 1072 3217 326 1072 3218 332 1073 3219 329 1073 3220 334 1073 3221 329 1074 3222 331 1074 3223 330 1074 3224 333 1075 3225 331 1075 3226 312 1075 3227 312 1076 3228 325 1076 3229 333 1076 3230 349 1077 3231 350 1077 3232 336 1077 3233 343 1078 3234 341 1078 3235 344 1078 3236 347 1079 3237 348 1079 3238 338 1079 3239 345 1080 3240 339 1080 3241 346 1080 3242 347 1081 3243 352 1081 3244 337 1081 3245 350 1082 3246 351 1082 3247 340 1082 3248 336 1083 3249 340 1083 3250 344 1083 3251 338 1084 3252 342 1084 3253 346 1084 3254 352 1085 3255 349 1085 3256 344 1085 3257 348 1086 3258 341 1086 3259 351 1086 3260 335 1087 3261 339 1087 3262 349 1087 3263 335 1088 3264 349 1088 3265 346 1088 3266 339 1089 3267 345 1089 3268 350 1089 3269 341 1090 3270 348 1090 3271 337 1090 3272 345 1091 3273 342 1091 3274 351 1091 3275 346 1092 3276 352 1092 3277 338 1092 3278 339 1093 3279 356 1093 3280 335 1093 3281 340 1094 3282 355 1094 3283 350 1094 3284 354 1095 3285 349 1095 3286 358 1095 3287 353 1096 3288 356 1096 3289 350 1096 3290 358 1097 3291 356 1097 3292 354 1097 3293 354 1098 3294 353 1098 3295 357 1098 3296 357 1099 3297 355 1099 3298 336 1099 3299 336 1100 3300 349 1100 3301 357 1100 3302 374 1101 3303 364 1101 3304 373 1101 3305 367 1102 3306 365 1102 3307 368 1102 3308 371 1103 3309 372 1103 3310 362 1103 3311 370 1104 3312 369 1104 3313 359 1104 3314 371 1105 3315 376 1105 3316 361 1105 3317 374 1106 3318 375 1106 3319 364 1106 3320 364 1107 3321 367 1107 3322 360 1107 3323 362 1108 3324 366 1108 3325 370 1108 3326 376 1109 3327 373 1109 3328 368 1109 3329 372 1110 3330 365 1110 3331 375 1110 3332 363 1111 3333 374 1111 3334 359 1111 3335 370 1112 3336 359 1112 3337 376 1112 3338 363 1113 3339 369 1113 3340 374 1113 3341 361 1114 3342 365 1114 3343 371 1114 3344 369 1115 3345 366 1115 3346 375 1115 3347 370 1116 3348 376 1116 3349 362 1116 3350 363 1117 3351 380 1117 3352 359 1117 3353 364 1118 3354 379 1118 3355 374 1118 3356 378 1119 3357 373 1119 3358 382 1119 3359 377 1120 3360 380 1120 3361 374 1120 3362 380 1121 3363 377 1121 3364 382 1121 3365 377 1122 3366 379 1122 3367 378 1122 3368 381 1123 3369 379 1123 3370 360 1123 3371 360 1124 3372 373 1124 3373 381 1124 3374 392 1125 3375 386 1125 3376 391 1125 3377 394 1126 3378 393 1126 3379 390 1126 3380 394 1127 3381 392 1127 3382 388 1127 3383 384 1128 3384 383 1128 3385 388 1128 3386 389 1129 3387 385 1129 3388 390 1129 3389 391 1130 3390 385 1130 3391 393 1130 3392 383 1131 3393 384 1131 3394 391 1131 3395 394 1132 3396 388 1132 3397 393 1132 3398 390 1133 3399 386 1133 3400 394 1133 3401 383 1134 3402 391 1134 3403 387 1134 3404 404 1135 3405 398 1135 3406 403 1135 3407 406 1136 3408 405 1136 3409 402 1136 3410 404 1137 3411 396 1137 3412 406 1137 3413 400 1138 3414 396 1138 3415 399 1138 3416 401 1139 3417 397 1139 3418 402 1139 3419 405 1140 3420 403 1140 3421 401 1140 3422 395 1141 3423 396 1141 3424 403 1141 3425 406 1142 3426 400 1142 3427 405 1142 3428 398 1143 3429 404 1143 3430 402 1143 3431 399 1144 3432 395 1144 3433 405 1144 3434 416 1145 3435 410 1145 3436 415 1145 3437 418 1146 3438 417 1146 3439 414 1146 3440 418 1147 3441 416 1147 3442 412 1147 3443 412 1148 3444 408 1148 3445 411 1148 3446 409 1149 3447 410 1149 3448 413 1149 3449 417 1150 3450 415 1150 3451 413 1150 3452 407 1151 3453 408 1151 3454 415 1151 3455 418 1152 3456 412 1152 3457 417 1152 3458 414 1153 3459 410 1153 3460 418 1153 3461 411 1154 3462 407 1154 3463 417 1154 3464 428 1155 3465 422 1155 3466 427 1155 3467 430 1156 3468 429 1156 3469 426 1156 3470 428 1157 3471 420 1157 3472 430 1157 3473 420 1158 3474 419 1158 3475 424 1158 3476 421 1159 3477 422 1159 3478 425 1159 3479 429 1160 3480 427 1160 3481 425 1160 3482 419 1161 3483 420 1161 3484 427 1161 3485 430 1162 3486 424 1162 3487 429 1162 3488 426 1163 3489 422 1163 3490 430 1163 3491 423 1164 3492 419 1164 3493 429 1164 3494 439 1165 3495 440 1165 3496 431 1165 3497 441 1166 3498 435 1166 3499 442 1166 3500 438 1167 3501 434 1167 3502 436 1167 3503 441 1168 3504 439 1168 3505 435 1168 3506 440 1169 3507 434 1169 3508 442 1169 3509 435 1170 3510 431 1170 3511 437 1170 3512 432 1171 3513 434 1171 3514 439 1171 3515 436 1172 3516 441 1172 3517 438 1172 3518 436 1173 3519 432 1173 3520 441 1173 3521 433 1174 3522 440 1174 3523 437 1174 3524 451 1175 3525 452 1175 3526 443 1175 3527 453 1176 3528 447 1176 3529 454 1176 3530 450 1177 3531 446 1177 3532 448 1177 3533 453 1178 3534 451 1178 3535 447 1178 3536 452 1179 3537 446 1179 3538 454 1179 3539 447 1180 3540 443 1180 3541 449 1180 3542 444 1181 3543 446 1181 3544 451 1181 3545 448 1182 3546 453 1182 3547 450 1182 3548 448 1183 3549 444 1183 3550 453 1183 3551 445 1184 3552 452 1184 3553 449 1184 3554 463 1185 3555 464 1185 3556 455 1185 3557 465 1186 3558 459 1186 3559 466 1186 3560 458 1187 3561 456 1187 3562 462 1187 3563 465 1188 3564 463 1188 3565 459 1188 3566 464 1189 3567 458 1189 3568 466 1189 3569 459 1190 3570 455 1190 3571 461 1190 3572 456 1191 3573 458 1191 3574 463 1191 3575 460 1192 3576 465 1192 3577 462 1192 3578 460 1193 3579 456 1193 3580 465 1193 3581 461 1194 3582 457 1194 3583 466 1194 3584 475 1195 3585 476 1195 3586 467 1195 3587 477 1196 3588 471 1196 3589 478 1196 3590 474 1197 3591 470 1197 3592 472 1197 3593 475 1198 3594 467 1198 3595 477 1198 3596 476 1199 3597 470 1199 3598 478 1199 3599 467 1200 3600 469 1200 3601 471 1200 3602 468 1201 3603 470 1201 3604 475 1201 3605 472 1202 3606 477 1202 3607 474 1202 3608 472 1203 3609 468 1203 3610 477 1203 3611 469 1204 3612 476 1204 3613 473 1204 3614 487 1205 3615 488 1205 3616 479 1205 3617 489 1206 3618 483 1206 3619 490 1206 3620 482 1207 3621 480 1207 3622 486 1207 3623 487 1208 3624 479 1208 3625 489 1208 3626 490 1209 3627 488 1209 3628 486 1209 3629 483 1210 3630 479 1210 3631 485 1210 3632 480 1211 3633 482 1211 3634 487 1211 3635 484 1212 3636 489 1212 3637 486 1212 3638 480 1213 3639 487 1213 3640 484 1213 3641 481 1214 3642 488 1214 3643 485 1214 3644 499 1215 3645 500 1215 3646 491 1215 3647 501 1216 3648 495 1216 3649 502 1216 3650 494 1217 3651 492 1217 3652 498 1217 3653 501 1218 3654 499 1218 3655 495 1218 3656 500 1219 3657 494 1219 3658 502 1219 3659 495 1220 3660 491 1220 3661 497 1220 3662 492 1221 3663 494 1221 3664 499 1221 3665 496 1222 3666 501 1222 3667 498 1222 3668 492 1223 3669 499 1223 3670 496 1223 3671 497 1224 3672 493 1224 3673 502 1224 3674 511 1225 3675 512 1225 3676 503 1225 3677 513 1226 3678 507 1226 3679 514 1226 3680 506 1227 3681 504 1227 3682 510 1227 3683 513 1228 3684 511 1228 3685 507 1228 3686 512 1229 3687 506 1229 3688 514 1229 3689 507 1230 3690 503 1230 3691 509 1230 3692 504 1231 3693 506 1231 3694 511 1231 3695 508 1232 3696 513 1232 3697 510 1232 3698 504 1233 3699 511 1233 3700 508 1233 3701 509 1234 3702 505 1234 3703 514 1234 3704 523 1235 3705 524 1235 3706 515 1235 3707 525 1236 3708 519 1236 3709 526 1236 3710 522 1237 3711 518 1237 3712 520 1237 3713 525 1238 3714 523 1238 3715 519 1238 3716 524 1239 3717 518 1239 3718 526 1239 3719 519 1240 3720 515 1240 3721 521 1240 3722 516 1241 3723 518 1241 3724 523 1241 3725 520 1242 3726 525 1242 3727 522 1242 3728 520 1243 3729 516 1243 3730 525 1243 3731 517 1244 3732 524 1244 3733 521 1244 3734

+
+
+
+
+ + + + + 6.36878e-7 0.2306275 -3.26281 9.7265 0 -3.26281 -0.2306275 0.2222292 -3.270951 4.49048e-8 -6.35293e-7 7.13818 0 0 0 1 + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/Projekte/mdga/client/src/main/resources/Models/missile/AVMT300.fbx b/Projekte/mdga/client/src/main/resources/Models/missile/AVMT300.fbx new file mode 100644 index 00000000..da1c3da5 --- /dev/null +++ b/Projekte/mdga/client/src/main/resources/Models/missile/AVMT300.fbx @@ -0,0 +1,3052 @@ +; FBX 6.1.0 project file +; Created by Blender FBX Exporter +; for support mail: ideasman42@gmail.com +; ---------------------------------------------------- + +FBXHeaderExtension: { + FBXHeaderVersion: 1003 + FBXVersion: 6100 + CreationTimeStamp: { + Version: 1000 + Year: 2015 + Month: 09 + Day: 28 + Hour: 01 + Minute: 25 + Second: 11 + Millisecond: 0 + } + Creator: "FBX SDK/FBX Plugins build 20070228" + OtherFlags: { + FlagPLE: 0 + } +} +CreationTime: "2015-09-28 01:25:11:000" +Creator: "Blender version 2.70 (sub 0)" + +; Object definitions +;------------------------------------------------------------------ + +Definitions: { + Version: 100 + Count: 15 + ObjectType: "Model" { + Count: 9 + } + ObjectType: "Geometry" { + Count: 1 + } + ObjectType: "Material" { + Count: 3 + } + ObjectType: "Texture" { + Count: 1 + } + ObjectType: "Video" { + Count: 1 + } + ObjectType: "Pose" { + Count: 1 + } + ObjectType: "GlobalSettings" { + Count: 1 + } +} + +; Object properties +;------------------------------------------------------------------ + +Objects: { + Model: "Model::Camera Switcher", "CameraSwitcher" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Camera Index", "Integer", "A+",100 + } + MultiLayer: 0 + MultiTake: 1 + Hidden: "True" + Shading: W + Culling: "CullingOff" + Version: 101 + Name: "Model::Camera Switcher" + CameraId: 0 + CameraName: 100 + CameraIndexName: + } + Model: "Model::Cylinder_001", "Mesh" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",9.726499557495117,7.138179779052734,-0.222229242324829 + Property: "Lcl Rotation", "Lcl Rotation", "A+",85.956851534598101,-0.000003051558304,-89.999988843970513 + Property: "Lcl Scaling", "Lcl Scaling", "A+",3.270950555801392,3.270950317382812,3.270950317382812 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Size", "double", "",100 + Property: "Look", "enum", "",1 + } + MultiLayer: 0 + MultiTake: 1 + Shading: Y + Culling: "CullingOff" + Vertices: 0.432006,3.175161,-1.577862,0.432006,3.175161,0.242154,0.423705,3.090883,-1.577862,0.423705,3.090883,0.242154, + 0.399122,3.009843,-1.577862,0.399122,3.009843,0.242154,0.359201,2.935156,-1.577862,0.359201,2.935156,0.242154, + 0.305476,2.869693,-1.577862,0.305476,2.869693,0.242154,0.240013,2.815968,-1.577862,0.240013,2.815968,0.242154, + 0.165326,2.776047,-1.577862,0.165326,2.776047,0.242154,0.084286,2.751464,-1.577862,0.084286,2.751464,0.242154, + 0.000008,2.743163,-1.577862,0.000008,2.743163,0.242154,-0.084271,2.751464,-1.577862,-0.084271,2.751464,0.242154, + -0.165311,2.776047,-1.577862,-0.165311,2.776047,0.242154,-0.239998,2.815968,-1.577862,-0.239998,2.815968,0.242154, + -0.305461,2.869693,-1.577862,-0.305461,2.869693,0.242154,-0.359185,2.935156,-1.577862,-0.359185,2.935156,0.242154, + -0.399106,3.009843,-1.577862,-0.399106,3.009843,0.242154,-0.423689,3.090883,-1.577862,-0.423689,3.090883,0.242154, + -0.431990,3.175162,-1.577862,-0.431990,3.175162,0.242154,0.483367,3.175161,0.702782,0.474079,3.080863,0.702782, + 0.446574,2.990188,0.702782,0.401906,2.906621,0.702782,0.341794,2.833375,0.702782,0.268548,2.773263,0.702782, + 0.184981,2.728595,0.702782,0.094306,2.701089,0.702782,0.000008,2.691802,0.702782,-0.094291,2.701089,0.702782, + -0.184966,2.728595,0.702782,-0.268532,2.773263,0.702782,-0.341779,2.833375,0.702782,-0.401891,2.906621,0.702782, + -0.446558,2.990188,0.702782,-0.474064,3.080863,0.702782,-0.483351,3.175162,0.702782,0.474079,3.080863,1.211037, + 0.446574,2.990188,1.211037,0.401906,2.906621,1.211037,0.341794,2.833375,1.211037,0.268548,2.773263,1.211037, + 0.184981,2.728595,1.211037,0.094306,2.701089,1.211037,0.000008,2.691802,1.211037,-0.094291,2.701089,1.211037, + -0.184966,2.728595,1.211037,-0.268532,2.773263,1.211037,-0.341779,2.833375,1.211037,-0.401891,2.906621,1.211037, + -0.446558,2.990188,1.211037,-0.474064,3.080863,1.211037,0.474079,3.080863,7.211111,0.446574,2.990188,7.211111, + 0.401906,2.906621,7.211111,0.341794,2.833375,7.211111,0.268548,2.773263,7.211111,0.184981,2.728595,7.211111, + 0.094306,2.701089,7.211111,0.000008,2.691802,7.211111,-0.094291,2.701089,7.211111,-0.184966,2.728595,7.211111, + -0.268532,2.773263,7.211111,-0.341779,2.833375,7.211111,-0.401891,2.906621,7.211111,-0.446558,2.990188,7.211111, + -0.474064,3.080863,7.211111,0.483367,3.175161,7.766768,0.474079,3.080863,7.766768,0.446573,2.990188,7.766768, + 0.401906,2.906621,7.766768,0.341794,2.833375,7.766768,0.268548,2.773263,7.766768,0.184981,2.728595,7.766768, + 0.094306,2.701089,7.766768,0.000007,2.691802,7.766768,-0.094291,2.701089,7.766768,-0.184966,2.728595,7.766768, + -0.268533,2.773263,7.766768,-0.341779,2.833375,7.766768,-0.401891,2.906621,7.766768,-0.446558,2.990188,7.766768, + -0.474064,3.080863,7.766768,-0.483352,3.175162,7.766768,0.433588,3.175161,8.352459,0.425256,3.090574,8.352459, + 0.400583,3.009237,8.352459,0.360516,2.934277,8.352459,0.306595,2.868574,8.352459,0.240892,2.814653,8.352459, + 0.165932,2.774585,8.352459,0.084595,2.749913,8.352459,0.000008,2.741581,8.352459,-0.084580,2.749913,8.352459, + -0.165916,2.774586,8.352459,-0.240876,2.814653,8.352459,-0.306580,2.868574,8.352459,-0.360501,2.934277,8.352459, + -0.400568,3.009238,8.352459,-0.425241,3.090574,8.352459,-0.433572,3.175162,8.352459,0.271062,3.175161,8.818007, + 0.265854,3.122281,8.818007,0.250430,3.071433,8.818007,0.225382,3.024571,8.818007,0.191672,2.983497,8.818007, + 0.150598,2.949788,8.818007,0.103736,2.924740,8.818007,0.052888,2.909315,8.818007,0.000008,2.904107,8.818007, + -0.052872,2.909315,8.818007,-0.103720,2.924740,8.818007,-0.150582,2.949788,8.818007,-0.191656,2.983497,8.818007, + -0.225365,3.024572,8.818007,-0.250414,3.071433,8.818007,-0.265838,3.122281,8.818007,-0.271046,3.175161,8.818007, + 0.138464,3.175161,9.118361,0.135803,3.148150,9.118361,0.127924,3.122177,9.118361,0.115130,3.098239,9.118361, + 0.097911,3.077258,9.118361,0.076930,3.060039,9.118361,0.052993,3.047245,9.118361,0.027019,3.039366,9.118361, + 0.000008,3.036705,9.118361,-0.027004,3.039366,9.118361,-0.052977,3.047245,9.118361,-0.076914,3.060039,9.118361, + -0.097895,3.077258,9.118361,-0.115114,3.098239,9.118361,-0.127909,3.122177,9.118361,-0.135788,3.148150,9.118361, + -0.138448,3.175161,9.118361,0.047938,3.175161,9.268538,0.047017,3.165810,9.268538,0.044289,3.156819,9.268538, + 0.039860,3.148532,9.268538,0.033899,3.141269,9.268538,0.026636,3.135308,9.268538,0.018349,3.130879,9.268538, + 0.009358,3.128151,9.268538,0.000007,3.127230,9.268538,-0.009344,3.128151,9.268538,-0.018336,3.130879,9.268538, + -0.026622,3.135308,9.268538,-0.033886,3.141269,9.268538,-0.039846,3.148532,9.268538,-0.044276,3.156819,9.268538, + -0.047003,3.165810,9.268538,-0.047924,3.175161,9.268538,0.000007,3.175161,9.306959,0.000007,3.175161,9.306959, + 0.000007,3.175161,9.306959,0.000007,3.175161,9.306959,0.000007,3.175161,9.306959,0.000007,3.175161,9.306959, + 0.000007,3.175161,9.306959,0.000007,3.175161,9.306959,0.000007,3.175161,9.306959,0.000007,3.175161,9.306959, + 0.000007,3.175161,9.306959,0.000007,3.175161,9.306959,0.000007,3.175161,9.306959,0.000007,3.175161,9.306959, + 0.000007,3.175161,9.306959,0.000007,3.175161,9.306959,0.000007,3.175161,9.306959,0.094306,2.701089,2.259932, + 0.000008,2.691802,2.259932,0.341794,2.833375,2.259932,0.268548,2.773263,2.259932,0.474079,3.080863,2.259932, + 0.446574,2.990188,2.259932,-0.474064,3.080863,2.259932,-0.341779,2.833375,2.259932,-0.401891,2.906621,2.259932, + -0.094291,2.701089,2.259932,-0.184966,2.728595,2.259932,0.184981,2.728595,2.259932,0.401906,2.906621,2.259932, + -0.446558,2.990188,2.259932,-0.268532,2.773263,2.259932,-0.184966,2.728595,4.410946,-0.401891,2.906621,4.410946, + 0.446574,2.990188,4.410946,0.268548,2.773263,4.410946,0.000008,2.691802,4.410946,-0.268532,2.773263,4.410946, + -0.446558,2.990188,4.410946,0.401906,2.906621,4.410946,0.184981,2.728595,4.410946,-0.094291,2.701089,4.410946, + -0.341779,2.833375,4.410946,-0.474064,3.080863,4.410946,0.474079,3.080863,4.410946,0.341794,2.833375,4.410946, + 0.094306,2.701089,4.410946,0.392178,3.175161,-1.577862,0.384642,3.098653,-1.577862,0.362326,3.025084,-1.577862, + 0.326085,2.957283,-1.577862,0.277314,2.897855,-1.577862,0.217886,2.849084,-1.577862,0.150085,2.812843,-1.577862, + 0.076516,2.790526,-1.577862,0.000008,2.782991,-1.577862,-0.076501,2.790526,-1.577862,-0.150069,2.812843,-1.577862, + -0.217870,2.849084,-1.577862,-0.277298,2.897855,-1.577862,-0.326070,2.957283,-1.577862,-0.362310,3.025084,-1.577862, + -0.384627,3.098653,-1.577862,-0.392162,3.175162,-1.577862,0.392178,3.175161,-0.855649,0.384642,3.098653,-0.855649, + 0.362325,3.025084,-0.855649,0.326085,2.957283,-0.855649,0.277314,2.897855,-0.855649,0.217886,2.849084,-0.855649, + 0.150085,2.812843,-0.855649,0.076516,2.790526,-0.855649,0.000008,2.782991,-0.855649,-0.076501,2.790526,-0.855649, + -0.150069,2.812843,-0.855649,-0.217870,2.849084,-0.855649,-0.277298,2.897855,-0.855649,-0.326070,2.957283,-0.855649, + -0.362310,3.025084,-0.855649,-0.384627,3.098653,-0.855649,-0.392162,3.175162,-0.855649,0.432005,3.175161,-1.577862, + 0.432005,3.175161,0.242154,-0.474064,3.080863,0.702782,-0.483352,3.175161,0.702782,-0.474064,3.080863,1.211037, + -0.483352,3.175161,1.211037,-0.474064,3.080863,7.211111,-0.483351,3.175161,7.211111,-0.474064,3.080863,7.766768, + -0.483352,3.175161,7.766768,-0.474064,3.080863,2.259932,-0.483352,3.175161,2.259932,-0.483352,3.175161,4.410946, + -0.474064,3.080863,4.410946,0.392177,3.175161,-1.577862,0.392177,3.175161,-0.855649,0.432006,3.175161,0.242154, + 0.432006,3.175161,-1.577862,-0.483351,3.175162,0.702782,-0.474064,3.080863,0.702782,-0.474064,3.080863,1.211037, + -0.474064,3.080863,4.410946,-0.474064,3.080863,7.211111,-0.483352,3.175162,7.766768,-0.474064,3.080863,7.766768, + -0.474064,3.080863,2.259932,0.392178,3.175161,-1.577862,0.392178,3.175161,-0.855649,0.432005,3.175161,0.242154, + 0.432005,3.175161,-1.577862,-0.483352,3.175161,0.702782,-0.474064,3.080863,0.702782,-0.474064,3.080863,1.211037, + -0.474064,3.080863,4.410946,-0.474064,3.080863,7.211111,-0.483352,3.175161,7.766768,-0.474064,3.080863,7.766768, + -0.474064,3.080863,2.259932,0.392177,3.175161,-1.577862,0.392177,3.175161,-0.855649,0.205414,3.603282,1.556039, + 0.298288,3.541753,1.556039,0.278625,3.554779,7.474885,0.225071,3.590259,7.474885,0.250737,3.671695,1.556039, + 0.343612,3.610166,1.556039,0.302577,3.590932,7.474885,0.249023,3.626412,7.474885,0.343609,3.610167,7.334525, + 0.298285,3.541754,7.334525,0.250735,3.671696,7.334525,0.205411,3.603283,7.334525,0.251848,3.572519,7.474885, + 0.275800,3.608672,7.474885,0.251851,3.572518,1.556039,0.297174,3.640930,1.556039,0.297172,3.640931,7.334525, + 0.251848,3.572519,7.334525,0.275803,3.608671,1.415624,0.251851,3.572518,1.415624,0.302580,3.590931,1.415624, + 0.249025,3.626411,1.415624,0.278628,3.554778,1.415624,0.225074,3.590258,1.415624,-0.208088,2.777417,1.556039, + -0.300962,2.838947,1.556039,-0.281305,2.825923,7.474885,-0.227751,2.790443,7.474885,-0.253412,2.709005,1.556039, + -0.346286,2.770534,1.556039,-0.305257,2.789769,7.474885,-0.251702,2.754289,7.474885,-0.346289,2.770535,7.334525, + -0.300965,2.838948,7.334525,-0.253414,2.709005,7.334525,-0.208091,2.777418,7.334525,-0.254528,2.808183,7.474885, + -0.278480,2.772030,7.474885,-0.254525,2.808182,1.556039,-0.299849,2.739770,1.556039,-0.299851,2.739770,7.334525, + -0.254528,2.808183,7.334525,-0.278477,2.772029,1.415624,-0.254525,2.808182,1.415624,-0.305254,2.789769,1.415624, + -0.251699,2.754289,1.415624,-0.281302,2.825922,1.415624,-0.227748,2.790442,1.415624,-0.414270,3.397101,1.556039, + -0.352741,3.489975,1.556040,-0.365768,3.470315,7.474886,-0.401248,3.416761,7.474886,-0.482683,3.442424,1.556040, + -0.421153,3.535299,1.556040,-0.401922,3.494267,7.474886,-0.437402,3.440713,7.474886,-0.421156,3.535299,7.334525, + -0.352743,3.489975,7.334525,-0.482685,3.442425,7.334525,-0.414273,3.397101,7.334525,-0.383508,3.443538,7.474886, + -0.419662,3.467490,7.474886,-0.383505,3.443538,1.556040,-0.451918,3.488862,1.556040,-0.451921,3.488862,7.334525, + -0.383508,3.443538,7.334525,-0.419659,3.467490,1.415625,-0.383505,3.443538,1.415625,-0.401919,3.494267,1.415625, + -0.437399,3.440712,1.415625,-0.365765,3.470315,1.415625,-0.401245,3.416760,1.415625,0.411596,2.983599,1.556039, + 0.350066,2.890725,1.556039,0.363088,2.910386,7.474885,0.398568,2.963940,7.474885,0.480008,2.938276,1.556039, + 0.418479,2.845402,1.556039,0.399242,2.886434,7.474885,0.434722,2.939988,7.474885,0.418476,2.845402,7.334525, + 0.350064,2.890726,7.334525,0.480006,2.938276,7.334525,0.411593,2.983600,7.334525,0.380828,2.937163,7.474885, + 0.416982,2.913211,7.474885,0.380831,2.937162,1.556039,0.449244,2.891839,1.556039,0.449241,2.891839,7.334525, + 0.380828,2.937163,7.334525,0.416984,2.913211,1.415624,0.380831,2.937162,1.415624,0.399244,2.886433,1.415624, + 0.434724,2.939988,1.415624,0.363091,2.910385,1.415624,0.398571,2.963939,1.415624,-0.253367,2.796054,2.207124, + -1.085605,1.539854,2.551209,-0.253368,2.796055,4.350976,-1.085605,1.539855,3.209132,-0.270686,2.807527,2.207124, + -1.102923,1.551328,2.551209,-0.270687,2.807528,4.350976,-1.102924,1.551328,3.209132,-0.241667,2.788302,3.016956, + -1.073904,1.532102,3.017132,-0.282387,2.815280,3.016956,-1.114624,1.559080,3.017132,0.248516,3.597901,2.207124, + 1.080753,4.854100,2.551209,0.248515,3.597901,4.350976,1.080752,4.854101,3.209132,0.265834,3.586427,2.207124, + 1.098071,4.842627,2.551209,0.265833,3.586427,4.350976,1.098071,4.842627,3.209132,0.236814,3.605653,3.016956, + 1.069052,4.861853,3.017132,0.277535,3.578675,3.016956,1.109772,4.834875,3.017132,0.398498,2.946036,2.207124, + 1.654698,2.113799,2.551209,0.398497,2.946036,4.350976,1.654697,2.113799,3.209133,0.387024,2.928718,2.207124, + 1.643224,2.096480,2.551209,0.387024,2.928718,4.350976,1.643224,2.096480,3.209133,0.406249,2.957737,3.016956, + 1.662449,2.125500,3.017133,0.379272,2.917017,3.016956,1.635472,2.084779,3.017133,-0.403349,3.447918,2.207124, + -1.659549,4.280156,2.551208,-0.403350,3.447918,4.350976,-1.659549,4.280156,3.209132,-0.391876,3.465236,2.207124, + -1.648076,4.297474,2.551208,-0.391876,3.465237,4.350976,-1.648076,4.297474,3.209132,-0.411101,3.436217,3.016956, + -1.667301,4.268455,3.017132,-0.384124,3.476938,3.016956,-1.640324,4.309175,3.017132,0.128125,3.390323,0.866617, + 0.128125,3.390323,1.196025,0.752857,4.333309,0.866617,0.752857,4.333309,1.127136,0.118850,3.396467,0.866617, + 0.118850,3.396467,1.196025,0.743582,4.339453,0.866617,0.743582,4.339453,1.127136,0.132471,3.387444,1.031321, + 0.757203,4.330430,0.996877,0.114504,3.399347,1.031321,0.739236,4.342332,0.996877,0.337187,2.969171,0.866617, + 0.337187,2.969172,1.196025,1.280173,2.344440,0.866618,1.280173,2.344440,1.127137,0.343331,2.978446,0.866617, + 0.343331,2.978446,1.196025,1.286317,2.353714,0.866618,1.286317,2.353714,1.127137,0.334308,2.964825,1.031321, + 1.277294,2.340094,0.996877,0.346210,2.982792,1.031321,1.289196,2.358060,0.996877,-0.341210,3.418612,0.866617, + -0.341211,3.418612,1.196025,-1.284196,4.043344,0.866617,-1.284197,4.043344,1.127136,-0.347355,3.409337,0.866617, + -0.347355,3.409337,1.196025,-1.290341,4.034069,0.866617,-1.290341,4.034069,1.127136,-0.338331,3.422957,1.031321, + -1.281317,4.047689,0.996876,-0.350234,3.404991,1.031321,-1.293220,4.029723,0.996876,-0.341210,3.418611,-1.403426, + -0.341210,3.418611,-1.074017,-1.284196,4.043343,-1.403426,-1.284196,4.043343,-1.142907,-0.347354,3.409336,-1.403426, + -0.347354,3.409336,-1.074017,-1.290340,4.034069,-1.403426,-1.290340,4.034069,-1.142907,-0.338331,3.422957,-1.238722, + -1.281317,4.047689,-1.273166,-0.350233,3.404991,-1.238722,-1.293219,4.029723,-1.273166,0.337188,2.969171,-1.403426, + 0.337188,2.969171,-1.074017,1.280174,2.344439,-1.403425,1.280174,2.344439,-1.142906,0.343332,2.978446,-1.403426, + 0.343332,2.978446,-1.074017,1.286318,2.353714,-1.403425,1.286318,2.353714,-1.142906,0.334308,2.964825,-1.238721, + 1.277295,2.340093,-1.273166,0.346211,2.982792,-1.238721,1.289197,2.358060,-1.273166,-0.258259,2.807105,0.866617, + -0.258259,2.807105,1.196025,-0.882991,1.864120,0.866617,-0.882991,1.864119,1.127136,-0.248985,2.800961,0.866617, + -0.248985,2.800961,1.196025,-0.873716,1.857975,0.866617,-0.873717,1.857975,1.127136,-0.262605,2.809984,1.031321, + -0.887337,1.866999,0.996877,-0.244639,2.798081,1.031321,-0.869371,1.855096,0.996877,-0.231234,2.847895,-1.403426, + -0.231234,2.847895,-1.074017,-0.855966,1.904909,-1.403426,-0.855966,1.904909,-1.142906,-0.221960,2.841751,-1.403426, + -0.221960,2.841751,-1.074017,-0.846692,1.898765,-1.403426,-0.846692,1.898765,-1.142906,-0.235580,2.850775,-1.238721, + -0.860312,1.907789,-1.273166,-0.217614,2.838872,-1.238721,-0.842346,1.895886,-1.273166,0.128126,3.390322,-1.403426, + 0.128126,3.390322,-1.074018,0.752858,4.333308,-1.403426,0.752857,4.333308,-1.142906,0.118851,3.396467,-1.403426, + 0.118851,3.396467,-1.074018,0.743583,4.339453,-1.403426,0.743583,4.339453,-1.142906,0.132472,3.387443,-1.238722, + 0.757203,4.330429,-1.273166,0.114505,3.399346,-1.238722,0.739237,4.342332,-1.273166,0.432006,3.175161,0.242154, + -0.431990,3.175161,-1.577862,-0.431990,3.175161,0.242154,0.483367,3.175161,0.702782,0.474079,3.080862,0.702782, + -0.483351,3.175161,0.702782,0.483367,3.175161,1.211037,0.474079,3.080862,1.211037,0.483366,3.175161,7.211110, + 0.474079,3.080862,7.211110,0.483366,3.175161,7.766767,0.474079,3.080862,7.766767,-0.483352,3.175161,7.766767, + 0.433587,3.175161,8.352458,-0.433572,3.175161,8.352458,0.271062,3.175161,8.818006,-0.271047,3.175161,8.818006, + 0.138463,3.175161,9.118360,-0.138449,3.175161,9.118360,0.047937,3.175161,9.268537,-0.047925,3.175161,9.268537, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.474079,3.080862,2.259931,0.483367,3.175161,2.259931,0.483367,3.175161,4.410946,0.474079,3.080862,4.410946, + -0.392162,3.175161,-1.577862,0.000008,3.567330,-0.855649,0.076516,3.559795,-0.855649,0.150085,3.537478,-0.855649, + 0.217886,3.501238,-0.855649,0.277314,3.452467,-0.855649,0.326085,3.393039,-0.855649,0.362326,3.325237,-0.855649, + 0.384642,3.251669,-0.855649,0.392178,3.175161,-0.855649,0.384642,3.098652,-0.855649,0.362326,3.025084,-0.855649, + 0.326085,2.957283,-0.855649,0.277314,2.897855,-0.855649,0.217886,2.849083,-0.855649,0.150085,2.812843,-0.855649, + 0.076516,2.790526,-0.855649,0.000008,2.782991,-0.855649,-0.076501,2.790526,-0.855649,-0.150069,2.812843,-0.855649, + -0.217870,2.849083,-0.855649,-0.277298,2.897855,-0.855649,-0.326070,2.957283,-0.855649,-0.362310,3.025084,-0.855649, + -0.384627,3.098652,-0.855649,-0.392162,3.175161,-0.855649,-0.384626,3.251670,-0.855649,-0.362310,3.325238,-0.855649, + -0.326069,3.393039,-0.855649,-0.277298,3.452467,-0.855649,-0.217869,3.501238,-0.855649,-0.150068,3.537479,-0.855649, + -0.076500,3.559795,-0.855649,0.000008,3.607158,-1.577862,0.000008,3.607158,0.242154,0.084286,3.598858,-1.577862, + 0.084286,3.598858,0.242154,0.165326,3.574274,-1.577862,0.165326,3.574274,0.242154,0.240013,3.534353,-1.577862, + 0.240013,3.534353,0.242154,0.305476,3.480629,-1.577862,0.305476,3.480629,0.242154,0.359201,3.415165,-1.577862, + 0.359201,3.415165,0.242154,0.399122,3.340479,-1.577862,0.399122,3.340479,0.242154,0.423705,3.259439,-1.577862, + 0.423705,3.259439,0.242154,0.432006,3.175160,-1.577862,0.432005,3.175160,0.242154,-0.431990,3.175161,-1.577862, + -0.431990,3.175161,0.242154,-0.423689,3.259439,-1.577862,-0.423689,3.259439,0.242154,-0.399106,3.340479,-1.577862, + -0.399106,3.340479,0.242154,-0.359185,3.415166,-1.577862,-0.359185,3.415166,0.242154,-0.305460,3.480629,-1.577862, + -0.305461,3.480629,0.242154,-0.239997,3.534354,-1.577862,-0.239997,3.534354,0.242154,-0.165310,3.574275,-1.577862, + -0.165310,3.574275,0.242154,-0.084270,3.598858,-1.577862,-0.084270,3.598858,0.242154,0.000008,3.658520,0.702782, + 0.094306,3.649232,0.702782,0.184981,3.621726,0.702782,0.268548,3.577059,0.702782,0.341794,3.516947,0.702782, + 0.401906,3.443700,0.702782,0.446573,3.360134,0.702782,0.474079,3.269459,0.702782,0.483367,3.175160,0.702782, + -0.483352,3.175161,0.702782,-0.474064,3.269459,0.702782,-0.446558,3.360134,0.702782,-0.401891,3.443701,0.702782, + -0.341779,3.516948,0.702782,-0.268532,3.577059,0.702782,-0.184965,3.621726,0.702782,-0.094290,3.649232,0.702782, + 0.000008,3.658520,1.211037,0.094306,3.649232,1.211037,0.184981,3.621726,1.211037,0.268548,3.577059,1.211037, + 0.341794,3.516947,1.211037,0.401906,3.443700,1.211037,0.446573,3.360134,1.211037,0.474079,3.269459,1.211037, + 0.483367,3.175160,1.211037,-0.483352,3.175161,1.211037,-0.474064,3.269459,1.211037,-0.446558,3.360134,1.211037, + -0.401891,3.443701,1.211037,-0.341779,3.516948,1.211037,-0.268532,3.577059,1.211037,-0.184965,3.621726,1.211037, + -0.094290,3.649232,1.211037,0.000007,3.658520,7.211110,0.094306,3.649232,7.211110,0.184981,3.621726,7.211110, + 0.268547,3.577059,7.211110,0.341794,3.516947,7.211110,0.401906,3.443700,7.211110,0.446573,3.360134,7.211110, + 0.474079,3.269459,7.211110,0.483366,3.175160,7.211110,-0.483352,3.175161,7.211110,-0.474064,3.269459,7.211110, + -0.446558,3.360134,7.211110,-0.401891,3.443701,7.211110,-0.341779,3.516948,7.211110,-0.268532,3.577059,7.211110, + -0.184966,3.621726,7.211110,-0.094291,3.649232,7.211110,0.000007,3.658520,7.766767,0.094305,3.649232,7.766767, + 0.184980,3.621726,7.766767,0.268547,3.577059,7.766767,0.341793,3.516947,7.766767,0.401905,3.443700,7.766767, + 0.446572,3.360134,7.766767,0.474078,3.269459,7.766767,0.483366,3.175160,7.766767,-0.483352,3.175161,7.766767, + -0.474065,3.269459,7.766767,-0.446559,3.360134,7.766767,-0.401891,3.443701,7.766767,-0.341779,3.516948,7.766767, + -0.268533,3.577059,7.766767,-0.184966,3.621726,7.766767,-0.094291,3.649232,7.766767,0.000007,3.608740,8.352458, + 0.084594,3.600409,8.352458,0.165931,3.575736,8.352458,0.240891,3.535669,8.352458,0.306594,3.481747,8.352458, + 0.360515,3.416044,8.352458,0.400582,3.341084,8.352458,0.425256,3.259748,8.352458,0.433587,3.175160,8.352458, + -0.433573,3.175161,8.352458,-0.425242,3.259748,8.352458,-0.400568,3.341084,8.352458,-0.360501,3.416045,8.352458, + -0.306580,3.481748,8.352458,-0.240877,3.535669,8.352458,-0.165916,3.575736,8.352458,-0.084580,3.600409,8.352458, + 0.000007,3.446215,8.818006,0.052887,3.441006,8.818006,0.103735,3.425582,8.818006,0.150597,3.400534,8.818006, + 0.191672,3.366825,8.818006,0.225381,3.325750,8.818006,0.250429,3.278888,8.818006,0.265853,3.228040,8.818006, + 0.271061,3.175160,8.818006,-0.271047,3.175161,8.818006,-0.265839,3.228041,8.818006,-0.250414,3.278888,8.818006, + -0.225366,3.325750,8.818006,-0.191657,3.366825,8.818006,-0.150582,3.400534,8.818006,-0.103720,3.425582,8.818006, + -0.052872,3.441006,8.818006,0.000007,3.313616,9.118360,0.027018,3.310956,9.118360,0.052992,3.303077,9.118360, + 0.076929,3.290282,9.118360,0.097910,3.273063,9.118360,0.115129,3.252082,9.118360,0.127923,3.228145,9.118360, + 0.135802,3.202172,9.118360,0.138463,3.175160,9.118360,-0.138449,3.175161,9.118360,-0.135788,3.202172,9.118360, + -0.127910,3.228145,9.118360,-0.115115,3.252083,9.118360,-0.097896,3.273063,9.118360,-0.076915,3.290282,9.118360, + -0.052978,3.303077,9.118360,-0.027004,3.310956,9.118360,0.000006,3.223092,9.268537,0.009357,3.222170,9.268537, + 0.018348,3.219443,9.268537,0.026635,3.215014,9.268537,0.033898,3.209053,9.268537,0.039859,3.201789,9.268537, + 0.044288,3.193503,9.268537,0.047016,3.184511,9.268537,0.047937,3.175160,9.268537,-0.047925,3.175161,9.268537, + -0.047004,3.184511,9.268537,-0.044277,3.193503,9.268537,-0.039847,3.201789,9.268537,-0.033887,3.209053,9.268537, + -0.026623,3.215014,9.268537,-0.018337,3.219443,9.268537,-0.009345,3.222170,9.268537,0.000006,3.175160,9.306958, + 0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958, + 0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958, + 0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958, + 0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958, + 0.446573,3.360134,2.259931,0.474079,3.269459,2.259931,0.268548,3.577059,2.259931,0.341794,3.516947,2.259931, + 0.000007,3.658520,2.259931,0.094306,3.649232,2.259931,-0.268532,3.577059,2.259931,-0.184965,3.621726,2.259931, + -0.446558,3.360134,2.259931,-0.401891,3.443701,2.259931,-0.483352,3.175161,2.259931,0.483367,3.175160,2.259931, + 0.401906,3.443700,2.259931,0.184981,3.621726,2.259931,-0.094291,3.649232,2.259931,-0.341779,3.516948,2.259931, + -0.474064,3.269459,2.259931,-0.483352,3.175161,4.410946,-0.401891,3.443701,4.410946,-0.184966,3.621726,4.410946, + 0.094306,3.649232,4.410946,0.341794,3.516947,4.410946,0.474079,3.269459,4.410946,-0.474064,3.269459,4.410946, + -0.341779,3.516948,4.410946,-0.094291,3.649232,4.410946,0.184981,3.621726,4.410946,0.401906,3.443700,4.410946, + 0.483366,3.175160,4.410946,-0.446558,3.360134,4.410946,-0.268532,3.577059,4.410946,0.000007,3.658520,4.410946, + 0.268547,3.577059,4.410946,0.446573,3.360134,4.410946,0.000008,3.567330,-1.577862,0.076516,3.559795,-1.577862, + 0.150085,3.537478,-1.577862,0.217886,3.501238,-1.577862,0.277314,3.452466,-1.577862,0.326085,3.393038,-1.577862, + 0.362326,3.325237,-1.577862,0.384642,3.251669,-1.577862,0.392178,3.175160,-1.577862,-0.392162,3.175161,-1.577862, + -0.384627,3.251669,-1.577862,-0.362310,3.325238,-1.577862,-0.326069,3.393039,-1.577862,-0.277298,3.452466,-1.577862, + -0.217870,3.501238,-1.577862,-0.150069,3.537478,-1.577862,-0.076500,3.559795,-1.577862,0.000008,3.567330,-0.855649, + 0.076516,3.559795,-0.855649,0.150085,3.537478,-0.855649,0.217886,3.501238,-0.855649,0.277314,3.452466,-0.855649, + 0.326085,3.393038,-0.855649,0.362325,3.325237,-0.855649,0.384642,3.251669,-0.855649,0.392178,3.175160,-0.855649, + -0.392162,3.175161,-0.855649,-0.384627,3.251669,-0.855649,-0.362310,3.325238,-0.855649,-0.326069,3.393039,-0.855649, + -0.277298,3.452466,-0.855649,-0.217870,3.501238,-0.855649,-0.150069,3.537478,-0.855649,-0.076500,3.559795,-0.855649, + 0.432006,3.175161,0.242154,-0.431990,3.175161,0.242154,-0.431990,3.175161,-1.577862,-0.483351,3.175161,0.702782, + 0.483367,3.175161,0.702782,0.483367,3.175161,1.211037,0.483367,3.175161,4.410946,0.483366,3.175161,7.211110, + -0.483352,3.175161,7.766767,0.483366,3.175161,7.766767,-0.433572,3.175161,8.352458,0.433587,3.175161,8.352458, + -0.271047,3.175161,8.818006,0.271062,3.175161,8.818006,-0.138449,3.175161,9.118360,0.138463,3.175161,9.118360, + -0.047925,3.175161,9.268537,0.047937,3.175161,9.268537,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958, + 0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.000006,3.175161,9.306958,0.483367,3.175161,2.259931, + -0.392162,3.175161,-1.577862,0.000008,3.567330,-0.855649,0.076516,3.559795,-0.855649,0.150085,3.537478,-0.855649, + 0.217886,3.501238,-0.855649,0.277314,3.452467,-0.855649,0.326085,3.393039,-0.855649,0.362326,3.325237,-0.855649, + 0.384642,3.251669,-0.855649,0.392178,3.175161,-0.855649,-0.392162,3.175161,-0.855649,-0.384626,3.251670,-0.855649, + -0.362310,3.325238,-0.855649,-0.326069,3.393039,-0.855649,-0.277298,3.452467,-0.855649,-0.217869,3.501238,-0.855649, + -0.150068,3.537479,-0.855649,-0.076500,3.559795,-0.855649,0.432005,3.175160,0.242154,-0.431990,3.175161,0.242154, + -0.431990,3.175161,-1.577862,-0.483352,3.175161,0.702782,0.483367,3.175160,0.702782,0.483367,3.175160,1.211037, + 0.483366,3.175160,4.410946,0.483366,3.175160,7.211110,-0.483352,3.175161,7.766767,0.483366,3.175160,7.766767, + -0.433573,3.175161,8.352458,0.433587,3.175160,8.352458,-0.271047,3.175161,8.818006,0.271061,3.175160,8.818006, + -0.138449,3.175161,9.118360,0.138463,3.175160,9.118360,-0.047925,3.175161,9.268537,0.047937,3.175160,9.268537, + 0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958, + 0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958, + 0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958, + 0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958,0.000006,3.175160,9.306958, + 0.000006,3.175160,9.306958,0.483367,3.175160,2.259931,-0.392162,3.175161,-1.577862,0.000008,3.567330,-0.855649, + 0.076516,3.559795,-0.855649,0.150085,3.537478,-0.855649,0.217886,3.501238,-0.855649,0.277314,3.452466,-0.855649, + 0.326085,3.393038,-0.855649,0.362325,3.325237,-0.855649,0.384642,3.251669,-0.855649,0.392178,3.175160,-0.855649, + -0.392162,3.175161,-0.855649,-0.384627,3.251669,-0.855649,-0.362310,3.325238,-0.855649,-0.326069,3.393039,-0.855649, + -0.277298,3.452466,-0.855649,-0.217870,3.501238,-0.855649,-0.150069,3.537478,-0.855649,-0.076500,3.559795,-0.855649 + PolygonVertexIndex: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,9,-9,8,9,11,-11,10,11,13,-13,12,13,15,-15,14,15,17,-17, + 16,17,19,-19,18,19,21,-21,20,21,23,-23,22,23,25,-25,24,25,27,-27,26,27,29,-29,28,29,31,-31,30,31,33,-33, + 13,11,39,-41,39,38,54,-56,11,9,38,-40,9,7,37,-39,7,5,36,-38,5,3,35,-37,3,1,34,-36,33,31,49,-51, + 31,29,48,-50,29,27,47,-49,27,25,46,-48,25,23,45,-47,23,21,44,-46,21,19,43,-45,19,17,42,-44,17,15,41,-43, + 15,13,40,-42,202,212,72,-74,36,35,51,-53,47,46,62,-64,44,43,59,-61,41,40,56,-58,38,37,53,-55,49,48,64,-66, + 46,45,61,-63,43,42,58,-60,40,39,55,-57,37,36,52,-54,48,47,63,-65,45,44,60,-62,42,41,57,-59,76,75,91,-93, + 201,211,69,-71,200,210,66,-68,199,208,77,-79,198,207,74,-76,212,206,71,-73,211,205,68,-70,209,204,79,-81,208,203,76,-78, + 207,202,73,-75,206,201,70,-72,205,200,67,-69,204,199,78,-80,203,198,75,-77,95,94,111,-113,73,72,88,-90,70,69,85,-87, + 67,66,82,-84,78,77,93,-95,75,74,90,-92,72,71,87,-89,69,68,84,-86,80,79,95,-97,77,76,92,-94,74,73,89,-91, + 71,70,86,-88,68,67,83,-85,79,78,94,-96,92,91,108,-110,89,88,105,-107,86,85,102,-104,83,82,99,-101,97,96,113,-115, + 94,93,110,-112,91,90,107,-109,88,87,104,-106,85,84,101,-103,82,81,98,-100,96,95,112,-114,93,92,109,-111,90,89,106,-108, + 87,86,103,-105,84,83,100,-102,112,111,128,-130,109,108,125,-127,106,105,122,-124,103,102,119,-121,100,99,116,-118,114,113,130,-132, + 111,110,127,-129,108,107,124,-126,105,104,121,-123,102,101,118,-120,99,98,115,-117,113,112,129,-131,110,109,126,-128,107,106,123,-125, + 104,103,120,-122,101,100,117,-119,129,128,145,-147,126,125,142,-144,123,122,139,-141,120,119,136,-138,117,116,133,-135,131,130,147,-149, + 128,127,144,-146,125,124,141,-143,122,121,138,-140,119,118,135,-137,116,115,132,-134,130,129,146,-148,127,126,143,-145,124,123,140,-142, + 121,120,137,-139,118,117,134,-136,146,145,162,-164,143,142,159,-161,140,139,156,-158,137,136,153,-155,134,133,150,-152,148,147,164,-166, + 145,144,161,-163,142,141,158,-160,139,138,155,-157,136,135,152,-154,133,132,149,-151,147,146,163,-165,144,143,160,-162,141,140,157,-159, + 138,137,154,-156,135,134,151,-153,163,162,179,-181,160,159,176,-178,157,156,173,-175,154,153,170,-172,151,150,167,-169,165,164,181,-183, + 162,161,178,-180,159,158,175,-177,156,155,172,-174,153,152,169,-171,150,149,166,-168,164,163,180,-182,161,160,177,-179,158,157,174,-176, + 155,154,171,-173,152,151,168,-170,58,57,183,-185,55,54,185,-187,52,51,187,-189,63,62,190,-192,60,59,192,-194,57,56,194,-184, + 54,53,195,-186,65,64,196,-190,62,61,197,-191,59,58,184,-193,56,55,186,-195,53,52,188,-196,64,63,191,-197,61,60,193,-198, + 195,188,200,-206,197,193,198,-204,194,186,201,-207,196,191,199,-205,192,184,202,-208,185,195,205,-212,190,197,203,-209,183,194,206,-213, + 188,187,210,-201,193,192,207,-199,189,196,204,-210,186,185,211,-202,184,183,212,-203,191,190,208,-200,30,32,229,-229,28,30,228,-228, + 26,28,227,-227,24,26,226,-226,22,24,225,-225,20,22,224,-224,18,20,223,-223,16,18,222,-222,14,16,221,-221,12,14,220,-220, + 10,12,219,-219,8,10,218,-218,6,8,217,-217,4,6,216,-216,2,4,215,-215,0,2,214,-214,227,228,245,-245,224,225,242,-242, + 221,222,239,-239,218,219,236,-236,215,216,233,-233,226,227,244,-244,223,224,241,-241,220,221,238,-238,217,218,235,-235,214,215,232,-232, + 228,229,246,-246,225,226,243,-243,222,223,240,-240,219,220,237,-237,216,217,234,-234,213,214,231,-231,250,249,251,-253,259,260,253,-255, + 254,253,255,-257,252,251,257,-259,258,257,260,-260,1,0,264,-264,50,49,266,-266,49,65,267,-267,209,80,269,-269,96,97,270,-272, + 80,96,271,-270,65,189,272,-268,189,209,268,-273,0,213,273,-265,213,230,274,-274,247,248,275,-277,249,250,277,-279,251,249,278,-280, + 253,260,280,-282,256,255,283,-283,255,253,281,-284,257,251,279,-285,260,257,284,-281,261,247,276,-286,262,261,285,-287,302,292,288,-302, + 295,293,289,-297,300,294,290,-300,297,291,287,-299,304,296,289,-300,303,295,292,-303,292,295,296,-289,294,297,298,-291,301,288,296,-305, + 300,293,295,-304,291,302,301,-288,287,301,304,-299,297,303,302,-292,293,300,299,-290,294,300,303,-298,298,304,299,-291,291,308,310,-288, + 307,305,302,-293,301,287,310,-307,305,308,291,-303,308,305,306,-311,305,307,309,-307,307,292,288,-310,288,301,306,-310,326,316,312,-326, + 319,317,313,-321,324,318,314,-324,321,315,311,-323,328,320,313,-324,327,319,316,-327,316,319,320,-313,318,321,322,-315,325,312,320,-329, + 324,317,319,-328,315,326,325,-312,311,325,328,-323,321,327,326,-316,317,324,323,-314,318,324,327,-322,322,328,323,-315,315,332,334,-312, + 331,329,326,-317,325,311,334,-331,329,332,315,-327,332,329,330,-335,329,331,333,-331,331,316,312,-334,312,325,330,-334,350,340,336,-350, + 343,341,337,-345,348,342,338,-348,345,339,335,-347,352,344,337,-348,351,343,340,-351,340,343,344,-337,342,345,346,-339,349,336,344,-353, + 348,341,343,-352,339,350,349,-336,335,349,352,-347,345,351,350,-340,341,348,347,-338,342,348,351,-346,346,352,347,-339,339,356,358,-336, + 355,353,350,-341,349,335,358,-355,353,356,339,-351,356,353,354,-359,353,355,357,-355,355,340,336,-358,336,349,354,-358,374,364,360,-374, + 367,365,361,-369,372,366,362,-372,369,363,359,-371,376,368,361,-372,375,367,364,-375,364,367,368,-361,366,369,370,-363,373,360,368,-377, + 372,365,367,-376,363,374,373,-360,359,373,376,-371,369,375,374,-364,365,372,371,-362,366,372,375,-370,370,376,371,-363,363,380,382,-360, + 379,377,374,-365,373,359,382,-379,377,380,363,-375,380,377,378,-383,377,379,381,-379,379,364,360,-382,360,373,378,-382,392,386,385,-392, + 394,393,389,-391,392,384,388,-395,384,383,387,-389,385,386,390,-390,391,385,389,-394,384,392,391,-384,388,387,393,-395,386,392,394,-391, + 383,391,393,-388,404,398,397,-404,406,405,401,-403,404,396,400,-407,396,395,399,-401,397,398,402,-402,403,397,401,-406,396,404,403,-396, + 400,399,405,-407,398,404,406,-403,395,403,405,-400,416,410,409,-416,418,417,413,-415,416,408,412,-419,408,407,411,-413,409,410,414,-414, + 415,409,413,-418,408,416,415,-408,412,411,417,-419,410,416,418,-415,407,415,417,-412,428,422,421,-428,430,429,425,-427,428,420,424,-431, + 420,419,423,-425,421,422,426,-426,427,421,425,-430,420,428,427,-420,424,423,429,-431,422,428,430,-427,419,427,429,-424,439,440,433,-432, + 441,435,437,-443,434,432,436,-439,439,431,435,-442,440,434,438,-443,431,433,437,-436,432,434,440,-440,436,441,442,-439,432,439,441,-437, + 433,440,442,-438,451,452,445,-444,453,447,449,-455,446,444,448,-451,451,443,447,-454,452,446,450,-455,443,445,449,-448,444,446,452,-452, + 448,453,454,-451,444,451,453,-449,445,452,454,-450,463,464,457,-456,465,459,461,-467,458,456,460,-463,463,455,459,-466,464,458,462,-467, + 455,457,461,-460,456,458,464,-464,460,465,466,-463,456,463,465,-461,457,464,466,-462,475,476,469,-468,477,471,473,-479,470,468,472,-475, + 475,467,471,-478,476,470,474,-479,467,469,473,-472,468,470,476,-476,472,477,478,-475,468,475,477,-473,469,476,478,-474,487,488,481,-480, + 489,483,485,-491,482,480,484,-487,487,479,483,-490,488,482,486,-491,479,481,485,-484,480,482,488,-488,484,489,490,-487,480,487,489,-485, + 481,488,490,-486,499,500,493,-492,501,495,497,-503,494,492,496,-499,499,491,495,-502,500,494,498,-503,491,493,497,-496,492,494,500,-500, + 496,501,502,-499,492,499,501,-497,493,500,502,-498,511,512,505,-504,513,507,509,-515,506,504,508,-511,511,503,507,-514,512,506,510,-515, + 503,505,509,-508,504,506,512,-512,508,513,514,-511,504,511,513,-509,505,512,514,-510,523,524,517,-516,525,519,521,-527,518,516,520,-523, + 523,515,519,-526,524,518,522,-527,515,517,521,-520,516,518,524,-524,520,525,526,-523,516,523,525,-521,517,524,526,-522,531,530,533,-535, + 583,582,535,-537,536,535,537,-539,549,548,579,578,577,576,575,574,573,572,571,570,569,568,567,566,565,564,563,562,561,560,559,558, + 557,556,555,554,553,552,551,-551,534,533,581,-581,580,581,582,-584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600, + 601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,-617,617,618,620,-620,619,620,622,-622,621,622,624,-624,623,624,626,-626, + 625,626,628,-628,627,628,630,-630,629,630,632,-632,631,632,634,-634,635,636,638,-638,637,638,640,-640,639,640,642,-642,641,642,644,-644, + 643,644,646,-646,645,646,648,-648,649,650,618,-618,647,648,650,-650,647,649,854,-854,634,632,658,-660,632,630,657,-659,630,628,656,-658, + 628,626,655,-657,626,624,654,-656,624,622,653,-655,622,620,652,-654,618,650,667,-652,650,648,666,-668,648,646,665,-667,646,644,664,-666, + 644,642,663,-665,642,640,662,-664,640,638,661,-663,638,636,660,-662,620,618,651,-653,658,657,674,-676,655,654,671,-673,652,651,668,-670, + 666,665,682,-684,663,662,679,-681,657,656,673,-675,654,653,670,-672,651,667,684,-669,665,664,681,-683,662,661,678,-680,659,658,675,-677, + 656,655,672,-674,653,652,669,-671,667,666,683,-685,664,663,680,-682,661,660,677,-679,826,837,691,-693,825,836,688,-690,824,835,685,-687, + 823,834,699,-701,822,833,696,-698,837,831,690,-692,836,830,687,-689,835,829,701,-686,834,828,698,-700,833,827,695,-697,832,826,692,-694, + 831,825,689,-691,830,824,686,-688,829,823,700,-702,828,822,697,-699,827,821,694,-696,692,691,708,-710,689,688,705,-707,686,685,702,-704, + 700,699,716,-718,697,696,713,-715,691,690,707,-709,688,687,704,-706,685,701,718,-703,699,698,715,-717,696,695,712,-714,693,692,709,-711, + 690,689,706,-708,687,686,703,-705,701,700,717,-719,698,697,714,-716,695,694,711,-713,729,728,745,-747,709,708,725,-727,706,705,722,-724, + 703,702,719,-721,717,716,733,-735,714,713,730,-732,708,707,724,-726,705,704,721,-723,702,718,735,-720,716,715,732,-734,713,712,729,-731, + 710,709,726,-728,707,706,723,-725,704,703,720,-722,718,717,734,-736,715,714,731,-733,712,711,728,-730,749,748,765,-767,726,725,742,-744, + 723,722,739,-741,720,719,736,-738,734,733,750,-752,731,730,747,-749,725,724,741,-743,722,721,738,-740,719,735,752,-737,733,732,749,-751, + 730,729,746,-748,727,726,743,-745,724,723,740,-742,721,720,737,-739,735,734,751,-753,732,731,748,-750,769,768,785,-787,746,745,762,-764, + 743,742,759,-761,740,739,756,-758,737,736,753,-755,751,750,767,-769,748,747,764,-766,742,741,758,-760,739,738,755,-757,736,752,769,-754, + 750,749,766,-768,747,746,763,-765,744,743,760,-762,741,740,757,-759,738,737,754,-756,752,751,768,-770,786,785,802,-804,766,765,782,-784, + 763,762,779,-781,760,759,776,-778,757,756,773,-775,754,753,770,-772,768,767,784,-786,765,764,781,-783,759,758,775,-777,756,755,772,-774, + 753,769,786,-771,767,766,783,-785,764,763,780,-782,761,760,777,-779,758,757,774,-776,755,754,771,-773,783,782,799,-801,780,779,796,-798, + 777,776,793,-795,774,773,790,-792,771,770,787,-789,785,784,801,-803,782,781,798,-800,776,775,792,-794,773,772,789,-791,770,786,803,-788, + 784,783,800,-802,781,780,797,-799,778,777,794,-796,775,774,791,-793,772,771,788,-790,675,674,804,-806,672,671,806,-808,669,668,808,-810, + 683,682,810,-812,680,679,812,-814,674,673,816,-805,671,670,817,-807,668,684,818,-809,682,681,819,-811,679,678,820,-813,676,675,805,-816, + 673,672,807,-817,670,669,809,-818,684,683,811,-819,681,680,813,-820,678,677,814,-821,808,818,829,-836,816,807,825,-832,813,812,833,-823, + 815,805,826,-833,811,810,834,-824,804,816,831,-838,806,817,830,-837,809,808,835,-825,807,806,836,-826,805,804,837,-827,820,814,821,-828, + 819,813,822,-829,812,820,827,-834,818,811,823,-830,810,819,828,-835,817,809,824,-831,851,852,869,-869,645,647,853,-853,643,645,852,-852, + 641,643,851,-851,639,641,850,-850,637,639,849,-849,635,637,848,-848,617,619,839,-839,631,633,846,-846,629,631,845,-845,627,629,844,-844, + 625,627,843,-843,623,625,842,-842,621,623,841,-841,619,621,840,-840,649,617,838,-855,848,849,866,-866,845,846,863,-863,842,843,860,-860, + 839,840,857,-857,853,854,871,-871,850,851,868,-868,847,848,865,-865,844,845,862,-862,841,842,859,-859,838,839,856,-856,852,853,870,-870, + 849,850,867,-867,843,844,861,-861,840,841,858,-858,854,838,855,-872,528,529,873,-875,530,527,872,-877,529,532,875,-874,533,530,876,-878, + 535,582,878,-880,537,535,879,-882,539,541,882,-881,540,537,881,-884,541,543,884,-883,542,540,883,-886,543,545,886,-885,544,542,885,-888, + 545,547,888,-887,546,544,887,-890,548,549,890,-892,549,550,892,-891,550,551,893,-893,551,552,894,-894,552,553,895,-895,553,554,896,-896, + 554,555,897,-897,555,556,898,-898,572,573,899,-901,573,574,901,-900,574,575,902,-902,575,576,903,-903,576,577,904,-904,577,578,905,-905, + 578,579,906,-906,579,548,891,-907,547,572,900,-889,556,546,889,-899,581,533,877,-908,582,581,907,-879,584,528,874,-909,586,585,909,-911, + 587,586,910,-912,588,587,911,-913,589,588,912,-914,590,589,913,-915,591,590,914,-916,592,591,915,-917,593,592,916,-918,610,609,918,-920, + 611,610,919,-921,612,611,920,-922,613,612,921,-923,614,613,922,-924,615,614,923,-925,616,615,924,-926,585,616,925,-910,609,584,908,-919, + 636,635,928,-928,634,659,930,-927,660,636,927,-930,659,676,931,-931,832,693,933,-933,693,710,935,-934,728,711,934,-937,710,727,937,-936, + 745,728,936,-939,727,744,939,-938,762,745,938,-941,744,761,941,-940,779,762,940,-943,761,778,943,-942,788,787,945,-945,789,788,944,-947, + 790,789,946,-948,791,790,947,-949,792,791,948,-950,793,792,949,-951,794,793,950,-952,795,794,951,-953,797,796,954,-954,798,797,953,-956, + 799,798,955,-957,800,799,956,-958,801,800,957,-959,802,801,958,-960,803,802,959,-961,787,803,960,-946,796,779,942,-955,778,795,952,-944, + 676,815,961,-932,815,832,932,-962,635,847,962,-929,855,856,964,-964,856,857,965,-965,857,858,966,-966,858,859,967,-967,859,860,968,-968, + 860,861,969,-969,861,862,970,-970,862,863,971,-971,864,865,973,-973,865,866,974,-974,866,867,975,-975,867,868,976,-976,868,869,977,-977, + 869,870,978,-978,870,871,979,-979,871,855,963,-980,847,864,972,-963 + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 101 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: 0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000, + 0.956941,-0.290284,0.000000,0.956941,-0.290284,0.000000,0.956941,-0.290284,0.000000,0.956941,-0.290284,0.000000, + 0.881921,-0.471396,0.000000,0.881921,-0.471396,0.000000,0.881921,-0.471396,0.000000,0.881921,-0.471396,0.000000, + 0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000, + 0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000, + 0.471396,-0.881922,0.000000,0.471396,-0.881922,0.000000,0.471396,-0.881922,0.000000,0.471396,-0.881922,0.000000, + 0.290287,-0.956940,0.000000,0.290287,-0.956940,0.000000,0.290287,-0.956940,0.000000,0.290287,-0.956940,0.000000, + 0.098015,-0.995185,0.000000,0.098015,-0.995185,0.000000,0.098015,-0.995185,0.000000,0.098015,-0.995185,0.000000, + -0.098015,-0.995185,0.000000,-0.098015,-0.995185,0.000000,-0.098015,-0.995185,0.000000,-0.098015,-0.995185,0.000000, + -0.290287,-0.956940,0.000000,-0.290287,-0.956940,0.000000,-0.290287,-0.956940,0.000000,-0.290287,-0.956940,0.000000, + -0.471396,-0.881922,0.000000,-0.471396,-0.881922,0.000000,-0.471396,-0.881922,0.000000,-0.471396,-0.881922,0.000000, + -0.634395,-0.773009,0.000000,-0.634395,-0.773009,0.000000,-0.634395,-0.773009,0.000000,-0.634395,-0.773009,0.000000, + -0.773011,-0.634393,0.000000,-0.773011,-0.634393,0.000000,-0.773011,-0.634393,0.000000,-0.773011,-0.634393,0.000000, + -0.881921,-0.471398,0.000000,-0.881921,-0.471398,0.000000,-0.881921,-0.471398,0.000000,-0.881921,-0.471398,0.000000, + -0.956941,-0.290283,0.000000,-0.956941,-0.290283,0.000000,-0.956941,-0.290283,0.000000,-0.956941,-0.290283,0.000000, + -0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000, + 0.468521,-0.876541,-0.110290,0.468521,-0.876541,-0.110290,0.468521,-0.876541,-0.110290,0.468521,-0.876541,-0.110290, + 0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000, + 0.630524,-0.768294,-0.110289,0.630524,-0.768294,-0.110289,0.630524,-0.768294,-0.110289,0.630524,-0.768294,-0.110289, + 0.768294,-0.630524,-0.110289,0.768294,-0.630524,-0.110289,0.768294,-0.630524,-0.110289,0.768294,-0.630524,-0.110289, + 0.876541,-0.468521,-0.110289,0.876541,-0.468521,-0.110289,0.876541,-0.468521,-0.110289,0.876541,-0.468521,-0.110289, + 0.951103,-0.288513,-0.110289,0.951103,-0.288513,-0.110289,0.951103,-0.288513,-0.110289,0.951103,-0.288513,-0.110289, + 0.989114,-0.097420,-0.110289,0.989114,-0.097420,-0.110289,0.989114,-0.097420,-0.110289,0.989114,-0.097420,-0.110289, + -0.989114,-0.097417,-0.110290,-0.989114,-0.097417,-0.110290,-0.989114,-0.097417,-0.110290,-0.989114,-0.097417,-0.110290, + -0.951103,-0.288512,-0.110289,-0.951103,-0.288512,-0.110289,-0.951103,-0.288512,-0.110289,-0.951103,-0.288512,-0.110289, + -0.876541,-0.468522,-0.110289,-0.876541,-0.468522,-0.110289,-0.876541,-0.468522,-0.110289,-0.876541,-0.468522,-0.110289, + -0.768296,-0.630522,-0.110290,-0.768296,-0.630522,-0.110290,-0.768296,-0.630522,-0.110290,-0.768296,-0.630522,-0.110290, + -0.630524,-0.768294,-0.110290,-0.630524,-0.768294,-0.110290,-0.630524,-0.768294,-0.110290,-0.630524,-0.768294,-0.110290, + -0.468521,-0.876541,-0.110289,-0.468521,-0.876541,-0.110289,-0.468521,-0.876541,-0.110289,-0.468521,-0.876541,-0.110289, + -0.288516,-0.951102,-0.110290,-0.288516,-0.951102,-0.110290,-0.288516,-0.951102,-0.110290,-0.288516,-0.951102,-0.110290, + -0.097417,-0.989114,-0.110289,-0.097417,-0.989114,-0.110289,-0.097417,-0.989114,-0.110289,-0.097417,-0.989114,-0.110289, + 0.097417,-0.989114,-0.110288,0.097417,-0.989114,-0.110288,0.097417,-0.989114,-0.110288,0.097417,-0.989114,-0.110288, + 0.288514,-0.951102,-0.110289,0.288514,-0.951102,-0.110289,0.288514,-0.951102,-0.110289,0.288514,-0.951102,-0.110289, + 0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000, + 0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000, + -0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000, + -0.290286,-0.956940,0.000000,-0.290286,-0.956940,0.000000,-0.290286,-0.956940,0.000000,-0.290286,-0.956940,0.000000, + 0.290284,-0.956941,0.000000,0.290284,-0.956941,0.000000,0.290284,-0.956941,0.000000,0.290284,-0.956941,0.000000, + 0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000, + -0.956940,-0.290284,0.000000,-0.956940,-0.290284,0.000000,-0.956940,-0.290284,0.000000,-0.956940,-0.290284,0.000000, + -0.634392,-0.773012,0.000000,-0.634392,-0.773012,0.000000,-0.634392,-0.773012,0.000000,-0.634392,-0.773012,0.000000, + -0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000, + 0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000, + 0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000, + -0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000, + -0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000, + 0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000, + -0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000, + 0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000, + 0.956940,-0.290284,-0.000000,0.956940,-0.290284,-0.000000,0.956940,-0.290284,-0.000000,0.956940,-0.290284,-0.000000, + -0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000, + -0.290286,-0.956940,0.000000,-0.290286,-0.956940,0.000000,-0.290286,-0.956940,0.000000,-0.290286,-0.956940,0.000000, + 0.290284,-0.956941,-0.000000,0.290284,-0.956941,-0.000000,0.290284,-0.956941,-0.000000,0.290284,-0.956941,-0.000000, + 0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000, + -0.956940,-0.290284,0.000000,-0.956940,-0.290284,0.000000,-0.956940,-0.290284,0.000000,-0.956940,-0.290284,0.000000, + -0.634392,-0.773011,0.000000,-0.634392,-0.773011,0.000000,-0.634392,-0.773011,0.000000,-0.634392,-0.773011,0.000000, + -0.098014,-0.995185,-0.000000,-0.098014,-0.995185,-0.000000,-0.098014,-0.995185,-0.000000,-0.098014,-0.995185,-0.000000, + 0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000, + 0.881922,-0.471396,-0.000000,0.881922,-0.471396,-0.000000,0.881922,-0.471396,-0.000000,0.881922,-0.471396,-0.000000, + -0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000, + -0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000, + -0.878783,-0.469719,0.084283,-0.878783,-0.469719,0.084283,-0.878783,-0.469719,0.084283,-0.878783,-0.469719,0.084283, + 0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000, + 0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000, + 0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000, + -0.773012,-0.634391,-0.000001,-0.773012,-0.634391,-0.000001,-0.773012,-0.634391,-0.000001,-0.773012,-0.634391,-0.000001, + -0.290286,-0.956940,-0.000000,-0.290286,-0.956940,-0.000000,-0.290286,-0.956940,-0.000000,-0.290286,-0.956940,-0.000000, + 0.290284,-0.956940,0.000000,0.290284,-0.956940,0.000000,0.290284,-0.956940,0.000000,0.290284,-0.956940,0.000000, + 0.773010,-0.634394,0.000001,0.773010,-0.634394,0.000001,0.773010,-0.634394,0.000001,0.773010,-0.634394,0.000001, + -0.956941,-0.290284,-0.000000,-0.956941,-0.290284,-0.000000,-0.956941,-0.290284,-0.000000,-0.956941,-0.290284,-0.000000, + -0.634392,-0.773012,-0.000000,-0.634392,-0.773012,-0.000000,-0.634392,-0.773012,-0.000000,-0.634392,-0.773012,-0.000000, + -0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000, + 0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000, + 0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000, + -0.881921,-0.471397,-0.000000,-0.881921,-0.471397,-0.000000,-0.881921,-0.471397,-0.000000,-0.881921,-0.471397,-0.000000, + -0.469719,-0.878784,0.084282,-0.469719,-0.878784,0.084282,-0.469719,-0.878784,0.084282,-0.469719,-0.878784,0.084282, + 0.097668,-0.991644,0.084282,0.097668,-0.991644,0.084282,0.097668,-0.991644,0.084282,0.097668,-0.991644,0.084282, + 0.632137,-0.770259,0.084283,0.632137,-0.770259,0.084283,0.632137,-0.770259,0.084283,0.632137,-0.770259,0.084283, + 0.953535,-0.289252,0.084282,0.953535,-0.289252,0.084282,0.953535,-0.289252,0.084282,0.953535,-0.289252,0.084282, + -0.991644,-0.097666,0.084283,-0.991644,-0.097666,0.084283,-0.991644,-0.097666,0.084283,-0.991644,-0.097666,0.084283, + -0.770261,-0.632135,0.084283,-0.770261,-0.632135,0.084283,-0.770261,-0.632135,0.084283,-0.770261,-0.632135,0.084283, + -0.289253,-0.953535,0.084283,-0.289253,-0.953535,0.084283,-0.289253,-0.953535,0.084283,-0.289253,-0.953535,0.084283, + 0.289250,-0.953536,0.084283,0.289250,-0.953536,0.084283,0.289250,-0.953536,0.084283,0.289250,-0.953536,0.084283, + 0.770259,-0.632137,0.084282,0.770259,-0.632137,0.084282,0.770259,-0.632137,0.084282,0.770259,-0.632137,0.084282, + 0.991644,-0.097667,0.084282,0.991644,-0.097667,0.084282,0.991644,-0.097667,0.084282,0.991644,-0.097667,0.084282, + -0.953536,-0.289251,0.084283,-0.953536,-0.289251,0.084283,-0.953536,-0.289251,0.084283,-0.953536,-0.289251,0.084283, + -0.632136,-0.770260,0.084283,-0.632136,-0.770260,0.084283,-0.632136,-0.770260,0.084283,-0.632136,-0.770260,0.084283, + -0.097668,-0.991644,0.084283,-0.097668,-0.991644,0.084283,-0.097668,-0.991644,0.084283,-0.097668,-0.991644,0.084283, + 0.469720,-0.878783,0.084283,0.469720,-0.878783,0.084283,0.469720,-0.878783,0.084283,0.469720,-0.878783,0.084283, + 0.878784,-0.469718,0.084282,0.878784,-0.469718,0.084282,0.878784,-0.469718,0.084282,0.878784,-0.469718,0.084282, + -0.833075,-0.445289,0.328182,-0.833075,-0.445289,0.328182,-0.833075,-0.445289,0.328182,-0.833075,-0.445289,0.328182, + -0.445288,-0.833076,0.328182,-0.445288,-0.833076,0.328182,-0.445288,-0.833076,0.328182,-0.445288,-0.833076,0.328182, + 0.092589,-0.940066,0.328183,0.092589,-0.940066,0.328183,0.092589,-0.940066,0.328183,0.092589,-0.940066,0.328183, + 0.599257,-0.730197,0.328182,0.599257,-0.730197,0.328182,0.599257,-0.730197,0.328182,0.599257,-0.730197,0.328182, + 0.903940,-0.274207,0.328182,0.903940,-0.274207,0.328182,0.903940,-0.274207,0.328182,0.903940,-0.274207,0.328182, + -0.940066,-0.092586,0.328183,-0.940066,-0.092586,0.328183,-0.940066,-0.092586,0.328183,-0.940066,-0.092586,0.328183, + -0.730198,-0.599256,0.328182,-0.730198,-0.599256,0.328182,-0.730198,-0.599256,0.328182,-0.730198,-0.599256,0.328182, + -0.274204,-0.903940,0.328183,-0.274204,-0.903940,0.328183,-0.274204,-0.903940,0.328183,-0.274204,-0.903940,0.328183, + 0.274204,-0.903940,0.328183,0.274204,-0.903940,0.328183,0.274204,-0.903940,0.328183,0.274204,-0.903940,0.328183, + 0.730197,-0.599258,0.328181,0.730197,-0.599258,0.328181,0.730197,-0.599258,0.328181,0.730197,-0.599258,0.328181, + 0.940066,-0.092588,0.328182,0.940066,-0.092588,0.328182,0.940066,-0.092588,0.328182,0.940066,-0.092588,0.328182, + -0.903940,-0.274205,0.328182,-0.903940,-0.274205,0.328182,-0.903940,-0.274205,0.328182,-0.903940,-0.274205,0.328182, + -0.599257,-0.730196,0.328183,-0.599257,-0.730196,0.328183,-0.599257,-0.730196,0.328183,-0.599257,-0.730196,0.328183, + -0.092589,-0.940066,0.328183,-0.092589,-0.940066,0.328183,-0.092589,-0.940066,0.328183,-0.092589,-0.940066,0.328183, + 0.445290,-0.833075,0.328181,0.445290,-0.833075,0.328181,0.445290,-0.833075,0.328181,0.445290,-0.833075,0.328181, + 0.833075,-0.445288,0.328183,0.833075,-0.445288,0.328183,0.833075,-0.445288,0.328183,0.833075,-0.445288,0.328183, + -0.807429,-0.431581,0.402239,-0.807429,-0.431581,0.402239,-0.807429,-0.431581,0.402239,-0.807429,-0.431581,0.402239, + -0.431582,-0.807429,0.402238,-0.431582,-0.807429,0.402238,-0.431582,-0.807429,0.402238,-0.431582,-0.807429,0.402238, + 0.089735,-0.911127,0.402238,0.089735,-0.911127,0.402238,0.089735,-0.911127,0.402238,0.089735,-0.911127,0.402238, + 0.580809,-0.707717,0.402241,0.580809,-0.707717,0.402241,0.580809,-0.707717,0.402241,0.580809,-0.707717,0.402241, + 0.876112,-0.265766,0.402239,0.876112,-0.265766,0.402239,0.876112,-0.265766,0.402239,0.876112,-0.265766,0.402239, + -0.911127,-0.089736,0.402237,-0.911127,-0.089736,0.402237,-0.911127,-0.089736,0.402237,-0.911127,-0.089736,0.402237, + -0.707721,-0.580806,0.402238,-0.707721,-0.580806,0.402238,-0.707721,-0.580806,0.402238,-0.707721,-0.580806,0.402238, + -0.265762,-0.876113,0.402239,-0.265762,-0.876113,0.402239,-0.265762,-0.876113,0.402239,-0.265762,-0.876113,0.402239, + 0.265764,-0.876113,0.402238,0.265764,-0.876113,0.402238,0.265764,-0.876113,0.402238,0.265764,-0.876113,0.402238, + 0.707719,-0.580809,0.402238,0.707719,-0.580809,0.402238,0.707719,-0.580809,0.402238,0.707719,-0.580809,0.402238, + 0.911125,-0.089738,0.402242,0.911125,-0.089738,0.402242,0.911125,-0.089738,0.402242,0.911125,-0.089738,0.402242, + -0.876111,-0.265766,0.402242,-0.876111,-0.265766,0.402242,-0.876111,-0.265766,0.402242,-0.876111,-0.265766,0.402242, + -0.580811,-0.707716,0.402239,-0.580811,-0.707716,0.402239,-0.580811,-0.707716,0.402239,-0.580811,-0.707716,0.402239, + -0.089737,-0.911127,0.402238,-0.089737,-0.911127,0.402238,-0.089737,-0.911127,0.402238,-0.089737,-0.911127,0.402238, + 0.431578,-0.807431,0.402238,0.431578,-0.807431,0.402238,0.431578,-0.807431,0.402238,0.431578,-0.807431,0.402238, + 0.807430,-0.431579,0.402239,0.807430,-0.431579,0.402239,0.807430,-0.431579,0.402239,0.807430,-0.431579,0.402239, + -0.756286,-0.404233,0.514419,-0.756286,-0.404233,0.514419,-0.756286,-0.404233,0.514419,-0.756286,-0.404233,0.514419, + -0.404259,-0.756273,0.514419,-0.404259,-0.756273,0.514419,-0.404259,-0.756273,0.514419,-0.404259,-0.756273,0.514419, + 0.084048,-0.853407,0.514424,0.084048,-0.853407,0.514424,0.084048,-0.853407,0.514424,0.084048,-0.853407,0.514424, + 0.543998,-0.662893,0.514431,0.543998,-0.662893,0.514431,0.543998,-0.662893,0.514431,0.543998,-0.662893,0.514431, + 0.820613,-0.248929,0.514421,0.820613,-0.248929,0.514421,0.820613,-0.248929,0.514421,0.820613,-0.248929,0.514421, + -0.853412,-0.084051,0.514416,-0.853412,-0.084051,0.514416,-0.853412,-0.084051,0.514416,-0.853412,-0.084051,0.514416, + -0.662893,-0.544017,0.514410,-0.662893,-0.544017,0.514410,-0.662893,-0.544017,0.514410,-0.662893,-0.544017,0.514410, + -0.248921,-0.820613,0.514425,-0.248921,-0.820613,0.514425,-0.248921,-0.820613,0.514425,-0.248921,-0.820613,0.514425, + 0.248920,-0.820611,0.514429,0.248920,-0.820611,0.514429,0.248920,-0.820611,0.514429,0.248920,-0.820611,0.514429, + 0.662889,-0.544014,0.514420,0.662889,-0.544014,0.514420,0.662889,-0.544014,0.514420,0.662889,-0.544014,0.514420, + 0.853401,-0.084053,0.514433,0.853401,-0.084053,0.514433,0.853401,-0.084053,0.514433,0.853401,-0.084053,0.514433, + -0.820614,-0.248934,0.514417,-0.820614,-0.248934,0.514417,-0.820614,-0.248934,0.514417,-0.820614,-0.248934,0.514417, + -0.544014,-0.662889,0.514419,-0.544014,-0.662889,0.514419,-0.544014,-0.662889,0.514419,-0.544014,-0.662889,0.514419, + -0.084066,-0.853406,0.514423,-0.084066,-0.853406,0.514423,-0.084066,-0.853406,0.514423,-0.084066,-0.853406,0.514423, + 0.404258,-0.756271,0.514421,0.404258,-0.756271,0.514421,0.404258,-0.756271,0.514421,0.404258,-0.756271,0.514421, + 0.756274,-0.404238,0.514432,0.756274,-0.404238,0.514432,0.756274,-0.404238,0.514432,0.756274,-0.404238,0.514432, + -0.553273,-0.295710,0.778745,-0.553273,-0.295710,0.778745,-0.553273,-0.295710,0.778745,-0.553273,-0.295710,0.778745, + -0.295695,-0.553238,0.778776,-0.295695,-0.553238,0.778776,-0.295695,-0.553238,0.778776,-0.295695,-0.553238,0.778776, + 0.061416,-0.624278,0.778784,0.061416,-0.624278,0.778784,0.061416,-0.624278,0.778784,0.061416,-0.624278,0.778784, + 0.397924,-0.484923,0.778785,0.397924,-0.484923,0.778785,0.397924,-0.484923,0.778785,0.397924,-0.484923,0.778785, + 0.600283,-0.182094,0.778783,0.600283,-0.182094,0.778783,0.600283,-0.182094,0.778783,0.600283,-0.182094,0.778783, + -0.624255,-0.061481,0.778798,-0.624255,-0.061481,0.778798,-0.624255,-0.061481,0.778798,-0.624255,-0.061481,0.778798, + -0.484897,-0.397942,0.778792,-0.484897,-0.397942,0.778792,-0.484897,-0.397942,0.778792,-0.484897,-0.397942,0.778792, + -0.182073,-0.600281,0.778789,-0.182073,-0.600281,0.778789,-0.182073,-0.600281,0.778789,-0.182073,-0.600281,0.778789, + 0.182074,-0.600287,0.778784,0.182074,-0.600287,0.778784,0.182074,-0.600287,0.778784,0.182074,-0.600287,0.778784, + 0.484906,-0.397951,0.778781,0.484906,-0.397951,0.778781,0.484906,-0.397951,0.778781,0.484906,-0.397951,0.778781, + 0.624280,-0.061485,0.778777,0.624280,-0.061485,0.778777,0.624280,-0.061485,0.778777,0.624280,-0.061485,0.778777, + -0.600249,-0.182100,0.778807,-0.600249,-0.182100,0.778807,-0.600249,-0.182100,0.778807,-0.600249,-0.182100,0.778807, + -0.397908,-0.484903,0.778805,-0.397908,-0.484903,0.778805,-0.397908,-0.484903,0.778805,-0.397908,-0.484903,0.778805, + -0.061417,-0.624281,0.778782,-0.061417,-0.624281,0.778782,-0.061417,-0.624281,0.778782,-0.061417,-0.624281,0.778782, + 0.295683,-0.553216,0.778796,0.295683,-0.553216,0.778796,0.295683,-0.553216,0.778796,0.295683,-0.553216,0.778796, + 0.553251,-0.295698,0.778766,0.553251,-0.295698,0.778766,0.553251,-0.295698,0.778766,0.553251,-0.295698,0.778766, + 0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000, + 0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000, + 0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000, + -0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000, + -0.290287,-0.956940,0.000000,-0.290287,-0.956940,0.000000,-0.290287,-0.956940,0.000000,-0.290287,-0.956940,0.000000, + 0.290284,-0.956941,0.000000,0.290284,-0.956941,0.000000,0.290284,-0.956941,0.000000,0.290284,-0.956941,0.000000, + 0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000, + -0.956941,-0.290284,0.000000,-0.956941,-0.290284,0.000000,-0.956941,-0.290284,0.000000,-0.956941,-0.290284,0.000000, + -0.634392,-0.773011,0.000000,-0.634392,-0.773011,0.000000,-0.634392,-0.773011,0.000000,-0.634392,-0.773011,0.000000, + -0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000, + 0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000, + 0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000, + -0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000, + -0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000, + 0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000,0.881922,-0.471396,0.000000, + -0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000,-0.471397,-0.881921,0.000000, + 0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000,0.471397,-0.881921,0.000000, + -0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000,-0.881921,-0.471397,0.000000, + -0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000, + 0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000,0.773010,-0.634394,0.000000, + -0.634392,-0.773012,0.000000,-0.634392,-0.773012,0.000000,-0.634392,-0.773012,0.000000,-0.634392,-0.773012,0.000000, + 0.290284,-0.956940,0.000000,0.290284,-0.956940,0.000000,0.290284,-0.956940,0.000000,0.290284,-0.956940,0.000000, + 0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000,0.956940,-0.290284,0.000000, + -0.290286,-0.956940,0.000000,-0.290286,-0.956940,0.000000,-0.290286,-0.956940,0.000000,-0.290286,-0.956940,0.000000, + -0.956940,-0.290284,0.000000,-0.956940,-0.290284,0.000000,-0.956940,-0.290284,0.000000,-0.956940,-0.290284,0.000000, + 0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000,0.634394,-0.773010,0.000000, + 0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000,0.098014,-0.995185,0.000000, + -0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000,-0.773012,-0.634391,0.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + -0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + -0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000, + -0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000, + -0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + -0.000005,0.000000,-1.000000,-0.000005,0.000000,-1.000000,-0.000005,0.000000,-1.000000,-0.000005,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + -0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000, + 0.956941,0.290283,-0.000000,0.956941,0.290283,-0.000000,0.956941,0.290283,-0.000000,0.956941,0.290283,-0.000000, + 0.634395,0.773009,0.000000,0.634395,0.773009,0.000000,0.634395,0.773009,0.000000,0.634395,0.773009,0.000000, + 0.098011,0.995185,-0.000000,0.098011,0.995185,-0.000000,0.098011,0.995185,-0.000000,0.098011,0.995185,-0.000000, + -0.471396,0.881922,0.000000,-0.471396,0.881922,0.000000,-0.471396,0.881922,0.000000,-0.471396,0.881922,0.000000, + -0.881921,0.471397,0.000000,-0.881921,0.471397,0.000000,-0.881921,0.471397,0.000000,-0.881921,0.471397,0.000000, + 0.881921,0.471397,0.000000,0.881921,0.471397,0.000000,0.881921,0.471397,0.000000,0.881921,0.471397,0.000000, + 0.471396,0.881922,0.000000,0.471396,0.881922,0.000000,0.471396,0.881922,0.000000,0.471396,0.881922,0.000000, + -0.098011,0.995185,0.000000,-0.098011,0.995185,0.000000,-0.098011,0.995185,0.000000,-0.098011,0.995185,0.000000, + -0.634394,0.773010,0.000000,-0.634394,0.773010,0.000000,-0.634394,0.773010,0.000000,-0.634394,0.773010,0.000000, + -0.956941,0.290284,-0.000000,-0.956941,0.290284,-0.000000,-0.956941,0.290284,-0.000000,-0.956941,0.290284,-0.000000, + 0.995185,0.098016,-0.000000,0.995185,0.098016,-0.000000,0.995185,0.098016,-0.000000,0.995185,0.098016,-0.000000, + 0.773011,0.634392,0.000000,0.773011,0.634392,0.000000,0.773011,0.634392,0.000000,0.773011,0.634392,0.000000, + 0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000, + -0.290287,0.956940,0.000000,-0.290287,0.956940,0.000000,-0.290287,0.956940,0.000000,-0.290287,0.956940,0.000000, + -0.773010,0.634394,0.000000,-0.773010,0.634394,0.000000,-0.773010,0.634394,0.000000,-0.773010,0.634394,0.000000, + -0.995185,0.098017,-0.000000,-0.995185,0.098017,-0.000000,-0.995185,0.098017,-0.000000,-0.995185,0.098017,-0.000000, + -0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000, + -0.995185,-0.098016,0.000000,-0.995185,-0.098016,0.000000,-0.995185,-0.098016,0.000000,-0.995185,-0.098016,0.000000, + -0.995185,-0.098015,-0.000000,-0.995185,-0.098015,-0.000000,-0.995185,-0.098015,-0.000000,-0.995185,-0.098015,-0.000000, + -0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000, + -0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000,-0.995185,-0.098015,0.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,-0.000001,-1.000000,0.000000,-0.000001,-1.000000,0.000000,-0.000001,-1.000000,0.000000,-0.000001,-1.000000, + 0.822125,-0.544661,0.165696,0.822125,-0.544661,0.165696,0.822125,-0.544661,0.165696,0.822125,-0.544661,0.165696, + -0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000, + -0.833649,0.552295,-0.000000,-0.833649,0.552295,-0.000000,-0.833649,0.552295,-0.000000,-0.833649,0.552295,-0.000000, + -0.552297,-0.833647,0.000002,-0.552297,-0.833647,0.000002,-0.552297,-0.833647,0.000002,-0.552297,-0.833647,0.000002, + 0.552296,0.833648,0.000000,0.552296,0.833648,0.000000,0.552296,0.833648,0.000000,0.552296,0.833648,0.000000, + 0.833648,-0.552295,0.000000,0.833648,-0.552295,0.000000,0.833648,-0.552295,0.000000,0.833648,-0.552295,0.000000, + -0.822124,0.544662,0.165696,-0.822124,0.544662,0.165696,-0.822124,0.544662,0.165696,-0.822124,0.544662,0.165696, + -0.552296,-0.833648,-0.000000,-0.552296,-0.833648,-0.000000,-0.552296,-0.833648,-0.000000,-0.552296,-0.833648,-0.000000, + 0.532435,0.803663,0.265777,0.532435,0.803663,0.265777,0.532435,0.803663,0.265777,0.532435,0.803663,0.265777, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + -0.552295,-0.833649,-0.000000,-0.552295,-0.833649,-0.000000,-0.552295,-0.833649,-0.000000,-0.552295,-0.833649,-0.000000, + 0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000, + -0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000, + 0.532428,0.803667,0.265781,0.532428,0.803667,0.265781,0.532428,0.803667,0.265781,0.532428,0.803667,0.265781, + -0.552294,-0.833649,0.000000,-0.552294,-0.833649,0.000000,-0.552294,-0.833649,0.000000,-0.552294,-0.833649,0.000000, + -0.822134,0.544667,-0.165631,-0.822134,0.544667,-0.165631,-0.822134,0.544667,-0.165631,-0.822134,0.544667,-0.165631, + 0.532447,0.803687,-0.265682,0.532447,0.803687,-0.265682,0.532447,0.803687,-0.265682,0.532447,0.803687,-0.265682, + -0.552296,-0.833648,0.000001,-0.552296,-0.833648,0.000001,-0.552296,-0.833648,0.000001,-0.552296,-0.833648,0.000001, + 0.532447,0.803687,-0.265682,0.532447,0.803687,-0.265682,0.532447,0.803687,-0.265682,0.532447,0.803687,-0.265682, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000005,-0.000004,-1.000000,0.000005,-0.000004,-1.000000,0.000005,-0.000004,-1.000000,0.000005,-0.000004,-1.000000, + 0.822134,-0.544667,-0.165632,0.822134,-0.544667,-0.165632,0.822134,-0.544667,-0.165632,0.822134,-0.544667,-0.165632, + -0.552296,-0.833648,-0.000001,-0.552296,-0.833648,-0.000001,-0.552296,-0.833648,-0.000001,-0.552296,-0.833648,-0.000001, + -0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000, + -0.822125,0.544661,0.165695,-0.822125,0.544661,0.165695,-0.822125,0.544661,0.165695,-0.822125,0.544661,0.165695, + -0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000, + 0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000, + 0.552291,0.833651,0.000002,0.552291,0.833651,0.000002,0.552291,0.833651,0.000002,0.552291,0.833651,0.000002, + -0.552293,-0.833650,-0.000000,-0.552293,-0.833650,-0.000000,-0.552293,-0.833650,-0.000000,-0.552293,-0.833650,-0.000000, + -0.833648,0.552295,-0.000000,-0.833648,0.552295,-0.000000,-0.833648,0.552295,-0.000000,-0.833648,0.552295,-0.000000, + 0.822125,-0.544661,0.165695,0.822125,-0.544661,0.165695,0.822125,-0.544661,0.165695,0.822125,-0.544661,0.165695, + 0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000, + -0.532425,-0.803670,0.265779,-0.532425,-0.803670,0.265779,-0.532425,-0.803670,0.265779,-0.532425,-0.803670,0.265779, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.552296,0.833648,0.000000,0.552296,0.833648,0.000000,0.552296,0.833648,0.000000,0.552296,0.833648,0.000000, + -0.552298,-0.833647,-0.000000,-0.552298,-0.833647,-0.000000,-0.552298,-0.833647,-0.000000,-0.552298,-0.833647,-0.000000, + 0.000011,0.000000,1.000000,0.000011,0.000000,1.000000,0.000011,0.000000,1.000000,0.000011,0.000000,1.000000, + -0.532433,-0.803664,0.265780,-0.532433,-0.803664,0.265780,-0.532433,-0.803664,0.265780,-0.532433,-0.803664,0.265780, + 0.552297,0.833648,-0.000002,0.552297,0.833648,-0.000002,0.552297,0.833648,-0.000002,0.552297,0.833648,-0.000002, + 0.822133,-0.544667,-0.165633,0.822133,-0.544667,-0.165633,0.822133,-0.544667,-0.165633,0.822133,-0.544667,-0.165633, + -0.532445,-0.803689,-0.265680,-0.532445,-0.803689,-0.265680,-0.532445,-0.803689,-0.265680,-0.532445,-0.803689,-0.265680, + 0.552297,0.833648,0.000000,0.552297,0.833648,0.000000,0.552297,0.833648,0.000000,0.552297,0.833648,0.000000, + -0.532449,-0.803686,-0.265682,-0.532449,-0.803686,-0.265682,-0.532449,-0.803686,-0.265682,-0.532449,-0.803686,-0.265682, + -0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000, + 0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000, + -0.822134,0.544667,-0.165633,-0.822134,0.544667,-0.165633,-0.822134,0.544667,-0.165633,-0.822134,0.544667,-0.165633, + 0.552294,0.833649,0.000002,0.552294,0.833649,0.000002,0.552294,0.833649,0.000002,0.552294,0.833649,0.000002, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.544664,0.822123,0.165694,0.544664,0.822123,0.165694,0.544664,0.822123,0.165694,0.544664,0.822123,0.165694, + 0.000011,0.000000,1.000000,0.000011,0.000000,1.000000,0.000011,0.000000,1.000000,0.000011,0.000000,1.000000, + -0.552294,-0.833649,-0.000000,-0.552294,-0.833649,-0.000000,-0.552294,-0.833649,-0.000000,-0.552294,-0.833649,-0.000000, + 0.833649,-0.552295,0.000002,0.833649,-0.552295,0.000002,0.833649,-0.552295,0.000002,0.833649,-0.552295,0.000002, + -0.833648,0.552296,-0.000000,-0.833648,0.552296,-0.000000,-0.833648,0.552296,-0.000000,-0.833648,0.552296,-0.000000, + 0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000, + -0.544663,-0.822124,0.165693,-0.544663,-0.822124,0.165693,-0.544663,-0.822124,0.165693,-0.544663,-0.822124,0.165693, + 0.833649,-0.552295,0.000000,0.833649,-0.552295,0.000000,0.833649,-0.552295,0.000000,0.833649,-0.552295,0.000000, + -0.803666,0.532431,0.265777,-0.803666,0.532431,0.265777,-0.803666,0.532431,0.265777,-0.803666,0.532431,0.265777, + 0.000000,0.000001,-1.000000,0.000000,0.000001,-1.000000,0.000000,0.000001,-1.000000,0.000000,0.000001,-1.000000, + 0.833648,-0.552295,0.000000,0.833648,-0.552295,0.000000,0.833648,-0.552295,0.000000,0.833648,-0.552295,0.000000, + -0.833650,0.552293,-0.000000,-0.833650,0.552293,-0.000000,-0.833650,0.552293,-0.000000,-0.833650,0.552293,-0.000000, + -0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000,-0.000011,0.000000,1.000000, + -0.803666,0.532432,0.265777,-0.803666,0.532432,0.265777,-0.803666,0.532432,0.265777,-0.803666,0.532432,0.265777, + 0.833649,-0.552294,0.000000,0.833649,-0.552294,0.000000,0.833649,-0.552294,0.000000,0.833649,-0.552294,0.000000, + -0.544667,-0.822134,-0.165632,-0.544667,-0.822134,-0.165632,-0.544667,-0.822134,-0.165632,-0.544667,-0.822134,-0.165632, + -0.803686,0.532448,-0.265683,-0.803686,0.532448,-0.265683,-0.803686,0.532448,-0.265683,-0.803686,0.532448,-0.265683, + 0.833649,-0.552295,0.000000,0.833649,-0.552295,0.000000,0.833649,-0.552295,0.000000,0.833649,-0.552295,0.000000, + -0.803689,0.532445,-0.265682,-0.803689,0.532445,-0.265682,-0.803689,0.532445,-0.265682,-0.803689,0.532445,-0.265682, + -0.000003,0.000000,-1.000000,-0.000003,0.000000,-1.000000,-0.000003,0.000000,-1.000000,-0.000003,0.000000,-1.000000, + 0.000008,0.000004,-1.000000,0.000008,0.000004,-1.000000,0.000008,0.000004,-1.000000,0.000008,0.000004,-1.000000, + 0.544666,0.822134,-0.165634,0.544666,0.822134,-0.165634,0.544666,0.822134,-0.165634,0.544666,0.822134,-0.165634, + 0.833650,-0.552293,0.000000,0.833650,-0.552293,0.000000,0.833650,-0.552293,0.000000,0.833650,-0.552293,0.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + -0.544663,-0.822124,0.165693,-0.544663,-0.822124,0.165693,-0.544663,-0.822124,0.165693,-0.544663,-0.822124,0.165693, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.552296,0.833648,0.000000,0.552296,0.833648,0.000000,0.552296,0.833648,0.000000,0.552296,0.833648,0.000000, + -0.833648,0.552297,-0.000001,-0.833648,0.552297,-0.000001,-0.833648,0.552297,-0.000001,-0.833648,0.552297,-0.000001, + 0.833650,-0.552293,0.000000,0.833650,-0.552293,0.000000,0.833650,-0.552293,0.000000,0.833650,-0.552293,0.000000, + -0.552295,-0.833649,-0.000000,-0.552295,-0.833649,-0.000000,-0.552295,-0.833649,-0.000000,-0.552295,-0.833649,-0.000000, + 0.544660,0.822125,0.165697,0.544660,0.822125,0.165697,0.544660,0.822125,0.165697,0.544660,0.822125,0.165697, + -0.833648,0.552296,-0.000000,-0.833648,0.552296,-0.000000,-0.833648,0.552296,-0.000000,-0.833648,0.552296,-0.000000, + 0.803667,-0.532429,0.265779,0.803667,-0.532429,0.265779,0.803667,-0.532429,0.265779,0.803667,-0.532429,0.265779, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + -0.833649,0.552295,-0.000000,-0.833649,0.552295,-0.000000,-0.833649,0.552295,-0.000000,-0.833649,0.552295,-0.000000, + 0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000, + 0.000011,0.000000,1.000000,0.000011,0.000000,1.000000,0.000011,0.000000,1.000000,0.000011,0.000000,1.000000, + 0.803665,-0.532433,0.265776,0.803665,-0.532433,0.265776,0.803665,-0.532433,0.265776,0.803665,-0.532433,0.265776, + -0.833648,0.552296,-0.000001,-0.833648,0.552296,-0.000001,-0.833648,0.552296,-0.000001,-0.833648,0.552296,-0.000001, + 0.544667,0.822134,-0.165632,0.544667,0.822134,-0.165632,0.544667,0.822134,-0.165632,0.544667,0.822134,-0.165632, + 0.803687,-0.532447,-0.265682,0.803687,-0.532447,-0.265682,0.803687,-0.532447,-0.265682,0.803687,-0.532447,-0.265682, + -0.833648,0.552296,0.000000,-0.833648,0.552296,0.000000,-0.833648,0.552296,0.000000,-0.833648,0.552296,0.000000, + 0.803687,-0.532448,-0.265683,0.803687,-0.532448,-0.265683,0.803687,-0.532448,-0.265683,0.803687,-0.532448,-0.265683, + -0.000003,0.000000,-1.000000,-0.000003,0.000000,-1.000000,-0.000003,0.000000,-1.000000,-0.000003,0.000000,-1.000000, + -0.000005,-0.000003,-1.000000,-0.000005,-0.000003,-1.000000,-0.000005,-0.000003,-1.000000,-0.000005,-0.000003,-1.000000, + -0.544666,-0.822134,-0.165633,-0.544666,-0.822134,-0.165633,-0.544666,-0.822134,-0.165633,-0.544666,-0.822134,-0.165633, + -0.833648,0.552296,0.000000,-0.833648,0.552296,0.000000,-0.833648,0.552296,0.000000,-0.833648,0.552296,0.000000, + -0.829639,0.557997,-0.018393,-0.829639,0.557997,-0.018393,-0.829639,0.557997,-0.018393,-0.829639,0.557997,-0.018393, + 0.837335,-0.546380,-0.018391,0.837335,-0.546380,-0.018391,0.837335,-0.546380,-0.018391,0.837335,-0.546380,-0.018391, + 0.552297,0.833647,-0.000001,0.552297,0.833647,-0.000001,0.552297,0.833647,-0.000001,0.552297,0.833647,-0.000001, + 0.122945,0.185580,0.974907,0.122945,0.185580,0.974907,0.122945,0.185580,0.974907,0.122945,0.185580,0.974907, + 0.333562,0.503480,-0.797022,0.333562,0.503480,-0.797022,0.333562,0.503480,-0.797022,0.333562,0.503480,-0.797022, + -0.552297,-0.833647,0.000000,-0.552297,-0.833647,0.000000,-0.552297,-0.833647,0.000000,-0.552297,-0.833647,0.000000, + -0.832056,0.554255,0.021998,-0.832056,0.554255,0.021998,-0.832056,0.554255,0.021998,-0.832056,0.554255,0.021998, + 0.834832,-0.550065,0.021999,0.834832,-0.550065,0.021999,0.834832,-0.550065,0.021999,0.834832,-0.550065,0.021999, + 0.552302,0.833644,-0.000000,0.552302,0.833644,-0.000000,0.552302,0.833644,-0.000000,0.552302,0.833644,-0.000000, + -0.552298,-0.833647,0.000000,-0.552298,-0.833647,0.000000,-0.552298,-0.833647,0.000000,-0.552298,-0.833647,0.000000, + 0.829639,-0.557997,-0.018392,0.829639,-0.557997,-0.018392,0.829639,-0.557997,-0.018392,0.829639,-0.557997,-0.018392, + -0.837335,0.546380,-0.018393,-0.837335,0.546380,-0.018393,-0.837335,0.546380,-0.018393,-0.837335,0.546380,-0.018393, + -0.552291,-0.833651,0.000000,-0.552291,-0.833651,0.000000,-0.552291,-0.833651,0.000000,-0.552291,-0.833651,0.000000, + -0.122954,-0.185584,0.974905,-0.122954,-0.185584,0.974905,-0.122954,-0.185584,0.974905,-0.122954,-0.185584,0.974905, + -0.333563,-0.503485,-0.797019,-0.333563,-0.503485,-0.797019,-0.333563,-0.503485,-0.797019,-0.333563,-0.503485,-0.797019, + 0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000, + 0.832056,-0.554255,0.021999,0.832056,-0.554255,0.021999,0.832056,-0.554255,0.021999,0.832056,-0.554255,0.021999, + -0.834832,0.550065,0.021998,-0.834832,0.550065,0.021998,-0.834832,0.550065,0.021998,-0.834832,0.550065,0.021998, + -0.552297,-0.833648,0.000001,-0.552297,-0.833648,0.000001,-0.552297,-0.833648,0.000001,-0.552297,-0.833648,0.000001, + 0.552295,0.833649,0.000001,0.552295,0.833649,0.000001,0.552295,0.833649,0.000001,0.552295,0.833649,0.000001, + -0.557997,-0.829639,-0.018392,-0.557997,-0.829639,-0.018392,-0.557997,-0.829639,-0.018392,-0.557997,-0.829639,-0.018392, + 0.546380,0.837335,-0.018392,0.546380,0.837335,-0.018392,0.546380,0.837335,-0.018392,0.546380,0.837335,-0.018392, + -0.833648,0.552296,-0.000001,-0.833648,0.552296,-0.000001,-0.833648,0.552296,-0.000001,-0.833648,0.552296,-0.000001, + -0.185584,0.122950,0.974906,-0.185584,0.122950,0.974906,-0.185584,0.122950,0.974906,-0.185584,0.122950,0.974906, + -0.503477,0.333553,-0.797028,-0.503477,0.333553,-0.797028,-0.503477,0.333553,-0.797028,-0.503477,0.333553,-0.797028, + 0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000, + -0.554255,-0.832056,0.021999,-0.554255,-0.832056,0.021999,-0.554255,-0.832056,0.021999,-0.554255,-0.832056,0.021999, + 0.550065,0.834832,0.021999,0.550065,0.834832,0.021999,0.550065,0.834832,0.021999,0.550065,0.834832,0.021999, + -0.833649,0.552294,-0.000001,-0.833649,0.552294,-0.000001,-0.833649,0.552294,-0.000001,-0.833649,0.552294,-0.000001, + 0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000,0.833648,-0.552296,0.000000, + 0.557997,0.829639,-0.018391,0.557997,0.829639,-0.018391,0.557997,0.829639,-0.018391,0.557997,0.829639,-0.018391, + -0.546381,-0.837335,-0.018392,-0.546381,-0.837335,-0.018392,-0.546381,-0.837335,-0.018392,-0.546381,-0.837335,-0.018392, + 0.833647,-0.552297,-0.000000,0.833647,-0.552297,-0.000000,0.833647,-0.552297,-0.000000,0.833647,-0.552297,-0.000000, + 0.185584,-0.122948,0.974906,0.185584,-0.122948,0.974906,0.185584,-0.122948,0.974906,0.185584,-0.122948,0.974906, + 0.503489,-0.333553,-0.797020,0.503489,-0.333553,-0.797020,0.503489,-0.333553,-0.797020,0.503489,-0.333553,-0.797020, + -0.833648,0.552296,-0.000001,-0.833648,0.552296,-0.000001,-0.833648,0.552296,-0.000001,-0.833648,0.552296,-0.000001, + 0.554255,0.832056,0.021999,0.554255,0.832056,0.021999,0.554255,0.832056,0.021999,0.554255,0.832056,0.021999, + -0.550065,-0.834832,0.021998,-0.550065,-0.834832,0.021998,-0.550065,-0.834832,0.021998,-0.550065,-0.834832,0.021998, + 0.833649,-0.552295,0.000002,0.833649,-0.552295,0.000002,0.833649,-0.552295,0.000002,0.833649,-0.552295,0.000002, + -0.833647,0.552297,-0.000000,-0.833647,0.552297,-0.000000,-0.833647,0.552297,-0.000000,-0.833647,0.552297,-0.000000, + -0.832831,0.552399,0.035324,-0.832831,0.552399,0.035324,-0.832831,0.552399,0.035324,-0.832831,0.552399,0.035324, + 0.833425,-0.551502,0.035325,0.833425,-0.551502,0.035325,0.833425,-0.551502,0.035325,0.833425,-0.551502,0.035325, + -0.033575,-0.050676,-0.998151,-0.033575,-0.050676,-0.998151,-0.033575,-0.050676,-0.998151,-0.033575,-0.050676,-0.998151, + 0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000, + -0.552294,-0.833649,-0.000002,-0.552294,-0.833649,-0.000002,-0.552294,-0.833649,-0.000002,-0.552294,-0.833649,-0.000002, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + -0.834018,0.550605,-0.035324,-0.834018,0.550605,-0.035324,-0.834018,0.550605,-0.035324,-0.834018,0.550605,-0.035324, + 0.832236,-0.553295,-0.035323,0.832236,-0.553295,-0.035323,0.832236,-0.553295,-0.035323,0.832236,-0.553295,-0.035323, + 0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000,0.552295,0.833649,0.000000, + -0.552292,-0.833650,-0.000001,-0.552292,-0.833650,-0.000001,-0.552292,-0.833650,-0.000001,-0.552292,-0.833650,-0.000001, + 0.552399,0.832831,0.035325,0.552399,0.832831,0.035325,0.552399,0.832831,0.035325,0.552399,0.832831,0.035325, + -0.551502,-0.833425,0.035327,-0.551502,-0.833425,0.035327,-0.551502,-0.833425,0.035327,-0.551502,-0.833425,0.035327, + -0.050672,0.033572,-0.998151,-0.050672,0.033572,-0.998151,-0.050672,0.033572,-0.998151,-0.050672,0.033572,-0.998151, + 0.833652,-0.552290,0.000001,0.833652,-0.552290,0.000001,0.833652,-0.552290,0.000001,0.833652,-0.552290,0.000001, + -0.833645,0.552301,-0.000001,-0.833645,0.552301,-0.000001,-0.833645,0.552301,-0.000001,-0.833645,0.552301,-0.000001, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.550605,0.834019,-0.035324,0.550605,0.834019,-0.035324,0.550605,0.834019,-0.035324,0.550605,0.834019,-0.035324, + -0.553295,-0.832236,-0.035324,-0.553295,-0.832236,-0.035324,-0.553295,-0.832236,-0.035324,-0.553295,-0.832236,-0.035324, + 0.833652,-0.552289,0.000000,0.833652,-0.552289,0.000000,0.833652,-0.552289,0.000000,0.833652,-0.552289,0.000000, + -0.833648,0.552297,-0.000001,-0.833648,0.552297,-0.000001,-0.833648,0.552297,-0.000001,-0.833648,0.552297,-0.000001, + -0.552399,-0.832831,0.035325,-0.552399,-0.832831,0.035325,-0.552399,-0.832831,0.035325,-0.552399,-0.832831,0.035325, + 0.551502,0.833425,0.035324,0.551502,0.833425,0.035324,0.551502,0.833425,0.035324,0.551502,0.833425,0.035324, + 0.050678,-0.033573,-0.998151,0.050678,-0.033573,-0.998151,0.050678,-0.033573,-0.998151,0.050678,-0.033573,-0.998151, + -0.833650,0.552293,-0.000000,-0.833650,0.552293,-0.000000,-0.833650,0.552293,-0.000000,-0.833650,0.552293,-0.000000, + 0.833654,-0.552287,0.000003,0.833654,-0.552287,0.000003,0.833654,-0.552287,0.000003,0.833654,-0.552287,0.000003, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + -0.550605,-0.834018,-0.035325,-0.550605,-0.834018,-0.035325,-0.550605,-0.834018,-0.035325,-0.550605,-0.834018,-0.035325, + 0.553295,0.832236,-0.035325,0.553295,0.832236,-0.035325,0.553295,0.832236,-0.035325,0.553295,0.832236,-0.035325, + -0.833650,0.552294,0.000000,-0.833650,0.552294,0.000000,-0.833650,0.552294,0.000000,-0.833650,0.552294,0.000000, + 0.833655,-0.552286,-0.000002,0.833655,-0.552286,-0.000002,0.833655,-0.552286,-0.000002,0.833655,-0.552286,-0.000002, + -0.552399,-0.832831,0.035324,-0.552399,-0.832831,0.035324,-0.552399,-0.832831,0.035324,-0.552399,-0.832831,0.035324, + 0.551502,0.833425,0.035324,0.551502,0.833425,0.035324,0.551502,0.833425,0.035324,0.551502,0.833425,0.035324, + 0.050675,-0.033573,-0.998151,0.050675,-0.033573,-0.998151,0.050675,-0.033573,-0.998151,0.050675,-0.033573,-0.998151, + -0.833648,0.552297,0.000000,-0.833648,0.552297,0.000000,-0.833648,0.552297,0.000000,-0.833648,0.552297,0.000000, + 0.833648,-0.552295,0.000001,0.833648,-0.552295,0.000001,0.833648,-0.552295,0.000001,0.833648,-0.552295,0.000001, + 0.000005,0.000000,1.000000,0.000005,0.000000,1.000000,0.000005,0.000000,1.000000,0.000005,0.000000,1.000000, + -0.550605,-0.834018,-0.035325,-0.550605,-0.834018,-0.035325,-0.550605,-0.834018,-0.035325,-0.550605,-0.834018,-0.035325, + 0.553295,0.832236,-0.035324,0.553295,0.832236,-0.035324,0.553295,0.832236,-0.035324,0.553295,0.832236,-0.035324, + -0.833647,0.552298,0.000000,-0.833647,0.552298,0.000000,-0.833647,0.552298,0.000000,-0.833647,0.552298,0.000000, + 0.833646,-0.552299,0.000000,0.833646,-0.552299,0.000000,0.833646,-0.552299,0.000000,0.833646,-0.552299,0.000000, + 0.552399,0.832831,0.035325,0.552399,0.832831,0.035325,0.552399,0.832831,0.035325,0.552399,0.832831,0.035325, + -0.551502,-0.833425,0.035328,-0.551502,-0.833425,0.035328,-0.551502,-0.833425,0.035328,-0.551502,-0.833425,0.035328, + -0.050678,0.033572,-0.998151,-0.050678,0.033572,-0.998151,-0.050678,0.033572,-0.998151,-0.050678,0.033572,-0.998151, + 0.833650,-0.552293,0.000000,0.833650,-0.552293,0.000000,0.833650,-0.552293,0.000000,0.833650,-0.552293,0.000000, + -0.833650,0.552293,-0.000001,-0.833650,0.552293,-0.000001,-0.833650,0.552293,-0.000001,-0.833650,0.552293,-0.000001, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.550605,0.834018,-0.035325,0.550605,0.834018,-0.035325,0.550605,0.834018,-0.035325,0.550605,0.834018,-0.035325, + -0.553295,-0.832236,-0.035325,-0.553295,-0.832236,-0.035325,-0.553295,-0.832236,-0.035325,-0.553295,-0.832236,-0.035325, + 0.833650,-0.552294,-0.000000,0.833650,-0.552294,-0.000000,0.833650,-0.552294,-0.000000,0.833650,-0.552294,-0.000000, + -0.833645,0.552301,-0.000000,-0.833645,0.552301,-0.000000,-0.833645,0.552301,-0.000000,-0.833645,0.552301,-0.000000, + 0.832831,-0.552399,0.035326,0.832831,-0.552399,0.035326,0.832831,-0.552399,0.035326,0.832831,-0.552399,0.035326, + -0.833425,0.551502,0.035325,-0.833425,0.551502,0.035325,-0.833425,0.551502,0.035325,-0.833425,0.551502,0.035325, + 0.033565,0.050676,-0.998151,0.033565,0.050676,-0.998151,0.033565,0.050676,-0.998151,0.033565,0.050676,-0.998151, + -0.552294,-0.833649,-0.000002,-0.552294,-0.833649,-0.000002,-0.552294,-0.833649,-0.000002,-0.552294,-0.833649,-0.000002, + 0.552293,0.833650,0.000001,0.552293,0.833650,0.000001,0.552293,0.833650,0.000001,0.552293,0.833650,0.000001, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.834018,-0.550605,-0.035325,0.834018,-0.550605,-0.035325,0.834018,-0.550605,-0.035325,0.834018,-0.550605,-0.035325, + -0.832236,0.553295,-0.035325,-0.832236,0.553295,-0.035325,-0.832236,0.553295,-0.035325,-0.832236,0.553295,-0.035325, + -0.552294,-0.833649,0.000000,-0.552294,-0.833649,0.000000,-0.552294,-0.833649,0.000000,-0.552294,-0.833649,0.000000, + 0.552297,0.833647,0.000000,0.552297,0.833647,0.000000,0.552297,0.833647,0.000000,0.552297,0.833647,0.000000, + 0.832831,-0.552399,0.035324,0.832831,-0.552399,0.035324,0.832831,-0.552399,0.035324,0.832831,-0.552399,0.035324, + -0.833425,0.551503,0.035326,-0.833425,0.551503,0.035326,-0.833425,0.551503,0.035326,-0.833425,0.551503,0.035326, + 0.033575,0.050677,-0.998151,0.033575,0.050677,-0.998151,0.033575,0.050677,-0.998151,0.033575,0.050677,-0.998151, + -0.552294,-0.833649,0.000001,-0.552294,-0.833649,0.000001,-0.552294,-0.833649,0.000001,-0.552294,-0.833649,0.000001, + 0.552296,0.833648,0.000000,0.552296,0.833648,0.000000,0.552296,0.833648,0.000000,0.552296,0.833648,0.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.834018,-0.550605,-0.035324,0.834018,-0.550605,-0.035324,0.834018,-0.550605,-0.035324,0.834018,-0.550605,-0.035324, + -0.832236,0.553295,-0.035326,-0.832236,0.553295,-0.035326,-0.832236,0.553295,-0.035326,-0.832236,0.553295,-0.035326, + -0.552294,-0.833649,-0.000000,-0.552294,-0.833649,-0.000000,-0.552294,-0.833649,-0.000000,-0.552294,-0.833649,-0.000000, + 0.552297,0.833647,-0.000001,0.552297,0.833647,-0.000001,0.552297,0.833647,-0.000001,0.552297,0.833647,-0.000001, + -0.832831,0.552399,0.035324,-0.832831,0.552399,0.035324,-0.832831,0.552399,0.035324,-0.832831,0.552399,0.035324, + 0.833425,-0.551502,0.035325,0.833425,-0.551502,0.035325,0.833425,-0.551502,0.035325,0.833425,-0.551502,0.035325, + -0.033576,-0.050677,-0.998151,-0.033576,-0.050677,-0.998151,-0.033576,-0.050677,-0.998151,-0.033576,-0.050677,-0.998151, + 0.552295,0.833649,0.000001,0.552295,0.833649,0.000001,0.552295,0.833649,0.000001,0.552295,0.833649,0.000001, + -0.552294,-0.833649,0.000000,-0.552294,-0.833649,0.000000,-0.552294,-0.833649,0.000000,-0.552294,-0.833649,0.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + -0.834018,0.550605,-0.035324,-0.834018,0.550605,-0.035324,-0.834018,0.550605,-0.035324,-0.834018,0.550605,-0.035324, + 0.832236,-0.553295,-0.035325,0.832236,-0.553295,-0.035325,0.832236,-0.553295,-0.035325,0.832236,-0.553295,-0.035325, + 0.552295,0.833649,0.000001,0.552295,0.833649,0.000001,0.552295,0.833649,0.000001,0.552295,0.833649,0.000001, + -0.552295,-0.833649,0.000001,-0.552295,-0.833649,0.000001,-0.552295,-0.833649,0.000001,-0.552295,-0.833649,0.000001, + 0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000, + 0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000, + 0.995185,-0.098017,0.000001,0.995185,-0.098017,0.000001,0.995185,-0.098017,0.000001,0.995185,-0.098017,0.000001, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000, + 0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000,0.995185,-0.098017,0.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + -0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000,-0.000000,0.000000,-1.000000, + 0.098015,0.995185,0.000000,0.098015,0.995185,0.000000,0.098015,0.995185,0.000000,0.098015,0.995185,0.000000, + 0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000, + 0.471396,0.881922,-0.000000,0.471396,0.881922,-0.000000,0.471396,0.881922,-0.000000,0.471396,0.881922,-0.000000, + 0.634394,0.773010,0.000000,0.634394,0.773010,0.000000,0.634394,0.773010,0.000000,0.634394,0.773010,0.000000, + 0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000, + 0.881922,0.471396,0.000000,0.881922,0.471396,0.000000,0.881922,0.471396,0.000000,0.881922,0.471396,0.000000, + 0.956940,0.290285,0.000000,0.956940,0.290285,0.000000,0.956940,0.290285,0.000000,0.956940,0.290285,0.000000, + 0.995185,0.098017,0.000000,0.995185,0.098017,0.000000,0.995185,0.098017,0.000000,0.995185,0.098017,0.000000, + -0.995185,0.098017,-0.000000,-0.995185,0.098017,-0.000000,-0.995185,0.098017,-0.000000,-0.995185,0.098017,-0.000000, + -0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000, + -0.881921,0.471397,-0.000000,-0.881921,0.471397,-0.000000,-0.881921,0.471397,-0.000000,-0.881921,0.471397,-0.000000, + -0.773009,0.634395,-0.000000,-0.773009,0.634395,-0.000000,-0.773009,0.634395,-0.000000,-0.773009,0.634395,-0.000000, + -0.634393,0.773011,-0.000000,-0.634393,0.773011,-0.000000,-0.634393,0.773011,-0.000000,-0.634393,0.773011,-0.000000, + -0.471396,0.881922,-0.000000,-0.471396,0.881922,-0.000000,-0.471396,0.881922,-0.000000,-0.471396,0.881922,-0.000000, + -0.098016,0.995185,0.000000,-0.098016,0.995185,0.000000,-0.098016,0.995185,0.000000,-0.098016,0.995185,0.000000, + -0.290284,0.956941,-0.000000,-0.290284,0.956941,-0.000000,-0.290284,0.956941,-0.000000,-0.290284,0.956941,-0.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.989114,0.097420,-0.110289,0.989114,0.097420,-0.110289,0.989114,0.097420,-0.110289,0.989114,0.097420,-0.110289, + 0.951102,0.288514,-0.110289,0.951102,0.288514,-0.110289,0.951102,0.288514,-0.110289,0.951102,0.288514,-0.110289, + 0.876542,0.468520,-0.110289,0.876542,0.468520,-0.110289,0.876542,0.468520,-0.110289,0.876542,0.468520,-0.110289, + 0.768295,0.630523,-0.110289,0.768295,0.630523,-0.110289,0.768295,0.630523,-0.110289,0.768295,0.630523,-0.110289, + 0.630523,0.768295,-0.110288,0.630523,0.768295,-0.110288,0.630523,0.768295,-0.110288,0.630523,0.768295,-0.110288, + 0.468521,0.876541,-0.110289,0.468521,0.876541,-0.110289,0.468521,0.876541,-0.110289,0.468521,0.876541,-0.110289, + 0.288516,0.951102,-0.110288,0.288516,0.951102,-0.110288,0.288516,0.951102,-0.110288,0.288516,0.951102,-0.110288, + -0.097418,0.989114,-0.110290,-0.097418,0.989114,-0.110290,-0.097418,0.989114,-0.110290,-0.097418,0.989114,-0.110290, + -0.288513,0.951103,-0.110289,-0.288513,0.951103,-0.110289,-0.288513,0.951103,-0.110289,-0.288513,0.951103,-0.110289, + -0.468519,0.876542,-0.110290,-0.468519,0.876542,-0.110290,-0.468519,0.876542,-0.110290,-0.468519,0.876542,-0.110290, + -0.630522,0.768296,-0.110289,-0.630522,0.768296,-0.110289,-0.630522,0.768296,-0.110289,-0.630522,0.768296,-0.110289, + -0.768294,0.630524,-0.110290,-0.768294,0.630524,-0.110290,-0.768294,0.630524,-0.110290,-0.768294,0.630524,-0.110290, + -0.876541,0.468522,-0.110289,-0.876541,0.468522,-0.110289,-0.876541,0.468522,-0.110289,-0.876541,0.468522,-0.110289, + -0.951102,0.288516,-0.110289,-0.951102,0.288516,-0.110289,-0.951102,0.288516,-0.110289,-0.951102,0.288516,-0.110289, + -0.989114,0.097419,-0.110289,-0.989114,0.097419,-0.110289,-0.989114,0.097419,-0.110289,-0.989114,0.097419,-0.110289, + 0.097417,0.989114,-0.110289,0.097417,0.989114,-0.110289,0.097417,0.989114,-0.110289,0.097417,0.989114,-0.110289, + 0.956940,0.290284,0.000000,0.956940,0.290284,0.000000,0.956940,0.290284,0.000000,0.956940,0.290284,0.000000, + 0.634392,0.773011,0.000000,0.634392,0.773011,0.000000,0.634392,0.773011,0.000000,0.634392,0.773011,0.000000, + 0.098014,0.995185,0.000000,0.098014,0.995185,0.000000,0.098014,0.995185,0.000000,0.098014,0.995185,0.000000, + -0.471395,0.881922,0.000001,-0.471395,0.881922,0.000001,-0.471395,0.881922,0.000001,-0.471395,0.881922,0.000001, + -0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000, + 0.881921,0.471396,0.000000,0.881921,0.471396,0.000000,0.881921,0.471396,0.000000,0.881921,0.471396,0.000000, + 0.471397,0.881921,-0.000001,0.471397,0.881921,-0.000001,0.471397,0.881921,-0.000001,0.471397,0.881921,-0.000001, + -0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000, + -0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000, + -0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000, + 0.995185,0.098017,0.000000,0.995185,0.098017,0.000000,0.995185,0.098017,0.000000,0.995185,0.098017,0.000000, + 0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000, + 0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000, + -0.290284,0.956940,0.000000,-0.290284,0.956940,0.000000,-0.290284,0.956940,0.000000,-0.290284,0.956940,0.000000, + -0.773011,0.634393,0.000000,-0.773011,0.634393,0.000000,-0.773011,0.634393,0.000000,-0.773011,0.634393,0.000000, + -0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000, + 0.956940,0.290285,0.000000,0.956940,0.290285,0.000000,0.956940,0.290285,0.000000,0.956940,0.290285,0.000000, + 0.634392,0.773011,0.000000,0.634392,0.773011,0.000000,0.634392,0.773011,0.000000,0.634392,0.773011,0.000000, + 0.098014,0.995185,0.000000,0.098014,0.995185,0.000000,0.098014,0.995185,0.000000,0.098014,0.995185,0.000000, + -0.471395,0.881922,0.000000,-0.471395,0.881922,0.000000,-0.471395,0.881922,0.000000,-0.471395,0.881922,0.000000, + -0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000, + 0.881921,0.471396,0.000000,0.881921,0.471396,0.000000,0.881921,0.471396,0.000000,0.881921,0.471396,0.000000, + 0.471397,0.881921,0.000000,0.471397,0.881921,0.000000,0.471397,0.881921,0.000000,0.471397,0.881921,0.000000, + -0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000, + -0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000, + -0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000, + 0.995185,0.098017,0.000000,0.995185,0.098017,0.000000,0.995185,0.098017,0.000000,0.995185,0.098017,0.000000, + 0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000, + 0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000, + -0.290284,0.956941,0.000000,-0.290284,0.956941,0.000000,-0.290284,0.956941,0.000000,-0.290284,0.956941,0.000000, + -0.773011,0.634393,-0.000000,-0.773011,0.634393,-0.000000,-0.773011,0.634393,-0.000000,-0.773011,0.634393,-0.000000, + -0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000, + 0.956940,0.290285,0.000000,0.956940,0.290285,0.000000,0.956940,0.290285,0.000000,0.956940,0.290285,0.000000, + 0.634392,0.773011,0.000001,0.634392,0.773011,0.000001,0.634392,0.773011,0.000001,0.634392,0.773011,0.000001, + 0.098014,0.995185,0.000000,0.098014,0.995185,0.000000,0.098014,0.995185,0.000000,0.098014,0.995185,0.000000, + -0.471395,0.881922,0.000000,-0.471395,0.881922,0.000000,-0.471395,0.881922,0.000000,-0.471395,0.881922,0.000000, + -0.881921,0.471398,-0.000001,-0.881921,0.471398,-0.000001,-0.881921,0.471398,-0.000001,-0.881921,0.471398,-0.000001, + 0.881921,0.471396,0.000001,0.881921,0.471396,0.000001,0.881921,0.471396,0.000001,0.881921,0.471396,0.000001, + 0.471397,0.881921,0.000000,0.471397,0.881921,0.000000,0.471397,0.881921,0.000000,0.471397,0.881921,0.000000, + -0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000, + -0.634392,0.773012,-0.000001,-0.634392,0.773012,-0.000001,-0.634392,0.773012,-0.000001,-0.634392,0.773012,-0.000001, + -0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000, + 0.995185,0.098017,0.000001,0.995185,0.098017,0.000001,0.995185,0.098017,0.000001,0.995185,0.098017,0.000001, + 0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000, + 0.290286,0.956940,0.000001,0.290286,0.956940,0.000001,0.290286,0.956940,0.000001,0.290286,0.956940,0.000001, + -0.290284,0.956941,-0.000001,-0.290284,0.956941,-0.000001,-0.290284,0.956941,-0.000001,-0.290284,0.956941,-0.000001, + -0.773011,0.634393,-0.000000,-0.773011,0.634393,-0.000000,-0.773011,0.634393,-0.000000,-0.773011,0.634393,-0.000000, + -0.995185,0.098018,-0.000001,-0.995185,0.098018,-0.000001,-0.995185,0.098018,-0.000001,-0.995185,0.098018,-0.000001, + -0.940066,0.092588,0.328182,-0.940066,0.092588,0.328182,-0.940066,0.092588,0.328182,-0.940066,0.092588,0.328182, + 0.953536,0.289252,0.084282,0.953536,0.289252,0.084282,0.953536,0.289252,0.084282,0.953536,0.289252,0.084282, + 0.632137,0.770260,0.084282,0.632137,0.770260,0.084282,0.632137,0.770260,0.084282,0.632137,0.770260,0.084282, + 0.097667,0.991644,0.084282,0.097667,0.991644,0.084282,0.097667,0.991644,0.084282,0.097667,0.991644,0.084282, + -0.469719,0.878784,0.084283,-0.469719,0.878784,0.084283,-0.469719,0.878784,0.084283,-0.469719,0.878784,0.084283, + -0.878783,0.469720,0.084283,-0.878783,0.469720,0.084283,-0.878783,0.469720,0.084283,-0.878783,0.469720,0.084283, + 0.878784,0.469718,0.084282,0.878784,0.469718,0.084282,0.878784,0.469718,0.084282,0.878784,0.469718,0.084282, + 0.469719,0.878784,0.084283,0.469719,0.878784,0.084283,0.469719,0.878784,0.084283,0.469719,0.878784,0.084283, + -0.097668,0.991644,0.084282,-0.097668,0.991644,0.084282,-0.097668,0.991644,0.084282,-0.097668,0.991644,0.084282, + -0.632134,0.770262,0.084283,-0.632134,0.770262,0.084283,-0.632134,0.770262,0.084283,-0.632134,0.770262,0.084283, + -0.953535,0.289253,0.084283,-0.953535,0.289253,0.084283,-0.953535,0.289253,0.084283,-0.953535,0.289253,0.084283, + 0.991644,0.097668,0.084282,0.991644,0.097668,0.084282,0.991644,0.097668,0.084282,0.991644,0.097668,0.084282, + 0.770260,0.632136,0.084282,0.770260,0.632136,0.084282,0.770260,0.632136,0.084282,0.770260,0.632136,0.084282, + 0.289254,0.953535,0.084283,0.289254,0.953535,0.084283,0.289254,0.953535,0.084283,0.289254,0.953535,0.084283, + -0.289250,0.953536,0.084283,-0.289250,0.953536,0.084283,-0.289250,0.953536,0.084283,-0.289250,0.953536,0.084283, + -0.770260,0.632136,0.084283,-0.770260,0.632136,0.084283,-0.770260,0.632136,0.084283,-0.770260,0.632136,0.084283, + -0.991644,0.097669,0.084283,-0.991644,0.097669,0.084283,-0.991644,0.097669,0.084283,-0.991644,0.097669,0.084283, + -0.707715,0.580814,0.402238,-0.707715,0.580814,0.402238,-0.707715,0.580814,0.402238,-0.707715,0.580814,0.402238, + 0.903940,0.274208,0.328181,0.903940,0.274208,0.328181,0.903940,0.274208,0.328181,0.903940,0.274208,0.328181, + 0.599257,0.730197,0.328183,0.599257,0.730197,0.328183,0.599257,0.730197,0.328183,0.599257,0.730197,0.328183, + 0.092589,0.940066,0.328183,0.092589,0.940066,0.328183,0.092589,0.940066,0.328183,0.092589,0.940066,0.328183, + -0.445287,0.833076,0.328181,-0.445287,0.833076,0.328181,-0.445287,0.833076,0.328181,-0.445287,0.833076,0.328181, + -0.833076,0.445287,0.328182,-0.833076,0.445287,0.328182,-0.833076,0.445287,0.328182,-0.833076,0.445287,0.328182, + 0.833076,0.445287,0.328183,0.833076,0.445287,0.328183,0.833076,0.445287,0.328183,0.833076,0.445287,0.328183, + 0.445289,0.833075,0.328182,0.445289,0.833075,0.328182,0.445289,0.833075,0.328182,0.445289,0.833075,0.328182, + -0.092589,0.940065,0.328183,-0.092589,0.940065,0.328183,-0.092589,0.940065,0.328183,-0.092589,0.940065,0.328183, + -0.599254,0.730198,0.328184,-0.599254,0.730198,0.328184,-0.599254,0.730198,0.328184,-0.599254,0.730198,0.328184, + -0.903939,0.274209,0.328183,-0.903939,0.274209,0.328183,-0.903939,0.274209,0.328183,-0.903939,0.274209,0.328183, + 0.940066,0.092588,0.328182,0.940066,0.092588,0.328182,0.940066,0.092588,0.328182,0.940066,0.092588,0.328182, + 0.730195,0.599259,0.328182,0.730195,0.599259,0.328182,0.730195,0.599259,0.328182,0.730195,0.599259,0.328182, + 0.274207,0.903940,0.328181,0.274207,0.903940,0.328181,0.274207,0.903940,0.328181,0.274207,0.903940,0.328181, + -0.274205,0.903940,0.328182,-0.274205,0.903940,0.328182,-0.274205,0.903940,0.328182,-0.274205,0.903940,0.328182, + -0.730196,0.599258,0.328183,-0.730196,0.599258,0.328183,-0.730196,0.599258,0.328183,-0.730196,0.599258,0.328183, + -0.248936,0.820610,0.514423,-0.248936,0.820610,0.514423,-0.248936,0.820610,0.514423,-0.248936,0.820610,0.514423, + -0.911127,0.089739,0.402236,-0.911127,0.089739,0.402236,-0.911127,0.089739,0.402236,-0.911127,0.089739,0.402236, + 0.876112,0.265765,0.402240,0.876112,0.265765,0.402240,0.876112,0.265765,0.402240,0.876112,0.265765,0.402240, + 0.580809,0.707718,0.402239,0.580809,0.707718,0.402239,0.580809,0.707718,0.402239,0.580809,0.707718,0.402239, + 0.089735,0.911127,0.402239,0.089735,0.911127,0.402239,0.089735,0.911127,0.402239,0.089735,0.911127,0.402239, + -0.431577,0.807431,0.402240,-0.431577,0.807431,0.402240,-0.431577,0.807431,0.402240,-0.431577,0.807431,0.402240, + -0.807430,0.431579,0.402239,-0.807430,0.431579,0.402239,-0.807430,0.431579,0.402239,-0.807430,0.431579,0.402239, + 0.807431,0.431578,0.402238,0.807431,0.431578,0.402238,0.807431,0.431578,0.402238,0.807431,0.431578,0.402238, + 0.431581,0.807429,0.402239,0.431581,0.807429,0.402239,0.431581,0.807429,0.402239,0.431581,0.807429,0.402239, + -0.089735,0.911127,0.402238,-0.089735,0.911127,0.402238,-0.089735,0.911127,0.402238,-0.089735,0.911127,0.402238, + -0.580816,0.707714,0.402236,-0.580816,0.707714,0.402236,-0.580816,0.707714,0.402236,-0.580816,0.707714,0.402236, + -0.876113,0.265767,0.402236,-0.876113,0.265767,0.402236,-0.876113,0.265767,0.402236,-0.876113,0.265767,0.402236, + 0.911126,0.089738,0.402238,0.911126,0.089738,0.402238,0.911126,0.089738,0.402238,0.911126,0.089738,0.402238, + 0.707718,0.580809,0.402238,0.707718,0.580809,0.402238,0.707718,0.580809,0.402238,0.707718,0.580809,0.402238, + 0.265763,0.876113,0.402239,0.265763,0.876113,0.402239,0.265763,0.876113,0.402239,0.265763,0.876113,0.402239, + -0.265761,0.876114,0.402238,-0.265761,0.876114,0.402238,-0.265761,0.876114,0.402238,-0.265761,0.876114,0.402238, + -0.182076,0.600292,0.778780,-0.182076,0.600292,0.778780,-0.182076,0.600292,0.778780,-0.182076,0.600292,0.778780, + -0.662886,0.544012,0.514424,-0.662886,0.544012,0.514424,-0.662886,0.544012,0.514424,-0.662886,0.544012,0.514424, + -0.853411,0.084055,0.514417,-0.853411,0.084055,0.514417,-0.853411,0.084055,0.514417,-0.853411,0.084055,0.514417, + 0.820609,0.248927,0.514428,0.820609,0.248927,0.514428,0.820609,0.248927,0.514428,0.820609,0.248927,0.514428, + 0.544012,0.662888,0.514421,0.544012,0.662888,0.514421,0.544012,0.662888,0.514421,0.544012,0.662888,0.514421, + 0.084049,0.853407,0.514425,0.084049,0.853407,0.514425,0.084049,0.853407,0.514425,0.084049,0.853407,0.514425, + -0.404243,0.756280,0.514420,-0.404243,0.756280,0.514420,-0.404243,0.756280,0.514420,-0.404243,0.756280,0.514420, + -0.756283,0.404244,0.514416,-0.756283,0.404244,0.514416,-0.756283,0.404244,0.514416,-0.756283,0.404244,0.514416, + 0.756284,0.404239,0.514417,0.756284,0.404239,0.514417,0.756284,0.404239,0.514417,0.756284,0.404239,0.514417, + 0.404240,0.756276,0.514428,0.404240,0.756276,0.514428,0.404240,0.756276,0.514428,0.404240,0.756276,0.514428, + -0.084050,0.853408,0.514423,-0.084050,0.853408,0.514423,-0.084050,0.853408,0.514423,-0.084050,0.853408,0.514423, + -0.544012,0.662891,0.514418,-0.544012,0.662891,0.514418,-0.544012,0.662891,0.514418,-0.544012,0.662891,0.514418, + -0.820617,0.248932,0.514412,-0.820617,0.248932,0.514412,-0.820617,0.248932,0.514412,-0.820617,0.248932,0.514412, + 0.853402,0.084053,0.514432,0.853402,0.084053,0.514432,0.853402,0.084053,0.514432,0.853402,0.084053,0.514432, + 0.662882,0.544010,0.514432,0.662882,0.544010,0.514432,0.662882,0.544010,0.514432,0.662882,0.544010,0.514432, + 0.248937,0.820609,0.514423,0.248937,0.820609,0.514423,0.248937,0.820609,0.514423,0.248937,0.820609,0.514423, + -0.484906,0.397951,0.778781,-0.484906,0.397951,0.778781,-0.484906,0.397951,0.778781,-0.484906,0.397951,0.778781, + -0.624277,0.061486,0.778780,-0.624277,0.061486,0.778780,-0.624277,0.061486,0.778780,-0.624277,0.061486,0.778780, + 0.600258,0.182086,0.778803,0.600258,0.182086,0.778803,0.600258,0.182086,0.778803,0.600258,0.182086,0.778803, + 0.397916,0.484913,0.778795,0.397916,0.484913,0.778795,0.397916,0.484913,0.778795,0.397916,0.484913,0.778795, + 0.061520,0.624274,0.778779,0.061520,0.624274,0.778779,0.061520,0.624274,0.778779,0.061520,0.624274,0.778779, + -0.295683,0.553216,0.778796,-0.295683,0.553216,0.778796,-0.295683,0.553216,0.778796,-0.295683,0.553216,0.778796, + -0.553192,0.295696,0.778808,-0.553192,0.295696,0.778808,-0.553192,0.295696,0.778808,-0.553192,0.295696,0.778808, + 0.553215,0.295706,0.778788,0.553215,0.295706,0.778788,0.553215,0.295706,0.778788,0.553215,0.295706,0.778788, + 0.295689,0.553227,0.778786,0.295689,0.553227,0.778786,0.295689,0.553227,0.778786,0.295689,0.553227,0.778786, + -0.061520,0.624270,0.778782,-0.061520,0.624270,0.778782,-0.061520,0.624270,0.778782,-0.061520,0.624270,0.778782, + -0.398019,0.484913,0.778743,-0.398019,0.484913,0.778743,-0.398019,0.484913,0.778743,-0.398019,0.484913,0.778743, + -0.600283,0.182095,0.778783,-0.600283,0.182095,0.778783,-0.600283,0.182095,0.778783,-0.600283,0.182095,0.778783, + 0.624280,0.061486,0.778777,0.624280,0.061486,0.778777,0.624280,0.061486,0.778777,0.624280,0.061486,0.778777, + 0.484906,0.397951,0.778781,0.484906,0.397951,0.778781,0.484906,0.397951,0.778781,0.484906,0.397951,0.778781, + 0.182074,0.600285,0.778785,0.182074,0.600285,0.778785,0.182074,0.600285,0.778785,0.182074,0.600285,0.778785, + 0.956940,0.290285,0.000000,0.956940,0.290285,0.000000,0.956940,0.290285,0.000000,0.956940,0.290285,0.000000, + 0.634392,0.773011,0.000000,0.634392,0.773011,0.000000,0.634392,0.773011,0.000000,0.634392,0.773011,0.000000, + 0.098014,0.995185,0.000000,0.098014,0.995185,0.000000,0.098014,0.995185,0.000000,0.098014,0.995185,0.000000, + -0.471395,0.881922,-0.000000,-0.471395,0.881922,-0.000000,-0.471395,0.881922,-0.000000,-0.471395,0.881922,-0.000000, + -0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000, + 0.881922,0.471396,0.000000,0.881922,0.471396,0.000000,0.881922,0.471396,0.000000,0.881922,0.471396,0.000000, + 0.471397,0.881921,0.000000,0.471397,0.881921,0.000000,0.471397,0.881921,0.000000,0.471397,0.881921,0.000000, + -0.098015,0.995185,-0.000000,-0.098015,0.995185,-0.000000,-0.098015,0.995185,-0.000000,-0.098015,0.995185,-0.000000, + -0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000, + -0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000,-0.956940,0.290286,-0.000000, + 0.995185,0.098017,0.000000,0.995185,0.098017,0.000000,0.995185,0.098017,0.000000,0.995185,0.098017,0.000000, + 0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000, + 0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000, + -0.290284,0.956941,0.000000,-0.290284,0.956941,0.000000,-0.290284,0.956941,0.000000,-0.290284,0.956941,0.000000, + -0.773011,0.634393,0.000000,-0.773011,0.634393,0.000000,-0.773011,0.634393,0.000000,-0.773011,0.634393,0.000000, + -0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000, + -0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000,-0.098015,0.995185,0.000000, + 0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000,0.773011,0.634393,0.000000, + -0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000,-0.881921,0.471398,-0.000000, + 0.995185,0.098018,0.000000,0.995185,0.098018,0.000000,0.995185,0.098018,0.000000,0.995185,0.098018,0.000000, + -0.471395,0.881922,0.000000,-0.471395,0.881922,0.000000,-0.471395,0.881922,0.000000,-0.471395,0.881922,0.000000, + 0.881922,0.471396,0.000000,0.881922,0.471396,0.000000,0.881922,0.471396,0.000000,0.881922,0.471396,0.000000, + 0.471397,0.881921,0.000000,0.471397,0.881921,0.000000,0.471397,0.881921,0.000000,0.471397,0.881921,0.000000, + 0.098014,0.995185,-0.000000,0.098014,0.995185,-0.000000,0.098014,0.995185,-0.000000,0.098014,0.995185,-0.000000, + 0.634392,0.773011,0.000000,0.634392,0.773011,0.000000,0.634392,0.773011,0.000000,0.634392,0.773011,0.000000, + 0.956940,0.290284,0.000000,0.956940,0.290284,0.000000,0.956940,0.290284,0.000000,0.956940,0.290284,0.000000, + -0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000,-0.995185,0.098018,-0.000000, + -0.773011,0.634393,-0.000000,-0.773011,0.634393,-0.000000,-0.773011,0.634393,-0.000000,-0.773011,0.634393,-0.000000, + -0.956940,0.290285,-0.000000,-0.956940,0.290285,-0.000000,-0.956940,0.290285,-0.000000,-0.956940,0.290285,-0.000000, + -0.290284,0.956941,-0.000000,-0.290284,0.956941,-0.000000,-0.290284,0.956941,-0.000000,-0.290284,0.956941,-0.000000, + -0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000,-0.634392,0.773012,0.000000, + 0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000,0.290287,0.956940,0.000000, + 0.634393,-0.773010,0.000000,0.634393,-0.773010,0.000000,0.634393,-0.773010,0.000000,0.634393,-0.773010,0.000000, + -0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000,-0.000001,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + -0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000, + -0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000002,0.000000,-1.000000,0.000002,0.000000,-1.000000,0.000002,0.000000,-1.000000,0.000002,0.000000,-1.000000, + 0.000002,0.000000,-1.000000,0.000002,0.000000,-1.000000,0.000002,0.000000,-1.000000,0.000002,0.000000,-1.000000, + -0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000,-0.000002,0.000000,-1.000000, + 0.000002,0.000000,-1.000000,0.000002,0.000000,-1.000000,0.000002,0.000000,-1.000000,0.000002,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000,0.000001,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000,0.000000,0.000000,-1.000000, + 0.956940,-0.290287,0.000000,0.956940,-0.290287,0.000000,0.956940,-0.290287,0.000000,0.956940,-0.290287,0.000000, + -0.995185,-0.098017,-0.000000,-0.995185,-0.098017,-0.000000,-0.995185,-0.098017,-0.000000,-0.995185,-0.098017,-0.000000, + -0.773011,-0.634392,-0.000000,-0.773011,-0.634392,-0.000000,-0.773011,-0.634392,-0.000000,-0.773011,-0.634392,-0.000000, + -0.290284,-0.956940,0.000000,-0.290284,-0.956940,0.000000,-0.290284,-0.956940,0.000000,-0.290284,-0.956940,0.000000, + 0.290281,-0.956941,0.000000,0.290281,-0.956941,0.000000,0.290281,-0.956941,0.000000,0.290281,-0.956941,0.000000, + 0.773008,-0.634396,0.000000,0.773008,-0.634396,0.000000,0.773008,-0.634396,0.000000,0.773008,-0.634396,0.000000, + 0.995185,-0.098018,0.000000,0.995185,-0.098018,0.000000,0.995185,-0.098018,0.000000,0.995185,-0.098018,0.000000, + -0.956940,-0.290285,-0.000000,-0.956940,-0.290285,-0.000000,-0.956940,-0.290285,-0.000000,-0.956940,-0.290285,-0.000000, + -0.634392,-0.773012,0.000000,-0.634392,-0.773012,0.000000,-0.634392,-0.773012,0.000000,-0.634392,-0.773012,0.000000, + -0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000,-0.098014,-0.995185,0.000000, + 0.471398,-0.881921,0.000000,0.471398,-0.881921,0.000000,0.471398,-0.881921,0.000000,0.471398,-0.881921,0.000000, + 0.881921,-0.471396,0.000000,0.881921,-0.471396,0.000000,0.881921,-0.471396,0.000000,0.881921,-0.471396,0.000000, + -0.881922,-0.471395,-0.000000,-0.881922,-0.471395,-0.000000,-0.881922,-0.471395,-0.000000,-0.881922,-0.471395,-0.000000, + -0.471399,-0.881920,0.000000,-0.471399,-0.881920,0.000000,-0.471399,-0.881920,0.000000,-0.471399,-0.881920,0.000000, + 0.098015,-0.995185,0.000000,0.098015,-0.995185,0.000000,0.098015,-0.995185,0.000000,0.098015,-0.995185,0.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,1.000000 + } + LayerElementSmoothing: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygon" + ReferenceInformationType: "Direct" + Smoothing: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + } + LayerElementUV: 0 { + Version: 101 + Name: "UVMap" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: 0.637752,0.243845,0.933149,0.787520,0.637752,0.328604,0.028438,0.905628,0.801939,0.649045,0.000636,0.733934, + 0.948128,0.784846,0.864143,0.482786,0.138665,0.180231,0.714914,0.658306,0.948128,0.784544,0.981377,0.078752, + 0.286444,0.233422,0.948128,0.771672,0.859189,0.641066,0.316470,0.777609,0.260472,0.778602,0.256796,0.733470, + -0.246856,0.295494,0.859189,0.686115,0.138665,0.180231,0.242895,0.851349,0.734558,0.494867,0.194656,0.066508, + 0.637752,0.351251,0.693552,0.359933,0.286444,0.366384,0.859189,0.685250,0.286444,0.315508,0.714914,0.596883, + 0.981377,0.172766,0.472397,0.928886,0.301485,0.841442,0.278049,0.851349,0.310206,0.057237,1.082295,0.124177, + 0.859189,0.600956,-0.230369,0.321886,0.385953,0.771751,0.637752,0.237394,0.744123,0.363081,-0.230369,0.309542, + 0.859189,0.623827,0.138665,0.066508,0.948128,0.843998,1.032664,0.142759,0.256796,0.677966,0.547168,0.066508, + 0.859189,0.596883,1.065752,0.108256,0.825841,0.551375,0.825841,0.498484,-0.146283,0.359742,0.916856,0.169766, + 1.032664,0.085968,-0.020978,0.275175,0.014537,0.677966,0.000636,0.850693,-0.020978,0.233422,0.138665,0.141899, + 0.933149,0.766336,0.385953,0.843166,-0.246856,0.308679,0.472397,0.933231,0.316470,0.841323,0.855643,0.106023, + 0.825841,0.537786,-0.197394,0.301890,0.933149,0.846279,0.693552,0.301889,0.859189,0.681962,0.028438,0.734924, + 0.948128,0.790259,0.859189,0.672921,0.825841,0.492136,0.859189,0.625416,0.864143,0.539691,0.825841,0.556584, + 0.270697,0.677003,0.674505,0.514337,0.310206,0.060770,1.065752,0.132926,1.032664,0.098792,0.825841,0.513584, + -0.230369,0.281893,0.744123,0.239498,0.825841,0.560455,-0.197394,0.341036,0.674505,0.486927,0.801939,0.675070, + 0.301485,0.769778,0.286444,0.340673,-0.246856,0.299241,-0.081981,0.232081,0.734558,0.507204,0.522597,0.359933, + -0.197394,0.316870,0.547168,0.179038,1.065752,0.135924,-0.020978,0.232081,0.916856,0.094375,0.270697,0.908512, + 0.472397,0.700190,0.014537,0.735388,0.194656,0.083640,0.492887,0.931983,0.472379,0.844415,0.801939,0.625416, + 0.933149,0.858490,-0.246856,0.307645,0.138665,0.094375,0.674505,0.551375,0.981377,0.107271,0.714914,0.672921, + 0.855643,0.094375,0.286444,0.232081,0.194656,0.130251,0.825841,0.521756,0.138665,0.179038,0.310206,0.141899, + 0.674505,0.537785,0.981377,0.149082,0.859189,0.682686,1.032664,0.150307,0.674505,0.500629,0.000636,0.951328, + 0.194656,0.180231,0.310206,0.175504,0.981377,0.118137,0.674505,0.479868,0.948128,0.841442,-0.230369,0.301890, + -0.197394,0.274209,0.547168,0.162044,0.674505,0.529174,-0.146283,0.249823,0.301485,0.853313,0.385953,0.857324, + 0.948128,0.860958,0.522597,0.233422,0.981377,0.157522,0.801939,0.600956,0.194656,0.162044,0.316470,0.836486, + 0.916856,0.179038,0.014537,0.952291,0.855643,0.175504,0.310206,0.162044,1.032664,0.089185,-0.246856,0.305736, + 0.693552,0.275175,0.301485,0.843998,-0.020978,0.233422,0.472379,0.773803,0.138665,0.152635,1.082295,0.112449, + 0.855643,0.130251,0.194656,0.175504,0.933149,0.859225,-0.197394,0.269340,0.614745,0.771751,0.981377,0.129004, + 0.734558,0.486624,0.278049,0.801595,0.316470,0.859224,0.316470,0.862508,0.933149,0.836486,0.301485,0.855207, + 0.855643,0.060770,0.547168,0.141899,0.864143,0.474888,0.674505,0.529928,0.014537,0.733470,0.734558,0.490138, + -0.146283,0.301890,0.270697,0.951328,0.693552,0.371698,0.981377,0.173836,0.734558,0.559782,1.032664,0.137483, + 0.855643,0.169766,-0.020978,0.243846,0.316470,0.770353,0.522597,0.351251,0.714914,0.678523,0.316470,0.766336, + 0.916856,0.130251,0.855643,0.162044,0.981377,0.096822,0.855643,0.179038,-0.081981,0.315508,0.310206,0.179038, + 0.614745,0.841318,0.194656,0.106023,0.674505,0.507204,0.000636,0.904638,0.014537,0.906091,0.859189,0.678849, + 0.138665,0.118137,-0.246856,0.303240,0.472379,0.784660,0.035790,0.777639,0.933149,0.865791,0.714914,0.682686, + 0.933149,0.782565,0.801939,0.649045,-0.020978,0.301890,-0.146283,0.364509,0.714914,0.609212,0.256796,0.735388, + 0.260472,0.842304,0.744123,0.325765,-0.251074,0.301890,0.547168,0.152635,0.422674,0.638914,0.825841,0.545027, + -0.146283,0.244037,0.000636,0.851349,0.637752,0.288270,1.065752,0.111331,0.981377,0.139452,0.674505,0.483056, + 0.864143,0.554896,0.422674,0.930134,1.032664,0.152289,0.855643,0.083640,0.744123,0.353765,0.014537,0.676696, + 0.278049,0.777639,0.547168,0.057237,0.270697,0.907522,0.933149,0.782446,0.000636,0.951984,0.316470,0.851234, + -0.081981,0.366384,0.744123,0.244248,0.522597,0.252527,0.256796,0.676696,0.035790,0.801595,0.674505,0.484460, + 0.316470,0.841442,1.082295,0.112098,0.286444,0.252527,0.801939,0.600170,0.422674,0.637690,0.286444,0.359933, + 0.825841,0.486927,0.547168,0.060770,0.286444,0.371698,0.472379,0.840069,0.256796,0.952291,0.693552,0.328604, + 0.472397,0.639742,0.744123,0.346006,0.674505,0.492136,0.948128,0.844300,-0.081981,0.252527,0.859189,0.681962, + 0.948128,0.771744,0.744123,0.278013,-0.246856,0.298044,0.859189,0.596017,-0.230369,0.316029,0.316470,0.769619, + 0.522597,0.243845,0.734558,0.542882,-0.081981,0.371698,0.301485,0.860958,0.522597,0.371698,0.422674,0.931983, + 0.301485,0.857100,0.859189,0.633088,0.855643,0.074231,-0.230369,0.287750,-0.146283,0.314106,-0.230369,0.282277, + 0.385953,0.785909,0.948128,0.841140,0.916856,0.180231,0.674505,0.559782,0.194656,0.094375,0.301485,0.771672, + 0.855643,0.152635,0.916856,0.074231,0.260472,0.851656,1.082295,0.123826,0.744123,0.289717,0.801939,0.678849, + -0.197394,0.265722,0.547168,0.118137,1.065752,0.105560,-0.146283,0.346168,0.825841,0.529928,0.714914,0.603609, + 0.256796,0.907058,0.316470,0.846279,0.422674,0.990161,1.032664,0.118137,0.256796,0.951021,0.864143,0.560725, + 0.674505,0.483730,0.734558,0.536308,0.286444,0.243846,0.286444,0.288270,-0.020978,0.252527,0.693552,0.288270, + 0.028438,0.951984,0.316470,0.787401,1.032664,0.104812,-0.146283,0.336679,0.522597,0.340673,0.637752,0.252527, + 0.948128,0.773637,0.018213,0.778602,0.948128,0.846856,0.018213,0.802059,0.310206,0.074230,0.674505,0.563644, + 0.316470,0.865791,0.301485,0.841140,0.734558,0.514337,0.472397,0.989334,0.028439,0.677659,0.260472,0.840387, + 0.242895,0.840851,0.316470,0.846398,0.301485,0.787401,1.065752,0.130714,1.082295,0.115781,0.734558,0.529174, + 0.981377,0.087193,0.316470,0.787520,0.674505,0.542882,0.138665,0.169766,-0.197394,0.280141,0.316470,0.776920, + 1.065752,0.124944,0.492887,0.697093,0.734558,0.521756,0.492887,0.930134,0.801939,0.678849,0.138665,0.175504, + 0.693552,0.232080,0.547168,0.130251,0.614745,0.772976,1.032664,0.131463,0.744123,0.364280,0.801939,0.618346, + -0.081981,0.288271,0.948128,0.787703,-0.081981,0.243846,0.385953,0.772976,0.744123,0.250013,0.693552,0.366384, + 0.194656,0.057237,0.242895,0.777639,-0.146283,0.240473,0.714914,0.685250,0.242895,0.733934,0.693552,0.233422, + 0.472397,0.636863,0.859189,0.612149,0.547168,0.180231,0.138665,0.106023,0.674505,0.536308,0.637752,0.359933, + 0.981377,0.169596,0.018213,0.851656,0.035790,0.837967,0.855643,0.066508,0.948128,0.781988,0.310206,0.180231, + 0.674505,0.548644,1.082295,0.122491,-0.081981,0.263106,0.693552,0.371698,1.082295,0.119339,0.916856,0.060770, + -0.197394,0.329570,0.422674,0.991386,0.825841,0.505726,0.270697,0.677659,0.801939,0.633088,0.472379,0.770924, + 0.547168,0.106023,-0.081981,0.237395,0.286444,0.301889,0.014537,0.951021,0.744123,0.301889,0.301485,0.838584, + 0.864143,0.478455,0.278049,0.850693,0.385953,0.787757,0.859189,0.607063,0.637752,0.232080,0.301485,0.784845, + -0.246856,0.294967,0.933149,0.855207,-0.246856,0.308812,0.422674,0.698941,0.859189,0.603283,-0.246856,0.296134, + 0.278049,0.840851,0.242895,0.677003,0.492887,0.637690,-0.230369,0.294237,0.744123,0.257772,1.082295,0.120494, + 0.000636,0.800605,0.522597,0.263106,0.035790,0.850693,0.018213,0.839420,0.278049,0.800605,0.744123,0.359531, + 0.825841,0.562839,0.948128,0.787402,0.637752,0.366384,0.301485,0.859065,1.032664,0.152958,0.734558,0.553373, + -0.081981,0.370357,0.864143,0.530899,-0.020978,0.237395,0.242895,0.951984,0.492887,0.991386,0.855643,0.057237, + 0.385953,0.856100,1.082295,0.121558,0.916856,0.141900,-0.197394,0.263495,0.825841,0.563644,0.859189,0.675070, + 0.714914,0.686115,0.933149,0.763053,0.734558,0.556887,0.855643,0.118137,1.082295,0.114717,0.000636,0.677003, + 0.614745,0.843166,0.256796,0.908975,0.310206,0.169766,0.316470,0.851923,0.194656,0.169766,1.032664,0.083317, + 0.286444,0.351252,0.422674,0.697093,0.547168,0.094375,-0.020978,0.366384,0.028439,0.677003,1.065752,0.128019, + 0.242895,0.677659,0.714914,0.616038,0.859189,0.609212,0.714914,0.649855,0.801939,0.681176,0.693552,0.351251, + 0.674505,0.562839,0.859189,0.600170,0.286444,0.263106,0.522597,0.301889,0.948128,0.857100,0.242895,0.841840, + 0.614745,0.857324,0.864143,0.568624,0.547168,0.083640,0.859189,0.616038,-0.020978,0.370357,0.472379,0.858151, + 0.948128,0.769779,0.028438,0.904638,0.864143,0.488615,0.018213,0.850386,-0.197394,0.323638,1.082295,0.124295, + -0.230369,0.321502,-0.246856,0.296995,1.065752,0.118137,0.744123,0.314061,0.864143,0.567723,0.859189,0.669984, + 1.032664,0.093516,0.933149,0.841323,0.734558,0.483730,-0.230369,0.297988,0.916856,0.083640,-0.081981,0.328604, + 0.000636,0.778294,0.674505,0.521756,0.270697,0.951984,1.032664,0.147089,0.637752,0.301889,0.614745,0.856100, + 1.082295,0.111980,-0.020978,0.328604,0.916856,0.162044,0.522597,0.370357,0.035790,0.838956,0.472397,0.695844, + 0.614745,0.787757,0.864143,0.475788,-0.146283,0.277926,0.744123,0.336552,0.018213,0.800142,0.637752,0.275175, + 0.242895,0.778294,0.316470,0.782565,0.310206,0.066508,0.859189,0.678523,0.242895,0.734924,0.637752,0.371698, + 0.316470,0.763052,0.948128,0.859065,-0.246856,0.304539,1.065752,0.103349,0.948128,0.855207,-0.081981,0.233422, + -0.230369,0.283415,-0.020978,0.340673,0.301485,0.771743,1.065752,0.135582,0.933149,0.787402,0.916856,0.056044, + 0.933149,0.846398,0.859189,0.649855,0.734558,0.548644,0.242895,0.951328,-0.230369,0.321886,0.138665,0.057237, + -0.197394,0.262743,0.674505,0.480672,0.028438,0.733934,0.547168,0.169766,-0.230369,0.285263,0.864143,0.495717, + 0.801939,0.641066,0.859189,0.599446,0.547168,0.175504,-0.146283,0.363306,0.286444,0.370357,0.801939,0.612149, + 0.260472,0.777331,1.065752,0.134570,0.693552,0.232080,0.933149,0.792357,0.916856,0.057237,0.855643,0.141900, + 0.674505,0.490138,0.933149,0.776920,-0.230369,0.305791,0.859189,0.681176,0.801939,0.669984,0.522597,0.237394, + 0.801939,0.618346,1.082295,0.116936,0.674505,0.505726,0.693552,0.370357,0.242895,0.801595,0.859189,0.618346, + 0.825841,0.483056,0.674505,0.556887,0.492887,0.638914,0.035790,0.800605,-0.197394,0.294252,0.194656,0.060770, + 0.522597,0.315508,0.916856,0.106024,0.278049,0.841840,0.310206,0.094375,0.286444,0.275175,0.714914,0.623827, + 0.301485,0.857172,0.138665,0.162044,-0.197394,0.334439,0.316470,0.773637,0.859189,0.603609,0.028438,0.951328, + 0.310206,0.152635,0.801939,0.663787,0.859189,0.658306,-0.146283,0.267100,0.864143,0.547794,0.981377,0.066678, + 0.242895,0.908512,1.086528,0.118138,0.916856,0.118137,0.472397,0.992213,-0.246856,0.295100,0.492887,0.990161, + 0.801939,0.607063,0.825841,0.479868,0.948128,0.775530,0.301485,0.846856,-0.246856,0.308285,0.301485,0.767885, + 0.801939,0.603283,0.310206,0.083640,0.714914,0.666094,-0.246856,0.301890,1.082295,0.113784,-0.197394,0.340284, + 0.714914,0.632278,0.000636,0.837967,-0.246856,0.294967,0.864143,0.565056,0.242895,0.800605,0.316470,0.782446, + 0.194656,0.074230,0.674505,0.486624,0.637752,0.370357,0.859189,0.663787,0.472379,0.789006,0.801939,0.681962, + 0.933149,0.770354,0.801939,0.656716,0.714914,0.599446,0.693552,0.243845,0.260472,0.800142,0.018213,0.777331, + 0.301485,0.787703,-0.081981,0.359933,0.859189,0.632278,0.801939,0.663787,-0.020978,0.288270,-0.146283,0.325853, + 0.714914,0.641066,1.032664,0.111344,0.693552,0.315508,0.674505,0.559051,-0.146283,0.289673,0.933149,0.851235, + 0.933149,0.773637,1.032664,0.124930,0.637752,0.340673,0.138665,0.074230,1.065752,0.100351,0.018213,0.837503, + 0.744123,0.267227,0.138665,0.130251,0.693552,0.237394,0.674505,0.513584,0.801939,0.675070,0.286444,0.328604, + 0.674505,0.556584,0.522597,0.232080,0.948128,0.853314,-0.146283,0.353955,0.734558,0.559051,0.522597,0.328604, + 1.065752,0.121607,0.522597,0.366384,0.286444,0.237395,-0.146283,0.257611,0.301485,0.844299,-0.020978,0.232081, + -0.197394,0.309527,1.082295,0.118138,0.981377,0.071825,0.000636,0.801595,-0.197394,0.286909,0.310206,0.130251, + 0.933149,0.769619,0.472379,0.855273,0.260472,0.850386,1.082295,0.123257,0.194656,0.141899,-0.081981,0.340673, + -0.081981,0.301890,0.948128,0.838584,0.014537,0.904174,0.310206,0.118137,1.065752,0.101705,0.522597,0.275175, + 0.948128,0.857172,-0.246856,0.306784,0.316470,0.855207,1.082295,0.113018,0.693552,0.340673,0.310206,0.106023, + 0.301485,0.784544,0.674505,0.553373,-0.197394,0.338056,1.065752,0.114667,0.522597,0.288270,0.301485,0.790259, + 0.933149,0.777609,0.385953,0.841318,0.492887,0.698941,0.948128,0.767885,0.138665,0.083640,0.270697,0.734924, + 0.301485,0.775530,0.825841,0.480673,0.138665,0.179038,0.693552,0.233422,-0.230369,0.312999,1.065752,0.100693, + 0.859189,0.649045,0.674505,0.498484,0.637752,0.315508,0.000636,0.734924,0.301485,0.773637,0.260472,0.802059, + -0.246856,0.300539,0.316470,0.858490,0.614745,0.785909,0.864143,0.503820,0.000636,0.777639,0.194656,0.179038, + 0.981377,0.063509,0.278049,0.778294,-0.081981,0.275175,0.916856,0.175504,0.916856,0.066508,0.714914,0.596017, + 0.270697,0.733934,-0.230369,0.320364,0.637752,0.263106,0.734558,0.500629,-0.230369,0.318516,0.734558,0.484460, + 0.933149,0.862508,-0.020978,0.315508,0.693552,0.263106,0.674505,0.560455,0.000636,0.838956,1.032664,0.083986, + 0.864143,0.521756,0.301485,0.781988,-0.020978,0.351252,0.194656,0.118137,0.674505,0.545027,0.242895,0.907522, + 0.801939,0.625416,0.855643,0.180231,0.242895,0.850693,-0.230369,0.290780,0.933149,0.841442,0.138665,0.060770, + 0.637752,0.233422,0.693552,0.252527,-0.081981,0.351252,0.859189,0.666094,0.547168,0.074231,0.981377,0.164449, + 0.864143,0.512612,-0.020978,0.371698,0.316470,0.792357,0.035790,0.778294,0.035790,0.851349,0.000636,0.677659, + 0.981377,0.062439,0.855643,0.179038,0.933149,0.851923,-0.020978,0.263106,-0.020978,0.359933,0.916856,0.152635, + 0.674505,0.494867,0.744123,0.240697,0.859189,0.656716,-0.146283,0.239270,0.194656,0.152635,0.000636,0.905628 + UVIndex: 129,589,691,529,529,691,558,221,221,558,246,88,88,246,74,254,254,74,51,697,697,51,380,554,554,380,83,639,639,83,117,487,487,117,292,171,171,292,66,120,120,66,215,730,730,215,50,111,111,50,77,642,642,77,86,723,723,86,414,456,456,414,430,317, + 380,51,533,705,688,633,606,104,51,74,470,533,74,246,7,470,246,558,390,7,558,691,499,390,691,589,170,499,430,414,478,463,414,86,603,478,86,77,299,603,77,50,222,299,50,215,580,222,215,66,76,580,66,292,421,76,292,117,726,421,117,83,744,726, + 83,380,705,744,289,384,65,435,737,527,354,563,333,571,142,442,59,637,116,664,363,110,280,193,633,43,23,606,692,341,157,707,571,154,760,142,637,198,729,116,110,688,104,280,43,737,563,23,341,333,442,157,154,59,664,760,198,363,193,729,282,545,428,755, + 464,742,272,225,247,229,425,168,531,133,187,180,169,343,156,545,384,446,114,65,742,47,369,272,97,536,146,751,133,213,282,187,343,289,435,156,446,464,225,114,47,247,168,369,536,531,180,146,213,169,545,282,711,53,743,366,435,65,565,584,225,272,283,484, + 168,425,544,377,180,187,494,53,545,156,186,428,65,114,100,565,272,369,712,283,751,146,711,144,187,282,755,494,156,435,584,186,114,225,484,100,369,168,377,712,146,180,53,711,755,428,220,121,584,565,112,128,484,283,11,330,377,544,708,581,278,144,30,177, + 53,494,140,743,428,186,161,220,565,100,188,112,283,712,656,11,544,521,750,708,144,711,366,30,494,755,121,140,186,584,128,161,100,484,330,188,712,377,581,656,366,743,489,123,121,220,345,179,128,112,625,297,330,11,480,82,581,708,725,54,177,30,224,418, + 743,140,45,489,220,161,631,345,112,188,308,625,11,656,148,480,708,750,443,725,30,366,123,224,140,121,179,45,161,128,297,631,188,330,82,308,656,581,54,148,123,489,81,541,179,345,336,449,297,625,681,476,82,480,290,49,54,725,695,670,418,224,519,98, + 489,45,327,81,345,631,648,336,625,308,219,681,480,148,513,290,725,443,634,695,224,123,541,519,45,179,449,327,631,297,476,648,308,82,49,219,148,54,670,513,541,81,663,285,449,336,407,427,476,681,553,655,49,290,598,436,670,695,241,155,98,519,35,473, + 81,327,373,663,336,648,376,407,681,219,328,553,290,513,675,598,695,634,492,241,519,541,285,35,327,449,427,373,648,476,655,376,219,49,436,328,513,670,155,675,285,663,583,583,427,407,583,583,655,553,583,583,436,598,583,583,155,241,583,583,473,35,583,583, + 663,373,583,583,407,376,583,583,553,328,583,583,598,675,583,583,241,492,583,583,35,285,583,583,373,427,583,583,376,655,583,583,328,436,583,583,675,155,583,583,729,193,677,669,104,606,316,595,563,354,34,80,442,142,147,440,664,116,659,119,193,280,567,677, + 606,23,506,316,707,157,127,191,142,760,576,147,116,729,669,659,280,104,595,567,23,563,80,506,157,442,440,127,760,664,119,576,506,80,247,47,576,119,169,213,567,595,464,446,127,440,531,536,659,669,289,343,316,506,47,742,147,576,213,133,677,567,446,384, + 80,34,229,247,119,659,343,169,191,127,536,97,595,316,742,464,669,677,384,289,440,147,133,531,456,317,279,627,723,456,627,559,642,723,559,679,111,642,679,372,730,111,372,332,120,730,332,364,171,120,364,134,487,171,134,487,639,487,487,79,554,639,79,194, + 697,554,194,124,254,697,124,756,88,254,756,546,221,88,546,607,529,221,607,239,129,529,239,300,559,627,646,434,332,372,524,265,487,134,329,338,124,194,94,717,607,546,173,162,679,559,434,419,364,332,265,301,79,487,338,320,756,124,717,22,239,607,162,719, + 627,279,178,646,372,679,419,524,134,364,301,329,194,79,320,94,546,756,22,173,300,239,719,482,20,118,707,126,362,97,189,733,733,189,144,278,126,707,191,371,371,191,97,362,589,129,129,589,8,692,692,8,692,707,707,692,97,751,751,97,144,278,278,144, + 751,144,144,751,707,191,191,707,191,97,97,191,129,300,300,129,300,482,482,300,129,589,589,129,118,20,20,118,707,118,118,707,189,97,97,189,278,144,144,278,144,189,189,144,191,707,707,191,97,191,191,97,300,129,129,300,482,300,300,482,505,15,605,307, + 684,370,10,231,6,349,72,415,1,331,746,543,520,231,10,415,204,684,15,505,15,684,231,605,349,1,543,72,307,605,231,520,6,370,684,204,331,505,307,746,746,307,520,543,1,204,505,331,370,6,415,10,349,6,204,1,543,520,415,72,331,618,683,746, + 727,395,505,15,307,746,683,326,395,618,331,505,618,395,326,683,395,727,678,326,727,15,605,678,605,307,326,678,295,233,325,240,629,314,255,522,44,277,667,130,481,64,143,166,736,522,255,130,68,629,233,295,233,629,522,325,277,481,166,667,240,325,522,736, + 44,314,629,68,64,295,240,143,143,240,736,166,481,68,295,64,314,44,130,255,277,44,68,481,166,736,130,667,64,319,389,143,591,151,295,233,240,143,389,32,151,319,64,295,319,151,32,389,151,591,652,32,591,233,325,652,325,240,32,652,165,164,441,674, + 158,672,644,752,511,138,460,514,202,318,703,108,397,752,644,514,720,158,164,165,164,158,752,441,138,202,108,460,674,441,752,397,511,672,158,720,318,165,674,703,703,674,397,108,202,720,165,318,672,511,514,644,138,511,720,202,108,397,514,460,318,267,270,703, + 570,417,165,164,674,703,270,167,417,267,318,165,267,417,167,270,417,570,136,167,570,164,441,136,441,674,167,136,185,263,335,573,660,13,590,547,468,687,258,312,433,510,182,612,630,547,590,312,60,660,263,185,263,660,547,335,687,433,612,258,573,335,547,630, + 468,13,660,60,510,185,573,182,182,573,630,612,433,60,185,510,13,468,312,590,687,468,60,433,612,630,312,258,510,593,518,182,281,90,185,263,573,182,518,700,90,593,510,185,593,90,700,518,90,281,690,700,281,263,335,690,335,573,700,690,31,339,192,249, + 63,106,438,105,31,223,269,63,223,685,61,269,192,339,105,438,249,192,438,106,223,31,249,685,269,61,106,63,339,31,63,105,685,249,106,61,102,686,498,610,497,200,704,337,102,399,445,497,399,392,276,445,498,686,337,704,610,498,704,200,399,102,610,392, + 445,276,200,497,686,102,497,337,392,610,200,276,360,404,160,383,252,153,344,560,360,244,214,252,244,38,351,214,160,404,560,344,383,160,344,153,244,360,383,38,214,351,153,252,404,360,252,560,38,383,153,351,585,424,462,467,321,661,491,587,585,379,296,321, + 379,137,426,296,462,424,587,491,467,462,491,661,379,585,467,137,296,426,661,321,424,585,321,587,137,467,661,426,616,17,358,604,701,556,508,209,714,412,163,689,616,604,556,701,17,714,689,209,604,358,508,556,412,714,17,616,163,701,209,689,412,616,701,163, + 358,17,209,508,16,46,450,504,540,355,403,237,381,709,228,78,16,504,355,540,46,381,78,237,504,450,403,355,709,381,46,16,228,540,237,78,709,16,540,228,450,46,237,403,662,298,525,734,284,21,423,250,175,391,33,488,662,734,21,284,298,175,488,250, + 734,525,423,21,391,175,298,662,33,284,250,488,391,662,284,33,525,298,250,423,471,387,125,57,367,217,232,145,575,410,748,306,471,57,217,367,387,575,306,145,57,125,232,217,410,575,387,471,748,367,145,306,410,471,367,748,125,387,145,232,313,56,749,486, + 617,706,437,227,322,747,201,448,313,486,706,617,56,322,448,227,486,749,437,706,747,322,56,313,201,617,227,448,747,313,617,201,749,56,227,437,210,439,582,461,323,324,731,294,101,566,402,230,210,461,324,323,439,101,230,294,461,582,731,324,566,101,439,210, + 402,323,294,230,566,210,323,402,582,439,294,731,411,196,761,724,635,601,195,668,3,496,368,469,411,724,601,635,196,3,469,668,724,761,195,601,496,3,196,411,368,635,668,469,496,411,635,368,761,196,668,195,502,172,5,408,315,657,699,103,530,561,238,71, + 502,408,657,315,172,530,71,103,408,5,699,657,561,530,172,502,238,315,103,71,561,502,315,238,5,172,103,699,359,542,394,738,12,115,653,58,58,653,93,515,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, + 212,212,212,212,212,212,212,212,738,394,643,139,139,643,115,12,534,382,107,552,539,588,594,141,243,141,594,588,539,347,732,382,534,4,613,577,550,89,287,454,611,454,340,640,550,621,613,205,14,624,600,620,620,600,569,42,42,569,451,465,465,451,208,452, + 452,208,293,574,574,293,614,535,535,614,29,48,48,29,713,261,19,432,357,27,27,357,203,122,122,203,184,507,507,184,113,73,73,113,596,741,741,596,9,578,523,453,624,14,578,9,453,523,578,523,696,758,85,757,693,342,757,235,638,693,235,352,615,638, + 352,406,739,615,406,636,722,739,636,259,150,722,259,286,305,150,388,477,626,69,477,211,251,626,211,501,676,251,501,253,455,676,253,226,25,455,226,413,353,25,413,40,555,353,40,346,176,555,286,388,69,305,693,638,39,738,739,722,716,311,305,69,490,218, + 251,676,632,2,25,353,416,365,638,615,0,39,722,150,503,716,69,626,698,490,676,455,24,632,353,555,608,416,342,693,738,394,615,739,311,0,150,305,218,503,626,251,2,698,455,25,365,24,555,176,509,608,12,650,422,152,242,458,753,304,303,386,206,622, + 641,91,517,493,245,26,447,754,650,302,181,422,458,568,55,753,386,28,721,206,91,444,728,517,26,538,466,447,115,12,152,99,302,242,304,181,568,303,622,55,28,641,493,721,444,245,754,728,538,248,745,466,152,422,385,515,304,753,374,256,622,206,666,348, + 493,517,665,485,754,447,234,619,422,181,350,385,753,55,710,374,206,721,190,666,517,728,740,665,447,466,420,234,99,152,515,93,181,304,256,350,55,622,348,710,721,493,485,190,728,754,619,740,466,745,266,420,537,207,87,599,515,385,216,356,256,374,579,651, + 348,666,174,628,485,665,309,623,619,234,52,645,385,350,135,216,374,710,500,579,666,190,274,174,665,740,291,309,234,420,537,52,93,515,356,759,350,256,651,135,710,348,628,500,190,485,623,274,740,619,645,291,420,266,207,537,378,572,718,262,356,216,288,429, + 651,579,334,132,628,174,67,562,623,309,472,96,645,52,680,572,216,135,159,288,579,500,658,334,174,274,654,67,309,291,378,472,52,537,599,680,759,356,429,528,135,651,132,159,500,628,562,658,274,623,96,654,291,645,572,378,548,41,512,199,599,87,37,474, + 429,288,516,275,132,334,735,273,562,67,131,483,96,472,694,41,572,680,715,718,288,159,532,516,334,658,405,735,67,654,548,131,472,378,262,694,680,599,474,715,528,429,275,84,159,132,273,532,658,562,483,405,654,96,41,548,199,512,212,212,262,718,109,673, + 474,37,398,62,275,516,18,586,273,735,260,475,483,131,597,702,41,694,149,512,718,715,592,109,516,532,401,18,735,405,92,260,131,548,199,597,694,262,673,149,715,474,62,592,84,275,586,396,532,273,475,401,405,483,702,92,673,109,212,212,62,398,212,212, + 586,18,212,212,475,260,212,212,702,597,212,212,512,149,212,212,109,592,212,212,18,401,212,212,260,92,212,212,597,199,212,212,149,673,212,212,592,62,212,212,396,586,212,212,401,475,212,212,92,702,212,212,738,39,551,139,311,716,409,236,218,490,459,682, + 2,632,310,647,365,416,649,95,39,0,264,551,716,503,671,409,490,698,564,459,632,24,183,310,416,608,495,649,394,738,139,643,0,311,236,264,503,218,682,671,698,2,647,564,24,365,95,183,608,509,268,495,459,564,28,386,264,236,242,302,95,649,26,245, + 643,139,12,115,647,310,91,641,551,264,302,650,409,671,568,458,682,459,386,303,236,409,458,242,139,551,650,12,495,268,248,538,183,95,245,444,649,495,538,26,564,647,641,28,310,183,444,91,671,682,303,568,479,609,621,550,741,578,758,609,73,741,609,479, + 507,73,479,431,122,507,431,197,27,122,197,549,19,27,549,257,14,620,271,14,48,261,457,36,535,48,36,400,574,535,400,393,452,574,393,361,465,452,361,557,42,465,557,75,620,42,75,271,523,14,14,696,549,197,340,454,36,457,243,141,361,393,588,539, + 271,75,732,382,758,696,205,613,431,479,550,640,257,549,454,611,400,36,141,594,557,361,539,347,14,271,382,534,609,758,613,621,197,431,640,340,393,400,594,588,75,557,347,732,696,14,534,205,19,432,432,19,542,85,85,542,346,375,375,346,394,542,542,394, + 653,115,115,653,93,653,653,93,266,207,207,266,759,93,93,759,207,87,87,207,528,759,759,528,87,526,526,87,84,528,528,84,526,398,398,526,602,84,84,602,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, + 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,398,212,212,398,212,602,602,212,643,394,394,643,115,643,643,115,70,19,19,70,382,534,534,382, + 107,382,382,107,552,107,107,552,539,552,552,539,588,539,539,588,594,588,588,594,141,594,594,141,243,141,141,243,454,611,611,454,340,454,454,340,640,340,340,640,550,640,640,550,621,550,550,621,613,621,621,613,205,613,613,205,534,205,205,534,611,70,70,611, + 432,19,19,432,85,342,342,85,176,346,346,176,342,394,394,342,115,99,99,115,99,93,93,99,207,266,266,207,93,759,759,93,87,207,207,87,759,528,528,759,37,87,87,37,528,84,84,528,398,37,37,398,84,396,396,84,212,212,212,212,212,212,212,212, + 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,398,398,212,396,212,212,396, + 394,643,643,394,643,115,115,643,19,257,257,19,534,382,382,534,382,732,732,382,732,347,347,732,347,539,539,347,539,588,588,539,588,594,594,588,594,141,141,594,141,243,243,141,611,454,454,611,454,340,340,454,340,640,640,340,640,550,550,640,550,621,621,550, + 621,613,613,621,613,205,205,613,205,534,534,205,257,611,611,257 + } + LayerElementTexture: 0 { + Version: 101 + Name: "UVMap" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + BlendMode: "Translucent" + TextureAlpha: 1 + TextureId: 0 + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "ByPolygon" + ReferenceInformationType: "IndexToDirect" + Materials: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementSmoothing" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTexture" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + } + } + Model: "Model::Producer Perspective", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,71.299999999999997,287.500000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",10.000000 + Property: "FarPlane", "double", "",4000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",0 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 0.000000,71.300000,287.500000 + Up: 0,1,0 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Top", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,4000.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 0.000000,4000.000000,0.000000 + Up: 0,0,-1 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Bottom", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,-4000.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 0.000000,-4000.000000,0.000000 + Up: 0,0,-1 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Front", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,0.000000000000000,4000.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 0.000000,0.000000,4000.000000 + Up: 0,1,0 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Back", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",0.000000000000000,0.000000000000000,-4000.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 0.000000,0.000000,-4000.000000 + Up: 0,1,0 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Right", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",4000.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: 4000.000000,0.000000,0.000000 + Up: 0,1,0 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Model: "Model::Producer Left", "Camera" { + Version: 232 + Properties60: { + Property: "QuaternionInterpolate", "bool", "",0 + Property: "Visibility", "Visibility", "A+",1 + Property: "Lcl Translation", "Lcl Translation", "A+",-4000.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Rotation", "Lcl Rotation", "A+",0.000000000000000,0.000000000000000,0.000000000000000 + Property: "Lcl Scaling", "Lcl Scaling", "A+",1.000000000000000,1.000000000000000,1.000000000000000 + Property: "RotationOffset", "Vector3D", "",0,0,0 + Property: "RotationPivot", "Vector3D", "",0,0,0 + Property: "ScalingOffset", "Vector3D", "",0,0,0 + Property: "ScalingPivot", "Vector3D", "",0,0,0 + Property: "TranslationActive", "bool", "",0 + Property: "TranslationMin", "Vector3D", "",0,0,0 + Property: "TranslationMax", "Vector3D", "",0,0,0 + Property: "TranslationMinX", "bool", "",0 + Property: "TranslationMinY", "bool", "",0 + Property: "TranslationMinZ", "bool", "",0 + Property: "TranslationMaxX", "bool", "",0 + Property: "TranslationMaxY", "bool", "",0 + Property: "TranslationMaxZ", "bool", "",0 + Property: "RotationOrder", "enum", "",0 + Property: "RotationSpaceForLimitOnly", "bool", "",0 + Property: "AxisLen", "double", "",10 + Property: "PreRotation", "Vector3D", "",0,0,0 + Property: "PostRotation", "Vector3D", "",0,0,0 + Property: "RotationActive", "bool", "",0 + Property: "RotationMin", "Vector3D", "",0,0,0 + Property: "RotationMax", "Vector3D", "",0,0,0 + Property: "RotationMinX", "bool", "",0 + Property: "RotationMinY", "bool", "",0 + Property: "RotationMinZ", "bool", "",0 + Property: "RotationMaxX", "bool", "",0 + Property: "RotationMaxY", "bool", "",0 + Property: "RotationMaxZ", "bool", "",0 + Property: "RotationStiffnessX", "double", "",0 + Property: "RotationStiffnessY", "double", "",0 + Property: "RotationStiffnessZ", "double", "",0 + Property: "MinDampRangeX", "double", "",0 + Property: "MinDampRangeY", "double", "",0 + Property: "MinDampRangeZ", "double", "",0 + Property: "MaxDampRangeX", "double", "",0 + Property: "MaxDampRangeY", "double", "",0 + Property: "MaxDampRangeZ", "double", "",0 + Property: "MinDampStrengthX", "double", "",0 + Property: "MinDampStrengthY", "double", "",0 + Property: "MinDampStrengthZ", "double", "",0 + Property: "MaxDampStrengthX", "double", "",0 + Property: "MaxDampStrengthY", "double", "",0 + Property: "MaxDampStrengthZ", "double", "",0 + Property: "PreferedAngleX", "double", "",0 + Property: "PreferedAngleY", "double", "",0 + Property: "PreferedAngleZ", "double", "",0 + Property: "InheritType", "enum", "",0 + Property: "ScalingActive", "bool", "",0 + Property: "ScalingMin", "Vector3D", "",1,1,1 + Property: "ScalingMax", "Vector3D", "",1,1,1 + Property: "ScalingMinX", "bool", "",0 + Property: "ScalingMinY", "bool", "",0 + Property: "ScalingMinZ", "bool", "",0 + Property: "ScalingMaxX", "bool", "",0 + Property: "ScalingMaxY", "bool", "",0 + Property: "ScalingMaxZ", "bool", "",0 + Property: "GeometricTranslation", "Vector3D", "",0,0,0 + Property: "GeometricRotation", "Vector3D", "",0,0,0 + Property: "GeometricScaling", "Vector3D", "",1,1,1 + Property: "LookAtProperty", "object", "" + Property: "UpVectorProperty", "object", "" + Property: "Show", "bool", "",1 + Property: "NegativePercentShapeSupport", "bool", "",1 + Property: "DefaultAttributeIndex", "int", "",0 + Property: "Color", "Color", "A",0.8,0.8,0.8 + Property: "Roll", "Roll", "A+",0 + Property: "FieldOfView", "FieldOfView", "A+",40 + Property: "FieldOfViewX", "FieldOfView", "A+",1 + Property: "FieldOfViewY", "FieldOfView", "A+",1 + Property: "OpticalCenterX", "Real", "A+",0 + Property: "OpticalCenterY", "Real", "A+",0 + Property: "BackgroundColor", "Color", "A+",0.63,0.63,0.63 + Property: "TurnTable", "Real", "A+",0 + Property: "DisplayTurnTableIcon", "bool", "",1 + Property: "Motion Blur Intensity", "Real", "A+",1 + Property: "UseMotionBlur", "bool", "",0 + Property: "UseRealTimeMotionBlur", "bool", "",1 + Property: "ResolutionMode", "enum", "",0 + Property: "ApertureMode", "enum", "",2 + Property: "GateFit", "enum", "",0 + Property: "FocalLength", "Real", "A+",21.3544940948486 + Property: "CameraFormat", "enum", "",0 + Property: "AspectW", "double", "",320 + Property: "AspectH", "double", "",200 + Property: "PixelAspectRatio", "double", "",1 + Property: "UseFrameColor", "bool", "",0 + Property: "FrameColor", "ColorRGB", "",0.3,0.3,0.3 + Property: "ShowName", "bool", "",1 + Property: "ShowGrid", "bool", "",1 + Property: "ShowOpticalCenter", "bool", "",0 + Property: "ShowAzimut", "bool", "",1 + Property: "ShowTimeCode", "bool", "",0 + Property: "NearPlane", "double", "",1.000000 + Property: "FarPlane", "double", "",30000.000000 + Property: "FilmWidth", "double", "",0.816 + Property: "FilmHeight", "double", "",0.612 + Property: "FilmAspectRatio", "double", "",1.33333333333333 + Property: "FilmSqueezeRatio", "double", "",1 + Property: "FilmFormatIndex", "enum", "",4 + Property: "ViewFrustum", "bool", "",1 + Property: "ViewFrustumNearFarPlane", "bool", "",0 + Property: "ViewFrustumBackPlaneMode", "enum", "",2 + Property: "BackPlaneDistance", "double", "",100 + Property: "BackPlaneDistanceMode", "enum", "",0 + Property: "ViewCameraToLookAt", "bool", "",1 + Property: "LockMode", "bool", "",0 + Property: "LockInterestNavigation", "bool", "",0 + Property: "FitImage", "bool", "",0 + Property: "Crop", "bool", "",0 + Property: "Center", "bool", "",1 + Property: "KeepRatio", "bool", "",1 + Property: "BackgroundMode", "enum", "",0 + Property: "BackgroundAlphaTreshold", "double", "",0.5 + Property: "ForegroundTransparent", "bool", "",1 + Property: "DisplaySafeArea", "bool", "",0 + Property: "SafeAreaDisplayStyle", "enum", "",1 + Property: "SafeAreaAspectRatio", "double", "",1.33333333333333 + Property: "Use2DMagnifierZoom", "bool", "",0 + Property: "2D Magnifier Zoom", "Real", "A+",100 + Property: "2D Magnifier X", "Real", "A+",50 + Property: "2D Magnifier Y", "Real", "A+",50 + Property: "CameraProjectionType", "enum", "",1 + Property: "UseRealTimeDOFAndAA", "bool", "",0 + Property: "UseDepthOfField", "bool", "",0 + Property: "FocusSource", "enum", "",0 + Property: "FocusAngle", "double", "",3.5 + Property: "FocusDistance", "double", "",200 + Property: "UseAntialiasing", "bool", "",0 + Property: "AntialiasingIntensity", "double", "",0.77777 + Property: "UseAccumulationBuffer", "bool", "",0 + Property: "FrameSamplingCount", "int", "",7 + } + MultiLayer: 0 + MultiTake: 0 + Hidden: "True" + Shading: Y + Culling: "CullingOff" + TypeFlags: "Camera" + GeometryVersion: 124 + Position: -4000.000000,0.000000,0.000000 + Up: 0,1,0 + LookAt: 0,0,0 + ShowInfoOnMoving: 1 + ShowAudio: 0 + AudioColor: 0,1,0 + CameraOrthoZoom: 1 + } + Material: "Material::Material_001__untiffftled_jpg", "" { + Version: 102 + ShadingModel: "lambert" + MultiLayer: 0 + Properties60: { + Property: "ShadingModel", "KString", "", "Lambert" + Property: "MultiLayer", "bool", "",0 + Property: "EmissiveColor", "ColorRGB", "",0.8000,0.8000,0.8000 + Property: "EmissiveFactor", "double", "",0.0000 + Property: "AmbientColor", "ColorRGB", "",1.0000,1.0000,1.0000 + Property: "AmbientFactor", "double", "",1.0000 + Property: "DiffuseColor", "ColorRGB", "",0.8000,0.8000,0.8000 + Property: "DiffuseFactor", "double", "",0.8000 + Property: "Bump", "Vector3D", "",0,0,0 + Property: "TransparentColor", "ColorRGB", "",1,1,1 + Property: "TransparencyFactor", "double", "",0.0000 + Property: "SpecularColor", "ColorRGB", "",1.0000,1.0000,1.0000 + Property: "SpecularFactor", "double", "",0.5000 + Property: "ShininessExponent", "double", "",12.3 + Property: "ReflectionColor", "ColorRGB", "",0,0,0 + Property: "ReflectionFactor", "double", "",1 + Property: "Emissive", "ColorRGB", "",0,0,0 + Property: "Ambient", "ColorRGB", "",1.0,1.0,1.0 + Property: "Diffuse", "ColorRGB", "",0.8,0.8,0.8 + Property: "Specular", "ColorRGB", "",1.0,1.0,1.0 + Property: "Shininess", "double", "",12.3 + Property: "Opacity", "double", "",1.0 + Property: "Reflectivity", "double", "",0 + } + } + Material: "Material::Material_002__untiffftled_jpg", "" { + Version: 102 + ShadingModel: "lambert" + MultiLayer: 0 + Properties60: { + Property: "ShadingModel", "KString", "", "Lambert" + Property: "MultiLayer", "bool", "",0 + Property: "EmissiveColor", "ColorRGB", "",0.8000,0.8000,0.8000 + Property: "EmissiveFactor", "double", "",0.0000 + Property: "AmbientColor", "ColorRGB", "",1.0000,1.0000,1.0000 + Property: "AmbientFactor", "double", "",1.0000 + Property: "DiffuseColor", "ColorRGB", "",0.8000,0.8000,0.8000 + Property: "DiffuseFactor", "double", "",0.8000 + Property: "Bump", "Vector3D", "",0,0,0 + Property: "TransparentColor", "ColorRGB", "",1,1,1 + Property: "TransparencyFactor", "double", "",0.0000 + Property: "SpecularColor", "ColorRGB", "",1.0000,1.0000,1.0000 + Property: "SpecularFactor", "double", "",0.5000 + Property: "ShininessExponent", "double", "",12.3 + Property: "ReflectionColor", "ColorRGB", "",0,0,0 + Property: "ReflectionFactor", "double", "",1 + Property: "Emissive", "ColorRGB", "",0,0,0 + Property: "Ambient", "ColorRGB", "",1.0,1.0,1.0 + Property: "Diffuse", "ColorRGB", "",0.8,0.8,0.8 + Property: "Specular", "ColorRGB", "",1.0,1.0,1.0 + Property: "Shininess", "double", "",12.3 + Property: "Opacity", "double", "",1.0 + Property: "Reflectivity", "double", "",0 + } + } + Material: "Material::Material_004__untiffftled_jpg", "" { + Version: 102 + ShadingModel: "lambert" + MultiLayer: 0 + Properties60: { + Property: "ShadingModel", "KString", "", "Lambert" + Property: "MultiLayer", "bool", "",0 + Property: "EmissiveColor", "ColorRGB", "",0.8000,0.8000,0.8000 + Property: "EmissiveFactor", "double", "",0.0000 + Property: "AmbientColor", "ColorRGB", "",1.0000,1.0000,1.0000 + Property: "AmbientFactor", "double", "",1.0000 + Property: "DiffuseColor", "ColorRGB", "",0.8000,0.8000,0.8000 + Property: "DiffuseFactor", "double", "",0.8000 + Property: "Bump", "Vector3D", "",0,0,0 + Property: "TransparentColor", "ColorRGB", "",1,1,1 + Property: "TransparencyFactor", "double", "",0.0000 + Property: "SpecularColor", "ColorRGB", "",1.0000,1.0000,1.0000 + Property: "SpecularFactor", "double", "",0.5000 + Property: "ShininessExponent", "double", "",12.3 + Property: "ReflectionColor", "ColorRGB", "",0,0,0 + Property: "ReflectionFactor", "double", "",1 + Property: "Emissive", "ColorRGB", "",0,0,0 + Property: "Ambient", "ColorRGB", "",1.0,1.0,1.0 + Property: "Diffuse", "ColorRGB", "",0.8,0.8,0.8 + Property: "Specular", "ColorRGB", "",1.0,1.0,1.0 + Property: "Shininess", "double", "",12.3 + Property: "Opacity", "double", "",1.0 + Property: "Reflectivity", "double", "",0 + } + } + Video: "Video::untiffftled_jpg", "Clip" { + Type: "Clip" + Properties60: { + Property: "FrameRate", "double", "",0 + Property: "LastFrame", "int", "",0 + Property: "Width", "int", "",0 + Property: "Height", "int", "",0 + Property: "Path", "charptr", "", "untiffftled.jpg" + Property: "StartFrame", "int", "",0 + Property: "StopFrame", "int", "",0 + Property: "PlaySpeed", "double", "",1 + Property: "Offset", "KTime", "",0 + Property: "InterlaceMode", "enum", "",0 + Property: "FreeRunning", "bool", "",0 + Property: "Loop", "bool", "",0 + Property: "AccessMode", "enum", "",0 + } + UseMipMap: 0 + Filename: "untiffftled.jpg" + RelativeFilename: "untiffftled.jpg" + } + Texture: "Texture::untiffftled_jpg", "TextureVideoClip" { + Type: "TextureVideoClip" + Version: 202 + TextureName: "Texture::untiffftled_jpg" + Properties60: { + Property: "Translation", "Vector", "A+",0,0,0 + Property: "Rotation", "Vector", "A+",0,0,0 + Property: "Scaling", "Vector", "A+",1,1,1 + Property: "Texture alpha", "Number", "A+",0 + Property: "TextureTypeUse", "enum", "",0 + Property: "CurrentTextureBlendMode", "enum", "",1 + Property: "UseMaterial", "bool", "",0 + Property: "UseMipMap", "bool", "",0 + Property: "CurrentMappingType", "enum", "",0 + Property: "UVSwap", "bool", "",0 + Property: "WrapModeU", "enum", "",0 + Property: "WrapModeV", "enum", "",0 + Property: "TextureRotationPivot", "Vector3D", "",0,0,0 + Property: "TextureScalingPivot", "Vector3D", "",0,0,0 + Property: "VideoProperty", "object", "" + } + Media: "Video::untiffftled_jpg" + FileName: "untiffftled.jpg" + RelativeFilename: "untiffftled.jpg" + ModelUVTranslation: 0,0 + ModelUVScaling: 1,1 + Texture_Alpha_Source: "None" + Cropping: 0,0,0,0 + } + Pose: "Pose::BIND_POSES", "BindPose" { + Type: "BindPose" + Version: 100 + Properties60: { + } + NbPoseNodes: 1 + PoseNode: { + Node: "Model::Cylinder_001" + Matrix: 0.230627462267876,-0.000000202045072,3.262809753417969,0.000000000000000,-0.000000619465709,3.270950555801392,0.000000246335276,0.000000000000000,-3.262809753417969,-0.000000635292565,0.230627462267876,0.000000000000000,9.726499557495117,7.138179779052734,-0.222229242324829,1.000000000000000 + } + } + GlobalSettings: { + Version: 1000 + Properties60: { + Property: "UpAxis", "int", "",1 + Property: "UpAxisSign", "int", "",1 + Property: "FrontAxis", "int", "",2 + Property: "FrontAxisSign", "int", "",1 + Property: "CoordAxis", "int", "",0 + Property: "CoordAxisSign", "int", "",1 + Property: "UnitScaleFactor", "double", "",1 + } + } +} + +; Object relations +;------------------------------------------------------------------ + +Relations: { + Model: "Model::Cylinder_001", "Mesh" { + } + Model: "Model::Producer Perspective", "Camera" { + } + Model: "Model::Producer Top", "Camera" { + } + Model: "Model::Producer Bottom", "Camera" { + } + Model: "Model::Producer Front", "Camera" { + } + Model: "Model::Producer Back", "Camera" { + } + Model: "Model::Producer Right", "Camera" { + } + Model: "Model::Producer Left", "Camera" { + } + Model: "Model::Camera Switcher", "CameraSwitcher" { + } + Material: "Material::Material_001__untiffftled_jpg", "" { + } + Material: "Material::Material_002__untiffftled_jpg", "" { + } + Material: "Material::Material_004__untiffftled_jpg", "" { + } + Texture: "Texture::untiffftled_jpg", "TextureVideoClip" { + } + Video: "Video::untiffftled_jpg", "Clip" { + } +} + +; Object connections +;------------------------------------------------------------------ + +Connections: { + Connect: "OO", "Model::Cylinder_001", "Model::Scene" + Connect: "OO", "Material::Material_001__untiffftled_jpg", "Model::Cylinder_001" + Connect: "OO", "Material::Material_002__untiffftled_jpg", "Model::Cylinder_001" + Connect: "OO", "Material::Material_004__untiffftled_jpg", "Model::Cylinder_001" + Connect: "OO", "Texture::untiffftled_jpg", "Model::Cylinder_001" + Connect: "OO", "Video::untiffftled_jpg", "Texture::untiffftled_jpg" +} +;Takes and animation section +;---------------------------------------------------- + +Takes: { + Current: "Default Take" + Take: "Default Take" { + FileName: "Default_Take.tak" + LocalTime: 0,479181389250 + ReferenceTime: 0,479181389250 + + ;Models animation + ;---------------------------------------------------- + Model: "Model::Cylinder_001" { + Version: 1.1 + Channel: "Transform" { + Channel: "T" { + Channel: "X" { + Default: 9.726499557495117 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,9.726499557495117,L + Color: 1,0,0 + } + Channel: "Y" { + Default: 7.138179779052734 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,7.138179779052734,L + Color: 0,1,0 + } + Channel: "Z" { + Default: -0.222229242324829 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,-0.222229242324829,L + Color: 0,0,1 + } + LayerType: 1 + } + Channel: "R" { + Channel: "X" { + Default: 85.956844704408937 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,85.956844704408937,L + Color: 1,0,0 + } + Channel: "Y" { + Default: -0.000000000000000 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,-0.000000000000000,L + Color: 0,1,0 + } + Channel: "Z" { + Default: -89.999988843970513 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,-89.999988843970513,L + Color: 0,0,1 + } + LayerType: 2 + } + Channel: "S" { + Channel: "X" { + Default: 3.270950555801392 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,3.270950555801392,L + Color: 1,0,0 + } + Channel: "Y" { + Default: 3.270950317382812 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,3.270950317382812,L + Color: 0,1,0 + } + Channel: "Z" { + Default: 3.270950317382812 + KeyVer: 4005 + KeyCount: 1 + Key: + 1924423250,3.270950317382812,L + Color: 0,0,1 + } + LayerType: 3 + } + } + } + } +} +;Version 5 settings +;------------------------------------------------------------------ + +Version5: { + AmbientRenderSettings: { + Version: 101 + AmbientLightColor: 0.0,0.0,0.0,0 + } + FogOptions: { + FogEnable: 0 + FogMode: 0 + FogDensity: 0.000 + FogStart: 5.000 + FogEnd: 25.000 + FogColor: 0.1,0.1,0.1,1 + } + Settings: { + FrameRate: "24" + TimeFormat: 1 + SnapOnFrames: 0 + ReferenceTimeIndex: -1 + TimeLineStartTime: 0 + TimeLineStopTime: 479181389250 + } + RendererSetting: { + DefaultCamera: "Producer Perspective" + DefaultViewingMode: 0 + } +} diff --git a/Projekte/mdga/client/src/main/resources/Models/missile/AVMT300.mtl b/Projekte/mdga/client/src/main/resources/Models/missile/AVMT300.mtl new file mode 100644 index 00000000..2e5fe3ed --- /dev/null +++ b/Projekte/mdga/client/src/main/resources/Models/missile/AVMT300.mtl @@ -0,0 +1,32 @@ +# Blender MTL File: 'untitled.blend' +# Material Count: 3 + +newmtl Material.001 +Ns 96.078431 +Ka 0.000000 0.000000 0.000000 +Kd 0.640000 0.640000 0.640000 +Ks 0.500000 0.500000 0.500000 +Ni 1.000000 +d 1.000000 +illum 2 +map_Kd untiffftled.jpg + +newmtl Material.002 +Ns 96.078431 +Ka 0.000000 0.000000 0.000000 +Kd 0.640000 0.640000 0.640000 +Ks 0.500000 0.500000 0.500000 +Ni 1.000000 +d 1.000000 +illum 2 +map_Kd untiffftled.jpg + +newmtl Material.004 +Ns 96.078431 +Ka 0.000000 0.000000 0.000000 +Kd 0.640000 0.640000 0.640000 +Ks 0.500000 0.500000 0.500000 +Ni 1.000000 +d 1.000000 +illum 2 +map_Kd untiffftled.jpg diff --git a/Projekte/mdga/client/src/main/resources/Models/missile/AVMT300.obj b/Projekte/mdga/client/src/main/resources/Models/missile/AVMT300.obj new file mode 100644 index 00000000..91d12f20 --- /dev/null +++ b/Projekte/mdga/client/src/main/resources/Models/missile/AVMT300.obj @@ -0,0 +1,2523 @@ +# Blender v2.70 (sub 0) OBJ File: 'untitled.blend' +# www.blender.org +mtllib AVMT300.mtl +o Cylinder.001 +v 15.607042 5.725112 9.773819 +v 9.668676 5.725111 10.193564 +v 15.587605 5.752263 9.498835 +v 9.649240 5.752262 9.918580 +v 15.568915 5.832674 9.234417 +v 9.630549 5.832672 9.654162 +v 15.551690 5.963253 8.990728 +v 9.613324 5.963252 9.410474 +v 15.536592 6.138983 8.777134 +v 9.598227 6.138982 9.196879 +v 15.524202 6.353111 8.601841 +v 9.585836 6.353109 9.021586 +v 15.514996 6.597407 8.471586 +v 9.576630 6.597406 8.891332 +v 15.509326 6.862485 8.391376 +v 9.570960 6.862484 8.811121 +v 15.507412 7.138156 8.364293 +v 9.569046 7.138155 8.784039 +v 15.509325 7.413827 8.391376 +v 9.570960 7.413826 8.811121 +v 15.514996 7.678905 8.471586 +v 9.576630 7.678903 8.891332 +v 15.524202 7.923201 8.601841 +v 9.585836 7.923200 9.021586 +v 15.536592 8.137329 8.777134 +v 9.598227 8.137327 9.196879 +v 15.551690 8.313059 8.990729 +v 9.613324 8.313058 9.410475 +v 15.568914 8.443638 9.234417 +v 9.630548 8.443637 9.654162 +v 15.587605 8.524048 9.498836 +v 9.649239 8.524047 9.918581 +v 15.607042 8.551199 9.773821 +v 9.668676 8.551198 10.193566 +v 8.165736 5.557110 10.299798 +v 8.143989 5.587489 9.992120 +v 8.123076 5.677460 9.696265 +v 8.103804 5.823564 9.423603 +v 8.086910 6.020187 9.184614 +v 8.073047 6.259773 8.988480 +v 8.062745 6.533115 8.842739 +v 8.056401 6.829708 8.752993 +v 8.054259 7.138155 8.722690 +v 8.056401 7.446601 8.752993 +v 8.062745 7.743194 8.842740 +v 8.073047 8.016536 8.988481 +v 8.086909 8.256122 9.184614 +v 8.103804 8.452744 9.423605 +v 8.123075 8.598849 9.696266 +v 8.143988 8.688819 9.992121 +v 8.165736 8.719198 10.299800 +v 6.485649 5.587489 10.109337 +v 6.464737 5.677459 9.813482 +v 6.445464 5.823564 9.540821 +v 6.428571 6.020187 9.301832 +v 6.414708 6.259773 9.105698 +v 6.404407 6.533114 8.959957 +v 6.398063 6.829708 8.870211 +v 6.395921 7.138155 8.839907 +v 6.398063 7.446601 8.870211 +v 6.404406 7.743194 8.959957 +v 6.414708 8.016536 9.105698 +v 6.428571 8.256122 9.301832 +v 6.445464 8.452744 9.540823 +v 6.464736 8.598848 9.813484 +v 6.485648 8.688819 10.109339 +v -13.091454 5.587485 11.493119 +v -13.112366 5.677455 11.197265 +v -13.131638 5.823559 10.924603 +v -13.148531 6.020183 10.685614 +v -13.162394 6.259768 10.489479 +v -13.172695 6.533111 10.343739 +v -13.179039 6.829704 10.253992 +v -13.181181 7.138150 10.223689 +v -13.179039 7.446597 10.253992 +v -13.172695 7.743190 10.343740 +v -13.162394 8.016531 10.489480 +v -13.148531 8.256118 10.685614 +v -13.131638 8.452741 10.924604 +v -13.112366 8.598845 11.197266 +v -13.091454 8.688815 11.493120 +v -14.882706 5.557106 11.928947 +v -14.904453 5.587485 11.621269 +v -14.925365 5.677455 11.325415 +v -14.944637 5.823560 11.052752 +v -14.961531 6.020183 10.813764 +v -14.975393 6.259769 10.617629 +v -14.985695 6.533111 10.471889 +v -14.992039 6.829704 10.382142 +v -14.994181 7.138151 10.351839 +v -14.992039 7.446597 10.382142 +v -14.985695 7.743190 10.471889 +v -14.975393 8.016532 10.617630 +v -14.961531 8.256118 10.813764 +v -14.944637 8.452741 11.052754 +v -14.925365 8.598845 11.325416 +v -14.904453 8.688815 11.621270 +v -14.882706 8.719194 11.928949 +v -16.793707 5.719931 12.064024 +v -16.813213 5.747181 11.788032 +v -16.831972 5.827886 11.522647 +v -16.849260 5.958944 11.278066 +v -16.864414 6.135317 11.063689 +v -16.876850 6.350229 10.887753 +v -16.886089 6.595421 10.757022 +v -16.891781 6.861469 10.676519 +v -16.893702 7.138149 10.649336 +v -16.891781 7.414830 10.676519 +v -16.886089 7.680878 10.757023 +v -16.876850 7.926069 10.887753 +v -16.864414 8.140981 11.063689 +v -16.849260 8.317354 11.278067 +v -16.831974 8.448412 11.522647 +v -16.813215 8.529117 11.788033 +v -16.793707 8.556366 12.064026 +v -18.312698 6.251543 12.171391 +v -18.324894 6.268579 11.998855 +v -18.336620 6.319031 11.832947 +v -18.347427 6.400962 11.680046 +v -18.356901 6.511223 11.546027 +v -18.364676 6.645576 11.436041 +v -18.370451 6.798859 11.354314 +v -18.374010 6.965180 11.303987 +v -18.375210 7.138148 11.286993 +v -18.374010 7.311116 11.303987 +v -18.370453 7.477437 11.354314 +v -18.364676 7.630720 11.436041 +v -18.356901 7.765073 11.546027 +v -18.347427 7.875333 11.680047 +v -18.336620 7.957264 11.832947 +v -18.324894 8.007717 11.998856 +v -18.312698 8.024753 12.171392 +v -19.292698 6.685266 12.240662 +v -19.298927 6.693968 12.152529 +v -19.304916 6.719740 12.067783 +v -19.310438 6.761590 11.989680 +v -19.315277 6.817912 11.921223 +v -19.319248 6.886540 11.865042 +v -19.322199 6.964838 11.823295 +v -19.324015 7.049796 11.797586 +v -19.324629 7.138148 11.788907 +v -19.324015 7.226501 11.797587 +v -19.322199 7.311459 11.823295 +v -19.319248 7.389756 11.865042 +v -19.315277 7.458385 11.921224 +v -19.310438 7.514706 11.989680 +v -19.304916 7.556557 12.067783 +v -19.298927 7.582329 12.152529 +v -19.292698 7.591031 12.240663 +v -19.782696 6.981372 12.275296 +v -19.784851 6.984385 12.244787 +v -19.786926 6.993306 12.215448 +v -19.788837 7.007794 12.188412 +v -19.790512 7.027292 12.164712 +v -19.791887 7.051050 12.145264 +v -19.792908 7.078155 12.130812 +v -19.793537 7.107566 12.121912 +v -19.793749 7.138152 12.118907 +v -19.793537 7.168738 12.121912 +v -19.792908 7.198149 12.130812 +v -19.791887 7.225255 12.145264 +v -19.790512 7.249012 12.164712 +v -19.788837 7.268510 12.188412 +v -19.786926 7.282998 12.215449 +v -19.784851 7.291920 12.244787 +v -19.782696 7.294932 12.275297 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v -19.908058 7.138152 12.284158 +v 2.975718 6.829707 9.112114 +v 2.973576 7.138154 9.081811 +v 3.006227 6.020186 9.543736 +v 2.992363 6.259772 9.347601 +v 3.063304 5.587488 10.351241 +v 3.042392 5.677459 10.055387 +v 3.063304 8.688818 10.351242 +v 3.006227 8.256121 9.543736 +v 3.023119 8.452744 9.782726 +v 2.975718 7.446600 9.112114 +v 2.982061 7.743193 9.201861 +v 2.982062 6.533114 9.201860 +v 3.023119 5.823563 9.782724 +v 3.042392 8.598848 10.055387 +v 2.992363 8.016535 9.347602 +v -4.036290 7.743192 9.697945 +v -3.995233 8.452743 10.278810 +v -3.975959 5.677457 10.551470 +v -4.025989 6.259771 9.843684 +v -4.044775 7.138152 9.577894 +v -4.025989 8.016533 9.843685 +v -3.975960 8.598846 10.551471 +v -3.995232 5.823561 10.278808 +v -4.036290 6.533113 9.697944 +v -4.042633 7.446599 9.608197 +v -4.012125 8.256120 10.039819 +v -3.955048 8.688817 10.847325 +v -3.955047 5.587487 10.847324 +v -4.012125 6.020185 10.039819 +v -4.042633 6.829706 9.608197 +v 15.607042 5.855387 9.773819 +v 15.589397 5.880035 9.524187 +v 15.572430 5.953032 9.284146 +v 15.556793 6.071572 9.062924 +v 15.543087 6.231102 8.869022 +v 15.531839 6.425488 8.709890 +v 15.523481 6.647262 8.591645 +v 15.518334 6.887900 8.518829 +v 15.516597 7.138156 8.494245 +v 15.518334 7.388412 8.518829 +v 15.523481 7.629050 8.591645 +v 15.531839 7.850824 8.709890 +v 15.543087 8.045210 8.869023 +v 15.556793 8.204739 9.062926 +v 15.572430 8.323279 9.284148 +v 15.589396 8.396276 9.524187 +v 15.607042 8.420923 9.773821 +v 13.250599 5.855387 9.940381 +v 13.232954 5.880035 9.690749 +v 13.215987 5.953032 9.450708 +v 13.200350 6.071572 9.229486 +v 13.186645 6.231101 9.035584 +v 13.175396 6.425488 8.876452 +v 13.167038 6.647261 8.758207 +v 13.161892 6.887900 8.685391 +v 13.160153 7.138155 8.660807 +v 13.161892 7.388411 8.685391 +v 13.167038 7.629050 8.758207 +v 13.175396 7.850823 8.876452 +v 13.186644 8.045210 9.035585 +v 13.200350 8.204739 9.229488 +v 13.215986 8.323278 9.450710 +v 13.232954 8.396276 9.690749 +v 13.250599 8.420923 9.940383 +v 15.607042 5.725112 9.773819 +v 9.668676 5.725111 10.193564 +v 8.143988 8.688820 9.992120 +v 8.165735 8.719198 10.299799 +v 6.485648 8.688820 10.109337 +v 6.507396 8.719198 10.417017 +v -13.091454 8.688815 11.493119 +v -13.069706 8.719194 11.800798 +v -14.904453 8.688816 11.621269 +v -14.882706 8.719194 11.928948 +v 3.063304 8.688819 10.351241 +v 3.085052 8.719197 10.658920 +v -3.933300 8.719196 11.155004 +v -3.955048 8.688817 10.847324 +v 15.607042 5.855388 9.773819 +v 13.250599 5.855388 9.940381 +v 9.668676 5.725111 10.193564 +v 15.607042 5.725112 9.773819 +v 8.165736 8.719198 10.299800 +v 8.143988 8.688819 9.992121 +v 6.485648 8.688819 10.109339 +v -3.955048 8.688817 10.847325 +v -13.091454 8.688815 11.493120 +v -14.882706 8.719194 11.928949 +v -14.904453 8.688815 11.621270 +v 3.063304 8.688818 10.351242 +v 15.607042 5.855387 9.773819 +v 13.250599 5.855387 9.940381 +v 9.668676 5.725111 10.193564 +v 15.607042 5.725112 9.773819 +v 8.165735 8.719198 10.299799 +v 8.143988 8.688820 9.992120 +v 6.485648 8.688820 10.109337 +v -3.955048 8.688817 10.847324 +v -13.091454 8.688815 11.493119 +v -14.882706 8.719194 11.928948 +v -14.904453 8.688816 11.621269 +v 3.063304 8.688819 10.351241 +v 15.607042 5.855388 9.773819 +v 13.250599 5.855388 9.940381 +v 5.480456 6.466281 11.893462 +v 5.466266 6.162494 11.692702 +v -13.842800 6.226807 13.100251 +v -13.834618 6.401980 13.216016 +v 5.496234 6.318029 12.116680 +v 5.482043 6.014243 11.915920 +v -13.834463 6.148461 13.218213 +v -13.826281 6.323634 13.333978 +v -13.372055 6.014248 13.248600 +v -13.387833 6.162500 13.025382 +v -13.357864 6.318035 13.449359 +v -13.373642 6.466287 13.226141 +v -13.838709 6.314393 13.158134 +v -13.830372 6.236048 13.276095 +v 5.473361 6.314388 11.793082 +v 5.489139 6.166136 12.016300 +v -13.364960 6.166142 13.348980 +v -13.380737 6.314393 13.125762 +v 5.939846 6.236042 11.878660 +v 5.931508 6.314388 11.760698 +v 5.935754 6.148456 11.820778 +v 5.943937 6.323629 11.936543 +v 5.927416 6.226801 11.702816 +v 5.935599 6.401975 11.818581 +v 5.289989 7.818823 9.198821 +v 5.304179 8.122611 9.399581 +v -14.010895 8.058310 10.722134 +v -14.019077 7.883136 10.606370 +v 5.274210 7.967075 8.975603 +v 5.288401 8.270863 9.176363 +v -14.019234 8.136655 10.604172 +v -14.027416 7.961482 10.488407 +v -13.565697 8.270868 10.509042 +v -13.549919 8.122616 10.732260 +v -13.579887 7.967081 10.308283 +v -13.564110 7.818830 10.531501 +v -14.014986 7.970723 10.664252 +v -14.023325 8.049068 10.546290 +v 5.297083 7.970717 9.299201 +v 5.281306 8.118969 9.075984 +v -13.572792 8.118975 10.408663 +v -13.557014 7.970723 10.631881 +v 5.746893 8.049063 9.148855 +v 5.755231 7.970717 9.266818 +v 5.750984 8.136649 9.206738 +v 5.742802 7.961475 9.090973 +v 5.759322 8.058304 9.324699 +v 5.751140 7.883130 9.208935 +v 5.432903 8.493236 11.220730 +v 5.454322 8.291976 11.523761 +v -13.862282 8.334585 12.824664 +v -13.874634 8.450638 12.649927 +v 5.443356 8.717010 11.368612 +v 5.464775 8.515751 11.671643 +v -13.856758 8.452841 12.902815 +v -13.869110 8.568894 12.728078 +v -13.389324 8.515756 13.004323 +v -13.399776 8.291981 12.856440 +v -13.410744 8.717015 12.701291 +v -13.421196 8.493240 12.553410 +v -13.868458 8.392612 12.737296 +v -13.862934 8.510868 12.815446 +v 5.443613 8.392606 11.372245 +v 5.454065 8.616381 11.520128 +v -13.400034 8.616385 12.852807 +v -13.410486 8.392611 12.704925 +v 5.907284 8.510862 11.418012 +v 5.901760 8.392606 11.339861 +v 5.913459 8.452835 11.505381 +v 5.901108 8.568889 11.330643 +v 5.907935 8.334579 11.427231 +v 5.895585 8.450632 11.252492 +v 5.337540 5.791870 9.871554 +v 5.316121 5.993131 9.568522 +v -13.991415 5.950531 10.997721 +v -13.979063 5.834478 11.172457 +v 5.327087 5.568096 9.723671 +v 5.305668 5.769356 9.420641 +v -13.996939 5.832274 10.919570 +v -13.984589 5.716222 11.094307 +v -13.548429 5.769360 10.753319 +v -13.537977 5.993134 10.901202 +v -13.527012 5.568100 11.056350 +v -13.516558 5.791874 11.204232 +v -13.985239 5.892505 11.085089 +v -13.990763 5.774248 11.006939 +v 5.326830 5.892500 9.720038 +v 5.316378 5.668725 9.572156 +v -13.537722 5.668730 10.904835 +v -13.527267 5.892504 11.052717 +v 5.779453 5.774244 9.609505 +v 5.784977 5.892500 9.687654 +v 5.773277 5.832271 9.522136 +v 5.785629 5.716217 9.696874 +v 5.778801 5.950527 9.600286 +v 5.791153 5.834474 9.775023 +v 3.169920 7.966930 9.409786 +v 1.757523 10.689138 5.390401 +v -3.825059 7.966932 9.904220 +v -0.389156 10.689138 5.542138 +v 3.172567 8.023578 9.447222 +v 1.760169 10.745786 5.427836 +v -3.822412 8.023580 9.941656 +v -0.386510 10.745786 5.579575 +v 0.525805 7.928658 9.571263 +v 0.235515 10.650865 5.472563 +v 0.532026 8.061852 9.659286 +v 0.241736 10.784060 5.560586 +v 3.354848 6.325296 12.026060 +v 2.521880 3.603090 16.204155 +v -3.640131 6.325298 12.520492 +v 0.375201 3.603090 16.355892 +v 3.352202 6.268649 11.988625 +v 2.519234 3.546442 16.166719 +v -3.642777 6.268651 12.483056 +v 0.372555 3.546442 16.318455 +v 0.714309 6.363571 12.238123 +v 1.003448 3.641363 16.336905 +v 0.708087 6.230376 12.150101 +v 0.997227 3.508168 16.248882 +v 3.204510 5.834713 9.899150 +v 1.889891 1.725745 7.263072 +v -3.790469 5.834713 10.393581 +v -0.256788 1.725745 7.414808 +v 3.200516 5.872241 9.842644 +v 1.885897 1.763274 7.206566 +v -3.794463 5.872242 10.337074 +v -0.260782 1.763275 7.358301 +v 0.564880 5.809356 10.124098 +v 0.372370 1.700388 7.408706 +v 0.555490 5.897598 9.991235 +v 0.362978 1.788630 7.275843 +v 3.320257 8.457513 11.536695 +v 2.389512 12.566482 14.331484 +v -3.674722 8.457515 12.031127 +v 0.242834 12.566483 14.483219 +v 3.324251 8.419984 11.593201 +v 2.393506 12.528953 14.387990 +v -3.670728 8.419986 12.087634 +v 0.246828 12.528954 14.539726 +v 0.675231 8.482870 11.685287 +v 0.866594 12.591838 14.400760 +v 0.684622 8.394629 11.818150 +v 0.875986 12.503595 14.533623 +v 7.680795 6.719089 11.039615 +v 6.605998 6.719089 11.115585 +v 7.898274 4.675622 14.116398 +v 7.048249 4.675622 14.176481 +v 7.682212 6.749426 11.059664 +v 6.607415 6.749426 11.135634 +v 7.899691 4.705959 14.136447 +v 7.049666 4.705959 14.196530 +v 7.142733 6.704874 11.068207 +v 7.472597 4.661407 14.137046 +v 7.145477 6.763641 11.107043 +v 7.475342 4.720174 14.175882 +v 7.583665 6.035258 9.665478 +v 6.508869 6.035258 9.741448 +v 7.439584 2.950797 7.627097 +v 6.589560 2.950797 7.687181 +v 7.585804 6.015160 9.695739 +v 6.511008 6.015160 9.771710 +v 7.441723 2.930699 7.657358 +v 6.591699 2.930699 7.717442 +v 7.045265 6.044676 9.689283 +v 7.013569 2.960215 7.642960 +v 7.049408 6.005743 9.747906 +v 7.017713 2.921281 7.701580 +v 7.687318 8.254262 11.131915 +v 6.612522 8.254262 11.207886 +v 7.831399 11.338722 13.170297 +v 6.981374 11.338722 13.230380 +v 7.685179 8.274361 11.101654 +v 6.610383 8.274361 11.177625 +v 7.829260 11.358821 13.140035 +v 6.979235 11.358821 13.200118 +v 7.150922 8.244844 11.184081 +v 7.407389 11.329306 13.214519 +v 7.146779 8.283778 11.125460 +v 7.403245 11.368238 13.155896 +v 15.094036 8.254261 10.608380 +v 14.019239 8.254261 10.684351 +v 15.238117 11.338721 12.646762 +v 14.388091 11.338722 12.706844 +v 15.091898 8.274359 10.578118 +v 14.017100 8.274360 10.654089 +v 15.235977 11.358820 12.616501 +v 14.385952 11.358820 12.676583 +v 14.557640 8.244843 10.660544 +v 14.814106 11.329304 12.690983 +v 14.553497 8.283777 10.601924 +v 14.809961 11.368237 12.632362 +v 14.990383 6.035257 9.141943 +v 13.915586 6.035257 9.217914 +v 14.846302 2.950796 7.103561 +v 13.996277 2.950796 7.163645 +v 14.992521 6.015159 9.172204 +v 13.917726 6.015159 9.248175 +v 14.848441 2.930697 7.133822 +v 13.998416 2.930698 7.193906 +v 14.451982 6.044674 9.165748 +v 14.420287 2.960214 7.119424 +v 14.456126 6.005741 9.224369 +v 14.424431 2.921280 7.178044 +v 7.546288 7.982933 9.136687 +v 6.471492 7.982933 9.212657 +v 7.328809 10.026400 6.059904 +v 6.478785 10.026400 6.119987 +v 7.544871 7.952596 9.116638 +v 6.470075 7.952596 9.192609 +v 7.327392 9.996063 6.039856 +v 6.477367 9.996063 6.099938 +v 7.009554 7.997148 9.184066 +v 6.904461 10.040615 6.099339 +v 7.006809 7.938381 9.145229 +v 6.901715 9.981848 6.060503 +v 14.962413 7.894537 8.746243 +v 13.887616 7.894537 8.822214 +v 14.744934 9.938004 5.669459 +v 13.894909 9.938004 5.729543 +v 14.960996 7.864200 8.726195 +v 13.886199 7.864200 8.802166 +v 14.743517 9.907667 5.649411 +v 13.893492 9.907667 5.709494 +v 14.425679 7.908752 8.793622 +v 14.320585 9.952219 5.708896 +v 14.422934 7.849985 8.754786 +v 14.317841 9.893452 5.670059 +v 15.087511 6.719088 10.516080 +v 14.012716 6.719089 10.592051 +v 15.304991 4.675621 13.592863 +v 14.454966 4.675622 13.652946 +v 15.088928 6.749425 10.536128 +v 14.014133 6.749425 10.612099 +v 15.306408 4.705958 13.612911 +v 14.456383 4.705958 13.672995 +v 14.549450 6.704873 10.544670 +v 14.879314 4.661406 13.613510 +v 14.552196 6.763640 10.583507 +v 14.882059 4.720173 13.652347 +v 9.668676 5.725111 10.193563 +v 15.607040 8.551198 9.773819 +v 9.668676 8.551197 10.193564 +v 8.165736 5.557110 10.299797 +v 8.143989 5.587489 9.992119 +v 8.165736 8.719198 10.299798 +v 6.507397 5.557110 10.417014 +v 6.485649 5.587489 10.109336 +v -13.069702 5.557107 11.800797 +v -13.091450 5.587487 11.493118 +v -14.882704 5.557108 11.928946 +v -14.904451 5.587487 11.621267 +v -14.882704 8.719196 11.928946 +v -16.793703 5.719934 12.064022 +v -16.793703 8.556369 12.064024 +v -18.312696 6.251545 12.171391 +v -18.312696 8.024755 12.171391 +v -19.292694 6.685269 12.240661 +v -19.292694 7.591033 12.240662 +v -19.782694 6.981375 12.275295 +v -19.782694 7.294935 12.275296 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v 3.063305 5.587489 10.351240 +v 3.085053 5.557109 10.658918 +v -3.933298 5.557108 11.155002 +v -3.955046 5.587488 10.847323 +v 15.607040 8.420923 9.773819 +v 13.341043 7.138155 11.219955 +v 13.339306 6.887899 11.195370 +v 13.334159 6.647260 11.122554 +v 13.325801 6.425487 11.004308 +v 13.314553 6.231101 10.845177 +v 13.300847 6.071572 10.651274 +v 13.285211 5.953032 10.430052 +v 13.268244 5.880034 10.190013 +v 13.250599 5.855386 9.940380 +v 13.232954 5.880034 9.690747 +v 13.215986 5.953032 9.450706 +v 13.200350 6.071572 9.229486 +v 13.186644 6.231101 9.035583 +v 13.175396 6.425487 8.876452 +v 13.167038 6.647261 8.758206 +v 13.161891 6.887899 8.685390 +v 13.160153 7.138155 8.660806 +v 13.161891 7.388411 8.685390 +v 13.167038 7.629049 8.758206 +v 13.175396 7.850823 8.876452 +v 13.186644 8.045209 9.035584 +v 13.200350 8.204738 9.229487 +v 13.215986 8.323278 9.450708 +v 13.232953 8.396275 9.690748 +v 13.250598 8.420922 9.940381 +v 13.268244 8.396275 10.190014 +v 13.285210 8.323277 10.430053 +v 13.300847 8.204737 10.651276 +v 13.314552 8.045207 10.845177 +v 13.325801 7.850821 11.004309 +v 13.334159 7.629047 11.122555 +v 13.339306 7.388408 11.195370 +v 15.706671 7.138155 11.183344 +v 9.768307 7.138155 11.603089 +v 15.704758 6.862484 11.156260 +v 9.766393 6.862484 11.576006 +v 15.699087 6.597407 11.076050 +v 9.760723 6.597406 11.495795 +v 15.689880 6.353110 10.945796 +v 9.751516 6.353110 11.365541 +v 15.677490 6.138983 10.770503 +v 9.739125 6.138982 11.190248 +v 15.662393 5.963253 10.556908 +v 9.724028 5.963252 10.976653 +v 15.645168 5.832673 10.313219 +v 9.706803 5.832673 10.732965 +v 15.626478 5.752263 10.048802 +v 9.688113 5.752263 10.468548 +v 15.607040 5.725112 9.773817 +v 9.668676 5.725111 10.193563 +v 15.607040 8.551199 9.773819 +v 9.668675 8.551198 10.193564 +v 15.626478 8.524047 10.048803 +v 9.688113 8.524047 10.468549 +v 15.645167 8.443637 10.313221 +v 9.706802 8.443636 10.732966 +v 15.662393 8.313057 10.556910 +v 9.724028 8.313057 10.976655 +v 15.677490 8.137327 10.770504 +v 9.739125 8.137326 11.190249 +v 15.689880 7.923199 10.945797 +v 9.751515 7.923198 11.365542 +v 15.699087 7.678902 11.076051 +v 9.760722 7.678901 11.495796 +v 15.704757 7.413824 11.156260 +v 9.766392 7.413824 11.576006 +v 8.277211 7.138155 11.876904 +v 8.275069 6.829708 11.846602 +v 8.268725 6.533115 11.756855 +v 8.258424 6.259773 11.611115 +v 8.244560 6.020187 11.414981 +v 8.227668 5.823564 11.175991 +v 8.208395 5.677460 10.903330 +v 8.187483 5.587490 10.607474 +v 8.165735 5.557110 10.299796 +v 8.165735 8.719198 10.299798 +v 8.187483 8.688819 10.607476 +v 8.208395 8.598848 10.903331 +v 8.227668 8.452744 11.175992 +v 8.244560 8.256121 11.414983 +v 8.258424 8.016534 11.611115 +v 8.268725 7.743192 11.756856 +v 8.275069 7.446599 11.846602 +v 6.618873 7.138155 11.994122 +v 6.616731 6.829708 11.963820 +v 6.610387 6.533115 11.874072 +v 6.600086 6.259773 11.728332 +v 6.586223 6.020187 11.532198 +v 6.569330 5.823564 11.293208 +v 6.550057 5.677460 11.020547 +v 6.529145 5.587490 10.724691 +v 6.507397 5.557110 10.417013 +v 6.507397 8.719198 10.417015 +v 6.529144 8.688819 10.724693 +v 6.550056 8.598848 11.020548 +v 6.569329 8.452744 11.293209 +v 6.586222 8.256120 11.532200 +v 6.600085 8.016534 11.728333 +v 6.610387 7.743192 11.874073 +v 6.616731 7.446599 11.963820 +v -12.958225 7.138152 13.377904 +v -12.960367 6.829706 13.347602 +v -12.966711 6.533113 13.257854 +v -12.977013 6.259771 13.112114 +v -12.990875 6.020185 12.915980 +v -13.007769 5.823562 12.676991 +v -13.027042 5.677458 12.404329 +v -13.047955 5.587488 12.108474 +v -13.069702 5.557108 11.800796 +v -13.069702 8.719196 11.800797 +v -13.047955 8.688817 12.108476 +v -13.027042 8.598845 12.404330 +v -13.007769 8.452742 12.676991 +v -12.990877 8.256118 12.915982 +v -12.977013 8.016532 13.112115 +v -12.966711 7.743189 13.257855 +v -12.960367 7.446596 13.347602 +v -14.771227 7.138153 13.506053 +v -14.773369 6.829706 13.475751 +v -14.779713 6.533113 13.386003 +v -14.790014 6.259772 13.240263 +v -14.803877 6.020186 13.044129 +v -14.820770 5.823563 12.805140 +v -14.840044 5.677459 12.532478 +v -14.860956 5.587488 12.236623 +v -14.882704 5.557109 11.928945 +v -14.882704 8.719196 11.928946 +v -14.860956 8.688817 12.236625 +v -14.840044 8.598846 12.532479 +v -14.820770 8.452742 12.805140 +v -14.803879 8.256119 13.044131 +v -14.790014 8.016532 13.240264 +v -14.779713 7.743190 13.386004 +v -14.773369 7.446597 13.475751 +v -16.693707 7.138152 13.478710 +v -16.695629 6.861471 13.451527 +v -16.701319 6.595423 13.371023 +v -16.710560 6.350232 13.240292 +v -16.722996 6.135320 13.064356 +v -16.738148 5.958947 12.849981 +v -16.755436 5.827889 12.605400 +v -16.774195 5.747185 12.340014 +v -16.793703 5.719934 12.064022 +v -16.793703 8.556369 12.064024 +v -16.774195 8.529119 12.340015 +v -16.755436 8.448414 12.605400 +v -16.738148 8.317356 12.849981 +v -16.722996 8.140982 13.064360 +v -16.710560 7.926070 13.240292 +v -16.701319 7.680879 13.371023 +v -16.695629 7.414830 13.451527 +v -18.250183 7.138151 13.055788 +v -18.251385 6.965183 13.038795 +v -18.254942 6.798862 12.988467 +v -18.260719 6.645579 12.906739 +v -18.268494 6.511226 12.796754 +v -18.277966 6.400965 12.662735 +v -18.288773 6.319035 12.509833 +v -18.300501 6.268581 12.343927 +v -18.312696 6.251545 12.171390 +v -18.312696 8.024756 12.171391 +v -18.300501 8.007720 12.343928 +v -18.288774 7.957267 12.509834 +v -18.277966 7.875336 12.662736 +v -18.268494 7.765075 12.796754 +v -18.260719 7.630722 12.906741 +v -18.254942 7.477439 12.988468 +v -18.251385 7.311118 13.038795 +v -19.260761 7.138152 12.692415 +v -19.261375 7.049798 12.683735 +v -19.263193 6.964841 12.658027 +v -19.266144 6.886544 12.616281 +v -19.270115 6.817915 12.560099 +v -19.274954 6.761594 12.491641 +v -19.280474 6.719743 12.413539 +v -19.286465 6.693972 12.328793 +v -19.292694 6.685269 12.240660 +v -19.292694 7.591033 12.240661 +v -19.286465 7.582332 12.328793 +v -19.280474 7.556560 12.413539 +v -19.274954 7.514709 12.491642 +v -19.270115 7.458387 12.560099 +v -19.266144 7.389759 12.616282 +v -19.263193 7.311461 12.658028 +v -19.261375 7.226504 12.683735 +v -19.771639 7.138155 12.431684 +v -19.771852 7.107569 12.428679 +v -19.772480 7.078158 12.419780 +v -19.773502 7.051053 12.405328 +v -19.774878 7.027295 12.385879 +v -19.776552 7.007798 12.362180 +v -19.778463 6.993309 12.335142 +v -19.780537 6.984388 12.305805 +v -19.782694 6.981375 12.275294 +v -19.782694 7.294935 12.275295 +v -19.780537 7.291923 12.305805 +v -19.778463 7.283001 12.335142 +v -19.776552 7.268513 12.362180 +v -19.774878 7.249015 12.385880 +v -19.773502 7.225257 12.405328 +v -19.772480 7.198152 12.419780 +v -19.771852 7.168741 12.428679 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v 3.127713 5.677460 11.262451 +v 3.106801 5.587489 10.966596 +v 3.177742 6.259773 11.970236 +v 3.163878 6.020187 11.774102 +v 3.196529 7.138154 12.236026 +v 3.194387 6.829708 12.205724 +v 3.177742 8.016533 11.970237 +v 3.188043 7.743191 12.115977 +v 3.127713 8.598847 11.262452 +v 3.146986 8.452744 11.535113 +v 3.085052 8.719198 10.658919 +v 3.085053 5.557110 10.658917 +v 3.146986 5.823564 11.535112 +v 3.188043 6.533114 12.115976 +v 3.194387 7.446598 12.205724 +v 3.163878 8.256120 11.774104 +v 3.106801 8.688818 10.966598 +v -3.933299 8.719197 11.155003 +v -3.871367 8.452743 12.031197 +v -3.830309 7.743191 12.612061 +v -3.823965 6.829707 12.701807 +v -3.854473 6.020186 12.270185 +v -3.911551 5.587489 11.462679 +v -3.911551 8.688818 11.462681 +v -3.854473 8.256119 12.270187 +v -3.823965 7.446598 12.701807 +v -3.830308 6.533114 12.612060 +v -3.871366 5.823563 12.031196 +v -3.933298 5.557109 11.155001 +v -3.890639 8.598846 11.758535 +v -3.840610 8.016533 12.466320 +v -3.821823 7.138154 12.732109 +v -3.840610 6.259772 12.466319 +v -3.890638 5.677459 11.758534 +v 15.697486 7.138155 11.053392 +v 15.695748 6.887899 11.028807 +v 15.690601 6.647261 10.955991 +v 15.682243 6.425488 10.837745 +v 15.670996 6.231101 10.678614 +v 15.657290 6.071572 10.484711 +v 15.641653 5.953032 10.263489 +v 15.624686 5.880035 10.023450 +v 15.607040 5.855387 9.773817 +v 15.607040 8.420923 9.773819 +v 15.624685 8.396276 10.023452 +v 15.641653 8.323278 10.263490 +v 15.657290 8.204737 10.484713 +v 15.670995 8.045208 10.678614 +v 15.682243 7.850822 10.837746 +v 15.690601 7.629048 10.955992 +v 15.695747 7.388409 11.028807 +v 13.341043 7.138155 11.219954 +v 13.339306 6.887899 11.195369 +v 13.334159 6.647261 11.122553 +v 13.325801 6.425488 11.004307 +v 13.314552 6.231101 10.845176 +v 13.300847 6.071572 10.651273 +v 13.285211 5.953032 10.430051 +v 13.268244 5.880035 10.190012 +v 13.250599 5.855387 9.940379 +v 13.250598 8.420923 9.940381 +v 13.268243 8.396275 10.190014 +v 13.285210 8.323277 10.430052 +v 13.300847 8.204737 10.651275 +v 13.314552 8.045208 10.845176 +v 13.325801 7.850821 11.004308 +v 13.334159 7.629047 11.122554 +v 13.339306 7.388409 11.195369 +v 9.668676 5.725111 10.193563 +v 9.668676 8.551197 10.193564 +v 15.607040 8.551198 9.773819 +v 8.165736 8.719198 10.299798 +v 8.165736 5.557110 10.299797 +v 6.507397 5.557110 10.417014 +v -3.933298 5.557108 11.155002 +v -13.069702 5.557107 11.800797 +v -14.882704 8.719196 11.928946 +v -14.882704 5.557108 11.928946 +v -16.793703 8.556369 12.064024 +v -16.793703 5.719934 12.064022 +v -18.312696 8.024755 12.171391 +v -18.312696 6.251545 12.171391 +v -19.292694 7.591033 12.240662 +v -19.292694 6.685269 12.240661 +v -19.782694 7.294935 12.275296 +v -19.782694 6.981375 12.275295 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v -19.908056 7.138155 12.284157 +v 3.085053 5.557109 10.658918 +v 15.607040 8.420923 9.773819 +v 13.341043 7.138155 11.219955 +v 13.339306 6.887899 11.195370 +v 13.334159 6.647260 11.122554 +v 13.325801 6.425487 11.004308 +v 13.314553 6.231101 10.845177 +v 13.300847 6.071572 10.651274 +v 13.285211 5.953032 10.430052 +v 13.268244 5.880034 10.190013 +v 13.250599 5.855386 9.940380 +v 13.250598 8.420922 9.940381 +v 13.268244 8.396275 10.190014 +v 13.285210 8.323277 10.430053 +v 13.300847 8.204737 10.651276 +v 13.314552 8.045207 10.845177 +v 13.325801 7.850821 11.004309 +v 13.334159 7.629047 11.122555 +v 13.339306 7.388408 11.195370 +v 9.668676 5.725111 10.193563 +v 9.668675 8.551198 10.193564 +v 15.607040 8.551199 9.773819 +v 8.165735 8.719198 10.299798 +v 8.165735 5.557110 10.299796 +v 6.507397 5.557110 10.417013 +v -3.933298 5.557109 11.155001 +v -13.069702 5.557108 11.800796 +v -14.882704 8.719196 11.928946 +v -14.882704 5.557109 11.928945 +v -16.793703 8.556369 12.064024 +v -16.793703 5.719934 12.064022 +v -18.312696 8.024756 12.171391 +v -18.312696 6.251545 12.171390 +v -19.292694 7.591033 12.240661 +v -19.292694 6.685269 12.240660 +v -19.782694 7.294935 12.275295 +v -19.782694 6.981375 12.275294 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v -19.908056 7.138155 12.284156 +v 3.085053 5.557110 10.658917 +v 15.607040 8.420923 9.773819 +v 13.341043 7.138155 11.219954 +v 13.339306 6.887899 11.195369 +v 13.334159 6.647261 11.122553 +v 13.325801 6.425488 11.004307 +v 13.314552 6.231101 10.845176 +v 13.300847 6.071572 10.651273 +v 13.285211 5.953032 10.430051 +v 13.268244 5.880035 10.190012 +v 13.250599 5.855387 9.940379 +v 13.250598 8.420923 9.940381 +v 13.268243 8.396275 10.190014 +v 13.285210 8.323277 10.430052 +v 13.300847 8.204737 10.651275 +v 13.314552 8.045208 10.845176 +v 13.325801 7.850821 11.004308 +v 13.334159 7.629047 11.122554 +v 13.339306 7.388409 11.195369 +vt 0.674505 0.479868 +vt 0.825841 0.479868 +vt 0.825841 0.480673 +vt 0.674505 0.480672 +vt 0.825841 0.483056 +vt 0.674505 0.483056 +vt 0.825841 0.486927 +vt 0.674505 0.486927 +vt 0.825841 0.492136 +vt 0.674505 0.492136 +vt 0.825841 0.498484 +vt 0.674505 0.498484 +vt 0.825841 0.505726 +vt 0.674505 0.505726 +vt 0.825841 0.513584 +vt 0.674505 0.513584 +vt 0.825841 0.521756 +vt 0.674505 0.521756 +vt 0.825841 0.529928 +vt 0.674505 0.529928 +vt 0.825841 0.537786 +vt 0.674505 0.537785 +vt 0.825841 0.545027 +vt 0.674505 0.545027 +vt 0.825841 0.551375 +vt 0.674505 0.551375 +vt 0.825841 0.556584 +vt 0.674505 0.556584 +vt 0.825841 0.560455 +vt 0.674505 0.560455 +vt 0.825841 0.562839 +vt 0.674505 0.562839 +vt 0.825841 0.563644 +vt 0.674505 0.563644 +vt 0.864143 0.495717 +vt 0.864143 0.503820 +vt 0.138665 0.083640 +vt 0.138665 0.074230 +vt 0.194656 0.074230 +vt 0.194656 0.083640 +vt 0.864143 0.488615 +vt 0.864143 0.482786 +vt 0.864143 0.478455 +vt 0.864143 0.475788 +vt 0.864143 0.474888 +vt 0.864143 0.567723 +vt 0.864143 0.568624 +vt 0.864143 0.565056 +vt 0.864143 0.560725 +vt 0.864143 0.554896 +vt 0.864143 0.547794 +vt 0.864143 0.539691 +vt 0.864143 0.530899 +vt 0.864143 0.521756 +vt 0.864143 0.512612 +vt 0.547168 0.118137 +vt 0.547168 0.106023 +vt 0.855643 0.106023 +vt 0.855643 0.118137 +vt 0.138665 0.060770 +vt 0.138665 0.057237 +vt 0.194656 0.057237 +vt 0.194656 0.060770 +vt 0.138665 0.169766 +vt 0.138665 0.162044 +vt 0.194656 0.162044 +vt 0.194656 0.169766 +vt 0.138665 0.141899 +vt 0.138665 0.130251 +vt 0.194656 0.130251 +vt 0.194656 0.141899 +vt 0.138665 0.106023 +vt 0.138665 0.094375 +vt 0.194656 0.094375 +vt 0.194656 0.106023 +vt 0.138665 0.066508 +vt 0.194656 0.066508 +vt 0.138665 0.179038 +vt 0.138665 0.175504 +vt 0.194656 0.175504 +vt 0.194656 0.179038 +vt 0.138665 0.152635 +vt 0.194656 0.152635 +vt 0.138665 0.118137 +vt 0.194656 0.118137 +vt 0.855643 0.152635 +vt 0.855643 0.141900 +vt 0.916856 0.141900 +vt 0.916856 0.152635 +vt 0.547168 0.083640 +vt 0.547168 0.074231 +vt 0.855643 0.074231 +vt 0.855643 0.083640 +vt 0.547168 0.060770 +vt 0.547168 0.057237 +vt 0.855643 0.057237 +vt 0.855643 0.060770 +vt 0.547168 0.169766 +vt 0.547168 0.162044 +vt 0.855643 0.162044 +vt 0.855643 0.169766 +vt 0.547168 0.141899 +vt 0.547168 0.130251 +vt 0.855643 0.130251 +vt 0.547168 0.094375 +vt 0.855643 0.094375 +vt 0.547168 0.066508 +vt 0.855643 0.066508 +vt 0.547168 0.179038 +vt 0.547168 0.175504 +vt 0.855643 0.175504 +vt 0.855643 0.179038 +vt 0.547168 0.152635 +vt 0.916856 0.175504 +vt 0.916856 0.169766 +vt 0.981377 0.164449 +vt 0.981377 0.169596 +vt 0.916856 0.106024 +vt 0.916856 0.118137 +vt 0.916856 0.074231 +vt 0.916856 0.083640 +vt 0.916856 0.057237 +vt 0.916856 0.060770 +vt 0.916856 0.162044 +vt 0.916856 0.130251 +vt 0.916856 0.094375 +vt 0.916856 0.066508 +vt 0.916856 0.179038 +vt 0.981377 0.139452 +vt 0.981377 0.149082 +vt 0.981377 0.107271 +vt 0.981377 0.118137 +vt 0.981377 0.078752 +vt 0.981377 0.087193 +vt 0.981377 0.063509 +vt 0.981377 0.066678 +vt 0.916856 0.180231 +vt 0.981377 0.172766 +vt 0.981377 0.173836 +vt 0.981377 0.157522 +vt 0.981377 0.129004 +vt 0.981377 0.096822 +vt 0.981377 0.071825 +vt 0.916856 0.056044 +vt 0.981377 0.062439 +vt 1.032664 0.147089 +vt 1.032664 0.150307 +vt 1.032664 0.131463 +vt 1.032664 0.137483 +vt 1.032664 0.111344 +vt 1.032664 0.118137 +vt 1.032664 0.093516 +vt 1.032664 0.098792 +vt 1.032664 0.083986 +vt 1.032664 0.085968 +vt 1.032664 0.152289 +vt 1.032664 0.152958 +vt 1.032664 0.142759 +vt 1.032664 0.124930 +vt 1.032664 0.104812 +vt 1.032664 0.089185 +vt 1.032664 0.083317 +vt 1.065752 0.132926 +vt 1.065752 0.134570 +vt 1.065752 0.124944 +vt 1.065752 0.128019 +vt 1.065752 0.114667 +vt 1.065752 0.118137 +vt 1.065752 0.105560 +vt 1.065752 0.108256 +vt 1.065752 0.100693 +vt 1.065752 0.101705 +vt 1.065752 0.135582 +vt 1.065752 0.135924 +vt 1.065752 0.130714 +vt 1.065752 0.121607 +vt 1.065752 0.111331 +vt 1.065752 0.103349 +vt 1.065752 0.100351 +vt 1.082295 0.123257 +vt 1.082295 0.123826 +vt 1.082295 0.120494 +vt 1.082295 0.121558 +vt 1.082295 0.116936 +vt 1.082295 0.118138 +vt 1.082295 0.113784 +vt 1.082295 0.114717 +vt 1.082295 0.112098 +vt 1.082295 0.112449 +vt 1.082295 0.124177 +vt 1.082295 0.124295 +vt 1.082295 0.122491 +vt 1.082295 0.119339 +vt 1.082295 0.115781 +vt 1.082295 0.113018 +vt 1.082295 0.111980 +vt 1.086528 0.118138 +vt 0.310206 0.106023 +vt 0.310206 0.118137 +vt 0.310206 0.074230 +vt 0.310206 0.083640 +vt 0.310206 0.057237 +vt 0.310206 0.060770 +vt 0.310206 0.162044 +vt 0.310206 0.169766 +vt 0.310206 0.130251 +vt 0.310206 0.141899 +vt 0.310206 0.094375 +vt 0.310206 0.066508 +vt 0.310206 0.175504 +vt 0.310206 0.179038 +vt 0.310206 0.152635 +vt 0.674505 0.559782 +vt 0.674505 0.559051 +vt 0.674505 0.556887 +vt 0.674505 0.553373 +vt 0.674505 0.548644 +vt 0.674505 0.542882 +vt 0.674505 0.536308 +vt 0.674505 0.529174 +vt 0.674505 0.514337 +vt 0.674505 0.507204 +vt 0.674505 0.500629 +vt 0.674505 0.494867 +vt 0.674505 0.490138 +vt 0.674505 0.486624 +vt 0.674505 0.484460 +vt 0.674505 0.483730 +vt 0.734558 0.559051 +vt 0.734558 0.556887 +vt 0.734558 0.548644 +vt 0.734558 0.542882 +vt 0.734558 0.529174 +vt 0.734558 0.521756 +vt 0.734558 0.507204 +vt 0.734558 0.500629 +vt 0.734558 0.490138 +vt 0.734558 0.486624 +vt 0.734558 0.553373 +vt 0.734558 0.536308 +vt 0.734558 0.514337 +vt 0.734558 0.494867 +vt 0.734558 0.484460 +vt 0.734558 0.559782 +vt 0.734558 0.483730 +vt 0.138665 0.180231 +vt 0.194656 0.180231 +vt 0.547168 0.180231 +vt 0.855643 0.180231 +vt 0.310206 0.180231 +vt 0.693552 0.233422 +vt 0.693552 0.232080 +vt 0.637752 0.232080 +vt 0.637752 0.233422 +vt 0.286444 0.233422 +vt 0.286444 0.232081 +vt -0.020978 0.232081 +vt -0.020978 0.233422 +vt -0.081981 0.232081 +vt -0.081981 0.233422 +vt -0.251074 0.301890 +vt 0.522597 0.232080 +vt 0.522597 0.233422 +vt 0.801939 0.641066 +vt 0.801939 0.633088 +vt 0.801939 0.625416 +vt 0.801939 0.618346 +vt 0.801939 0.612149 +vt 0.801939 0.607063 +vt 0.801939 0.603283 +vt 0.801939 0.600956 +vt 0.801939 0.600170 +vt 0.801939 0.649045 +vt 0.801939 0.656716 +vt 0.801939 0.663787 +vt 0.801939 0.669984 +vt 0.801939 0.675070 +vt 0.801939 0.678849 +vt 0.801939 0.681176 +vt 0.801939 0.681962 +vt 0.859189 0.641066 +vt 0.714914 0.641066 +vt 0.714914 0.632278 +vt 0.859189 0.632278 +vt 0.714914 0.623827 +vt 0.859189 0.623827 +vt 0.714914 0.616038 +vt 0.859189 0.616038 +vt 0.714914 0.609212 +vt 0.859189 0.609212 +vt 0.714914 0.603609 +vt 0.859189 0.603609 +vt 0.714914 0.599446 +vt 0.859189 0.599446 +vt 0.714914 0.596883 +vt 0.859189 0.596883 +vt 0.714914 0.596017 +vt 0.859189 0.596017 +vt 0.859189 0.686115 +vt 0.714914 0.686115 +vt 0.714914 0.685250 +vt 0.859189 0.685250 +vt 0.714914 0.682686 +vt 0.859189 0.682686 +vt 0.714914 0.678523 +vt 0.859189 0.678523 +vt 0.714914 0.672921 +vt 0.859189 0.672921 +vt 0.714914 0.666094 +vt 0.859189 0.666094 +vt 0.714914 0.658306 +vt 0.859189 0.658306 +vt 0.859189 0.649855 +vt 0.714914 0.649855 +vt 0.859189 0.649045 +vt 0.859189 0.656716 +vt 0.744123 0.239498 +vt 0.744123 0.240697 +vt 0.744123 0.244248 +vt 0.693552 0.237394 +vt 0.744123 0.250013 +vt 0.693552 0.243845 +vt 0.744123 0.257772 +vt 0.693552 0.252527 +vt 0.744123 0.267227 +vt 0.693552 0.263106 +vt 0.744123 0.278013 +vt 0.693552 0.275175 +vt 0.744123 0.289717 +vt 0.693552 0.288270 +vt 0.744123 0.301889 +vt 0.744123 0.314061 +vt 0.693552 0.315508 +vt 0.693552 0.301889 +vt 0.744123 0.325765 +vt 0.693552 0.328604 +vt 0.744123 0.336552 +vt 0.693552 0.340673 +vt 0.744123 0.346006 +vt 0.693552 0.351251 +vt 0.744123 0.353765 +vt 0.693552 0.359933 +vt 0.744123 0.359531 +vt 0.693552 0.366384 +vt 0.744123 0.363081 +vt 0.693552 0.370357 +vt 0.744123 0.364280 +vt 0.693552 0.371698 +vt 0.637752 0.237394 +vt 0.637752 0.263106 +vt 0.637752 0.252527 +vt 0.637752 0.301889 +vt 0.637752 0.288270 +vt 0.637752 0.340673 +vt 0.637752 0.328604 +vt 0.637752 0.366384 +vt 0.637752 0.359933 +vt 0.637752 0.243845 +vt 0.637752 0.275175 +vt 0.637752 0.315508 +vt 0.637752 0.351251 +vt 0.637752 0.370357 +vt 0.637752 0.371698 +vt 0.286444 0.237395 +vt -0.020978 0.237395 +vt 0.286444 0.252527 +vt 0.286444 0.263106 +vt -0.020978 0.263106 +vt -0.020978 0.252527 +vt 0.286444 0.288270 +vt 0.286444 0.301889 +vt -0.020978 0.301890 +vt -0.020978 0.288270 +vt 0.286444 0.328604 +vt 0.286444 0.340673 +vt -0.020978 0.340673 +vt -0.020978 0.328604 +vt 0.286444 0.359933 +vt 0.286444 0.366384 +vt -0.020978 0.366384 +vt -0.020978 0.359933 +vt 0.286444 0.243846 +vt -0.020978 0.243846 +vt 0.286444 0.275175 +vt -0.020978 0.275175 +vt 0.286444 0.315508 +vt -0.020978 0.315508 +vt 0.286444 0.351252 +vt -0.020978 0.351252 +vt 0.286444 0.370357 +vt -0.020978 0.370357 +vt 0.286444 0.371698 +vt -0.020978 0.371698 +vt -0.081981 0.237395 +vt -0.081981 0.263106 +vt -0.081981 0.252527 +vt -0.081981 0.301890 +vt -0.081981 0.288271 +vt -0.081981 0.340673 +vt -0.081981 0.328604 +vt -0.081981 0.366384 +vt -0.081981 0.359933 +vt -0.081981 0.243846 +vt -0.081981 0.275175 +vt -0.081981 0.315508 +vt -0.081981 0.351252 +vt -0.081981 0.370357 +vt -0.081981 0.371698 +vt -0.146283 0.363306 +vt -0.146283 0.364509 +vt -0.197394 0.341036 +vt -0.197394 0.340284 +vt -0.146283 0.244037 +vt -0.146283 0.240473 +vt -0.146283 0.267100 +vt -0.146283 0.257611 +vt -0.146283 0.301890 +vt -0.146283 0.289673 +vt -0.146283 0.336679 +vt -0.146283 0.325853 +vt -0.146283 0.359742 +vt -0.146283 0.353955 +vt -0.146283 0.249823 +vt -0.146283 0.277926 +vt -0.146283 0.314106 +vt -0.146283 0.346168 +vt -0.146283 0.239270 +vt -0.197394 0.329570 +vt -0.197394 0.334439 +vt -0.230369 0.318516 +vt -0.230369 0.316029 +vt -0.197394 0.265722 +vt -0.197394 0.263495 +vt -0.197394 0.280141 +vt -0.197394 0.274209 +vt -0.197394 0.301890 +vt -0.197394 0.294252 +vt -0.197394 0.323638 +vt -0.197394 0.316870 +vt -0.197394 0.338056 +vt -0.197394 0.269340 +vt -0.197394 0.286909 +vt -0.197394 0.309527 +vt -0.197394 0.262743 +vt -0.230369 0.305791 +vt -0.230369 0.309542 +vt -0.246856 0.304539 +vt -0.246856 0.303240 +vt -0.230369 0.321886 +vt -0.230369 0.321502 +vt -0.230369 0.283415 +vt -0.230369 0.282277 +vt -0.230369 0.290780 +vt -0.230369 0.287750 +vt -0.230369 0.301890 +vt -0.230369 0.297988 +vt -0.230369 0.312999 +vt -0.230369 0.320364 +vt -0.230369 0.285263 +vt -0.230369 0.294237 +vt -0.230369 0.281893 +vt -0.246856 0.307645 +vt -0.246856 0.306784 +vt -0.246856 0.308812 +vt -0.246856 0.308679 +vt -0.246856 0.295494 +vt -0.246856 0.295100 +vt -0.246856 0.298044 +vt -0.246856 0.296995 +vt -0.246856 0.301890 +vt -0.246856 0.300539 +vt -0.246856 0.305736 +vt -0.246856 0.308285 +vt -0.246856 0.296134 +vt -0.246856 0.299241 +vt -0.246856 0.294967 +vt 0.522597 0.237394 +vt 0.522597 0.263106 +vt 0.522597 0.252527 +vt 0.522597 0.301889 +vt 0.522597 0.288270 +vt 0.522597 0.340673 +vt 0.522597 0.328604 +vt 0.522597 0.366384 +vt 0.522597 0.359933 +vt 0.522597 0.243845 +vt 0.522597 0.275175 +vt 0.522597 0.315508 +vt 0.522597 0.351251 +vt 0.522597 0.370357 +vt 0.522597 0.371698 +vt 0.859189 0.669984 +vt 0.859189 0.663787 +vt 0.859189 0.675070 +vt 0.859189 0.678849 +vt 0.859189 0.681176 +vt 0.859189 0.681962 +vt 0.859189 0.633088 +vt 0.859189 0.600170 +vt 0.859189 0.600956 +vt 0.859189 0.603283 +vt 0.859189 0.607063 +vt 0.859189 0.612149 +vt 0.859189 0.618346 +vt 0.859189 0.625416 +vt 0.316470 0.782565 +vt 0.316470 0.777609 +vt 0.316470 0.782446 +vt 0.316470 0.787401 +vt 0.933149 0.777609 +vt 0.948128 0.781988 +vt 0.948128 0.784544 +vt 0.933149 0.782446 +vt 0.948128 0.784846 +vt 0.948128 0.787703 +vt 0.948128 0.790259 +vt 0.948128 0.787402 +vt 0.933149 0.787520 +vt 0.316470 0.787520 +vt 0.316470 0.792357 +vt 0.933149 0.792357 +vt 0.933149 0.787402 +vt 0.933149 0.782565 +vt 0.301485 0.787703 +vt 0.301485 0.790259 +vt 0.301485 0.781988 +vt 0.301485 0.784845 +vt 0.301485 0.787401 +vt 0.301485 0.784544 +vt 0.316470 0.846279 +vt 0.316470 0.851234 +vt 0.316470 0.846398 +vt 0.316470 0.841442 +vt 0.933149 0.851235 +vt 0.948128 0.846856 +vt 0.948128 0.844300 +vt 0.933149 0.846398 +vt 0.948128 0.843998 +vt 0.948128 0.841140 +vt 0.948128 0.838584 +vt 0.948128 0.841442 +vt 0.933149 0.841323 +vt 0.316470 0.841323 +vt 0.316470 0.836486 +vt 0.933149 0.836486 +vt 0.933149 0.841442 +vt 0.933149 0.846279 +vt 0.301485 0.841140 +vt 0.301485 0.838584 +vt 0.301485 0.846856 +vt 0.301485 0.843998 +vt 0.301485 0.841442 +vt 0.301485 0.844299 +vt 0.316470 0.862508 +vt 0.316470 0.859224 +vt 0.316470 0.851923 +vt 0.316470 0.855207 +vt 0.933149 0.859225 +vt 0.948128 0.857172 +vt 0.948128 0.853314 +vt 0.933149 0.851923 +vt 0.948128 0.859065 +vt 0.948128 0.860958 +vt 0.948128 0.857100 +vt 0.948128 0.855207 +vt 0.933149 0.865791 +vt 0.316470 0.865791 +vt 0.316470 0.858490 +vt 0.933149 0.858490 +vt 0.933149 0.855207 +vt 0.933149 0.862508 +vt 0.301485 0.860958 +vt 0.301485 0.857100 +vt 0.301485 0.857172 +vt 0.301485 0.859065 +vt 0.301485 0.855207 +vt 0.301485 0.853313 +vt 0.316470 0.766336 +vt 0.316470 0.769619 +vt 0.316470 0.776920 +vt 0.316470 0.773637 +vt 0.933149 0.769619 +vt 0.948128 0.771672 +vt 0.948128 0.775530 +vt 0.933149 0.776920 +vt 0.948128 0.769779 +vt 0.948128 0.767885 +vt 0.948128 0.771744 +vt 0.948128 0.773637 +vt 0.933149 0.763053 +vt 0.316470 0.763052 +vt 0.316470 0.770353 +vt 0.933149 0.770354 +vt 0.933149 0.773637 +vt 0.933149 0.766336 +vt 0.301485 0.767885 +vt 0.301485 0.771743 +vt 0.301485 0.771672 +vt 0.301485 0.769778 +vt 0.301485 0.773637 +vt 0.301485 0.775530 +vt 0.472397 0.928886 +vt 0.492887 0.930134 +vt 0.614745 0.841318 +vt 0.472379 0.840069 +vt 0.472397 0.933231 +vt 0.472379 0.844415 +vt 0.614745 0.843166 +vt 0.492887 0.931983 +vt 0.422674 0.930134 +vt 0.422674 0.931983 +vt 0.385953 0.841318 +vt 0.385953 0.843166 +vt 0.472397 0.700190 +vt 0.492887 0.698941 +vt 0.614745 0.787757 +vt 0.472379 0.789006 +vt 0.472397 0.695844 +vt 0.472379 0.784660 +vt 0.614745 0.785909 +vt 0.492887 0.697093 +vt 0.422674 0.698941 +vt 0.422674 0.697093 +vt 0.385953 0.787757 +vt 0.385953 0.785909 +vt 0.472397 0.636863 +vt 0.492887 0.637690 +vt 0.614745 0.771751 +vt 0.472379 0.770924 +vt 0.472397 0.639742 +vt 0.472379 0.773803 +vt 0.614745 0.772976 +vt 0.492887 0.638914 +vt 0.422674 0.637690 +vt 0.422674 0.638914 +vt 0.385953 0.771751 +vt 0.385953 0.772976 +vt 0.472397 0.992213 +vt 0.492887 0.991386 +vt 0.614745 0.857324 +vt 0.472379 0.858151 +vt 0.472397 0.989334 +vt 0.472379 0.855273 +vt 0.614745 0.856100 +vt 0.492887 0.990161 +vt 0.422674 0.991386 +vt 0.422674 0.990161 +vt 0.385953 0.857324 +vt 0.385953 0.856100 +vt 0.260472 0.800142 +vt 0.256796 0.733470 +vt 0.242895 0.733934 +vt 0.242895 0.800605 +vt 0.260472 0.802059 +vt 0.242895 0.801595 +vt 0.242895 0.734924 +vt 0.256796 0.735388 +vt 0.270697 0.733934 +vt 0.278049 0.800605 +vt 0.278049 0.801595 +vt 0.270697 0.734924 +vt 0.260472 0.778602 +vt 0.256796 0.677966 +vt 0.242895 0.677659 +vt 0.242895 0.778294 +vt 0.260472 0.777331 +vt 0.242895 0.777639 +vt 0.242895 0.677003 +vt 0.256796 0.676696 +vt 0.270697 0.677659 +vt 0.278049 0.778294 +vt 0.278049 0.777639 +vt 0.270697 0.677003 +vt 0.260472 0.850386 +vt 0.256796 0.951021 +vt 0.242895 0.951328 +vt 0.242895 0.850693 +vt 0.260472 0.851656 +vt 0.242895 0.851349 +vt 0.242895 0.951984 +vt 0.256796 0.952291 +vt 0.270697 0.951328 +vt 0.278049 0.850693 +vt 0.278049 0.851349 +vt 0.270697 0.951984 +vt 0.018213 0.850386 +vt 0.014537 0.951021 +vt 0.000636 0.951328 +vt 0.000636 0.850693 +vt 0.018213 0.851656 +vt 0.000636 0.851349 +vt 0.000636 0.951984 +vt 0.014537 0.952291 +vt 0.028438 0.951328 +vt 0.035790 0.850693 +vt 0.035790 0.851349 +vt 0.028438 0.951984 +vt 0.018213 0.778602 +vt 0.014537 0.677966 +vt 0.000636 0.677659 +vt 0.000636 0.778294 +vt 0.018213 0.777331 +vt 0.000636 0.777639 +vt 0.000636 0.677003 +vt 0.014537 0.676696 +vt 0.028439 0.677659 +vt 0.035790 0.778294 +vt 0.035790 0.777639 +vt 0.028439 0.677003 +vt 0.260472 0.842304 +vt 0.256796 0.908975 +vt 0.242895 0.908512 +vt 0.242895 0.841840 +vt 0.260472 0.840387 +vt 0.242895 0.840851 +vt 0.242895 0.907522 +vt 0.256796 0.907058 +vt 0.270697 0.908512 +vt 0.278049 0.841840 +vt 0.278049 0.840851 +vt 0.270697 0.907522 +vt 0.018213 0.839420 +vt 0.014537 0.906091 +vt 0.000636 0.905628 +vt 0.000636 0.838956 +vt 0.018213 0.837503 +vt 0.000636 0.837967 +vt 0.000636 0.904638 +vt 0.014537 0.904174 +vt 0.028438 0.905628 +vt 0.035790 0.838956 +vt 0.035790 0.837967 +vt 0.028438 0.904638 +vt 0.018213 0.800142 +vt 0.014537 0.733470 +vt 0.000636 0.733934 +vt 0.000636 0.800605 +vt 0.018213 0.802059 +vt 0.000636 0.801595 +vt 0.000636 0.734924 +vt 0.014537 0.735388 +vt 0.028438 0.733934 +vt 0.035790 0.800605 +vt 0.035790 0.801595 +vt 0.028438 0.734924 +usemtl Material.002 +s off +f 1/1 2/2 4/3 3/4 +f 3/4 4/3 6/5 5/6 +f 5/6 6/5 8/7 7/8 +f 7/8 8/7 10/9 9/10 +f 9/10 10/9 12/11 11/12 +f 11/12 12/11 14/13 13/14 +f 13/14 14/13 16/15 15/16 +f 15/16 16/15 18/17 17/18 +f 17/18 18/17 20/19 19/20 +f 19/20 20/19 22/21 21/22 +f 21/22 22/21 24/23 23/24 +f 23/24 24/23 26/25 25/26 +f 25/26 26/25 28/27 27/28 +f 27/28 28/27 30/29 29/30 +f 29/30 30/29 32/31 31/32 +f 31/32 32/31 34/33 33/34 +f 14/13 12/11 40/35 41/36 +f 40/37 39/38 55/39 56/40 +f 12/11 10/9 39/41 40/35 +f 10/9 8/7 38/42 39/41 +f 8/7 6/5 37/43 38/42 +f 6/5 4/3 36/44 37/43 +f 4/3 2/2 35/45 36/44 +f 34/33 32/31 50/46 51/47 +f 32/31 30/29 49/48 50/46 +f 30/29 28/27 48/49 49/48 +f 28/27 26/25 47/50 48/49 +f 26/25 24/23 46/51 47/50 +f 24/23 22/21 45/52 46/51 +f 22/21 20/19 44/53 45/52 +f 20/19 18/17 43/54 44/53 +f 18/17 16/15 42/55 43/54 +f 16/15 14/13 41/36 42/55 +f 203/56 213/57 73/58 74/59 +f 37/60 36/61 52/62 53/63 +f 48/64 47/65 63/66 64/67 +f 45/68 44/69 60/70 61/71 +f 42/72 41/73 57/74 58/75 +f 39/38 38/76 54/77 55/39 +f 50/78 49/79 65/80 66/81 +f 47/65 46/82 62/83 63/66 +f 44/69 43/84 59/85 60/70 +f 41/73 40/37 56/40 57/74 +f 38/76 37/60 53/63 54/77 +f 49/79 48/64 64/67 65/80 +f 46/82 45/68 61/71 62/83 +f 43/84 42/72 58/75 59/85 +f 77/86 76/87 92/88 93/89 +f 202/90 212/91 70/92 71/93 +f 201/94 211/95 67/96 68/97 +f 200/98 209/99 78/100 79/101 +f 199/102 208/103 75/104 76/87 +f 213/57 207/105 72/106 73/58 +f 212/91 206/107 69/108 70/92 +f 210/109 205/110 80/111 81/112 +f 209/99 204/113 77/86 78/100 +f 208/103 203/56 74/59 75/104 +f 207/105 202/90 71/93 72/106 +f 206/107 201/94 68/97 69/108 +f 205/110 200/98 79/101 80/111 +f 204/113 199/102 76/87 77/86 +f 96/114 95/115 112/116 113/117 +f 74/59 73/58 89/118 90/119 +f 71/93 70/92 86/120 87/121 +f 68/97 67/96 83/122 84/123 +f 79/101 78/100 94/124 95/115 +f 76/87 75/104 91/125 92/88 +f 73/58 72/106 88/126 89/118 +f 70/92 69/108 85/127 86/120 +f 81/112 80/111 96/114 97/128 +f 78/100 77/86 93/89 94/124 +f 75/104 74/59 90/119 91/125 +f 72/106 71/93 87/121 88/126 +f 69/108 68/97 84/123 85/127 +f 80/111 79/101 95/115 96/114 +f 93/89 92/88 109/129 110/130 +f 90/119 89/118 106/131 107/132 +f 87/121 86/120 103/133 104/134 +f 84/123 83/122 100/135 101/136 +f 98/137 97/128 114/138 115/139 +f 95/115 94/124 111/140 112/116 +f 92/88 91/125 108/141 109/129 +f 89/118 88/126 105/142 106/131 +f 86/120 85/127 102/143 103/133 +f 83/122 82/144 99/145 100/135 +f 97/128 96/114 113/117 114/138 +f 94/124 93/89 110/130 111/140 +f 91/125 90/119 107/132 108/141 +f 88/126 87/121 104/134 105/142 +f 85/127 84/123 101/136 102/143 +f 113/117 112/116 129/146 130/147 +f 110/130 109/129 126/148 127/149 +f 107/132 106/131 123/150 124/151 +f 104/134 103/133 120/152 121/153 +f 101/136 100/135 117/154 118/155 +f 115/139 114/138 131/156 132/157 +f 112/116 111/140 128/158 129/146 +f 109/129 108/141 125/159 126/148 +f 106/131 105/142 122/160 123/150 +f 103/133 102/143 119/161 120/152 +f 100/135 99/145 116/162 117/154 +f 114/138 113/117 130/147 131/156 +f 111/140 110/130 127/149 128/158 +f 108/141 107/132 124/151 125/159 +f 105/142 104/134 121/153 122/160 +f 102/143 101/136 118/155 119/161 +f 130/147 129/146 146/163 147/164 +f 127/149 126/148 143/165 144/166 +f 124/151 123/150 140/167 141/168 +f 121/153 120/152 137/169 138/170 +f 118/155 117/154 134/171 135/172 +f 132/157 131/156 148/173 149/174 +f 129/146 128/158 145/175 146/163 +f 126/148 125/159 142/176 143/165 +f 123/150 122/160 139/177 140/167 +f 120/152 119/161 136/178 137/169 +f 117/154 116/162 133/179 134/171 +f 131/156 130/147 147/164 148/173 +f 128/158 127/149 144/166 145/175 +f 125/159 124/151 141/168 142/176 +f 122/160 121/153 138/170 139/177 +f 119/161 118/155 135/172 136/178 +f 147/164 146/163 163/180 164/181 +f 144/166 143/165 160/182 161/183 +f 141/168 140/167 157/184 158/185 +f 138/170 137/169 154/186 155/187 +f 135/172 134/171 151/188 152/189 +f 149/174 148/173 165/190 166/191 +f 146/163 145/175 162/192 163/180 +f 143/165 142/176 159/193 160/182 +f 140/167 139/177 156/194 157/184 +f 137/169 136/178 153/195 154/186 +f 134/171 133/179 150/196 151/188 +f 148/173 147/164 164/181 165/190 +f 145/175 144/166 161/183 162/192 +f 142/176 141/168 158/185 159/193 +f 139/177 138/170 155/187 156/194 +f 136/178 135/172 152/189 153/195 +f 164/181 163/180 180/197 181/197 +f 161/183 160/182 177/197 178/197 +f 158/185 157/184 174/197 175/197 +f 155/187 154/186 171/197 172/197 +f 152/189 151/188 168/197 169/197 +f 166/191 165/190 182/197 183/197 +f 163/180 162/192 179/197 180/197 +f 160/182 159/193 176/197 177/197 +f 157/184 156/194 173/197 174/197 +f 154/186 153/195 170/197 171/197 +f 151/188 150/196 167/197 168/197 +f 165/190 164/181 181/197 182/197 +f 162/192 161/183 178/197 179/197 +f 159/193 158/185 175/197 176/197 +f 156/194 155/187 172/197 173/197 +f 153/195 152/189 169/197 170/197 +f 59/85 58/75 184/198 185/199 +f 56/40 55/39 186/200 187/201 +f 53/63 52/62 188/202 189/203 +f 64/67 63/66 191/204 192/205 +f 61/71 60/70 193/206 194/207 +f 58/75 57/74 195/208 184/198 +f 55/39 54/77 196/209 186/200 +f 66/81 65/80 197/210 190/211 +f 63/66 62/83 198/212 191/204 +f 60/70 59/85 185/199 193/206 +f 57/74 56/40 187/201 195/208 +f 54/77 53/63 189/203 196/209 +f 65/80 64/67 192/205 197/210 +f 62/83 61/71 194/207 198/212 +f 196/209 189/203 201/94 206/107 +f 198/212 194/207 199/102 204/113 +f 195/208 187/201 202/90 207/105 +f 197/210 192/205 200/98 205/110 +f 193/206 185/199 203/56 208/103 +f 186/200 196/209 206/107 212/91 +f 191/204 198/212 204/113 209/99 +f 184/198 195/208 207/105 213/57 +f 189/203 188/202 211/95 201/94 +f 194/207 193/206 208/103 199/102 +f 190/211 197/210 205/110 210/109 +f 187/201 186/200 212/91 202/90 +f 185/199 184/198 213/57 203/56 +f 192/205 191/204 209/99 200/98 +f 31/32 33/34 230/213 229/214 +f 29/30 31/32 229/214 228/215 +f 27/28 29/30 228/215 227/216 +f 25/26 27/28 227/216 226/217 +f 23/24 25/26 226/217 225/218 +f 21/22 23/24 225/218 224/219 +f 19/20 21/22 224/219 223/220 +f 17/18 19/20 223/220 222/18 +f 15/16 17/18 222/18 221/221 +f 13/14 15/16 221/221 220/222 +f 11/12 13/14 220/222 219/223 +f 9/10 11/12 219/223 218/224 +f 7/8 9/10 218/224 217/225 +f 5/6 7/8 217/225 216/226 +f 3/4 5/6 216/226 215/227 +f 1/1 3/4 215/227 214/228 +f 228/215 229/214 246/229 245/230 +f 225/218 226/217 243/231 242/232 +f 222/18 223/220 240/233 239/234 +f 219/223 220/222 237/235 236/236 +f 216/226 217/225 234/237 233/238 +f 227/216 228/215 245/230 244/239 +f 224/219 225/218 242/232 241/240 +f 221/221 222/18 239/234 238/241 +f 218/224 219/223 236/236 235/242 +f 215/227 216/226 233/238 232/243 +f 229/214 230/213 247/244 246/229 +f 226/217 227/216 244/239 243/231 +f 223/220 224/219 241/240 240/233 +f 220/222 221/221 238/241 237/235 +f 217/225 218/224 235/242 234/237 +f 214/228 215/227 232/243 231/245 +f 251/246 250/78 252/81 253/247 +f 260/248 261/109 254/112 255/249 +f 255/249 254/112 256/128 257/137 +f 253/247 252/81 258/211 259/250 +f 259/250 258/211 261/109 260/248 +f 2/2 1/1 265/1 264/2 +f 51/246 50/78 267/78 266/246 +f 50/78 66/81 268/81 267/78 +f 210/109 81/112 270/112 269/109 +f 97/128 98/137 271/137 272/128 +f 81/112 97/128 272/128 270/112 +f 66/81 190/211 273/211 268/81 +f 190/211 210/109 269/109 273/211 +f 1/1 214/228 274/228 265/1 +f 214/228 231/245 275/245 274/228 +f 248/1 249/2 276/2 277/1 +f 250/78 251/246 278/246 279/78 +f 252/81 250/78 279/78 280/81 +f 254/112 261/109 281/109 282/112 +f 257/137 256/128 284/128 283/137 +f 256/128 254/112 282/112 284/128 +f 258/211 252/81 280/81 285/211 +f 261/109 258/211 285/211 281/109 +f 262/228 248/1 277/1 286/228 +f 263/245 262/228 286/228 287/245 +usemtl Material.004 +f 532/251 531/252 534/253 535/254 +f 584/255 583/256 536/257 537/258 +f 537/258 536/257 538/259 539/260 +f 550/261 549/261 580/261 579/261 578/261 577/261 576/261 575/261 574/261 573/261 572/261 571/261 570/261 569/261 568/261 567/261 566/261 565/261 564/261 563/261 562/261 561/261 560/261 559/261 558/261 557/261 556/261 555/261 554/261 553/261 552/261 551/261 +f 535/254 534/253 582/262 581/263 +f 581/263 582/262 583/256 584/255 +f 586/264 587/265 588/266 589/267 590/268 591/269 592/270 593/271 594/272 595/271 596/270 597/269 598/268 599/267 600/266 601/265 602/264 603/273 604/274 605/275 606/276 607/277 608/278 609/279 610/280 611/279 612/278 613/277 614/276 615/275 616/274 617/273 +f 618/281 619/282 621/283 620/284 +f 620/284 621/283 623/285 622/286 +f 622/286 623/285 625/287 624/288 +f 624/288 625/287 627/289 626/290 +f 626/290 627/289 629/291 628/292 +f 628/292 629/291 631/293 630/294 +f 630/294 631/293 633/295 632/296 +f 632/296 633/295 635/297 634/298 +f 636/299 637/300 639/301 638/302 +f 638/302 639/301 641/303 640/304 +f 640/304 641/303 643/305 642/306 +f 642/306 643/305 645/307 644/308 +f 644/308 645/307 647/309 646/310 +f 646/310 647/309 649/311 648/312 +f 650/313 651/314 619/282 618/281 +f 648/312 649/311 651/314 650/313 +f 648/312 650/313 855/315 854/316 +f 635/317 633/318 659/251 660/252 +f 633/318 631/319 658/320 659/251 +f 631/319 629/321 657/322 658/320 +f 629/321 627/323 656/324 657/322 +f 627/323 625/325 655/326 656/324 +f 625/325 623/327 654/328 655/326 +f 623/327 621/329 653/330 654/328 +f 619/331 651/332 668/333 652/334 +f 651/332 649/335 667/336 668/333 +f 649/335 647/337 666/338 667/336 +f 647/337 645/339 665/340 666/338 +f 645/339 643/341 664/342 665/340 +f 643/341 641/343 663/344 664/342 +f 641/343 639/345 662/346 663/344 +f 639/345 637/347 661/348 662/346 +f 621/329 619/331 652/334 653/330 +f 659/251 658/320 675/349 676/254 +f 656/324 655/326 672/350 673/351 +f 653/330 652/334 669/352 670/353 +f 667/336 666/338 683/354 684/355 +f 664/342 663/344 680/356 681/357 +f 658/320 657/322 674/358 675/349 +f 655/326 654/328 671/359 672/350 +f 652/334 668/333 685/360 669/352 +f 666/338 665/340 682/361 683/354 +f 663/344 662/346 679/362 680/356 +f 660/252 659/251 676/254 677/253 +f 657/322 656/324 673/351 674/358 +f 654/328 653/330 670/353 671/359 +f 668/333 667/336 684/355 685/360 +f 665/340 664/342 681/357 682/361 +f 662/346 661/348 678/363 679/362 +f 827/255 838/364 692/365 693/258 +f 826/366 837/367 689/368 690/369 +f 825/370 836/371 686/372 687/373 +f 824/374 835/375 700/376 701/377 +f 823/378 834/379 697/380 698/381 +f 838/364 832/382 691/383 692/365 +f 837/367 831/384 688/385 689/368 +f 836/371 830/386 702/387 686/372 +f 835/375 829/388 699/389 700/376 +f 834/379 828/390 696/391 697/380 +f 833/256 827/255 693/258 694/257 +f 832/382 826/366 690/369 691/383 +f 831/384 825/370 687/373 688/385 +f 830/386 824/374 701/377 702/387 +f 829/388 823/378 698/381 699/389 +f 828/390 822/392 695/393 696/391 +f 693/258 692/365 709/394 710/260 +f 690/369 689/368 706/395 707/396 +f 687/373 686/372 703/397 704/398 +f 701/377 700/376 717/399 718/400 +f 698/381 697/380 714/401 715/402 +f 692/365 691/383 708/403 709/394 +f 689/368 688/385 705/404 706/395 +f 686/372 702/387 719/405 703/397 +f 700/376 699/389 716/406 717/399 +f 697/380 696/391 713/407 714/401 +f 694/257 693/258 710/260 711/259 +f 691/383 690/369 707/396 708/403 +f 688/385 687/373 704/398 705/404 +f 702/387 701/377 718/400 719/405 +f 699/389 698/381 715/402 716/406 +f 696/391 695/393 712/408 713/407 +f 730/409 729/410 746/411 747/412 +f 710/260 709/394 726/413 727/414 +f 707/396 706/395 723/415 724/416 +f 704/398 703/397 720/417 721/418 +f 718/400 717/399 734/419 735/420 +f 715/402 714/401 731/421 732/422 +f 709/394 708/403 725/423 726/413 +f 706/395 705/404 722/424 723/415 +f 703/397 719/405 736/425 720/417 +f 717/399 716/406 733/426 734/419 +f 714/401 713/407 730/409 731/421 +f 711/259 710/260 727/414 728/427 +f 708/403 707/396 724/416 725/423 +f 705/404 704/398 721/418 722/424 +f 719/405 718/400 735/420 736/425 +f 716/406 715/402 732/422 733/426 +f 713/407 712/408 729/410 730/409 +f 750/428 749/429 766/430 767/431 +f 727/414 726/413 743/432 744/433 +f 724/416 723/415 740/434 741/435 +f 721/418 720/417 737/436 738/437 +f 735/420 734/419 751/438 752/439 +f 732/422 731/421 748/440 749/429 +f 726/413 725/423 742/441 743/432 +f 723/415 722/424 739/442 740/434 +f 720/417 736/425 753/443 737/436 +f 734/419 733/426 750/428 751/438 +f 731/421 730/409 747/412 748/440 +f 728/427 727/414 744/433 745/444 +f 725/423 724/416 741/435 742/441 +f 722/424 721/418 738/437 739/442 +f 736/425 735/420 752/439 753/443 +f 733/426 732/422 749/429 750/428 +f 770/445 769/446 786/447 787/448 +f 747/412 746/411 763/449 764/450 +f 744/433 743/432 760/451 761/452 +f 741/435 740/434 757/453 758/454 +f 738/437 737/436 754/455 755/456 +f 752/439 751/438 768/457 769/446 +f 749/429 748/440 765/458 766/430 +f 743/432 742/441 759/459 760/451 +f 740/434 739/442 756/460 757/453 +f 737/436 753/443 770/445 754/455 +f 751/438 750/428 767/431 768/457 +f 748/440 747/412 764/450 765/458 +f 745/444 744/433 761/452 762/461 +f 742/441 741/435 758/454 759/459 +f 739/442 738/437 755/456 756/460 +f 753/443 752/439 769/446 770/445 +f 787/448 786/447 803/261 804/261 +f 767/431 766/430 783/462 784/463 +f 764/450 763/449 780/464 781/465 +f 761/452 760/451 777/466 778/467 +f 758/454 757/453 774/468 775/469 +f 755/456 754/455 771/470 772/471 +f 769/446 768/457 785/472 786/447 +f 766/430 765/458 782/473 783/462 +f 760/451 759/459 776/474 777/466 +f 757/453 756/460 773/475 774/468 +f 754/455 770/445 787/448 771/470 +f 768/457 767/431 784/463 785/472 +f 765/458 764/450 781/465 782/473 +f 762/461 761/452 778/467 779/476 +f 759/459 758/454 775/469 776/474 +f 756/460 755/456 772/471 773/475 +f 784/463 783/462 800/261 801/261 +f 781/465 780/464 797/261 798/261 +f 778/467 777/466 794/261 795/261 +f 775/469 774/468 791/261 792/261 +f 772/471 771/470 788/261 789/261 +f 786/447 785/472 802/261 803/261 +f 783/462 782/473 799/261 800/261 +f 777/466 776/474 793/261 794/261 +f 774/468 773/475 790/261 791/261 +f 771/470 787/448 804/261 788/261 +f 785/472 784/463 801/261 802/261 +f 782/473 781/465 798/261 799/261 +f 779/476 778/467 795/261 796/261 +f 776/474 775/469 792/261 793/261 +f 773/475 772/471 789/261 790/261 +f 676/254 675/349 805/477 806/263 +f 673/351 672/350 807/478 808/479 +f 670/353 669/352 809/480 810/481 +f 684/355 683/354 811/482 812/483 +f 681/357 680/356 813/484 814/485 +f 675/349 674/358 817/486 805/477 +f 672/350 671/359 818/487 807/478 +f 669/352 685/360 819/488 809/480 +f 683/354 682/361 820/489 811/482 +f 680/356 679/362 821/490 813/484 +f 677/253 676/254 806/263 816/262 +f 674/358 673/351 808/479 817/486 +f 671/359 670/353 810/481 818/487 +f 685/360 684/355 812/483 819/488 +f 682/361 681/357 814/485 820/489 +f 679/362 678/363 815/491 821/490 +f 809/480 819/488 830/386 836/371 +f 817/486 808/479 826/366 832/382 +f 814/485 813/484 834/379 823/378 +f 816/262 806/263 827/255 833/256 +f 812/483 811/482 835/375 824/374 +f 805/477 817/486 832/382 838/364 +f 807/478 818/487 831/384 837/367 +f 810/481 809/480 836/371 825/370 +f 808/479 807/478 837/367 826/366 +f 806/263 805/477 838/364 827/255 +f 821/490 815/491 822/392 828/390 +f 820/489 814/485 823/378 829/388 +f 813/484 821/490 828/390 834/379 +f 819/488 812/483 824/374 830/386 +f 811/482 820/489 829/388 835/375 +f 818/487 810/481 825/370 831/384 +f 852/492 853/493 870/275 869/276 +f 646/310 648/312 854/316 853/493 +f 644/308 646/310 853/493 852/492 +f 642/306 644/308 852/492 851/494 +f 640/304 642/306 851/494 850/495 +f 638/302 640/304 850/495 849/496 +f 636/299 638/302 849/496 848/497 +f 618/281 620/284 840/498 839/281 +f 632/296 634/298 847/499 846/500 +f 630/294 632/296 846/500 845/501 +f 628/292 630/294 845/501 844/502 +f 626/290 628/292 844/502 843/503 +f 624/288 626/290 843/503 842/504 +f 622/286 624/288 842/504 841/505 +f 620/284 622/286 841/505 840/498 +f 650/313 618/281 839/281 855/315 +f 849/496 850/495 867/278 866/279 +f 846/500 847/499 864/272 863/271 +f 843/503 844/502 861/269 860/268 +f 840/498 841/505 858/266 857/265 +f 854/316 855/315 872/273 871/274 +f 851/494 852/492 869/276 868/277 +f 848/497 849/496 866/279 865/280 +f 845/501 846/500 863/271 862/270 +f 842/504 843/503 860/268 859/267 +f 839/281 840/498 857/265 856/264 +f 853/493 854/316 871/274 870/275 +f 850/495 851/494 868/277 867/278 +f 844/502 845/501 862/270 861/269 +f 841/505 842/504 859/267 858/266 +f 855/315 839/281 856/264 872/273 +f 529/299 530/300 874/300 875/299 +f 531/252 528/317 873/317 877/252 +f 530/347 533/348 876/348 874/347 +f 534/253 531/252 877/252 878/253 +f 536/257 583/256 879/256 880/257 +f 538/259 536/257 880/257 882/259 +f 540/408 542/410 883/410 881/408 +f 541/427 538/259 882/259 884/427 +f 542/410 544/411 885/411 883/410 +f 543/444 541/427 884/427 886/444 +f 544/411 546/449 887/449 885/411 +f 545/461 543/444 886/444 888/461 +f 546/449 548/464 889/464 887/449 +f 547/476 545/461 888/461 890/476 +f 549/261 550/261 891/261 892/261 +f 550/261 551/261 893/261 891/261 +f 551/261 552/261 894/261 893/261 +f 552/261 553/261 895/261 894/261 +f 553/261 554/261 896/261 895/261 +f 554/261 555/261 897/261 896/261 +f 555/261 556/261 898/261 897/261 +f 556/261 557/261 899/261 898/261 +f 573/261 574/261 900/261 901/261 +f 574/261 575/261 902/261 900/261 +f 575/261 576/261 903/261 902/261 +f 576/261 577/261 904/261 903/261 +f 577/261 578/261 905/261 904/261 +f 578/261 579/261 906/261 905/261 +f 579/261 580/261 907/261 906/261 +f 580/261 549/261 892/261 907/261 +f 548/464 573/261 901/261 889/464 +f 557/261 547/476 890/476 899/261 +f 582/262 534/253 878/253 908/262 +f 583/256 582/262 908/262 879/256 +f 585/497 529/299 875/299 909/497 +f 587/265 586/264 910/264 911/265 +f 588/266 587/265 911/265 912/266 +f 589/267 588/266 912/266 913/267 +f 590/268 589/267 913/267 914/268 +f 591/269 590/268 914/268 915/269 +f 592/270 591/269 915/269 916/270 +f 593/271 592/270 916/270 917/271 +f 594/272 593/271 917/271 918/272 +f 611/279 610/280 919/280 920/279 +f 612/278 611/279 920/279 921/278 +f 613/277 612/278 921/278 922/277 +f 614/276 613/277 922/277 923/276 +f 615/275 614/276 923/276 924/275 +f 616/274 615/275 924/275 925/274 +f 617/273 616/274 925/274 926/273 +f 586/264 617/273 926/273 910/264 +f 610/280 585/497 909/497 919/280 +f 637/300 636/299 929/299 928/300 +f 635/317 660/252 931/252 927/317 +f 661/348 637/347 928/347 930/348 +f 660/252 677/253 932/253 931/252 +f 833/256 694/257 934/257 933/256 +f 694/257 711/259 936/259 934/257 +f 729/410 712/408 935/408 937/410 +f 711/259 728/427 938/427 936/259 +f 746/411 729/410 937/410 939/411 +f 728/427 745/444 940/444 938/427 +f 763/449 746/411 939/411 941/449 +f 745/444 762/461 942/461 940/444 +f 780/464 763/449 941/449 943/464 +f 762/461 779/476 944/476 942/461 +f 789/261 788/261 946/261 945/261 +f 790/261 789/261 945/261 947/261 +f 791/261 790/261 947/261 948/261 +f 792/261 791/261 948/261 949/261 +f 793/261 792/261 949/261 950/261 +f 794/261 793/261 950/261 951/261 +f 795/261 794/261 951/261 952/261 +f 796/261 795/261 952/261 953/261 +f 798/261 797/261 955/261 954/261 +f 799/261 798/261 954/261 956/261 +f 800/261 799/261 956/261 957/261 +f 801/261 800/261 957/261 958/261 +f 802/261 801/261 958/261 959/261 +f 803/261 802/261 959/261 960/261 +f 804/261 803/261 960/261 961/261 +f 788/261 804/261 961/261 946/261 +f 797/261 780/464 943/464 955/261 +f 779/476 796/261 953/261 944/476 +f 677/253 816/262 962/262 932/253 +f 816/262 833/256 933/256 962/262 +f 636/299 848/497 963/497 929/299 +f 856/264 857/265 965/265 964/264 +f 857/265 858/266 966/266 965/265 +f 858/266 859/267 967/267 966/266 +f 859/267 860/268 968/268 967/267 +f 860/268 861/269 969/269 968/268 +f 861/269 862/270 970/270 969/269 +f 862/270 863/271 971/271 970/270 +f 863/271 864/272 972/272 971/271 +f 865/280 866/279 974/279 973/280 +f 866/279 867/278 975/278 974/279 +f 867/278 868/277 976/277 975/278 +f 868/277 869/276 977/276 976/277 +f 869/276 870/275 978/275 977/276 +f 870/275 871/274 979/274 978/275 +f 871/274 872/273 980/273 979/274 +f 872/273 856/264 964/264 980/273 +f 848/497 865/280 973/280 963/497 +usemtl Material.001 +f 303/506 293/507 289/508 302/509 +f 296/510 294/511 290/512 297/513 +f 301/514 295/515 291/516 300/517 +f 298/518 292/519 288/520 299/521 +f 305/522 297/513 290/512 300/517 +f 304/523 296/510 293/507 303/506 +f 293/507 296/510 297/513 289/508 +f 295/515 298/518 299/521 291/516 +f 302/509 289/508 297/513 305/522 +f 301/514 294/511 296/510 304/523 +f 292/519 303/506 302/509 288/520 +f 288/520 302/509 305/522 299/521 +f 298/518 304/523 303/506 292/519 +f 294/511 301/514 300/517 290/512 +f 295/515 301/514 304/523 298/518 +f 299/521 305/522 300/517 291/516 +f 292/519 309/524 311/525 288/520 +f 308/526 306/527 303/506 293/507 +f 302/509 288/520 311/525 307/528 +f 306/527 309/524 292/519 303/506 +f 309/524 306/527 307/528 311/525 +f 306/527 308/526 310/529 307/528 +f 308/526 293/507 289/508 310/529 +f 289/508 302/509 307/528 310/529 +f 327/530 317/531 313/532 326/533 +f 320/534 318/535 314/536 321/537 +f 325/538 319/539 315/540 324/541 +f 322/542 316/543 312/544 323/545 +f 329/546 321/537 314/536 324/541 +f 328/547 320/534 317/531 327/530 +f 317/531 320/534 321/537 313/532 +f 319/539 322/542 323/545 315/540 +f 326/533 313/532 321/537 329/546 +f 325/538 318/535 320/534 328/547 +f 316/543 327/530 326/533 312/544 +f 312/544 326/533 329/546 323/545 +f 322/542 328/547 327/530 316/543 +f 318/535 325/538 324/541 314/536 +f 319/539 325/538 328/547 322/542 +f 323/545 329/546 324/541 315/540 +f 316/543 333/548 335/549 312/544 +f 332/550 330/551 327/530 317/531 +f 326/533 312/544 335/549 331/552 +f 330/551 333/548 316/543 327/530 +f 333/548 330/551 331/552 335/549 +f 330/551 332/550 334/553 331/552 +f 332/550 317/531 313/532 334/553 +f 313/532 326/533 331/552 334/553 +f 351/554 341/555 337/556 350/557 +f 344/558 342/559 338/560 345/561 +f 349/562 343/563 339/564 348/565 +f 346/566 340/567 336/568 347/569 +f 353/570 345/561 338/560 348/565 +f 352/571 344/558 341/555 351/554 +f 341/555 344/558 345/561 337/556 +f 343/563 346/566 347/569 339/564 +f 350/557 337/556 345/561 353/570 +f 349/562 342/559 344/558 352/571 +f 340/567 351/554 350/557 336/568 +f 336/568 350/557 353/570 347/569 +f 346/566 352/571 351/554 340/567 +f 342/559 349/562 348/565 338/560 +f 343/563 349/562 352/571 346/566 +f 347/569 353/570 348/565 339/564 +f 340/567 357/572 359/573 336/568 +f 356/574 354/575 351/554 341/555 +f 350/557 336/568 359/573 355/576 +f 354/575 357/572 340/567 351/554 +f 357/572 354/575 355/576 359/573 +f 354/575 356/574 358/577 355/576 +f 356/574 341/555 337/556 358/577 +f 337/556 350/557 355/576 358/577 +f 375/578 365/579 361/580 374/581 +f 368/582 366/583 362/584 369/585 +f 373/586 367/587 363/588 372/589 +f 370/590 364/591 360/592 371/593 +f 377/594 369/585 362/584 372/589 +f 376/595 368/582 365/579 375/578 +f 365/579 368/582 369/585 361/580 +f 367/587 370/590 371/593 363/588 +f 374/581 361/580 369/585 377/594 +f 373/586 366/583 368/582 376/595 +f 364/591 375/578 374/581 360/592 +f 360/592 374/581 377/594 371/593 +f 370/590 376/595 375/578 364/591 +f 366/583 373/586 372/589 362/584 +f 367/587 373/586 376/595 370/590 +f 371/593 377/594 372/589 363/588 +f 364/591 381/596 383/597 360/592 +f 380/598 378/599 375/578 365/579 +f 374/581 360/592 383/597 379/600 +f 378/599 381/596 364/591 375/578 +f 381/596 378/599 379/600 383/597 +f 378/599 380/598 382/601 379/600 +f 380/598 365/579 361/580 382/601 +f 361/580 374/581 379/600 382/601 +f 393/602 387/603 386/604 392/605 +f 395/606 394/607 390/608 391/609 +f 393/602 385/610 389/611 395/606 +f 385/610 384/612 388/613 389/611 +f 386/604 387/603 391/609 390/608 +f 392/605 386/604 390/608 394/607 +f 385/610 393/602 392/605 384/612 +f 389/611 388/613 394/607 395/606 +f 387/603 393/602 395/606 391/609 +f 384/612 392/605 394/607 388/613 +f 405/614 399/615 398/616 404/617 +f 407/618 406/619 402/620 403/621 +f 405/614 397/622 401/623 407/618 +f 397/622 396/624 400/625 401/623 +f 398/616 399/615 403/621 402/620 +f 404/617 398/616 402/620 406/619 +f 397/622 405/614 404/617 396/624 +f 401/623 400/625 406/619 407/618 +f 399/615 405/614 407/618 403/621 +f 396/624 404/617 406/619 400/625 +f 417/626 411/627 410/628 416/629 +f 419/630 418/631 414/632 415/633 +f 417/626 409/634 413/635 419/630 +f 409/634 408/636 412/637 413/635 +f 410/628 411/627 415/633 414/632 +f 416/629 410/628 414/632 418/631 +f 409/634 417/626 416/629 408/636 +f 413/635 412/637 418/631 419/630 +f 411/627 417/626 419/630 415/633 +f 408/636 416/629 418/631 412/637 +f 429/638 423/639 422/640 428/641 +f 431/642 430/643 426/644 427/645 +f 429/638 421/646 425/647 431/642 +f 421/646 420/648 424/649 425/647 +f 422/640 423/639 427/645 426/644 +f 428/641 422/640 426/644 430/643 +f 421/646 429/638 428/641 420/648 +f 425/647 424/649 430/643 431/642 +f 423/639 429/638 431/642 427/645 +f 420/648 428/641 430/643 424/649 +f 440/650 441/651 434/652 432/653 +f 442/654 436/655 438/656 443/657 +f 435/658 433/659 437/660 439/661 +f 440/650 432/653 436/655 442/654 +f 441/651 435/658 439/661 443/657 +f 432/653 434/652 438/656 436/655 +f 433/659 435/658 441/651 440/650 +f 437/660 442/654 443/657 439/661 +f 433/659 440/650 442/654 437/660 +f 434/652 441/651 443/657 438/656 +f 452/662 453/663 446/664 444/665 +f 454/666 448/667 450/668 455/669 +f 447/670 445/671 449/672 451/673 +f 452/662 444/665 448/667 454/666 +f 453/663 447/670 451/673 455/669 +f 444/665 446/664 450/668 448/667 +f 445/671 447/670 453/663 452/662 +f 449/672 454/666 455/669 451/673 +f 445/671 452/662 454/666 449/672 +f 446/664 453/663 455/669 450/668 +f 464/674 465/675 458/676 456/677 +f 466/678 460/679 462/680 467/681 +f 459/682 457/683 461/684 463/685 +f 464/674 456/677 460/679 466/678 +f 465/675 459/682 463/685 467/681 +f 456/677 458/676 462/680 460/679 +f 457/683 459/682 465/675 464/674 +f 461/684 466/678 467/681 463/685 +f 457/683 464/674 466/678 461/684 +f 458/676 465/675 467/681 462/680 +f 476/686 477/687 470/688 468/689 +f 478/690 472/691 474/692 479/693 +f 471/694 469/695 473/696 475/697 +f 476/686 468/689 472/691 478/690 +f 477/687 471/694 475/697 479/693 +f 468/689 470/688 474/692 472/691 +f 469/695 471/694 477/687 476/686 +f 473/696 478/690 479/693 475/697 +f 469/695 476/686 478/690 473/696 +f 470/688 477/687 479/693 474/692 +f 488/698 489/699 482/700 480/701 +f 490/702 484/703 486/704 491/705 +f 483/706 481/707 485/708 487/709 +f 488/698 480/701 484/703 490/702 +f 489/699 483/706 487/709 491/705 +f 480/701 482/700 486/704 484/703 +f 481/707 483/706 489/699 488/698 +f 485/708 490/702 491/705 487/709 +f 481/707 488/698 490/702 485/708 +f 482/700 489/699 491/705 486/704 +f 500/710 501/711 494/712 492/713 +f 502/714 496/715 498/716 503/717 +f 495/718 493/719 497/720 499/721 +f 500/710 492/713 496/715 502/714 +f 501/711 495/718 499/721 503/717 +f 492/713 494/712 498/716 496/715 +f 493/719 495/718 501/711 500/710 +f 497/720 502/714 503/717 499/721 +f 493/719 500/710 502/714 497/720 +f 494/712 501/711 503/717 498/716 +f 512/722 513/723 506/724 504/725 +f 514/726 508/727 510/728 515/729 +f 507/730 505/731 509/732 511/733 +f 512/722 504/725 508/727 514/726 +f 513/723 507/730 511/733 515/729 +f 504/725 506/724 510/728 508/727 +f 505/731 507/730 513/723 512/722 +f 509/732 514/726 515/729 511/733 +f 505/731 512/722 514/726 509/732 +f 506/724 513/723 515/729 510/728 +f 524/734 525/735 518/736 516/737 +f 526/738 520/739 522/740 527/741 +f 519/742 517/743 521/744 523/745 +f 524/734 516/737 520/739 526/738 +f 525/735 519/742 523/745 527/741 +f 516/737 518/736 522/740 520/739 +f 517/743 519/742 525/735 524/734 +f 521/744 526/738 527/741 523/745 +f 517/743 524/734 526/738 521/744 +f 518/736 525/735 527/741 522/740 diff --git a/Projekte/mdga/client/src/main/resources/Models/missile/texture.jpg b/Projekte/mdga/client/src/main/resources/Models/missile/texture.jpg new file mode 100644 index 00000000..ad8c2794 Binary files /dev/null and b/Projekte/mdga/client/src/main/resources/Models/missile/texture.jpg differ diff --git a/Projekte/mdga/client/src/main/resources/Music/nature-ambience.ogg b/Projekte/mdga/client/src/main/resources/Music/nature-ambience.ogg new file mode 100644 index 00000000..d4b68577 Binary files /dev/null and b/Projekte/mdga/client/src/main/resources/Music/nature-ambience.ogg differ diff --git a/Projekte/mdga/client/src/main/resources/Sounds/missile.ogg b/Projekte/mdga/client/src/main/resources/Sounds/missile.ogg new file mode 100644 index 00000000..75724f77 Binary files /dev/null and b/Projekte/mdga/client/src/main/resources/Sounds/missile.ogg differ diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/CeremonyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/CeremonyState.java index ae64890b..eda27c79 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/CeremonyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/CeremonyState.java @@ -1,9 +1,8 @@ package pp.mdga.client; -import pp.mdga.client.ceremonyState.CeremonyStates; -import pp.mdga.client.ceremonyState.PodiumState; -import pp.mdga.client.ceremonyState.StatisticsState; -import pp.mdga.notification.CeremonyNotification; +import pp.mdga.client.ceremonystate.CeremonyStates; +import pp.mdga.client.ceremonystate.PodiumState; +import pp.mdga.client.ceremonystate.StatisticsState; public class CeremonyState extends ClientState { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java index 8829e43f..391e7c01 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientGameLogic.java @@ -5,13 +5,13 @@ import pp.mdga.game.Color; import pp.mdga.game.Game; import pp.mdga.game.Piece; -import pp.mdga.game.PlayerData; import pp.mdga.message.client.ClientMessage; import pp.mdga.message.server.*; -import pp.mdga.notification.*; +import pp.mdga.notification.InfoNotification; +import pp.mdga.notification.Notification; +import pp.mdga.notification.StartDialogNotification; import java.util.ArrayList; -import java.util.Map; import java.util.UUID; /** @@ -52,20 +52,21 @@ public ClientGameLogic(ClientSender clientSender) { * * @param msg the message to be sent */ - public void send(ClientMessage msg){ + public void send(ClientMessage msg) { LOGGER.log(System.Logger.Level.INFO, "send {0}", msg); clientSender.send(msg); } /** * This method is used to get a piece by its id + * * @param pieceId the UUID of the piece * @return the piece */ - private Piece getPiece(UUID pieceId){ - for(Map.Entry entry : game.getBoard().getPlayerData().entrySet()){ - for(Piece piece : entry.getValue().getPieces()){ - if(piece.getUuid().equals(pieceId)){ + private Piece getPiece(UUID pieceId) { + for (var player : this.game.getPlayers().values()) { + for (Piece piece : player.getPieces()) { + if (piece.getUuid().equals(pieceId)) { return piece; } } @@ -78,7 +79,7 @@ private Piece getPiece(UUID pieceId){ * * @return the clientSender */ - public ClientSender getClientSender(){ + public ClientSender getClientSender() { return clientSender; } @@ -123,7 +124,7 @@ public void setOwnPlayerId(int ownPlayerId) { * * @return the game */ - public Game getGame(){ + public Game getGame() { return game; } @@ -132,7 +133,7 @@ public Game getGame(){ * * @return the current State */ - public ClientState getState(){ + public ClientState getState() { return state; } @@ -141,7 +142,7 @@ public ClientState getState(){ * * @return if the client is a host */ - public boolean isHost(){ + public boolean isHost() { return isHost; } @@ -150,8 +151,8 @@ public boolean isHost(){ * * @return the calculated moves as int */ - public int getCalculatedMoves(){ - return game.getDiceEyes() * game.getDiceModifier(); + public int getCalculatedMoves() { + return 0; } /** @@ -159,7 +160,7 @@ public int getCalculatedMoves(){ * * @param isHost the boolean value */ - public void setHost(boolean isHost){ + public void setHost(boolean isHost) { this.isHost = isHost; } @@ -329,7 +330,7 @@ public void received(PlayCardMessage msg) { * @param msg the PossibleCard message received */ @Override - public void received(PossibleCardMessage msg) { + public void received(PossibleCardsMessage msg) { state.received(msg); } @@ -412,7 +413,7 @@ public void received(ShutdownMessage msg) { */ @Override public void received(IncorrectRequestMessage msg) { - state.received(msg); + addNotification(new InfoNotification(Resources.stringLookup("incorrect.request." + msg.getId()))); } /** @@ -480,14 +481,14 @@ public void received(SelectPieceMessage msg) { * * @param pieceId the pieceID */ - public void selectPiece(UUID pieceId){ + public void selectPiece(UUID pieceId) { state.selectPiece(getPiece(pieceId)); } /** * This method call the method selectNExt of the state */ - public void selectNext(){ + public void selectNext() { state.selectNext(); } @@ -496,7 +497,7 @@ public void selectNext(){ * * @param card the BonusCard to selected */ - public void selectCard(BonusCard card){ + public void selectCard(BonusCard card) { state.selectCard(card); } @@ -505,7 +506,7 @@ public void selectCard(BonusCard card){ * * @param color the Color to be selected */ - public void selectTsk(Color color){ + public void selectTsk(Color color) { state.selectTSK(color); } @@ -514,14 +515,14 @@ public void selectTsk(Color color){ * * @param color the color to be deselcted */ - public void deselectTSK(Color color){ + public void deselectTSK(Color color) { state.deselectTSK(color); } /** * This method calls the selectDice method of the state */ - public void selectDice(){ + public void selectDice() { state.selectDice(); } @@ -530,7 +531,7 @@ public void selectDice(){ * * @param name the name to be set */ - public void selectName(String name){ + public void selectName(String name) { state.setName(name); } @@ -539,8 +540,8 @@ public void selectName(String name){ * * @param ready the value if this method should ready or unready */ - public void selectReady(boolean ready){ - if(ready){ + public void selectReady(boolean ready) { + if (ready) { state.selectReady(); } else { state.selectUnready(); @@ -552,14 +553,14 @@ public void selectReady(boolean ready){ * * @param name the name of the player hosting */ - public void selectHost(String name){ + public void selectHost(String name) { state.selectHost(name); } /** * This method calls the selectLeave method of the state */ - public void selectLeave(){ + public void selectLeave() { state.selectLeave(); } @@ -568,28 +569,28 @@ public void selectLeave(){ * * @param ip the ip to cennect to */ - public void selectJoin(String ip){ + public void selectJoin(String ip) { state.selectJoin(ip); } /** * This method calls the selectAnimationEnd method of the state */ - public void selectAnimationEnd(){ + public void selectAnimationEnd() { state.selectAnimationEnd(); } /** * This method calls the selectStart method of the state */ - public void selectStart(){ + public void selectStart() { state.selectStart(); } /** * This method calls the selectResume method of the state */ - public void selectResume(){ + public void selectResume() { state.selectResume(); } @@ -598,7 +599,7 @@ public void selectResume(){ * * @param state the new state */ - public void setState(ClientState state){ + public void setState(ClientState state) { this.state.exit(); state.enter(); this.state = state; @@ -607,7 +608,7 @@ public void setState(ClientState state){ /** * This method is used to enter the interrupt state and save the previous state */ - public void enterInterrupt(){ + public void enterInterrupt() { interruptState.enter(); interruptState.setPreviousState(state); this.state = interruptState; @@ -618,7 +619,7 @@ public void enterInterrupt(){ * * @return the GameState */ - public GameState getGameState(){ + public GameState getGameState() { return gameState; } @@ -627,7 +628,7 @@ public GameState getGameState(){ * * @return the CeremonyState */ - public CeremonyState getCeremony(){ + public CeremonyState getCeremony() { return ceremonyState; } @@ -636,7 +637,7 @@ public CeremonyState getCeremony(){ * * @return the InterruptState */ - public InterruptState getInterrupt(){ + public InterruptState getInterrupt() { return interruptState; } @@ -645,7 +646,7 @@ public InterruptState getInterrupt(){ * * @return the DialogsState */ - public DialogsState getDialogs(){ + public DialogsState getDialogs() { return dialogsState; } @@ -654,7 +655,7 @@ public DialogsState getDialogs(){ * * @return the SettingsState */ - public SettingsState getSettings(){ + public SettingsState getSettings() { return settingsState; } @@ -663,8 +664,8 @@ public SettingsState getSettings(){ * * @return the next notification */ - public Notification getNotification(){ - if(!notifications.isEmpty()){ + public Notification getNotification() { + if (!notifications.isEmpty()) { return notifications.remove(0); } else { return null; @@ -676,7 +677,7 @@ public Notification getNotification(){ * * @param notification the notification to be added */ - public void addNotification(Notification notification){ + public void addNotification(Notification notification) { notifications.add(notification); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java index 998ea5a7..c81e56d6 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ClientState.java @@ -116,7 +116,7 @@ public void received(PlayCardMessage msg) { } @Override - public void received(PossibleCardMessage msg) { + public void received(PossibleCardsMessage msg) { LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg.toString()); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java index 044be708..fc81beed 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/DialogsState.java @@ -1,9 +1,9 @@ package pp.mdga.client; -import pp.mdga.client.dialogState.DialogStates; -import pp.mdga.client.dialogState.LobbyState; -import pp.mdga.client.dialogState.NetworkDialogState; -import pp.mdga.client.dialogState.StartDialogState; +import pp.mdga.client.dialogstate.DialogStates; +import pp.mdga.client.dialogstate.LobbyState; +import pp.mdga.client.dialogstate.NetworkDialogState; +import pp.mdga.client.dialogstate.StartDialogState; import pp.mdga.game.Color; import pp.mdga.message.server.*; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java index 34ad5d44..be38d370 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java @@ -1,6 +1,6 @@ package pp.mdga.client; -import pp.mdga.client.gameState.*; +import pp.mdga.client.gamestate.*; import pp.mdga.game.BonusCard; import pp.mdga.game.Piece; import pp.mdga.message.client.LeaveGameMessage; @@ -241,7 +241,7 @@ public void received(DiceAgainMessage msg){ * @param msg the message to be received */ @Override - public void received(PossibleCardMessage msg){ + public void received(PossibleCardsMessage msg){ state.received(msg); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/SettingsState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/SettingsState.java index 343d974b..6d0d5855 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/SettingsState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/SettingsState.java @@ -1,9 +1,9 @@ package pp.mdga.client; -import pp.mdga.client.settingsState.AudioSettingsState; -import pp.mdga.client.settingsState.MainSettingsState; -import pp.mdga.client.settingsState.SettingStates; -import pp.mdga.client.settingsState.VideoSettingsState; +import pp.mdga.client.settingsstate.AudioSettingsState; +import pp.mdga.client.settingsstate.MainSettingsState; +import pp.mdga.client.settingsstate.SettingStates; +import pp.mdga.client.settingsstate.VideoSettingsState; public class SettingsState extends ClientState { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonyState/CeremonyStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonystate/CeremonyStates.java similarity index 86% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonyState/CeremonyStates.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonystate/CeremonyStates.java index 8bd888c7..b60ed5e9 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonyState/CeremonyStates.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonystate/CeremonyStates.java @@ -1,4 +1,4 @@ -package pp.mdga.client.ceremonyState; +package pp.mdga.client.ceremonystate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonyState/PodiumState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonystate/PodiumState.java similarity index 93% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonyState/PodiumState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonystate/PodiumState.java index 4410d8c0..374cf996 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonyState/PodiumState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonystate/PodiumState.java @@ -1,4 +1,4 @@ -package pp.mdga.client.ceremonyState; +package pp.mdga.client.ceremonystate; import pp.mdga.client.CeremonyState; import pp.mdga.client.ClientGameLogic; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonyState/StatisticsState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonystate/StatisticsState.java similarity index 91% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonyState/StatisticsState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonystate/StatisticsState.java index 89c5e8a1..3466831a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonyState/StatisticsState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/ceremonystate/StatisticsState.java @@ -1,4 +1,4 @@ -package pp.mdga.client.ceremonyState; +package pp.mdga.client.ceremonystate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/DialogStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/DialogStates.java similarity index 86% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/DialogStates.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/DialogStates.java index f4c549d2..26f0ff26 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/DialogStates.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/DialogStates.java @@ -1,4 +1,4 @@ -package pp.mdga.client.dialogState; +package pp.mdga.client.dialogstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/LobbyState.java similarity index 68% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/LobbyState.java index 06b97e13..c75da3ba 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/LobbyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/LobbyState.java @@ -1,4 +1,4 @@ -package pp.mdga.client.dialogState; +package pp.mdga.client.dialogstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; @@ -6,16 +6,14 @@ import pp.mdga.game.Color; import pp.mdga.game.Piece; import pp.mdga.game.Player; -import pp.mdga.game.PlayerData; import pp.mdga.message.client.*; -import pp.mdga.message.server.LobbyPlayerJoinedMessage; -import pp.mdga.message.server.LobbyPlayerLeaveMessage; -import pp.mdga.message.server.ServerStartGameMessage; -import pp.mdga.message.server.UpdateReadyMessage; -import pp.mdga.message.server.UpdateTSKMessage; +import pp.mdga.message.server.*; import pp.mdga.notification.*; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.UUID; public class LobbyState extends DialogStates { @@ -58,41 +56,47 @@ public void selectReady() { } @Override - public void selectUnready(){ + public void selectUnready() { logic.send(new LobbyNotReadyMessage()); } @Override - public void selectStart(){ - if(logic.isHost() && logic.getGame().areAllReady()){ - logic.send(new StartGameMessage(false)); - } else if(logic.isHost() && !logic.getGame().areAllReady()) { - logic.send(new StartGameMessage(true)); + public void selectStart() { + if (logic.isHost() && logic.getGame().areAllReady()) { + logic.send(new StartGameMessage()); } else { + logic.send(new StartGameMessage()); LOGGER.log(System.Logger.Level.ERROR, "You are not the host"); } } @Override - public void received(ServerStartGameMessage msg){ + public void received(ServerStartGameMessage msg) { + for (Player player: msg.getPlayers()) { + for (Map.Entry entry: this.logic.getGame().getPlayers().entrySet()) { + if (entry.getValue().getColor() == player.getColor()) { + this.logic.getGame().getPlayers().put(entry.getKey(), player); + } + } + } logic.getGame().setBoard(msg.getBoard()); logic.addNotification(new GameNotification(logic.getGame().getPlayerById(logic.getOwnPlayerId()).getColor())); - for (Map.Entry entry : logic.getGame().getPlayers().entrySet()) { + for (var player : logic.getGame().getPlayers().values()) { List pieces = new ArrayList<>(); - for (Piece piece : logic.getGame().getBoard().getPlayerData().get(entry.getValue().getColor()).getPieces()) { + for (Piece piece : player.getPieces()) { pieces.add(piece.getUuid()); } - logic.addNotification(new PlayerInGameNotification(entry.getValue().getColor(), pieces, entry.getValue().getName())); + logic.addNotification(new PlayerInGameNotification(player.getColor(), pieces, player.getName())); } logic.setState(logic.getGameState()); } @Override - public void received(LobbyPlayerJoinedMessage msg){ - if(msg.getPlayer().getName().equals(logic.getOwnPlayerName())){ + public void received(LobbyPlayerJoinedMessage msg) { + if (msg.getPlayer().getName().equals(logic.getOwnPlayerName())) { logic.setOwnPlayerId(msg.getId()); } - if (msg.isHost() && msg.getId() == logic.getOwnPlayerId()){ + if (msg.isHost() && msg.getId() == logic.getOwnPlayerId()) { logic.setHost(true); } @@ -101,9 +105,9 @@ public void received(LobbyPlayerJoinedMessage msg){ } @Override - public void received(UpdateTSKMessage msg){ - if(msg.isTaken()) { - logic.addNotification(new TskSelectNotification(msg.getColor(), logic.getGame().getPlayers().get(msg.getId()).getName(), logic.getOwnPlayerId()== msg.getId())); + public void received(UpdateTSKMessage msg) { + if (msg.isTaken()) { + logic.addNotification(new TskSelectNotification(msg.getColor(), logic.getGame().getPlayers().get(msg.getId()).getName(), logic.getOwnPlayerId() == msg.getId())); } else { logic.addNotification(new TskUnselectNotification(logic.getGame().getPlayers().get(msg.getId()).getColor())); } @@ -112,13 +116,13 @@ public void received(UpdateTSKMessage msg){ } @Override - public void received(LobbyPlayerLeaveMessage msg){ + public void received(LobbyPlayerLeaveMessage msg) { logic.addNotification(new TskUnselectNotification(logic.getGame().getPlayers().get(msg.getId()).getColor())); logic.getGame().getPlayers().remove(msg.getId()); } @Override - public void received(UpdateReadyMessage msg){ + public void received(UpdateReadyMessage msg) { //TODO server sendet kein update on UNready logic.addNotification(new LobbyReadyNotification(logic.getGame().getPlayers().get(msg.getPlayerId()).getColor(), msg.isReady())); logic.getGame().getPlayers().get(msg.getPlayerId()).setReady(msg.isReady()); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/NetworkDialogState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/NetworkDialogState.java similarity index 98% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/NetworkDialogState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/NetworkDialogState.java index a6a206d6..5f6236c8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/NetworkDialogState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/NetworkDialogState.java @@ -1,4 +1,4 @@ -package pp.mdga.client.dialogState; +package pp.mdga.client.dialogstate; import pp.mdga.Resources; import pp.mdga.client.ClientGameLogic; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/StartDialogState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/StartDialogState.java similarity index 96% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/StartDialogState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/StartDialogState.java index 6c49408b..2c0f879e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogState/StartDialogState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/dialogstate/StartDialogState.java @@ -1,4 +1,4 @@ -package pp.mdga.client.dialogState; +package pp.mdga.client.dialogstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/WaitRankingState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/WaitRankingState.java deleted file mode 100644 index 6e2a96b3..00000000 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/WaitRankingState.java +++ /dev/null @@ -1,40 +0,0 @@ -package pp.mdga.client.gameState.determineStartPlayerState; - -import pp.mdga.client.ClientGameLogic; -import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.DetermineStartPlayerState; -import pp.mdga.message.server.RankingResponseMessage; -import pp.mdga.message.server.RankingRollAgainMessage; -import pp.mdga.notification.ActivePlayerNotification; - -public class WaitRankingState extends DetermineStartPlayerStates { - - private final DetermineStartPlayerState parent; - - public WaitRankingState(ClientState parent, ClientGameLogic logic) { - super(parent, logic); - this.parent = (DetermineStartPlayerState) parent; - } - - @Override - public void enter() { - - } - - @Override - public void exit() { - - } - - @Override - public void received(RankingRollAgainMessage msg){ - parent.setState(parent.getRollRankingDice()); - } - - @Override - public void received(RankingResponseMessage msg){ - logic.addNotification(new ActivePlayerNotification(logic.getGame().getPlayers().get(msg.getStartingPlayerId()).getColor())); - logic.getGame().setActiveColor(logic.getGame().getPlayers().get(msg.getStartingPlayerId()).getColor()); - parent.getParent().setState(parent.getParent().getWaiting()); - } -} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/AnimationState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/AnimationState.java similarity index 94% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/AnimationState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/AnimationState.java index a7aaf745..cc4f4c0b 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/AnimationState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/AnimationState.java @@ -1,4 +1,4 @@ -package pp.mdga.client.gameState; +package pp.mdga.client.gamestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/DetermineStartPlayerState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/DetermineStartPlayerState.java similarity index 72% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/DetermineStartPlayerState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/DetermineStartPlayerState.java index 4794785a..9ac6f912 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/DetermineStartPlayerState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/DetermineStartPlayerState.java @@ -1,11 +1,14 @@ -package pp.mdga.client.gameState; +package pp.mdga.client.gamestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.GameState; -import pp.mdga.client.gameState.determineStartPlayerState.DetermineStartPlayerStates; -import pp.mdga.client.gameState.determineStartPlayerState.RollRankingDiceState; -import pp.mdga.client.gameState.determineStartPlayerState.WaitRankingState; +import pp.mdga.client.gamestate.determinestartplayerstate.DetermineStartPlayerStates; +import pp.mdga.client.gamestate.determinestartplayerstate.Intro; +import pp.mdga.client.gamestate.determinestartplayerstate.RollRankingDiceState; +import pp.mdga.client.gamestate.determinestartplayerstate.WaitRankingState; +import pp.mdga.message.client.AnimationEndMessage; +import pp.mdga.message.server.ActivePlayerMessage; import pp.mdga.message.server.DieMessage; import pp.mdga.message.server.RankingResponseMessage; import pp.mdga.message.server.RankingRollAgainMessage; @@ -17,12 +20,33 @@ public class DetermineStartPlayerState extends GameStates { private final RollRankingDiceState rollRankingDiceState = new RollRankingDiceState(this, logic); private final WaitRankingState waitRankingState = new WaitRankingState(this, logic); + private final Intro intro = new Intro(this, logic); public DetermineStartPlayerState(ClientState parent, ClientGameLogic logic) { super(parent, logic); this.parent = (GameState) parent; } + public RollRankingDiceState getRollRankingDice() { + return rollRankingDiceState; + } + + public WaitRankingState getWaitRanking() { + return waitRankingState; + } + + public DetermineStartPlayerStates getState(){ + return state; + } + + public Intro getIntro(){ + return intro; + } + + public GameState getParent() { + return parent; + } + @Override public void enter() { this.setState(this.rollRankingDiceState); @@ -46,6 +70,11 @@ public void selectDice() { state.selectDice(); } + @Override + public void selectAnimationEnd(){ + state.selectAnimationEnd(); + } + @Override public void received(DieMessage msg){ state.received(msg); @@ -61,19 +90,8 @@ public void received(RankingResponseMessage msg){ state.received(msg); } - public RollRankingDiceState getRollRankingDice() { - return rollRankingDiceState; - } - - public WaitRankingState getWaitRanking() { - return waitRankingState; - } - - public DetermineStartPlayerStates getState(){ - return state; - } - - public GameState getParent() { - return parent; + @Override + public void received(ActivePlayerMessage msg){ + state.received(msg); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/GameStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/GameStates.java similarity index 55% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/GameStates.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/GameStates.java index 4d784014..8753b774 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/GameStates.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/GameStates.java @@ -1,4 +1,4 @@ -package pp.mdga.client.gameState; +package pp.mdga.client.gamestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; @@ -12,39 +12,45 @@ import pp.mdga.notification.SwapPieceNotification; import pp.mdga.notification.ThrowPieceNotification; +import java.util.UUID; + public abstract class GameStates extends ClientState { public GameStates(ClientState parent, ClientGameLogic logic) { super(parent, logic); } - protected void handlePowerCard(PlayCardMessage msg){ - if (msg.getCard().equals(BonusCard.TURBO)){ + protected void handlePowerCard(PlayCardMessage msg) { + if (msg.getCard().getCard().equals(BonusCard.TURBO)) { logic.getGame().setDiceModifier(msg.getDiceModifier()); - } else if (msg.getCard().equals(BonusCard.SHIELD)){ - if (logic.getGame().getBoard().getInfieldIndexOfPiece(logic.getGame().getPieceThroughUUID(msg.getPieceIdentifier())) % 10 != 0) { - logic.getGame().getPieceThroughUUID(msg.getPieceIdentifier()).setShield(ShieldState.SUPPRESSED); - logic.addNotification(new ShieldSuppressedNotification(logic.getGame().getPieceThroughUUID(msg.getPieceIdentifier()).getUuid())); - } else { - logic.getGame().getPieceThroughUUID(msg.getPieceIdentifier()).setShield(ShieldState.ACTIVE); - logic.addNotification(new ShieldActiveNotification(logic.getGame().getPieceThroughUUID(msg.getPieceIdentifier()).getUuid())); - } + } else if (msg.getCard().getCard().equals(BonusCard.SHIELD)) { + handleShield(msg.getPieces().get(0).getUuid()); } else { - Piece ownPiece = logic.getGame().getPieceThroughUUID(msg.getPieceIdentifier()); - Piece enemyPiece = logic.getGame().getPieceThroughUUID(msg.getPieceIdentifierEnemy()); + Piece ownPiece = logic.getGame().getPieceThroughUUID(msg.getPieces().get(0).getUuid()); + Piece enemyPiece = logic.getGame().getPieceThroughUUID(msg.getPieces().get(1).getUuid()); int ownIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(ownPiece); logic.addNotification(new SwapPieceNotification(ownPiece.getUuid(), enemyPiece.getUuid())); logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(enemyPiece)].setOccupant(ownPiece); logic.getGame().getBoard().getInfield()[ownIndex].setOccupant(enemyPiece); } - logic.getGame().getDiscardPile().add(logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).removeHandCard(msg.getCard())); + logic.getGame().getDiscardPile().add(msg.getCard()); } - protected void throwPiece(Piece piece){ + protected void throwPiece(Piece piece) { logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant(); - logic.getGame().getBoard().getPlayerData().get(piece.getColor()).addWaitingPiece(piece); -// logic.addNotification(new ThrowPieceNotification(piece.getUuid())); + logic.getGame().getPlayerByColor(piece.getColor()).addWaitingPiece(piece); + logic.addNotification(new ThrowPieceNotification(piece.getUuid(), piece.getColor())); logic.getGame().getPlayerByColor(piece.getColor()).getPlayerStatistic().increasePiecesBeingThrown(); logic.getGame().getGameStatistics().increasePiecesBeingThrown(); piece.setState(PieceState.WAITING); } + + private void handleShield(UUID uuid) { + if (logic.getGame().getBoard().getInfieldIndexOfPiece(logic.getGame().getPieceThroughUUID(uuid)) % 10 != 0) { + logic.getGame().getPieceThroughUUID(uuid).setShield(ShieldState.SUPPRESSED); + logic.addNotification(new ShieldSuppressedNotification(uuid)); + } else { + logic.getGame().getPieceThroughUUID(uuid).setShield(ShieldState.ACTIVE); + logic.addNotification(new ShieldActiveNotification(uuid)); + } + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/SpectatorState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java similarity index 75% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/SpectatorState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java index 9a0cbd7d..48a12c28 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/SpectatorState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java @@ -1,11 +1,14 @@ -package pp.mdga.client.gameState; +package pp.mdga.client.gamestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.GameState; import pp.mdga.game.Piece; import pp.mdga.message.server.*; -import pp.mdga.notification.*; +import pp.mdga.notification.ActivePlayerNotification; +import pp.mdga.notification.HomeMoveNotification; +import pp.mdga.notification.MovePieceNotification; +import pp.mdga.notification.PlayCardNotification; public class SpectatorState extends GameStates { @@ -27,15 +30,15 @@ public void exit() { } @Override - public void received(CeremonyMessage msg){ + public void received(CeremonyMessage msg) { logic.setState(logic.getCeremony()); } @Override - public void received(DieMessage msg){ - logic.getGame().setDiceEyes(msg.getDiceEye()); + public void received(DieMessage msg) { + //logic.getGame().setDiceEyes(msg.getDiceEye()); // logic.addNotification(new RollDiceNotification(logic.getGame().getActiveColor(), logic.getGame().getDiceEyes(), logic.getGame().getDiceEyes() * logic.getGame().getDiceModifier())); - if(msg.getDiceEye() == 6){ + if (msg.getDiceEye() == 6) { logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPlayerStatistic().increaseDiced6(); logic.getGame().getGameStatistics().increaseDiced6(); } @@ -43,8 +46,8 @@ public void received(DieMessage msg){ } @Override - public void received(PlayCardMessage msg){ - logic.addNotification(new PlayCardNotification(logic.getGame().getActiveColor(), msg.getCard())); + public void received(PlayCardMessage msg) { + logic.addNotification(new PlayCardNotification(logic.getGame().getActiveColor(), msg.getCard().getCard())); handlePowerCard(msg); logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPlayerStatistic().increaseCardsPlayed(); logic.getGame().getGameStatistics().increaseCardsPlayed(); @@ -52,26 +55,26 @@ public void received(PlayCardMessage msg){ } @Override - public void received(ActivePlayerMessage msg){ + public void received(ActivePlayerMessage msg) { logic.addNotification(new ActivePlayerNotification(msg.getColor())); logic.getGame().setActiveColor(msg.getColor()); parent.setState(parent.getAnimation()); } @Override - public void received(MoveMessage msg){ + public void received(MoveMessage msg) { Piece pieceToMove = logic.getGame().getPieceThroughUUID(msg.getIdentifier()); - if (msg.isHomeMove()){ + if (msg.isHomeMove()) { logic.addNotification(new HomeMoveNotification(pieceToMove.getUuid(), msg.getTargetIndex())); logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(pieceToMove)].clearOccupant(); - logic.getGame().getBoard().getPlayerData().get(pieceToMove.getColor()).setPieceInHome(msg.getTargetIndex(), pieceToMove); + logic.getGame().getPlayerByColor(pieceToMove.getColor()).setPieceInHome(msg.getTargetIndex(), pieceToMove); } else { if (logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].isOccupied()) { throwPiece(logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].getOccupant()); logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPlayerStatistic().increasePiecesThrown(); logic.getGame().getGameStatistics().increasePiecesThrown(); } - if(logic.getGame().getBoard().getPlayerData().get(pieceToMove.getColor()).getStartNodeIndex() == logic.getGame().getBoard().getInfieldIndexOfPiece(pieceToMove)){ + if (logic.getGame().getPlayerByColor(pieceToMove.getColor()).getStartNodeIndex() == logic.getGame().getBoard().getInfieldIndexOfPiece(pieceToMove)) { logic.addNotification(new MovePieceNotification(pieceToMove.getUuid(), msg.getTargetIndex(), true)); logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].setOccupant(pieceToMove); } else { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java similarity index 86% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/TurnState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java index 5f075eff..1c7f8bf8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java @@ -1,14 +1,14 @@ -package pp.mdga.client.gameState; +package pp.mdga.client.gamestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.GameState; -import pp.mdga.client.gameState.turnState.ChoosePieceState; -import pp.mdga.client.gameState.turnState.MovePieceState; -import pp.mdga.client.gameState.turnState.PlayPowerCardState; -import pp.mdga.client.gameState.turnState.PowerCardState; -import pp.mdga.client.gameState.turnState.RollDiceState; -import pp.mdga.client.gameState.turnState.TurnStates; +import pp.mdga.client.gamestate.turnstate.ChoosePieceState; +import pp.mdga.client.gamestate.turnstate.MovePieceState; +import pp.mdga.client.gamestate.turnstate.PlayPowerCardState; +import pp.mdga.client.gamestate.turnstate.PowerCardState; +import pp.mdga.client.gamestate.turnstate.RollDiceState; +import pp.mdga.client.gamestate.turnstate.TurnStates; import pp.mdga.game.BonusCard; import pp.mdga.game.Piece; import pp.mdga.message.server.*; @@ -47,6 +47,11 @@ public void setState(TurnStates state){ this.state = state; } + @Override + public void selectDice(){ + state.selectDice(); + } + @Override public void selectPiece(Piece piece){ state.selectPiece(piece); @@ -108,7 +113,7 @@ public void received(DiceAgainMessage msg){ } @Override - public void received(PossibleCardMessage msg){ + public void received(PossibleCardsMessage msg){ state.received(msg); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/WaitingState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java similarity index 73% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/WaitingState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java index 0a2f72b0..3ceffeb9 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/WaitingState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java @@ -1,9 +1,10 @@ -package pp.mdga.client.gameState; +package pp.mdga.client.gamestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.GameState; -import pp.mdga.game.*; +import pp.mdga.game.Piece; +import pp.mdga.game.PieceState; import pp.mdga.message.server.*; import pp.mdga.notification.*; @@ -27,21 +28,21 @@ public void exit() { } @Override - public void received(CeremonyMessage msg){ + public void received(CeremonyMessage msg) { logic.setState(logic.getCeremony()); } @Override - public void received(DiceNowMessage msg){ + public void received(DiceNowMessage msg) { logic.addNotification(new DiceNowNotification()); parent.setState(parent.getTurn()); } @Override - public void received(DieMessage msg){ + public void received(DieMessage msg) { logic.getGame().setDiceEyes(msg.getDiceEye()); -// logic.addNotification(new RollDiceNotification(logic.getGame().getActiveColor(), logic.getGame().getDiceEyes(), logic.getGame().getDiceEyes() * logic.getGame().getDiceModifier())); - if(msg.getDiceEye() == 6){ + logic.addNotification(new RollDiceNotification(logic.getGame().getActiveColor(), logic.getGame().getDiceEyes())); + if (msg.getDiceEye() == 6) { logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPlayerStatistic().increaseDiced6(); logic.getGame().getGameStatistics().increaseDiced6(); } @@ -49,8 +50,8 @@ public void received(DieMessage msg){ } @Override - public void received(PlayCardMessage msg){ - logic.addNotification(new PlayCardNotification(logic.getGame().getActiveColor(), msg.getCard())); + public void received(PlayCardMessage msg) { + logic.addNotification(new PlayCardNotification(logic.getGame().getActiveColor(), msg.getCard().getCard())); handlePowerCard(msg); logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPlayerStatistic().increaseCardsPlayed(); logic.getGame().getGameStatistics().increaseCardsPlayed(); @@ -58,21 +59,21 @@ public void received(PlayCardMessage msg){ } @Override - public void received(ActivePlayerMessage msg){ + public void received(ActivePlayerMessage msg) { logic.addNotification(new ActivePlayerNotification(msg.getColor())); logic.getGame().setActiveColor(msg.getColor()); parent.setState(parent.getAnimation()); } @Override - public void received(MoveMessage msg){ + public void received(MoveMessage msg) { Piece pieceToMove = logic.getGame().getPieceThroughUUID(msg.getIdentifier()); - if (msg.isHomeMove()){ + if (msg.isHomeMove()) { logic.addNotification(new HomeMoveNotification(pieceToMove.getUuid(), msg.getTargetIndex())); logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(pieceToMove)].clearOccupant(); - logic.getGame().getBoard().getPlayerData().get(pieceToMove.getColor()).setPieceInHome(msg.getTargetIndex(), pieceToMove); - for(int i = msg.getTargetIndex() + 1; i < 4; i++){ - if(!logic.getGame().getBoard().getPlayerData().get(pieceToMove.getColor()).getHomeNodes()[i].isOccupied()){ + logic.getGame().getPlayerByColor(pieceToMove.getColor()).setPieceInHome(msg.getTargetIndex(), pieceToMove); + for (int i = msg.getTargetIndex() + 1; i < 4; i++) { + if (!logic.getGame().getPlayerByColor(pieceToMove.getColor()).getHomeNodes()[i].isOccupied()) { pieceToMove.setState(PieceState.HOME); break; } @@ -84,7 +85,7 @@ public void received(MoveMessage msg){ logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPlayerStatistic().increasePiecesThrown(); logic.getGame().getGameStatistics().increasePiecesThrown(); } - if(logic.getGame().getBoard().getPlayerData().get(pieceToMove.getColor()).getStartNodeIndex() == logic.getGame().getBoard().getInfieldIndexOfPiece(pieceToMove)){ + if (logic.getGame().getPlayerByColor(pieceToMove.getColor()).getStartNodeIndex() == logic.getGame().getBoard().getInfieldIndexOfPiece(pieceToMove)) { logic.addNotification(new MovePieceNotification(pieceToMove.getUuid(), msg.getTargetIndex(), true)); logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].setOccupant(pieceToMove); } else { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/DetermineStartPlayerStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/DetermineStartPlayerStates.java similarity index 72% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/DetermineStartPlayerStates.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/DetermineStartPlayerStates.java index 6be7ece5..1ec1ac4d 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/DetermineStartPlayerStates.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/DetermineStartPlayerStates.java @@ -1,8 +1,8 @@ -package pp.mdga.client.gameState.determineStartPlayerState; +package pp.mdga.client.gamestate.determinestartplayerstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.GameStates; +import pp.mdga.client.gamestate.GameStates; public abstract class DetermineStartPlayerStates extends GameStates { public DetermineStartPlayerStates(ClientState parent, ClientGameLogic logic) { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/Intro.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/Intro.java new file mode 100644 index 00000000..4583ac21 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/Intro.java @@ -0,0 +1,85 @@ +package pp.mdga.client.gamestate.determinestartplayerstate; + +import pp.mdga.client.ClientGameLogic; +import pp.mdga.client.ClientState; +import pp.mdga.client.gamestate.DetermineStartPlayerState; +import pp.mdga.game.Player; +import pp.mdga.message.client.AnimationEndMessage; +import pp.mdga.notification.AcquireCardNotification; +import pp.mdga.notification.ActivePlayerNotification; +import pp.mdga.notification.DrawCardNotification; +import pp.mdga.notification.MovePieceNotification; + +import java.util.Map; + +public class Intro extends DetermineStartPlayerStates{ + + private final DetermineStartPlayerState parent; + + private int animationCounter = 0; + + /** + * Constructor for Intro + * + * @param parent the parent state + * @param logic the client game logic + */ + public Intro(ClientState parent, ClientGameLogic logic) { + super(parent, logic); + this.parent = (DetermineStartPlayerState) parent; + } + + /** + * This method is used to get the parent state; + * + * @return the parent state + */ + public DetermineStartPlayerState getParent(){ + return parent; + } + + /** + * This method is used to enter this state and play all necessary intro animations. + */ + @Override + public void enter() { + for(Map.Entry entry : logic.getGame().getPlayers().entrySet()){ + //logic.addNotification(new WaitMoveNotification(entry.getValue().getPieces()[0].getUuid())); + logic.addNotification(new MovePieceNotification(entry.getValue().getPieces()[0].getUuid(), entry.getValue().getStartNodeIndex(), true)); + logic.getGame().getBoard().getInfield()[entry.getValue().getStartNodeIndex()].setOccupant(entry.getValue().getPieces()[0]); + animationCounter++; + if(entry.getKey() == logic.getOwnPlayerId()){ + logic.addNotification(new AcquireCardNotification(entry.getValue().getHandCards().get(0).getCard())); + } else { + logic.addNotification(new DrawCardNotification(entry.getValue().getColor(), entry.getValue().getHandCards().get(0).getCard())); + } + } + } + + /** + * This method i s used to exit this state. + */ + @Override + public void exit() { + animationCounter = 0; + } + + /** + * This method is used when the view has completed the animation. + */ + @Override + public void selectAnimationEnd(){ + animationCounter--; + if(animationCounter != 0){ + return; + } + logic.send(new AnimationEndMessage()); + if (logic.getGame().getActivePlayerId() == logic.getOwnPlayerId()){ + parent.getParent().setState(parent.getParent().getTurn()); + logic.addNotification(new ActivePlayerNotification(logic.getGame().getActiveColor())); + } else { + parent.getParent().setState(parent.getParent().getWaiting()); + logic.addNotification(new ActivePlayerNotification(logic.getGame().getActiveColor())); + } + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/RollRankingDiceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/RollRankingDiceState.java similarity index 86% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/RollRankingDiceState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/RollRankingDiceState.java index 59cba3ec..292c6748 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/determineStartPlayerState/RollRankingDiceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/RollRankingDiceState.java @@ -1,8 +1,8 @@ -package pp.mdga.client.gameState.determineStartPlayerState; +package pp.mdga.client.gamestate.determinestartplayerstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.DetermineStartPlayerState; +import pp.mdga.client.gamestate.DetermineStartPlayerState; import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.server.DieMessage; import pp.mdga.notification.DiceNowNotification; @@ -28,13 +28,12 @@ public void exit() { @Override public void selectDice(){ - System.out.println("selectDice"); logic.send(new RequestDieMessage()); } @Override public void received(DieMessage msg){ - logic.addNotification(new RollDiceNotification(logic.getGame().getPlayerById(logic.getOwnPlayerId()).getColor(), msg.getDiceEye(),true)); parent.setState(parent.getWaitRanking()); + logic.addNotification(new RollDiceNotification(logic.getGame().getPlayerById(logic.getOwnPlayerId()).getColor(), msg.getDiceEye(),true)); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/WaitRankingState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/WaitRankingState.java new file mode 100644 index 00000000..c1d61a16 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/WaitRankingState.java @@ -0,0 +1,58 @@ +package pp.mdga.client.gamestate.determinestartplayerstate; + +import pp.mdga.client.ClientGameLogic; +import pp.mdga.client.ClientState; +import pp.mdga.client.gamestate.DetermineStartPlayerState; +import pp.mdga.message.client.AnimationEndMessage; +import pp.mdga.message.server.*; +import pp.mdga.notification.ActivePlayerNotification; + +public class WaitRankingState extends DetermineStartPlayerStates { + + private final DetermineStartPlayerState parent; + private boolean canChange = false; + + public WaitRankingState(ClientState parent, ClientGameLogic logic) { + super(parent, logic); + this.parent = (DetermineStartPlayerState) parent; + } + + private void changeToIntro(){ + if(!canChange){ + canChange = true; + return; + } + parent.setState(parent.getIntro()); + } + + @Override + public void enter() { + } + + @Override + public void exit() { + + } + + @Override + public void received(DiceNowMessage msg){ + parent.setState(parent.getRollRankingDice()); + } + + @Override + public void received(RankingResponseMessage msg){ + + } + + @Override + public void selectAnimationEnd(){ + changeToIntro(); + logic.send(new AnimationEndMessage()); + } + + @Override + public void received(ActivePlayerMessage msg){ + logic.getGame().setActiveColor(msg.getColor()); + changeToIntro(); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/ChoosePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/ChoosePieceState.java similarity index 93% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/ChoosePieceState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/ChoosePieceState.java index 47dce439..71fce397 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/ChoosePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/ChoosePieceState.java @@ -1,9 +1,9 @@ -package pp.mdga.client.gameState.turnState; +package pp.mdga.client.gamestate.turnstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.TurnState; -import pp.mdga.client.gameState.turnState.choosePieceState.*; +import pp.mdga.client.gamestate.TurnState; +import pp.mdga.client.gamestate.turnstate.choosepiecestate.*; import pp.mdga.game.Piece; import pp.mdga.message.server.*; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/MovePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/MovePieceState.java similarity index 89% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/MovePieceState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/MovePieceState.java index a04d7e56..22da0555 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/MovePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/MovePieceState.java @@ -1,8 +1,8 @@ -package pp.mdga.client.gameState.turnState; +package pp.mdga.client.gamestate.turnstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.TurnState; +import pp.mdga.client.gamestate.TurnState; import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.server.*; @@ -46,7 +46,7 @@ public void received(SpectatorMessage msg){ } @Override - public void received(DiceAgainMessage msg){ + public void received(DiceNowMessage msg){ parent.setState(parent.getRollDice()); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/PlayPowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java similarity index 87% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/PlayPowerCardState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java index b3f66cbd..1ecae283 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/PlayPowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PlayPowerCardState.java @@ -1,8 +1,8 @@ -package pp.mdga.client.gameState.turnState; +package pp.mdga.client.gamestate.turnstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.TurnState; +import pp.mdga.client.gamestate.TurnState; import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.server.PlayCardMessage; import pp.mdga.notification.PlayCardNotification; @@ -20,7 +20,7 @@ public PlayPowerCardState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - logic.addNotification(new PlayCardNotification(logic.getGame().getActiveColor() , playCardMessage.getCard())); + logic.addNotification(new PlayCardNotification(logic.getGame().getActiveColor() , playCardMessage.getCard().getCard())); handlePowerCard(playCardMessage); } @@ -35,7 +35,7 @@ public void setPlayCard(PlayCardMessage playCardMessage) { @Override public void selectAnimationEnd(){ - parent.setState(parent.getRollDice()); logic.send(new AnimationEndMessage()); + parent.setState(parent.getRollDice()); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/PowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PowerCardState.java similarity index 82% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/PowerCardState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PowerCardState.java index 5a5fd5c3..1a8a05a7 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/PowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/PowerCardState.java @@ -1,17 +1,17 @@ -package pp.mdga.client.gameState.turnState; +package pp.mdga.client.gamestate.turnstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.TurnState; -import pp.mdga.client.gameState.turnState.powerCardState.ChoosePowerCardState; -import pp.mdga.client.gameState.turnState.powerCardState.PowerCardStates; -import pp.mdga.client.gameState.turnState.powerCardState.ShieldState; -import pp.mdga.client.gameState.turnState.powerCardState.SwapState; +import pp.mdga.client.gamestate.TurnState; +import pp.mdga.client.gamestate.turnstate.powercardstate.ChoosePowerCardState; +import pp.mdga.client.gamestate.turnstate.powercardstate.PowerCardStates; +import pp.mdga.client.gamestate.turnstate.powercardstate.ShieldState; +import pp.mdga.client.gamestate.turnstate.powercardstate.SwapState; import pp.mdga.game.BonusCard; import pp.mdga.game.Piece; import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.PlayCardMessage; -import pp.mdga.message.server.PossibleCardMessage; +import pp.mdga.message.server.PossibleCardsMessage; import pp.mdga.message.server.PossiblePieceMessage; public class PowerCardState extends TurnStates { @@ -48,7 +48,7 @@ public void setState(PowerCardStates state) { } @Override - public void received(PossibleCardMessage msg){ + public void received(PossibleCardsMessage msg){ state.received(msg); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/RollDiceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java similarity index 50% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/RollDiceState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java index dbdecae3..9b160ec2 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/RollDiceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/RollDiceState.java @@ -1,10 +1,14 @@ -package pp.mdga.client.gameState.turnState; +package pp.mdga.client.gamestate.turnstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.TurnState; +import pp.mdga.client.gamestate.TurnState; +import pp.mdga.message.client.AnimationEndMessage; +import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.server.DieMessage; import pp.mdga.message.server.NoTurnMessage; +import pp.mdga.notification.DiceNowNotification; +import pp.mdga.notification.RollDiceNotification; public class RollDiceState extends TurnStates { @@ -17,7 +21,7 @@ public RollDiceState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - + logic.addNotification(new DiceNowNotification()); } @Override @@ -29,11 +33,27 @@ public TurnState getParent() { return parent; } + @Override + public void selectDice(){ + logic.send(new RequestDieMessage()); + } + + @Override public void received(DieMessage msg){ logic.getGame().setDiceEyes(msg.getDiceEye()); - parent.setState(parent.getChoosePiece()); + logic.addNotification(new RollDiceNotification(logic.getGame().getPlayerById(logic.getOwnPlayerId()).getColor(), msg.getDiceEye(),false)); } + @Override + public void selectAnimationEnd(){ + logic.send(new AnimationEndMessage()); + } + +// @Override +// public void received(ChoosePieceStateMessage msg){ +// parent.setState(parent.getChoosePiece()); +// } + @Override public void received(NoTurnMessage msg){ parent.getParent().setState(parent.getParent().getWaiting()); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/TurnStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/TurnStates.java similarity index 72% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/TurnStates.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/TurnStates.java index 6ca2cd4d..e7909fb8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/TurnStates.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/TurnStates.java @@ -1,8 +1,8 @@ -package pp.mdga.client.gameState.turnState; +package pp.mdga.client.gamestate.turnstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.GameStates; +import pp.mdga.client.gamestate.GameStates; public abstract class TurnStates extends GameStates { public TurnStates(ClientState parent, ClientGameLogic logic) { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/ChoosePieceStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/ChoosePieceStates.java similarity index 68% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/ChoosePieceStates.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/ChoosePieceStates.java index 231b2d37..0311ea35 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/ChoosePieceStates.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/ChoosePieceStates.java @@ -1,8 +1,8 @@ -package pp.mdga.client.gameState.turnState.choosePieceState; +package pp.mdga.client.gamestate.turnstate.choosepiecestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.turnState.TurnStates; +import pp.mdga.client.gamestate.turnstate.TurnStates; public abstract class ChoosePieceStates extends TurnStates { public ChoosePieceStates(ClientState parent, ClientGameLogic logic) { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/NoPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/NoPieceState.java similarity index 92% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/NoPieceState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/NoPieceState.java index 60b41e44..bed4a04a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/NoPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/NoPieceState.java @@ -1,12 +1,11 @@ -package pp.mdga.client.gameState.turnState.choosePieceState; +package pp.mdga.client.gamestate.turnstate.choosepiecestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.turnState.ChoosePieceState; +import pp.mdga.client.gamestate.turnstate.ChoosePieceState; import pp.mdga.game.Piece; import pp.mdga.message.server.*; import pp.mdga.message.server.StartPieceMessage; -import pp.mdga.notification.MovePieceNotification; import pp.mdga.notification.SelectableMoveNotification; import pp.mdga.notification.WaitMoveNotification; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/SelectPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java similarity index 79% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/SelectPieceState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java index 8c02d9de..23c87668 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/SelectPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java @@ -1,8 +1,8 @@ -package pp.mdga.client.gameState.turnState.choosePieceState; +package pp.mdga.client.gamestate.turnstate.choosepiecestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.turnState.ChoosePieceState; +import pp.mdga.client.gamestate.turnstate.ChoosePieceState; import pp.mdga.game.Piece; import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.MoveMessage; @@ -31,24 +31,26 @@ public void exit() { } - public void setPossiblePieces(ArrayList possiblePieces){ + public void setPossiblePieces(ArrayList possiblePieces) { this.possiblePieces = possiblePieces; } @Override - public void selectPiece(Piece piece){ + public void selectPiece(Piece piece) { + ArrayList pieces = new ArrayList<>(); if(possiblePieces.contains(piece)){ - logic.send(new SelectedPiecesMessage(piece.getUuid())); + pieces.add(piece); + logic.send(new SelectedPiecesMessage(pieces)); } } @Override - public void received(MoveMessage msg){ + public void received(MoveMessage msg) { Piece piece = logic.getGame().getPieceThroughUUID(msg.getIdentifier()); - if(msg.isHomeMove()){ + if (msg.isHomeMove()) { logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex())); logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant(); - logic.getGame().getBoard().getPlayerData().get(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece); + logic.getGame().getPlayerByColor(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece); } else { if (logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].isOccupied()) { throwPiece(logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].getOccupant()); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/StartPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java similarity index 74% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/StartPieceState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java index 5e5ac4a0..4c9801d2 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/StartPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java @@ -1,12 +1,14 @@ -package pp.mdga.client.gameState.turnState.choosePieceState; +package pp.mdga.client.gamestate.turnstate.choosepiecestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.turnState.ChoosePieceState; +import pp.mdga.client.gamestate.turnstate.ChoosePieceState; import pp.mdga.game.Piece; import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.MoveMessage; +import java.util.ArrayList; + public class StartPieceState extends ChoosePieceStates { private final ChoosePieceState parent; @@ -30,8 +32,10 @@ public void exit() { @Override public void selectPiece(Piece piece){ + ArrayList pieces = new ArrayList<>(); if(moveablePiece.equals(piece)){ - logic.send(new SelectedPiecesMessage(piece.getUuid())); + pieces.add(piece); + logic.send(new SelectedPiecesMessage(pieces)); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/WaitingPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/WaitingPieceState.java similarity index 76% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/WaitingPieceState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/WaitingPieceState.java index a22197f1..8aff30a8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/choosePieceState/WaitingPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/WaitingPieceState.java @@ -1,13 +1,16 @@ -package pp.mdga.client.gameState.turnState.choosePieceState; +package pp.mdga.client.gamestate.turnstate.choosepiecestate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.turnState.ChoosePieceState; +import pp.mdga.client.gamestate.turnstate.ChoosePieceState; import pp.mdga.game.Piece; import pp.mdga.game.PieceState; import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.message.server.MoveMessage; +import java.util.ArrayList; +import java.util.List; + public class WaitingPieceState extends ChoosePieceStates { private final ChoosePieceState parent; @@ -29,8 +32,10 @@ public void exit() { @Override public void selectPiece(Piece piece){ + ArrayList pieces = new ArrayList<>(); if(moveablePiece.equals(piece)){ - logic.send(new SelectedPiecesMessage(piece.getUuid())); + pieces.add(piece); + logic.send(new SelectedPiecesMessage(pieces)); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/ChoosePowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java similarity index 74% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/ChoosePowerCardState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java index 54754e44..4f9720ba 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/ChoosePowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java @@ -1,14 +1,15 @@ -package pp.mdga.client.gameState.turnState.powerCardState; +package pp.mdga.client.gamestate.turnstate.powercardstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.turnState.PowerCardState; +import pp.mdga.client.gamestate.turnstate.PowerCardState; import pp.mdga.game.BonusCard; +import pp.mdga.game.card.*; import pp.mdga.message.client.NoPowerCardMessage; import pp.mdga.message.client.SelectCardMessage; import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.PlayCardMessage; -import pp.mdga.message.server.PossibleCardMessage; +import pp.mdga.message.server.PossibleCardsMessage; import pp.mdga.message.server.PossiblePieceMessage; import pp.mdga.notification.SelectableCardsNotification; @@ -21,7 +22,7 @@ public class ChoosePowerCardState extends PowerCardStates { private final PowerCardState parent; - private ArrayList possibleCards; + private ArrayList possibleCards = new ArrayList<>(); /** * Constructor @@ -38,8 +39,6 @@ public ChoosePowerCardState(ClientState parent, ClientGameLogic logic) { */ @Override public void enter() { - possibleCards = new ArrayList<>(); - //TODO: logic.send(new RequestPossibleCardsMessage()); } /** @@ -47,7 +46,7 @@ public void enter() { */ @Override public void exit() { - possibleCards = null; + possibleCards = new ArrayList<>(); } /** @@ -55,9 +54,15 @@ public void exit() { * @param msg possible cards message */ @Override - public void received(PossibleCardMessage msg){ - possibleCards = (ArrayList) msg.getPossibleCards(); - logic.addNotification(new SelectableCardsNotification(possibleCards)); + public void received(PossibleCardsMessage msg){ + possibleCards = (ArrayList)msg.getPossibleCards(); + ArrayList possibleBonusCards = new ArrayList<>(); + for (PowerCard card : possibleCards) { + if (!possibleBonusCards.contains(card.getCard())) { + possibleBonusCards.add(card.getCard()); + } + } + logic.addNotification(new SelectableCardsNotification(possibleBonusCards)); } /** @@ -67,7 +72,7 @@ public void received(PossibleCardMessage msg){ @Override public void selectCard(BonusCard card){ if(card != null){ - logic.send(new SelectCardMessage(card)); + logic.send(new SelectCardMessage(logic.getGame().getPlayers().get(logic.getOwnPlayerId()).getPowerCardByType(card))); } else { logic.send(new NoPowerCardMessage()); } @@ -79,10 +84,9 @@ public void selectCard(BonusCard card){ */ @Override public void received(PlayCardMessage msg){ - if(msg.getCard().equals(BonusCard.TURBO)){ - logic.getGame().setDiceModifier(msg.getDiceModifier()); - } else { - LOGGER.log(System.Logger.Level.ERROR, "Received card that is not turbo"); + if(msg.getCard().getCard().equals(BonusCard.TURBO)){ + parent.getParent().getPlayPowerCard().setPlayCard(msg); + parent.getParent().setState(parent.getParent().getPlayPowerCard()); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/PowerCardStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/PowerCardStates.java similarity index 68% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/PowerCardStates.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/PowerCardStates.java index 753e5aa8..53482531 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/PowerCardStates.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/PowerCardStates.java @@ -1,8 +1,8 @@ -package pp.mdga.client.gameState.turnState.powerCardState; +package pp.mdga.client.gamestate.turnstate.powercardstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.turnState.TurnStates; +import pp.mdga.client.gamestate.turnstate.TurnStates; public abstract class PowerCardStates extends TurnStates { public PowerCardStates(ClientState parent, ClientGameLogic logic) { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/ShieldState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ShieldState.java similarity index 92% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/ShieldState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ShieldState.java index 26143674..87d64a44 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/ShieldState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ShieldState.java @@ -1,8 +1,8 @@ -package pp.mdga.client.gameState.turnState.powerCardState; +package pp.mdga.client.gamestate.turnstate.powercardstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.turnState.PowerCardState; +import pp.mdga.client.gamestate.turnstate.PowerCardState; import pp.mdga.game.Piece; import pp.mdga.message.client.RequestPlayCardMessage; import pp.mdga.message.server.PlayCardMessage; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/SwapState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/SwapState.java similarity index 95% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/SwapState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/SwapState.java index c907f66a..c499cb84 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gameState/turnState/powerCardState/SwapState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/SwapState.java @@ -1,8 +1,8 @@ -package pp.mdga.client.gameState.turnState.powerCardState; +package pp.mdga.client.gamestate.turnstate.powercardstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; -import pp.mdga.client.gameState.turnState.PowerCardState; +import pp.mdga.client.gamestate.turnstate.PowerCardState; import pp.mdga.game.Piece; import pp.mdga.message.client.RequestPlayCardMessage; import pp.mdga.message.server.PlayCardMessage; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/AudioSettingsState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/AudioSettingsState.java similarity index 89% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/AudioSettingsState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/AudioSettingsState.java index 63fa3fff..ed3065ca 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/AudioSettingsState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/AudioSettingsState.java @@ -1,4 +1,4 @@ -package pp.mdga.client.settingsState; +package pp.mdga.client.settingsstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/MainSettingsState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/MainSettingsState.java similarity index 89% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/MainSettingsState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/MainSettingsState.java index 5b1bde44..604757f6 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/MainSettingsState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/MainSettingsState.java @@ -1,4 +1,4 @@ -package pp.mdga.client.settingsState; +package pp.mdga.client.settingsstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/SettingStates.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/SettingStates.java similarity index 86% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/SettingStates.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/SettingStates.java index 2b9fb2ff..e82d37f5 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/SettingStates.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/SettingStates.java @@ -1,4 +1,4 @@ -package pp.mdga.client.settingsState; +package pp.mdga.client.settingsstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/VideoSettingsState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/VideoSettingsState.java similarity index 89% rename from Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/VideoSettingsState.java rename to Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/VideoSettingsState.java index 78b72f48..fe8c2946 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsState/VideoSettingsState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/settingsstate/VideoSettingsState.java @@ -1,4 +1,4 @@ -package pp.mdga.client.settingsState; +package pp.mdga.client.settingsstate; import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Board.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Board.java index b46ef62f..e18341ce 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Board.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Board.java @@ -2,31 +2,38 @@ import com.jme3.network.serializing.Serializable; -import java.util.HashMap; -import java.util.Map; - /** * This class will be used to hold all Board relevant data. */ @Serializable public class Board { - private Map playerData = new HashMap<>(); + /** + * The size of the board. + */ + public static final int BOARD_SIZE = 40; + + /** + * Create Board attributes. + */ private final Node[] infield; /** * This constructor is used to create a new board */ public Board() { - infield = new Node[40]; - for (int i = 0; i < 40; i++) { - if (i % 10 == 0) { - infield[i] = new StartNode( - i == 0 ? Color.AIRFORCE : - i == 10 ? Color.CYBER : - i == 20 ? Color.NAVY : - Color.ARMY - ); - } else if (i == 4 || i == 14 || i == 24 || i == 34) { + infield = new Node[BOARD_SIZE]; + initializeBoard(); + } + + /** + * Initializes the board by setting up the nodes. + * Start nodes, bonus nodes, and regular nodes are created based on their positions. + */ + private void initializeBoard() { + for (int i = 0; i < BOARD_SIZE; i++) { + if (isStartNode(i)) { + infield[i] = createStartNode(i); + } else if (isBonusNode(i)) { infield[i] = new BonusNode(); } else { infield[i] = new Node(null); @@ -35,23 +42,48 @@ public Board() { } /** - * This method will be used to add the given color and playerData parameters to the playerData attribute of - * Board class. + * Checks if the given index is a start node. * - * @param color as the color of the player as a Color enumeration. - * @param playerData as the playerData of the player as a PlayerData object. + * @param i the index to check + * @return true if the index is a start node, false otherwise */ - public void addPlayerData(Color color, PlayerData playerData) { - this.playerData.put(color, playerData); + private boolean isStartNode(int i) { + return i % 10 == 0; } /** - * This method returns the playerData + * Checks if the given index is a bonus node. * - * @return the playerData + * @param i the index to check + * @return true if the index is a bonus node, false otherwise */ - public Map getPlayerData() { - return playerData; + private boolean isBonusNode(int i) { + return i % 10 == 4; + } + + /** + * Creates a start node with the appropriate color based on the index. + * + * @param i the index of the start node + * @return a new StartNode with the corresponding color + */ + private StartNode createStartNode(int i) { + return new StartNode(Color.getColor(i)); + } + + /** + * This method returns the index of a specific piece on the board + * + * @param piece the piece to be searched for + * @return the index of the piece + */ + public int getInfieldIndexOfPiece(Piece piece) { + for (int i = 0; i < infield.length; i++) { + if (infield[i].getOccupant() == piece) { + return i; + } + } + return -1; } /** @@ -73,18 +105,8 @@ public void setPieceOnBoard(int index, Piece piece) { infield[index].setOccupant(piece); } - /** - * This method returns the index of a specific piece on the board - * - * @param piece the piece to be searched for - * @return the index of the piece - */ - public int getInfieldIndexOfPiece(Piece piece) { - for (int i = 0; i < infield.length; i++) { - if (infield[i].getOccupant() == piece) { - return i; - } - } - return -1; + @Override + public String toString() { + return "Default Board"; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusCard.java index cce4fd98..0a4d408e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusCard.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusCard.java @@ -1,8 +1,11 @@ package pp.mdga.game; +import com.jme3.network.serializing.Serializable; + /** * Enum representing the different types of bonus cards. */ +@Serializable public enum BonusCard { /** * The hidden bonus card. diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusNode.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusNode.java index 8ece5b1e..cfb1f89d 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusNode.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/BonusNode.java @@ -7,7 +7,10 @@ */ @Serializable public class BonusNode extends Node { - BonusNode(){ + /** + * Constructor. + */ + BonusNode() { super(null); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Color.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Color.java index 76d4e17b..0fd652c8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Color.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Color.java @@ -3,8 +3,8 @@ import com.jme3.network.serializing.Serializable; /** - * This enumeration will be used to show the four different TSK which can be picked from a player. - * In Addition, the NONE color will be used to show a none color. + * This enumeration represents the four different TSK colors that a player can choose. + * Additionally, the NONE color indicates the absence of a color. */ @Serializable public enum Color { @@ -58,4 +58,19 @@ public Color next() { return colors[nextIndex]; } + + /** + * This method will be used to return the color of the given index. + * + * @param i as the index of the color as an Integer. + * @return a Color enumeration. + */ + public static Color getColor(int i) { + for (Color color : Color.values()) { + if (color.ordinal() == i) { + return color; + } + } + return null; + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Die.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Die.java index fc013d75..c3b99cf5 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Die.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Die.java @@ -1,7 +1,5 @@ package pp.mdga.game; -import java.util.ArrayList; -import java.util.Arrays; import java.util.Iterator; import java.util.random.RandomGenerator; import java.util.random.RandomGeneratorFactory; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java index 9f0cee8f..bd7667d4 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java @@ -1,9 +1,14 @@ package pp.mdga.game; +import pp.mdga.game.card.PowerCard; +import pp.mdga.game.card.ShieldCard; +import pp.mdga.game.card.SwapCard; +import pp.mdga.game.card.TurboCard; + import java.util.*; /** - * The Game class represents the game state of the Ludo game. + * The Game class represents the game state of the game. * It contains all the information needed to play the game. * The game state is updated by the game logic. */ @@ -14,57 +19,108 @@ public class Game { public static final int AMOUNT_OF_TURBO_CARDS = 16; /** - * The number of shield and swap cards available in the game. + * The number of shield cards available in the game. */ - public static final int AMOUNT_OF_SHIELD_AND_SWAP_CARDS = 12; + public static final int AMOUNT_OF_SHIELD_CARDS = 12; - // The modifier applied to the dice roll. - private int diceModifier = 1; + /** + * The number of swap cards available in the game. + */ + public static final int AMOUNT_OF_SWAP_CARDS = 12; - // The number of eyes shown on the dice. - private int diceEyes; - - // A map of player IDs to Player objects. + /** + * A map of player IDs to Player objects. + */ private Map players = new HashMap<>(); - // The statistics of the game. + /** + * The statistics of the game. + */ private Statistic gameStatistics; - // The pile of bonus cards available for drawing. - private List drawPile; + /** + * The pile of bonus cards available for drawing. + */ + private List drawPile = new ArrayList<>(); - // The pile of bonus cards that have been discarded. - private List discardPile = new ArrayList<>(); + /** + * The pile of bonus cards that have been discarded. + */ + private List discardPile = new ArrayList<>(); - // The game board. + /** + * The game board. + */ private Board board; - // The die used in the game. + /** + * The die used in the game. + */ private Die die; - // The host of this game + /** + * The host of this game + */ private int host = -1; - // The color of the active player. + /** + * The color of the active player. + */ private Color activeColor; + /** + * The dice modifier. + */ + private int diceModifier; + + /** + * The number of eyes on the dice. + */ + private int diceEyes; + /** * This constructor creates a new Game object. */ public Game() { gameStatistics = new Statistic(); - drawPile = new ArrayList<>(); - for (int i = 0; i < AMOUNT_OF_TURBO_CARDS; i++) { - drawPile.add(BonusCard.TURBO); - } - for (int i = 0; i < AMOUNT_OF_SHIELD_AND_SWAP_CARDS; i++) { - drawPile.add(BonusCard.SWAP); - drawPile.add(BonusCard.SHIELD); - } + initializeDrawPile(); board = new Board(); die = new Die(); } + /** + * This method initializes the draw pile with the predefined number of bonus cards. + */ + private void initializeDrawPile() { +// this.addBonusCards(new TurboCard(), AMOUNT_OF_TURBO_CARDS); + this.addBonusCards(new SwapCard(), AMOUNT_OF_SWAP_CARDS); +// this.addBonusCards(new ShieldCard(), AMOUNT_OF_SHIELD_CARDS); + Collections.shuffle(this.drawPile); + } + + /** + * This method will be used to remove the first card of the drawPile attribute of Game class. + * + * @return first card as a PowerCard enumeration. + */ + public PowerCard draw() { + if (!this.drawPile.isEmpty()) { + return this.drawPile.remove(0); + } + + return null; + } + + /** + * This method adds a number of bonus cards to the draw pile. + * + * @param card the card to add + * @param count the number of cards to add + */ + private void addBonusCards(PowerCard card, int count) { + drawPile.addAll(Collections.nCopies(count, card)); + } + /** * This method adds a player to the game. * @@ -99,7 +155,7 @@ public void updatePlayerActiveState(int id, boolean active) { * If yes it will return true, otherwise false. * * @param color as the color which should be checked if taken as a Color enumeration. - * @return true or false. + * @return true or false. */ public boolean isColorTaken(Color color) { for (Map.Entry entry : this.players.entrySet()) { @@ -152,6 +208,15 @@ public Player getPlayerByColor(Color color) { return null; } + /** + * This method will be used to return all connected players as a list. + * + * @return players as a List of Player objects. + */ + public List getPlayersAsList() { + return new ArrayList<>(this.players.values()); + } + /** * This method will be used to return the id of the active player depending on the activeColor attribute of Game * class. @@ -166,7 +231,7 @@ public int getActivePlayerId() { * This method will be used to return the id of the Player defined by the given color parameter. * * @param color as the color of the player as a Color enumeration. - * @return the id of the player as an Integer. + * @return the id of the player as an Integer. */ public int getPlayerIdByColor(Color color) { for (Map.Entry entry : this.players.entrySet()) { @@ -216,8 +281,8 @@ public boolean areAllReady() { * @return the piece specified by the UUID */ public Piece getPieceThroughUUID(UUID pieceId) { - for (var playerData : board.getPlayerData().values()) { - for (var piece : playerData.getPieces()) { + for (var player : this.getPlayers().values()) { + for (var piece : player.getPieces()) { if (piece.getUuid().equals(pieceId)) { return piece; } @@ -235,24 +300,6 @@ public boolean isHost() { return this.host != -1; } - /** - * This method returns the dice modifier. - * - * @return the dice modifier - */ - public int getDiceModifier() { - return diceModifier; - } - - /** - * This method returns the dice eyes. - * - * @return the dice eyes - */ - public int getDiceEyes() { - return diceEyes; - } - /** * This method returns the players. * @@ -272,21 +319,21 @@ public Statistic getGameStatistics() { } /** - * This method returns the draw pile. + * This method will be used to return drawPile attribute of Game class. * - * @return the draw pile + * @return drawPile as a List of PowerCard objects. */ - public List getDrawPile() { - return drawPile; + public List getDrawPile() { + return this.drawPile; } /** - * This method returns the discard pile. + * This method will be used to return discardPile attribute of Game class. * - * @return the discard pile + * @return discardPile as a List of PowerCard objects. */ - public List getDiscardPile() { - return discardPile; + public List getDiscardPile() { + return this.discardPile; } /** @@ -325,24 +372,6 @@ public int getHost() { return this.host; } - /** - * This method sets the dice modifier. - * - * @param diceModifier the new dice modifier - */ - public void setDiceModifier(int diceModifier) { - this.diceModifier = diceModifier; - } - - /** - * This method sets the dice eyes. - * - * @param diceEyes the new dice eyes - */ - public void setDiceEyes(int diceEyes) { - this.diceEyes = diceEyes; - } - /** * This method sets the players. * @@ -362,20 +391,22 @@ public void setGameStatistics(Statistic gameStatistics) { } /** - * This method sets the draw pile. + * This method will be used to set drawPile attribute of Game class to the given discardPile parameter. + * It will be used to test cases. * - * @param drawPile the new draw pile + * @param drawPile the new value of drawPile attribute as a List of PowerCards. */ - public void setDrawPile(List drawPile) { + public void setDrawPile(List drawPile) { this.drawPile = drawPile; } /** - * This method sets the discard pile. + * This method will be used to set discardPile attribute of Game class to the given discardPile parameter. + * It will be used to test cases. * - * @param discardPile the new discard pile + * @param discardPile the new value of discardPile attribute as a List of PowerCards. */ - public void setDiscardPile(List discardPile) { + public void setDiscardPile(List discardPile) { this.discardPile = discardPile; } @@ -414,4 +445,40 @@ public void setDie(Die die) { public void setHost(int host) { this.host = host; } + + /** + * This method will be used to get the dice eyes. + * + * @return the dice eyes + */ + public int getDiceEyes() { + return diceEyes; + } + + /** + * This method is used to get the dice modifier. + * + * @return the dice modifier + */ + public int getDiceModifier() { + return diceModifier; + } + + /** + * This method will be used to set the dice eyes. + * + * @param diceEyes the new dice eyes + */ + public void setDiceEyes(int diceEyes) { + this.diceEyes = diceEyes; + } + + /** + * This method is used to set the dice modifier. + * + * @param diceModifier the new dice modifier + */ + public void setDiceModifier(int diceModifier) { + this.diceModifier = diceModifier; + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/HomeNode.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/HomeNode.java index cb373011..f9d9b88f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/HomeNode.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/HomeNode.java @@ -7,6 +7,9 @@ */ @Serializable public class HomeNode extends Node { + /** + * Constructor. + */ public HomeNode() { super(null); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java index 921ea970..62180b61 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java @@ -3,22 +3,33 @@ import com.jme3.network.serializing.Serializable; /** - * This class will be used the represent a Node on which the pieces can travel along + * Represents a node on the board. */ @Serializable public class Node { + /** + * The occupant of the node. + */ protected Piece occupant; - public Node(Piece piece){ + /** + * This constructor is used to create a new node object with a given occupant. + * + * @param piece as the occupant of the node. + */ + public Node(Piece piece) { occupant = piece; } - private Node(){ + /** + * This constructor is used to create a new node object with a default occupant. + */ + private Node() { occupant = new Piece(Color.AIRFORCE, PieceState.WAITING); } /** - * This method is used to get an occupant of the Node. + * This method is used to get an occupant of the node. * * @return the current occupant of the node */ @@ -27,7 +38,7 @@ public Piece getOccupant() { } /** - * This method is used to set a new Occupant + * This method is used to set a new occupant * * @param occupant the new occupant of the node */ @@ -58,9 +69,9 @@ public boolean isOccupied() { * This method will be used to check if the node is occupied by a piece of the given color. * * @param color as the color of the piece as a Color object. - * @return true or false. + * @return true or false. */ public boolean isOccupied(Color color) { - return this.occupant != null && this.occupant.getColor() == color; + return isOccupied() && this.occupant.getColor() == color; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Piece.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Piece.java index 8ddb376c..d3eecd65 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Piece.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Piece.java @@ -51,74 +51,117 @@ private Piece() { } /** - * This method is used to get the color of the piece + * Sets the shield state of the piece. * - * @return the color of the piece + * @param shield the new shield state */ public void setShield(ShieldState shield) { this.shield = shield; } /** - * This method is used to get the color of the piece + * Gets the shield state of the piece. * - * @return the color of the piece + * @return the shield state */ public ShieldState getShield() { return shield; } /** - * This method is used to get the color of the piece + * Sets the state of the piece. * - * @param state the state of the piece + * @param state the new state */ public void setState(PieceState state) { this.state = state; } /** - * This method is used to get the color of the piece + * Gets the state of the piece. * - * @return the color of the piece + * @return the state */ public PieceState getState() { return state; } /** - * This method is used to get the color of the piece + * Checks if the piece is shielded. * - * @return the color of the piece + * @return true if the piece is shielded, false otherwise */ public boolean isShielded() { return shield == ShieldState.ACTIVE; } /** - * This method is used to get the color of the piece + * Checks if the shield of a piece is suppressed. * - * @return the color of the piece + * @return true if the shield is suppressed, false otherwise */ public boolean isSuppressed() { return shield == ShieldState.SUPPRESSED; } /** - * This method is used to get the color of the piece + * Gets the color of the piece. * - * @return the color of the piece + * @return the color */ public Color getColor() { return color; } /** - * This method is used to get the color of the piece + * Gets the unique identifier of the piece. * - * @return the color of the piece + * @return the UUID */ public UUID getUuid() { return uuid; } + + /** + * This method will return all necessary information of Piece class in a more readable way. + * + * @return information as a String. + */ + @Override + public String toString() { + return "Piece with UUID: %s and color: %s with state: %s".formatted(this.uuid, color, state); + } + + /** + * This method will be used to create the hash code of this Piece class. + * + * @return hashCode as an Integer. + */ + @Override + public int hashCode() { + return this.uuid.hashCode(); + } + + /** + * This method will be used to check if the given obj parameter is equal to this object. + * It will return false if the obj parameter is null or if the hash codes of both objects are not equal. Otherwise + * it will return true. + * + * @param obj as the object which will be compared as an Object. + * @return true or false. + */ + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + + if (obj instanceof Piece) { + Piece piece = (Piece) obj; + + return this.hashCode() == piece.hashCode(); + } + + return false; + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/PieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/PieceState.java index 3c66f677..745e73d6 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/PieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/PieceState.java @@ -22,5 +22,5 @@ public enum PieceState { /** * The piece is finished. */ - HOMEFINISHED; + HOMEFINISHED } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java index baa88d6f..16a181d9 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java @@ -2,11 +2,12 @@ import com.jme3.network.serializing.Serializable; import pp.mdga.Resources; +import pp.mdga.game.card.PowerCard; import java.util.ArrayList; /** - * This class will be used to handle general PlayerData + * This class represents a player in the game. */ @Serializable public class Player { @@ -23,7 +24,7 @@ public class Player { /** * The hand cards of the player. */ - private ArrayList handCards = new ArrayList<>(); + private ArrayList handCards = new ArrayList<>(); /** * The color of the player. @@ -44,10 +45,29 @@ public class Player { * Node and piece attributes */ private int startNodeIndex = -1; + + /** + * The home nodes of the player. + */ private HomeNode[] homeNodes = new HomeNode[Resources.MAX_PIECES]; + + /** + * The waiting area of the player. + */ private Piece[] waitingArea = new Piece[Resources.MAX_PIECES]; + + /** + * The pieces of the player. + */ private Piece[] pieces = new Piece[Resources.MAX_PIECES]; + /** + * Constructor. + */ + public Player() { + this(""); + } + /** * This constructor constructs a new Player object * @@ -57,13 +77,6 @@ public Player(String name) { this.name = name; } - /** - * Constructor. - */ - public Player() { - this(""); - } - /** * This method will be used to initialize all nodes and pieces of the Player class. */ @@ -73,6 +86,7 @@ public void initialize() { this.pieces[index] = new Piece(this.color, PieceState.WAITING); this.waitingArea[index] = this.pieces[index]; } + startNodeIndex = color.ordinal() * 10; } /** @@ -80,22 +94,17 @@ public void initialize() { * * @param card the card to be added to the players hand */ - public void addHandCard(BonusCard card) { - handCards.add(card); + public void addHandCard(PowerCard card) { + this.handCards.add(card); } /** - * This method returns a BonusCard to be removed from the players hand. + * This method will be used to remove the given card parameter from the handCards attribute of Player card. * - * @param card the cards type to be removed - * @return the removed card or null if there is none of that card type + * @param card as the card which should be removed from the handCards attribute as a PowerCard object. */ - public BonusCard removeHandCard(BonusCard card) { - BonusCard cardToRemove = handCards.stream().filter(c -> c.equals(card)).findFirst().orElse(null); - if (cardToRemove != null) { - handCards.remove(cardToRemove); - } - return cardToRemove; + public void removeHandCard(PowerCard card) { + this.handCards.remove(card); } /** @@ -120,7 +129,27 @@ public void addWaitingPiece(Piece piece) { * @return true or false. */ public boolean isFinished() { - return false; + for (int i = 0; i < Resources.MAX_PIECES; i++) { + if (this.pieces[i].getState() != PieceState.HOMEFINISHED) { + return false; + } + } + return true; + } + + /** + * This method returns a PowerCard based on its Type. + * + * @param bonusCard the card Type to be matched + * @return the first PowerCard of this type + */ + public PowerCard getPowerCardByType(BonusCard bonusCard) { + for (PowerCard card : this.handCards) { + if(card.getCard().equals(bonusCard)) { + return card; + } + } + return null; } /** @@ -142,12 +171,12 @@ public Statistic getPlayerStatistic() { } /** - * This method returns the current handCards of the player + * This method will be used to return handCards attribute of Player class. * - * @return the handCards of the player + * @return handCards as a List of PowerCard objects. */ - public ArrayList getHandCards() { - return handCards; + public ArrayList getHandCards() { + return this.handCards; } /** @@ -248,4 +277,24 @@ public void setReady(boolean ready) { public void setActive(boolean active) { this.active = active; } + + /** + * This method sets a piece at the given index in the home area + * + * @param index the index of the node + * @param piece the piece to be set at the given index + */ + public void setPieceInHome(int index, Piece piece) { + this.homeNodes[index].setOccupant(piece); + } + + /** + * The string representation of the player + * + * @return the string representation of the player + */ + @Override + public String toString() { + return "Player: " + name + " Color: " + color; + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/PlayerData.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/PlayerData.java deleted file mode 100644 index 809b9d66..00000000 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/PlayerData.java +++ /dev/null @@ -1,197 +0,0 @@ -package pp.mdga.game; - -import com.jme3.network.serializing.Serializable; -import pp.mdga.Resources; - -/** - * This class is used to represent PlayerData related to the board - */ -@Serializable -public class PlayerData { - /** - * An array of HomeNode objects representing the home nodes of the player. - */ - private HomeNode[] homeNodes; - - /** - * The index of the start node for the player. - */ - private int startNodeIndex; - - /** - * An array of Piece objects representing the waiting area of the player. - */ - private Piece[] waitingArea; - - /** - * An array of Piece objects representing all the pieces of the player. - */ - private Piece[] pieces; - - /** - * This constructor is used to create a new PlayerData object - * - * @param color the color of the player - */ - public PlayerData(Color color) { - homeNodes = new HomeNode[Resources.MAX_PIECES]; - pieces = new Piece[Resources.MAX_PIECES]; - waitingArea = new Piece[Resources.MAX_PIECES]; - for (int i = 0; i < Resources.MAX_PIECES; i++) { - homeNodes[i] = new HomeNode(); - pieces[i] = new Piece(color, PieceState.WAITING); - waitingArea[i] = pieces[i]; - } - } - - /** - * Constructor. - */ - private PlayerData() { - homeNodes = new HomeNode[Resources.MAX_PIECES]; - waitingArea = new Piece[Resources.MAX_PIECES]; - pieces = new Piece[Resources.MAX_PIECES]; - } - - /** - * This method will be used to check if the player is finished. - * ToDo: Currently return always false. Implement logic! - * - * @return true or false. - */ - public boolean isFinished() { - return false; - } - - /** - * This method returns an Array of HomeNodes - * - * @return the array of HomeNodes - */ - public Node[] getHomeNodes() { - return homeNodes; - } - - /** - * This method returns the index of the StartNode - * - * @return the index of the StartNode - */ - public int getStartNodeIndex() { - return startNodeIndex; - } - - /** - * This method sets the index of the startNode. - * - * @param startNodeIndex the integer index of the startNode - */ - public void setStartNodeIndex(int startNodeIndex) { - this.startNodeIndex = startNodeIndex; - } - - /** - * This method returns an array pieces representing the waiting area. - * - * @return the waiting area - */ - public Piece[] getWaitingArea() { - return waitingArea; - } - - /** - * This method returns an array of pieces with all the players pieces - * - * @return the array of pieces - */ - public Piece[] getPieces() { - return pieces; - } - - /** - * This method adds a piece to the waiting area - * - * @param piece the piece to be added to the waiting area - */ - public void addWaitingPiece(Piece piece) { - for (int i = 0; i < Resources.MAX_PIECES; i++) { - if (waitingArea[i] == null) { - waitingArea[i] = piece; - return; - } - } - } - - /** - * This method removes a piece from the waiting area - * - * @return the piece that was removed from the waiting area - */ - public Piece removePieceFromWaitingArea() { - for (int i = 0; i < Resources.MAX_PIECES; i++) { - if (waitingArea[i] != null) { - Piece piece = waitingArea[i]; - waitingArea[i] = null; - return piece; - } - } - return null; - } - - /** - * This method sets a piece at the given index in the home area - * - * @param index the index of the node - * @param piece the piece to be set at the given index - */ - public void setPieceInHome(int index, Piece piece) { - homeNodes[index].setOccupant(piece); - } - - /** - * This method will be used to return if the given piece parameter is inside the homNodes attribute of PlayerData - * class. - * If yes it will return true, otherwise false. - * - * @return true or false. - */ - public boolean homeIncludes(Piece piece) { - for (Node node : this.homeNodes) { - if (node.getOccupant() == piece) { - return true; - } - } - - return false; - } - - /** - * This method will be used to return the index of the given piece parameter in the homeNodes attribute of - * PlayerData class. - * - * @return index as an Integer. - */ - public int getIndexInHome(Piece piece) { - for (int i = 0; i < Resources.MAX_PIECES; i++) { - if (homeNodes[i].getOccupant() == piece) { - return i; - } - } - return -1; - } - - /** - * This method will be usd to check if the waitingArea attribute of PlayerData class is empty. - * If yes it will return false, otherwise true. - * - * @return true or false. - */ - public boolean hasPieceInWaitingArea() { - for (Piece piece : waitingArea) { - if (piece != null) { - return true; - } - } - return false; - } -} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/ShieldState.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/ShieldState.java index 78eee486..6bff3f52 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/ShieldState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/ShieldState.java @@ -15,5 +15,5 @@ public enum ShieldState { /** * The shield is suppressed, when the piece is on a start node. */ - SUPPRESSED; + SUPPRESSED } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/StartNode.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/StartNode.java index c8c79264..0033738f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/StartNode.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/StartNode.java @@ -22,6 +22,9 @@ public StartNode(Color color) { this.color = color; } + /** + * Default constructor for serialization. + */ private StartNode() { super(null); color = Color.NONE; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Statistic.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Statistic.java index 5acd5d14..8751698a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Statistic.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Statistic.java @@ -68,7 +68,7 @@ public void setCardsPlayed(int cardsPlayed) { } /** - * This method returns the count of enemyPieces Thrown during the game. + * This method returns the count of enemyPieces thrown during the game. * * @return the count of enemyPieces thrown */ @@ -77,7 +77,7 @@ public int getPiecesThrown() { } /** - * This method sets the new count of enemyPieces Thrown + * This method sets the new count of enemyPieces thrown * * @param piecesThrown the new count of pieces thrown. */ @@ -165,28 +165,28 @@ public void increaseCardsPlayed() { } /** - * This method increases the value of cardsPlayed by 1. + * This method increases the value of piecesThrown by 1. */ public void increasePiecesThrown() { piecesThrown++; } /** - * This method increases the value of cardsPlayed by 1. + * This method increases the value of piecesBeingThrown by 1. */ public void increasePiecesBeingThrown() { piecesBeingThrown++; } /** - * This method increases the value of cardsPlayed by 1. + * This method increases the value of diced6 by 1. */ public void increaseDiced6() { diced6++; } /** - * This method increases the value of cardsPlayed by 1. + * This method increases the value of traveledNodes by 1. */ public void increaseTraveledNodes() { traveledNodes++; @@ -202,7 +202,7 @@ public void increaseTraveledNodes(int nodes) { } /** - * This method increases the value of cardsPlayed by 1. + * This method increases the value of activatedBonusNodes by 1. */ public void increaseActivatedBonusNodes() { activatedBonusNodes++; diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/card/HiddenCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/card/HiddenCard.java new file mode 100644 index 00000000..7be8ff18 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/card/HiddenCard.java @@ -0,0 +1,29 @@ +package pp.mdga.game.card; + +import com.jme3.network.serializing.Serializable; +import pp.mdga.game.BonusCard; +import pp.mdga.visitor.Visitor; + +/** + * This class represents the hidden power card of this application. + */ +@Serializable +public class HiddenCard extends PowerCard { + /** + * Constructor. + */ + public HiddenCard() { + this.card = BonusCard.HIDDEN; + } + + /** + * This method will be used to call the visit method of the given visitor parameter and pass a PowerCard object. + * + * @param visitor as the visitor which will differentiates between all types of power card types as a Visitor + * interface. + */ + @Override + public void accept(Visitor visitor) { + visitor.visit(this); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/card/PowerCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/card/PowerCard.java new file mode 100644 index 00000000..07e41387 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/card/PowerCard.java @@ -0,0 +1,86 @@ +package pp.mdga.game.card; + +import com.jme3.network.serializing.Serializable; +import pp.mdga.game.BonusCard; +import pp.mdga.visitor.Visitor; + +import java.util.UUID; + +/** + * This abstract class represents the abstract power class which will be used to realize a visitor pattern for all + * types of different cards inside the game. + */ +@Serializable +public abstract class PowerCard { + /** + * Create PowerCard attributes. + */ + private final UUID uuid = UUID.randomUUID(); + protected BonusCard card; + + /** + * Constructor. + */ + public PowerCard() { + this.card = BonusCard.HIDDEN; + } + + /** + * This method will be used to call the visit method of the given visitor parameter and pass a PowerCard object. + * + * @param visitor as the visitor which will differentiates between all types of power card types as a Visitor + * interface. + */ + public abstract void accept(Visitor visitor); + + /** + * This method will be used to return uuid attribute of abstract PowerCard class. + * + * @return uuid as a UUID object. + */ + public UUID getUuid() { + return this.uuid; + } + + /** + * This method will be used to return card attribute of abstract PowerCard class. + * + * @return card as a BonusCard enumeration. + */ + public BonusCard getCard() { + return this.card; + } + + /** + * This method will be used to create the hash code of this abstract PowerCard class. + * + * @return hashCode as an Integer. + */ + @Override + public int hashCode() { + return this.uuid.hashCode(); + } + + /** + * This method will be used to check if the given obj parameter is equal to this object. + * It will return false if the obj parameter is null or if the hash codes of both objects are not equal. Otherwise + * it will return true. + * + * @param obj as the object which will be compared as an Object. + * @return true or false. + */ + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + + if (obj instanceof PowerCard) { + PowerCard card = (PowerCard) obj; + + return this.hashCode() == card.hashCode(); + } + + return false; + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/card/ShieldCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/card/ShieldCard.java new file mode 100644 index 00000000..07d9afa7 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/card/ShieldCard.java @@ -0,0 +1,28 @@ +package pp.mdga.game.card; + +import com.jme3.network.serializing.Serializable; +import pp.mdga.game.BonusCard; +import pp.mdga.visitor.Visitor; + +/** + * This class represents the shield power card of this application. + */ +@Serializable +public class ShieldCard extends PowerCard { + /** + * Constructor. + */ + public ShieldCard() { + this.card = BonusCard.SHIELD; + } + /** + * This method will be used to call the visit method of the given visitor parameter and pass a PowerCard object. + * + * @param visitor as the visitor which will differentiates between all types of power card types as a Visitor + * interface. + */ + @Override + public void accept(Visitor visitor) { + visitor.visit(this); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/card/SwapCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/card/SwapCard.java new file mode 100644 index 00000000..a56abcd5 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/card/SwapCard.java @@ -0,0 +1,29 @@ +package pp.mdga.game.card; + +import com.jme3.network.serializing.Serializable; +import pp.mdga.game.BonusCard; +import pp.mdga.visitor.Visitor; + +/** + * This class represents the swap power card of this application. + */ +@Serializable +public class SwapCard extends PowerCard { + /** + * Constructor. + */ + public SwapCard() { + this.card = BonusCard.SWAP; + } + + /** + * This method will be used to call the visit method of the given visitor parameter and pass a PowerCard object. + * + * @param visitor as the visitor which will differentiates between all types of power card types as a Visitor + * interface. + */ + @Override + public void accept(Visitor visitor) { + visitor.visit(this); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/card/TurboCard.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/card/TurboCard.java new file mode 100644 index 00000000..fef87af5 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/card/TurboCard.java @@ -0,0 +1,29 @@ +package pp.mdga.game.card; + +import com.jme3.network.serializing.Serializable; +import pp.mdga.game.BonusCard; +import pp.mdga.visitor.Visitor; + +/** + * This class represents the turbo power card of this application. + */ +@Serializable +public class TurboCard extends PowerCard { + /** + * Constructor. + */ + public TurboCard() { + this.card = BonusCard.TURBO; + } + + /** + * This method will be used to call the visit method of the given visitor parameter and pass a PowerCard object. + * + * @param visitor as the visitor which will differentiates between all types of power card types as a Visitor + * interface. + */ + @Override + public void accept(Visitor visitor) { + visitor.visit(this); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/AnimationEndMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/AnimationEndMessage.java index ce605771..d2bf0e2d 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/AnimationEndMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/AnimationEndMessage.java @@ -14,16 +14,6 @@ public AnimationEndMessage() { super(); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "AnimationEnd{}"; - } - /** * Accepts a visitor for processing this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientInterpreter.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientInterpreter.java index 747c6262..9f8ef6d4 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientInterpreter.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientInterpreter.java @@ -21,17 +21,17 @@ public interface ClientInterpreter { void received(DeselectTSKMessage msg, int from); /** - * Processes a received ForceStartGame message. + * Processes a received StartGame message. * - * @param msg the ForceStartGame message to be processed + * @param msg the StartGame message to be processed * @param from the connection ID from which the message was received */ void received(StartGameMessage msg, int from); /** - * Processes a received JoinServer message. + * Processes a received JoinedLobby message. * - * @param msg the JoinServer message to be processed + * @param msg the JoinedLobby message to be processed * @param from the connection ID from which the message was received */ void received(JoinedLobbyMessage msg, int from); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientMessage.java index 35a22cf2..3773ef6c 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientMessage.java @@ -21,4 +21,8 @@ protected ClientMessage() { * @param from the connection ID of the sender */ public abstract void accept(ClientInterpreter interpreter, int from); + + public String toString() { + return getClass().getSimpleName() + "{}"; + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientStartGameMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientStartGameMessage.java index 3839a139..39a260e3 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientStartGameMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ClientStartGameMessage.java @@ -8,22 +8,12 @@ @Serializable public class ClientStartGameMessage extends ClientMessage { /** - * Constructs a new ClientStartGame instance. + * Constructor. */ public ClientStartGameMessage() { super(); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "ClientStartGame{}"; - } - /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/DisconnectedMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/DisconnectedMessage.java index ee85fae3..bd5ba2d0 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/DisconnectedMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/DisconnectedMessage.java @@ -3,24 +3,17 @@ import com.jme3.network.serializing.Serializable; /** - * + * A message sent by a client to indicate that it has disconnected. */ @Serializable public class DisconnectedMessage extends ClientMessage { + /** + * Constructs a new Disconnected message. + */ public DisconnectedMessage() { super(); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "ClientStartGame{}"; - } - /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ForceContinueGameMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ForceContinueGameMessage.java index e654ea77..393afba8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ForceContinueGameMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/ForceContinueGameMessage.java @@ -14,16 +14,6 @@ public ForceContinueGameMessage() { super(); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "ForceContinueGame{}"; - } - /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinedLobbyMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinedLobbyMessage.java index ab1a0524..c87704db 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinedLobbyMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/JoinedLobbyMessage.java @@ -7,7 +7,9 @@ */ @Serializable public class JoinedLobbyMessage extends ClientMessage { - + /** + * The name of the player that is joining the server. + */ private final String name; /** @@ -42,7 +44,7 @@ public String getName(){ */ @Override public String toString() { - return "JoinServer{}"; + return "JoinServer {" + "name=" + name + '}'; } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LeaveGameMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LeaveGameMessage.java index 48b2d324..3fb0b222 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LeaveGameMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LeaveGameMessage.java @@ -14,16 +14,6 @@ public LeaveGameMessage() { super(); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "LeaveGame{}"; - } - /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyNotReadyMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyNotReadyMessage.java index d0b966c8..4f8eedc7 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyNotReadyMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyNotReadyMessage.java @@ -14,16 +14,6 @@ public LobbyNotReadyMessage() { super(); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "LobbyNotReady{}"; - } - /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyReadyMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyReadyMessage.java index 47da4de6..73dbf408 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyReadyMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/LobbyReadyMessage.java @@ -14,16 +14,6 @@ public LobbyReadyMessage() { super(); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "LobbyReady{}"; - } - /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/NoPowerCardMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/NoPowerCardMessage.java index c37f5787..09d28423 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/NoPowerCardMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/NoPowerCardMessage.java @@ -14,16 +14,6 @@ public NoPowerCardMessage() { super(); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "NoPowerCard{}"; - } - /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestBriefingMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestBriefingMessage.java index b47694ba..c0ccd55d 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestBriefingMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestBriefingMessage.java @@ -14,16 +14,6 @@ public RequestBriefingMessage() { super(); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "RequestBriefing{}"; - } - /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestDieMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestDieMessage.java index 52e09924..5367499c 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestDieMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestDieMessage.java @@ -14,16 +14,6 @@ public RequestDieMessage() { super(); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "RequestDie{}"; - } - /** * Accepts a visitor to process this message. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestPlayCardMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestPlayCardMessage.java index 3b314cc9..f9cc057b 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestPlayCardMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/RequestPlayCardMessage.java @@ -20,12 +20,15 @@ public class RequestPlayCardMessage extends ClientMessage { */ private final UUID ownPieceIdentifier; + /** + * The identifier of the enemy piece. + */ private final UUID enemyPieceIdentifier; /** * Constructs a new RequestPlayCard instance. * - * @param card the bonus card to be played + * @param card the bonus card to be played * @param ownPieceIdentifier the identifier of the piece */ public RequestPlayCardMessage(BonusCard card, UUID ownPieceIdentifier, UUID enemyPieceIdentifier) { @@ -46,11 +49,11 @@ private RequestPlayCardMessage() { /** * Creates a new RequestPlayCard instance for a given bonus card. * - * @param ownPieceIdentifier the identifier of the piece + * @param ownPieceIdentifier the identifier of the piece * @param enemyPieceIdentifier the identifier of the enemy piece * @return a new RequestPlayCard instance */ - public static RequestPlayCardMessage requestPlaySwap(UUID ownPieceIdentifier, UUID enemyPieceIdentifier){ + public static RequestPlayCardMessage requestPlaySwap(UUID ownPieceIdentifier, UUID enemyPieceIdentifier) { return new RequestPlayCardMessage(BonusCard.SWAP, ownPieceIdentifier, enemyPieceIdentifier); } @@ -60,7 +63,7 @@ public static RequestPlayCardMessage requestPlaySwap(UUID ownPieceIdentifier, UU * @param ownPieceIdentifier the identifier of the piece * @return a new RequestPlayCard instance */ - public static RequestPlayCardMessage requestPlayShield(UUID ownPieceIdentifier){ + public static RequestPlayCardMessage requestPlayShield(UUID ownPieceIdentifier) { return new RequestPlayCardMessage(BonusCard.SHIELD, ownPieceIdentifier, null); } @@ -98,7 +101,8 @@ public UUID getEnemyPieceIdentifier() { */ @Override public String toString() { - return "RequestPlayCard={card=" + card.toString() + '}'; + assert card != null; + return "RequestPlayCard={card=" + card + '}'; } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectCardMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectCardMessage.java index edf6804d..53389d30 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectCardMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectCardMessage.java @@ -2,6 +2,7 @@ import com.jme3.network.serializing.Serializable; import pp.mdga.game.BonusCard; +import pp.mdga.game.card.PowerCard; /** * A message sent from the client to the server to select a bonus card. @@ -11,14 +12,14 @@ public class SelectCardMessage extends ClientMessage { /** * The bonus card to be selected. */ - private final BonusCard card; + private final PowerCard card; /** * Constructs a new SelectCard instance. * - * @param card the bonus card to be selected + * @param card the power card to be selected */ - public SelectCardMessage(BonusCard card) { + public SelectCardMessage(PowerCard card) { this.card = card; } @@ -30,11 +31,11 @@ private SelectCardMessage() { } /** - * Gets the bonus card associated with this selection. + * Gets the power card associated with this selection. * - * @return the bonus card + * @return the power card */ - public BonusCard getCard() { + public PowerCard getCard() { return card; } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectTSKMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectTSKMessage.java index 846d8c4f..176f1dc5 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectTSKMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectTSKMessage.java @@ -29,6 +29,11 @@ private SelectTSKMessage() { color = null; } + /** + * Gets the color associated with the TSK to be selected. + * + * @return the color associated with the TSK to be selected + */ public Color getColor() { return color; } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectedPiecesMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectedPiecesMessage.java index 210b38d2..b243873c 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectedPiecesMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/SelectedPiecesMessage.java @@ -1,8 +1,10 @@ package pp.mdga.message.client; import com.jme3.network.serializing.Serializable; +import pp.mdga.game.Piece; -import java.util.UUID; +import java.util.ArrayList; +import java.util.List; /** * A message sent by a client to indicate that a piece has been selected for a bonus cards. @@ -10,43 +12,24 @@ @Serializable public class SelectedPiecesMessage extends ClientMessage { /** - * The piece identifier. + * Create SelectedPiecesMessage attributes. */ - private final UUID pieceIdentifier; + private final List pieces; + + /** + * Constructor. + */ + private SelectedPiecesMessage() { + this.pieces = new ArrayList<>(); + } /** * Constructor for SelectedPieces * - * @param pieceIdentifier the piece identifier + * @param pieces the piece identifier */ - public SelectedPiecesMessage(UUID pieceIdentifier) { - this.pieceIdentifier = pieceIdentifier; - } - - /** - * Default constructor for serialization purposes. - */ - private SelectedPiecesMessage() { - pieceIdentifier = null; - } - - /** - * Getter for the piece identifier - * - * @return the piece identifier - */ - public UUID getPieceIdentifier() { - return pieceIdentifier; - } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "SelectedPieces{pieceIdentifier=" + pieceIdentifier + '}'; + public SelectedPiecesMessage(List pieces) { + this.pieces = pieces; } /** @@ -59,4 +42,30 @@ public String toString() { public void accept(ClientInterpreter interpreter, int from) { interpreter.received(this, from); } + + /** + * This method will be used to return pieces of SelectedPiecesMessage class. + * + * @return pieces as a List of Piece objects. + */ + public List getPieces() { + return pieces; + } + + /** + * Returns a string representation of this message. + * + * @return a string representation of this message + */ + @Override + public String toString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("SelectedPieces{Number of pieces: ").append(this.pieces.size()).append(" | "); + for (Piece piece : this.pieces) { + stringBuilder.append(piece).append(", "); + } + stringBuilder.deleteCharAt(stringBuilder.length() - 1); + stringBuilder.deleteCharAt(stringBuilder.length() - 1); + return stringBuilder.toString(); + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/StartGameMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/StartGameMessage.java index 4436225d..0327137b 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/client/StartGameMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/client/StartGameMessage.java @@ -7,39 +7,11 @@ */ @Serializable public class StartGameMessage extends ClientMessage { - - private final boolean forceStartGame; - - public StartGameMessage(boolean forceStartGame){ + /** + * Constructor. + */ + public StartGameMessage() { super(); - this.forceStartGame = forceStartGame; - } - - /** - * Constructs a new ForceStartGame message. - */ - private StartGameMessage() { - super(); - forceStartGame = false; - } - - /** - * Gets whether the game should be force started. - * - * @return whether the game should be force started - */ - public boolean isForceStartGame() { - return forceStartGame; - } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "ForceStartGame{}"; } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ActivePlayerMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ActivePlayerMessage.java index 3c7e8961..01440aeb 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ActivePlayerMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ActivePlayerMessage.java @@ -58,14 +58,4 @@ public void accept(ServerInterpreter interpreter) { public String toString() { return "ActivePlayer{color=" + color + '}'; } - - /** - * Returns the key for the informational text associated with this message. - * - * @return the key for the informational text - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/AnyPieceMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/AnyPieceMessage.java index a1780318..68fe30f2 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/AnyPieceMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/AnyPieceMessage.java @@ -61,14 +61,4 @@ public void accept(ServerInterpreter interpreter) { public String toString() { return "AnyPiece{piece=" + piece + '}'; } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/BriefingMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/BriefingMessage.java index 1f077d61..509a834b 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/BriefingMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/BriefingMessage.java @@ -23,24 +23,4 @@ public BriefingMessage() { public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/CeremonyMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/CeremonyMessage.java index 10197038..60a14301 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/CeremonyMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/CeremonyMessage.java @@ -23,24 +23,4 @@ public CeremonyMessage() { public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceAgainMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceAgainMessage.java index 09d57ffb..b8e5a935 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceAgainMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceAgainMessage.java @@ -23,24 +23,4 @@ public DiceAgainMessage() { public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceNowMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceNowMessage.java index 7a31fa38..ee230a0e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceNowMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DiceNowMessage.java @@ -23,24 +23,4 @@ public DiceNowMessage() { public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DieMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DieMessage.java index abf018a9..9d9c8708 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DieMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/DieMessage.java @@ -17,7 +17,7 @@ public class DieMessage extends ServerMessage { /** * Constructor for Dice * - * @param diceEye the eye of the dice + * @param diceEye the eye of the dice */ public DieMessage(int diceEye) { super(); @@ -57,16 +57,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "DieMessage{" + "diceEye=" + diceEye + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/EndOfTurnMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/EndOfTurnMessage.java index 10dabd02..dcb2f30a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/EndOfTurnMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/EndOfTurnMessage.java @@ -23,24 +23,4 @@ public EndOfTurnMessage() { public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/IncorrectRequestMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/IncorrectRequestMessage.java index df51705b..79fe528e 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/IncorrectRequestMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/IncorrectRequestMessage.java @@ -15,6 +15,7 @@ public class IncorrectRequestMessage extends ServerMessage { * @param id as the id of the error message as an Integer. */ public IncorrectRequestMessage(int id) { + super(); this.id = id; } @@ -22,9 +23,19 @@ public IncorrectRequestMessage(int id) { * Constructor. */ public IncorrectRequestMessage() { + super(); this.id = 0; } + /** + * Returns the id of the incorrect request message + * + * @return the id of the error message + */ + public int getId(){ + return id; + } + /** * Accepts a visitor to process this message. * @@ -35,17 +46,6 @@ public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - /** - * Gets the bundle key of the informational text to be shown at the client. - * This key is used to retrieve the appropriate localized text for display. - * - * @return the bundle key of the informational text - */ - @Override - public String getInfoTextKey() { - return ""; - } - /** * This method will be used to return necessary class information in a more readable format. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyAcceptMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyAcceptMessage.java index fbaf7c56..3e8f18cc 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyAcceptMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyAcceptMessage.java @@ -39,7 +39,6 @@ public int getHost() { return this.host; } - /** * Accepts a visitor to process this message. * @@ -51,22 +50,12 @@ public void accept(ServerInterpreter interpreter) { } /** - * Returns a string representation of this message. + * This method will be used to return necessary class information in a more readable format. * - * @return a string representation of this message + * @return information as a String. */ @Override public String toString() { - return "Lobby Accept"; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "LobbyAcceptMessage with host: %d".formatted(this.host); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyDenyMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyDenyMessage.java index ea5299ee..5f63bf40 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyDenyMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyDenyMessage.java @@ -23,24 +23,4 @@ public LobbyDenyMessage() { public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return "LobbyDeny"; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerJoinedMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerJoinedMessage.java index fdc5ede4..edcc421f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerJoinedMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerJoinedMessage.java @@ -42,6 +42,7 @@ public LobbyPlayerJoinedMessage(int id, Player player, boolean host) { * Default constructor for serialization purposes. */ private LobbyPlayerJoinedMessage() { + super(); player = null; id = 0; host = false; @@ -61,7 +62,7 @@ public Player getPlayer() { * * @return the id of the player */ - public int getId(){ + public int getId() { return id; } @@ -79,23 +80,8 @@ public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "LobbyPlayerJoinedMessage{" + "player=" + player + ", id=" + id + ", host=" + host + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerLeaveMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerLeaveMessage.java index 328e3242..3c6bbba2 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerLeaveMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/LobbyPlayerLeaveMessage.java @@ -16,7 +16,7 @@ public class LobbyPlayerLeaveMessage extends ServerMessage { /** * Constructs a new LobbyPlayerLeave instance with the specified player name and color. * - * @param id the id of the player leaving the lobby. + * @param id the id of the player leaving the lobby. */ public LobbyPlayerLeaveMessage(int id) { super(); @@ -27,6 +27,7 @@ public LobbyPlayerLeaveMessage(int id) { * Default constructor for serialization purposes. */ private LobbyPlayerLeaveMessage() { + super(); id = 0; } @@ -56,16 +57,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "LobbyPlayerLeaveMessage{" + "id=" + id + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java index 4d4f6604..769a8152 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/MoveMessage.java @@ -40,6 +40,7 @@ public MoveMessage(UUID identifier, boolean isHomeMove, int targetIndex) { * Default constructor for serialization purposes. */ private MoveMessage() { + super(); pieceUUID = null; targetIndex = 0; isHomeMove = false; @@ -59,7 +60,7 @@ public UUID getIdentifier() { * * @return the target index */ - public int getTargetIndex(){ + public int getTargetIndex() { return targetIndex; } @@ -68,7 +69,7 @@ public int getTargetIndex(){ * * @return the boolean isHomeMove. */ - public boolean isHomeMove(){ + public boolean isHomeMove() { return isHomeMove; } @@ -89,16 +90,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "MoveMessage{" + "pieceUUID=" + pieceUUID + ", targetIndex=" + targetIndex + ", isHomeMove=" + isHomeMove + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/NoTurnMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/NoTurnMessage.java index 8240b2b7..3dac4548 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/NoTurnMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/NoTurnMessage.java @@ -23,24 +23,4 @@ public NoTurnMessage() { public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PauseGameMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PauseGameMessage.java index 536a918f..1edafcda 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PauseGameMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PauseGameMessage.java @@ -7,7 +7,6 @@ */ @Serializable public class PauseGameMessage extends ServerMessage { - /** * the id of the player who has disconnected */ @@ -54,16 +53,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "PauseGameMessage{" + "playerId=" + playerId + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PlayCardMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PlayCardMessage.java index 159b96c2..0caf38c6 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PlayCardMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PlayCardMessage.java @@ -1,9 +1,11 @@ package pp.mdga.message.server; import com.jme3.network.serializing.Serializable; -import pp.mdga.game.BonusCard; +import pp.mdga.game.Piece; +import pp.mdga.game.card.PowerCard; -import java.util.UUID; +import java.util.ArrayList; +import java.util.List; /** * A message sent by the server to the active player to play a card. @@ -13,30 +15,29 @@ public class PlayCardMessage extends ServerMessage { /** * The card that should be played. */ - private final BonusCard card; + private final PowerCard card; /** - * The identifier of the piece that should be moved. + * The list of pieces which will be used. */ - private final UUID ownPieceID; - - private final UUID enemyPieceID; + private final List pieces; + /** + * The modifier of the dice. + */ private final int diceModifier; /** * Constructs a new PlayCard message. * - * @param card the card that should be played - * @param ownPieceID the identifier of the piece that should be moved - * @param enemyPieceID the identifier of the enemy piece that should be moved + * @param card the card that should be played + * @param pieces as the pieces which should be played as a List of Piece objects. * @param diceModifier the new modifier of the dice */ - public PlayCardMessage(BonusCard card, UUID ownPieceID, UUID enemyPieceID, int diceModifier) { + public PlayCardMessage(PowerCard card, List pieces, int diceModifier) { super(); this.card = card; - this.ownPieceID = ownPieceID; - this.enemyPieceID = enemyPieceID; + this.pieces = pieces; this.diceModifier = diceModifier; } @@ -44,77 +45,36 @@ public PlayCardMessage(BonusCard card, UUID ownPieceID, UUID enemyPieceID, int d * Default constructor for serialization purposes. */ private PlayCardMessage() { - ownPieceID = null; - card = null; - enemyPieceID = null; - diceModifier = 1; + super(); + this.card = null; + this.pieces = new ArrayList(); + this.diceModifier = 1; } /** - * Creates a new PlayCard message for the given card and piece identifier. + * This method will be used to return card attribute of PlayCardMessage class. * - * @param ownPieceID the identifier of the piece of the player that should be affected - * @param enemyPieceID the identifier of the enemy piece that should be affected - * @return a new PlayCard message + * @return card as a PowerCard object. */ - public static PlayCardMessage swap(UUID ownPieceID, UUID enemyPieceID) { - return new PlayCardMessage(BonusCard.SWAP, ownPieceID, enemyPieceID, 1); + public PowerCard getCard() { + return this.card; } /** - * Creates a new PlayCard message for the given card and piece identifier. + * This mehtod will be usd to return pieces attribute of PlayCardMessage class. * - * @param ownPieceID the identifier of the piece of the player that should be affected - * @return a new PlayCard message + * @return pieces as a List of Piece objects. */ - public static PlayCardMessage shield(UUID ownPieceID) { - return new PlayCardMessage(BonusCard.SHIELD, ownPieceID, null, 1); + public List getPieces() { + return this.pieces; } - /** - * creates a new PlayCardMessage for a turbo card - * - * @param diceModifier the new modifier of the dice - * @return newly constructed message - */ - public static PlayCardMessage turbo(int diceModifier){ - return new PlayCardMessage(BonusCard.TURBO, null, null, diceModifier); - } - - /** - * Returns the card that should be played. - * - * @return the card that should be played - */ - public BonusCard getCard() { - return card; - } - - /** - * Returns the identifier of the piece that should be moved. - * - * @return the identifier of the piece that should be moved - */ - public UUID getPieceIdentifier() { - return ownPieceID; - } - - /** - * Returns the identifier of the enemy piece that should be moved. - * - * @return the identifier of the enemy piece that should be moved - */ - public UUID getPieceIdentifierEnemy() { - return enemyPieceID; - } - - /** * this method returns the dice modifier * * @return the dice modifier as int */ - public int getDiceModifier(){ + public int getDiceModifier() { return diceModifier; } @@ -135,16 +95,15 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("PlayCardMessage{card: ").append(this.card).append(" with selected pieces: {"); + for (Piece piece : this.pieces) { + stringBuilder.append(piece).append(", "); + } + stringBuilder.deleteCharAt(stringBuilder.length() - 1); + stringBuilder.deleteCharAt(stringBuilder.length() - 1); + stringBuilder.append("} and dice modifier: ").append(this.diceModifier); - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return stringBuilder.toString(); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossibleCardMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossibleCardsMessage.java similarity index 55% rename from Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossibleCardMessage.java rename to Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossibleCardsMessage.java index bceea4d7..bfd9b440 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossibleCardMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossibleCardsMessage.java @@ -1,7 +1,7 @@ package pp.mdga.message.server; import com.jme3.network.serializing.Serializable; -import pp.mdga.game.BonusCard; +import pp.mdga.game.card.PowerCard; import java.util.ArrayList; import java.util.List; @@ -10,36 +10,36 @@ * A message sent by the server to the client to indicate the possible cards that can be chosen. */ @Serializable -public class PossibleCardMessage extends ServerMessage { +public class PossibleCardsMessage extends ServerMessage { /** * The list of possible cards. */ - private final List possibleCards; + private final List possibleCards; /** * Constructor for a PossibleCard instance. */ - public PossibleCardMessage() { + public PossibleCardsMessage() { super(); possibleCards = new ArrayList<>(); } /** - * Add a possible card to the list of possible cards + * Constructor. * - * @param card the possible card to add + * @param possibleCards as the list of possible power cards as a List of PowerCard objects. */ - public void addPossibleCard(BonusCard card) { - this.possibleCards.add(card); + public PossibleCardsMessage(List possibleCards) { + this.possibleCards = possibleCards; } /** - * Getter for the list of possible cards + * This method will be used to return possibleCards attribute of PossibleCardMessage class. * - * @return the list of possible cards + * @return possibleCards as a List of PowerCard objects. */ - public List getPossibleCards() { - return possibleCards; + public List getPossibleCards() { + return this.possibleCards; } /** @@ -59,16 +59,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "PossibleCardMessage{" + "possibleCards=" + possibleCards + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePieceMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePieceMessage.java index cc551388..504840a1 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePieceMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/PossiblePieceMessage.java @@ -33,7 +33,7 @@ public PossiblePieceMessage() { /** * Swap the possible pieces * - * @param possibleOwnPieces the list of possible own pieces + * @param possibleOwnPieces the list of possible own pieces * @param possibleEnemyPieces the list of possible enemy pieces * @return the swapped possible pieces */ @@ -50,7 +50,7 @@ public static PossiblePieceMessage swapPossiblePieces(ArrayList possibleOw * @param possibleOwnPieces the list of possible own pieces * @return the possible pieces for the shield */ - public static PossiblePieceMessage shieldPossiblePieces(ArrayList possibleOwnPieces){ + public static PossiblePieceMessage shieldPossiblePieces(ArrayList possibleOwnPieces) { PossiblePieceMessage possiblePieceMessage = new PossiblePieceMessage(); possiblePieceMessage.possibleOwnPieces.addAll(possibleOwnPieces); return possiblePieceMessage; @@ -74,14 +74,18 @@ public void addEnemyPossiblePiece(UUID piece) { this.possibleEnemyPieces.add(piece); } - /** Getter for the list of possible pieces + /** + * Getter for the list of possible pieces + * * @return the list of possible pieces */ public List getOwnPossiblePieces() { return possibleOwnPieces; } - /** Getter for the list of possible enemy pieces + /** + * Getter for the list of possible enemy pieces + * * @return the list of possible enemy pieces */ public List getEnemyPossiblePieces() { @@ -105,16 +109,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "PossiblePieceMessage{" + "possibleOwnPieces=" + possibleOwnPieces + ", possibleEnemyPieces=" + possibleEnemyPieces + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingResponseMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingResponseMessage.java index 3c8e263d..c0233ef8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingResponseMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingResponseMessage.java @@ -2,37 +2,45 @@ import com.jme3.network.serializing.Serializable; +import java.util.HashMap; +import java.util.Map; + /** * A message sent by the server to all client to inform them about the current ranking. (only in DetermineStartPlayer) */ @Serializable public class RankingResponseMessage extends ServerMessage { - - private final int startingPlayerId; - /** - * Constructs a new RankingResponse instance. + * Create RankingResponseMessage attributes. */ - public RankingResponseMessage(int startingPlayerId) { - super(); - this.startingPlayerId = startingPlayerId; - } + private final Map rankingResults; /** - * Constructs a new RankingResponse instance. + * Constructor. */ public RankingResponseMessage() { super(); - this.startingPlayerId = 0; + this.rankingResults = new HashMap(); } /** - * The id of the starting Player. + * Constructor. * - * @return the id of the starting player as an int + * @param rankingResults as the results of all players after the start player was determined as a Map combining + * Integers and Integers. */ - public int getStartingPlayerId() { - return startingPlayerId; + public RankingResponseMessage(Map rankingResults) { + super(); + this.rankingResults = rankingResults; + } + + /** + * This method will be used to return rankingResults attribute of RankingResponseMessage class. + * + * @return rankingResults as a Map combining Integers and Integers. + */ + public Map getRankingResults() { + return this.rankingResults; } /** @@ -52,16 +60,14 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("RankingResponseMessage{"); + for (Map.Entry entry : this.rankingResults.entrySet()) { + stringBuilder.append("Player with ID: ").append(entry.getKey()).append(" rolled: ").append(entry.getValue()).append(", "); + } + stringBuilder.deleteCharAt(stringBuilder.length() - 1); + stringBuilder.deleteCharAt(stringBuilder.length() - 1); + stringBuilder.append("}"); + return stringBuilder.toString(); } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingRollAgainMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingRollAgainMessage.java index f89df585..56d82cd3 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingRollAgainMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/RankingRollAgainMessage.java @@ -23,24 +23,4 @@ public RankingRollAgainMessage() { public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ReconnectBriefingMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ReconnectBriefingMessage.java index 4a1495e6..9e5aeb1f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ReconnectBriefingMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ReconnectBriefingMessage.java @@ -54,16 +54,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "ReconnectBriefingMessage{" + "game=" + game + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ResumeGameMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ResumeGameMessage.java index c95541c0..9e1f349b 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ResumeGameMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ResumeGameMessage.java @@ -23,24 +23,4 @@ public ResumeGameMessage() { public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - /** - * Returns a string representation of this message. - * - * @return a string representation of this message - */ - @Override - public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/SelectPieceMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/SelectPieceMessage.java index da229a19..d9d57b86 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/SelectPieceMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/SelectPieceMessage.java @@ -5,21 +5,35 @@ import java.util.List; import java.util.UUID; +/** + * A message sent by the server to the active player to select a piece to move. + */ @Serializable -public class SelectPieceMessage extends ServerMessage{ - +public class SelectPieceMessage extends ServerMessage { + /** + * The list of pieces + */ private final List pieces; + + /** + * The list of booleans of isHomeMove of the pieces + */ private final List isHomeMove; + + /** + * The list of indexes of target nodes of the pieces + */ private final List targetIndex; /** * Constructs a new SelectPiece instance. * - * @param pieces the pieces to be selected - * @param isHomeMove the List of booleans of isHomeMove of the pieces + * @param pieces the pieces to be selected + * @param isHomeMove the List of booleans of isHomeMove of the pieces * @param targetIndex the List of indexes of target nodes of the pieces */ - public SelectPieceMessage(List pieces, List isHomeMove, List targetIndex){ + public SelectPieceMessage(List pieces, List isHomeMove, List targetIndex) { + super(); this.pieces = pieces; this.isHomeMove = isHomeMove; this.targetIndex = targetIndex; @@ -28,7 +42,8 @@ public SelectPieceMessage(List pieces, List isHomeMove, List getPieces(){ + public List getPieces() { return pieces; } @@ -48,7 +63,7 @@ public List getPieces(){ * * @return List of boolean values */ - public List getIsHomeMove(){ + public List getIsHomeMove() { return isHomeMove; } @@ -57,7 +72,7 @@ public List getIsHomeMove(){ * * @return List of integers */ - public List getTargetIndex(){ + public List getTargetIndex() { return targetIndex; } @@ -77,7 +92,7 @@ public void accept(ServerInterpreter interpreter) { * @return a string representation of this message */ @Override - public String getInfoTextKey() { - return ""; + public String toString() { + return "SelectPieceMessage{" + "pieces=" + pieces + ", isHomeMove=" + isHomeMove + ", targetIndex=" + targetIndex + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java index edb54c9a..6a9b0ddd 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerInterpreter.java @@ -36,7 +36,7 @@ public interface ServerInterpreter { /** * Handles a Die message received from the server. * - * @param msg the Dice message received + * @param msg the Die message received */ void received(DieMessage msg); @@ -55,16 +55,16 @@ public interface ServerInterpreter { void received(DiceNowMessage msg); /** - * Handles an EndOfGame message received from the server. + * Handles an EndOfTurn message received from the server. * - * @param msg the EndOfGame message received + * @param msg the EndOfTurn message received */ void received(EndOfTurnMessage msg); /** - * Handles a GameOver message received from the server. + * Handles a LobbyAccept message received from the server. * - * @param msg the GameOver message received + * @param msg the LobbyAccept message received */ void received(LobbyAcceptMessage msg); @@ -122,7 +122,7 @@ public interface ServerInterpreter { * * @param msg the PossibleCard message received */ - void received(PossibleCardMessage msg); + void received(PossibleCardsMessage msg); /** * Handles a PossiblePiece message received from the server. @@ -132,9 +132,9 @@ public interface ServerInterpreter { void received(PossiblePieceMessage msg); /** - * Handles a RankingResponce message received from the server. + * Handles a RankingResponse message received from the server. * - * @param msg the RankingResponce message received + * @param msg the RankingResponse message received */ void received(RankingResponseMessage msg); @@ -209,9 +209,9 @@ public interface ServerInterpreter { void received(SelectPieceMessage msg); /** - * Handles a SelectTSK message received from the server. + * Handles a Shutdown message received from the server. * - * @param msg the SelectTSK message received. + * @param msg the Shutdown message received. */ void received(ShutdownMessage msg); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerMessage.java index bc1d6b7d..c67b70bd 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerMessage.java @@ -22,10 +22,12 @@ protected ServerMessage() { public abstract void accept(ServerInterpreter interpreter); /** - * Gets the bundle key of the informational text to be shown at the client. - * This key is used to retrieve the appropriate localized text for display. + * Returns a string representation of this message. * - * @return the bundle key of the informational text + * @return a string representation of this message */ - public abstract String getInfoTextKey(); + @Override + public String toString() { + return getClass().getSimpleName() + "{}"; + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerStartGameMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerStartGameMessage.java index fa11b561..522d0284 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerStartGameMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ServerStartGameMessage.java @@ -2,6 +2,10 @@ import com.jme3.network.serializing.Serializable; import pp.mdga.game.Board; +import pp.mdga.game.Player; + +import java.util.ArrayList; +import java.util.List; /** * A message indicating that the game shall start. @@ -9,28 +13,45 @@ @Serializable public class ServerStartGameMessage extends ServerMessage { /** - * Create ServerStartGameMessage attributes. + * The list of players. + */ + private final List players; + + /** + * The board of the game. */ private final Board board; /** - * Constructs a new ServerStartGame instance. + * Constructor. */ public ServerStartGameMessage() { super(); + this.players = new ArrayList<>(); this.board = new Board(); } /** * Constructor. * - * @param board as the board of the game as a Board object. + * @param players as the connected players as a List of Player objects. + * @param board as the board of the game as a Board object. */ - public ServerStartGameMessage(Board board) { + public ServerStartGameMessage(List players, Board board) { super(); + this.players = players; this.board = board; } + /** + * This method will be used to return players attribute of ServerStartGameMessage class. + * + * @return players as a List of Player objects. + */ + public List getPlayers() { + return this.players; + } + /** * This method will return board attribute of ServerStartGameMessage class. * @@ -57,16 +78,7 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; + return "ServerStartGameMessage{" + "players=" + players + ", board=" + board + '}'; } - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ShutdownMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ShutdownMessage.java index 8c898f03..06ce9c12 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ShutdownMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/ShutdownMessage.java @@ -7,6 +7,13 @@ */ @Serializable public class ShutdownMessage extends ServerMessage { + /** + * Constructs a new Shutdown message. + */ + public ShutdownMessage() { + super(); + } + /** * Accepts a visitor to process this message. * @@ -16,15 +23,4 @@ public class ShutdownMessage extends ServerMessage { public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - /** - * Gets the bundle key of the informational text to be shown at the client. - * This key is used to retrieve the appropriate localized text for display. - * - * @return the bundle key of the informational text - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/SpectatorMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/SpectatorMessage.java index 6ebc7b23..b7cc8890 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/SpectatorMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/SpectatorMessage.java @@ -1,32 +1,21 @@ package pp.mdga.message.server; /** - * + * A message sent by the server to indicate that the client is now a spectator. */ public class SpectatorMessage extends ServerMessage { /** - * Construc + * Constructor */ public SpectatorMessage() { super(); } /** - * * @param interpreter the visitor to process this message */ @Override public void accept(ServerInterpreter interpreter) { interpreter.received(this); } - - - /** - * - * @return - */ - @Override - public String getInfoTextKey() { - return ""; - } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/StartPieceMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/StartPieceMessage.java index c8cb5aa0..da62cf47 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/StartPieceMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/StartPieceMessage.java @@ -23,7 +23,7 @@ public class StartPieceMessage extends ServerMessage { * Constructs a new StartPiece instance with the specified piece identifier. * * @param pieceIdentifier the identifier for the piece - * @param targetIndex the index of the targetNode + * @param targetIndex the index of the targetNode */ public StartPieceMessage(UUID pieceIdentifier, int targetIndex) { super(); @@ -54,7 +54,7 @@ public UUID getPieceIdentifier() { * * @return the index of the target node as int. */ - public int getTargetIndex(){ + public int getTargetIndex() { return targetIndex; } @@ -75,16 +75,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "StartPieceMessage{" + "pieceIdentifier=" + pieceIdentifier + ", targetIndex=" + targetIndex + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateReadyMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateReadyMessage.java index d8d53313..d8b03d23 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateReadyMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateReadyMessage.java @@ -21,7 +21,7 @@ public class UpdateReadyMessage extends ServerMessage { * Constructs a new UpdateReady instance with the specified color and readiness status. * * @param playerId the playerId associated with the update - * @param ready the readiness status + * @param ready the readiness status */ public UpdateReadyMessage(int playerId, boolean ready) { super(); @@ -73,16 +73,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "UpdateReadyMessage{" + "playerId=" + playerId + ", ready=" + ready + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateTSKMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateTSKMessage.java index 2da6f682..83f9773a 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateTSKMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/UpdateTSKMessage.java @@ -18,12 +18,15 @@ public class UpdateTSKMessage extends ServerMessage { */ private final Color color; + /** + * The flag if the TSK is taken. + */ private final boolean isTaken; /** * Constructs a new UpdateTSK instance with the specified id and color. * - * @param id the name associated with the update + * @param id the name associated with the update * @param color the color associated with the update */ public UpdateTSKMessage(int id, Color color, boolean isTaken) { @@ -58,6 +61,15 @@ public Color getColor() { return color; } + /** + * Checks if the TSK is taken. + * + * @return true if the TSK is taken, false otherwise + */ + public boolean isTaken() { + return isTaken; + } + /** * Accepts a visitor to process this message. * @@ -75,20 +87,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; - } - - public boolean isTaken() { - return isTaken; + return "UpdateTSKMessage{" + "id=" + id + ", color=" + color + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/WaitPieceMessage.java b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/WaitPieceMessage.java index 528ebbe2..d2437a70 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/message/server/WaitPieceMessage.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/message/server/WaitPieceMessage.java @@ -9,7 +9,9 @@ */ @Serializable public class WaitPieceMessage extends ServerMessage { - + /** + * The pieceID of the piece to choose. + */ private final UUID pieceID; /** @@ -54,16 +56,6 @@ public void accept(ServerInterpreter interpreter) { */ @Override public String toString() { - return ""; - } - - /** - * Returns the key for the info text of this message. - * - * @return the key for the info text of this message - */ - @Override - public String getInfoTextKey() { - return ""; + return "WaitPieceMessage{" + "pieceID=" + pieceID + '}'; } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/notification/InfoNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/InfoNotification.java index 4ccb87d6..c13c9e18 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/notification/InfoNotification.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/notification/InfoNotification.java @@ -1,6 +1,5 @@ package pp.mdga.notification; -import pp.mdga.game.BonusCard; /** * Notification that is to give information to the player. */ diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java index ad87ba3b..89ab1cc0 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java @@ -1,8 +1,9 @@ package pp.mdga.server.automaton; import pp.mdga.game.Color; +import pp.mdga.game.Piece; +import pp.mdga.game.PieceState; import pp.mdga.game.Player; -import pp.mdga.game.PlayerData; import pp.mdga.message.client.*; import pp.mdga.message.server.*; import pp.mdga.server.ServerGameLogic; @@ -48,8 +49,13 @@ public void exit() { * This method will be used to initialize the game and all necessary objects. */ public void initializeGame() { - for (Map.Entry entry : this.logic.getGame().getPlayers().entrySet()) { - this.logic.getGame().getBoard().addPlayerData(entry.getValue().getColor(), new PlayerData(entry.getValue().getColor())); + for (var player : this.logic.getGame().getPlayers().values()) { + player.initialize(); + player.addHandCard(this.logic.getGame().draw()); + Piece piece = player.getWaitingArea()[0]; + player.getWaitingArea()[0] = null; + piece.setState(PieceState.ACTIVE); + this.logic.getGame().getBoard().getInfield()[player.getStartNodeIndex()].setOccupant(piece); } } @@ -67,6 +73,10 @@ public void received(JoinedLobbyMessage msg, int from) { this.logic.getGame().addPlayer(from, player); for (Map.Entry entry : this.logic.getGame().getPlayers().entrySet()) { this.logic.getServerSender().broadcast(new LobbyPlayerJoinedMessage(entry.getKey(), entry.getValue(), entry.getKey() == this.logic.getGame().getHost())); + + if (entry.getKey() != from && entry.getValue().isReady()) { + this.logic.getServerSender().send(from, new UpdateReadyMessage(entry.getKey(), entry.getValue().isReady())); + } } } @@ -83,7 +93,8 @@ public void received(SelectTSKMessage msg, int from) { this.logic.getServerSender().broadcast(new UpdateTSKMessage(from, Color.NONE, false)); this.logic.getGame().getPlayerById(from).setColor(msg.getColor()); this.logic.getServerSender().broadcast(new UpdateTSKMessage(from, msg.getColor(), true)); - } else { + } + else { this.logic.getServerSender().send(from, new IncorrectRequestMessage(0)); } } @@ -113,20 +124,16 @@ public void received(LobbyReadyMessage msg, int from) { if (this.logic.getGame().getPlayerById(from).getColor() == Color.NONE) { Color color = this.logic.getGame().getFirstUnusedColor(); - if (color != null) { + if (color != Color.NONE) { this.logic.getGame().getPlayerById(from).setColor(color); this.logic.getServerSender().broadcast(new UpdateTSKMessage(from, color, true)); - } else { + } + else { this.logic.getServerSender().send(from, new IncorrectRequestMessage(1)); } } this.logic.getGame().getPlayerById(from).setReady(true); this.logic.getServerSender().broadcast(new UpdateReadyMessage(from, true)); - if (this.logic.getGame().areAllReady()) { - this.initializeGame(); - this.logic.getServerSender().broadcast(new ServerStartGameMessage(this.logic.getGame().getBoard())); - this.logic.setCurrentState(this.logic.getGameState()); - } } /** @@ -151,10 +158,13 @@ public void received(LobbyNotReadyMessage msg, int from) { */ @Override public void received(StartGameMessage msg, int from) { - if (msg.isForceStartGame() || this.logic.getGame().areAllReady()) { + if (this.logic.getGame().areAllReady()) { this.initializeGame(); - this.logic.getServerSender().broadcast(new ServerStartGameMessage(this.logic.getGame().getBoard())); + this.logic.getServerSender().broadcast(new ServerStartGameMessage(this.logic.getGame().getPlayersAsList(), this.logic.getGame().getBoard())); this.logic.setCurrentState(this.logic.getGameState()); } + else { + this.logic.getServerSender().send(from, new IncorrectRequestMessage(5)); + } } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/AnimationState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/AnimationState.java index c1ba800e..8d6b634c 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/AnimationState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/AnimationState.java @@ -1,13 +1,14 @@ package pp.mdga.server.automaton.game; import pp.mdga.message.client.AnimationEndMessage; -import pp.mdga.message.server.DiceNowMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.GameState; +import java.util.HashSet; +import java.util.Set; + /** * This class represents the animation state of the game state. - * */ public class AnimationState extends GameAutomatonState { /** @@ -18,7 +19,7 @@ public class AnimationState extends GameAutomatonState { /** * Create AnimationState attributes. */ - private int messageReceived = 0; + private final Set messageReceived = new HashSet<>(); /** * Constructs a server state of the specified game logic. @@ -38,7 +39,7 @@ public void enter() { @Override public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Exited AnimationState state."); - this.messageReceived = 0; + this.messageReceived.clear(); } /** @@ -50,11 +51,10 @@ public void exit() { */ @Override public void received(AnimationEndMessage msg, int from) { - if (this.messageReceived == this.logic.getGame().getPlayers().size()) { - this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DiceNowMessage()); + this.messageReceived.add(from); + if (this.messageReceived.size() == this.logic.getGame().getPlayers().size()) { this.gameAutomaton.setCurrentState(this.gameAutomaton.getTurnState()); - } else { - this.messageReceived++; + this.gameAutomaton.getTurnState().setCurrentState(this.gameAutomaton.getTurnState().getPowerCardState()); } } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java index 1c4a23a3..05ca6be9 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/DetermineStartPlayerState.java @@ -1,20 +1,24 @@ package pp.mdga.server.automaton.game; -import pp.mdga.game.Player; +import pp.mdga.game.Color; +import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.client.RequestDieMessage; import pp.mdga.message.server.ActivePlayerMessage; import pp.mdga.message.server.DiceNowMessage; import pp.mdga.message.server.DieMessage; import pp.mdga.message.server.EndOfTurnMessage; +import pp.mdga.message.server.RankingResponseMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.GameState; +import java.lang.System.Logger.Level; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; +import java.util.Set; +import java.util.logging.Logger; public class DetermineStartPlayerState extends GameAutomatonState { /** @@ -25,8 +29,9 @@ public class DetermineStartPlayerState extends GameAutomatonState { /** * Create DetermineStartPlayerState attributes. */ - private Map diceResults = new HashMap<>(); - private List playersHaveToRoll = new ArrayList<>(); + private final Map diceResults = new HashMap<>(); + private final List playersHaveToRoll = new ArrayList<>(); + private final Set messageReceived = new HashSet<>();; /** * Constructs a server state of the specified game logic. @@ -41,16 +46,13 @@ public DetermineStartPlayerState(GameState gameAutomaton, ServerGameLogic logic) @Override public void enter() { LOGGER.log(System.Logger.Level.DEBUG, "Entered DetermineStartPlayerState state."); - for (Map.Entry entry: this.logic.getGame().getPlayers().entrySet()) { - this.playersHaveToRoll.add(entry.getKey()); - } } @Override public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Exited DetermineStartPlayerState state."); this.diceResults.clear(); - this.playersHaveToRoll.clear(); + this.messageReceived.clear(); } /** @@ -67,23 +69,51 @@ public void received(RequestDieMessage msg, int from) { this.diceResults.put(from, roll); if (this.diceResults.size() == this.logic.getGame().getPlayers().size()) { int maximumRoll = 0; - for (Map.Entry entry: this.diceResults.entrySet()) { - if (maximumRoll <= entry.getValue()) { + + for (Map.Entry entry : this.diceResults.entrySet()) { + if (maximumRoll == entry.getValue()) { + this.playersHaveToRoll.add(entry.getKey()); + } + else if (maximumRoll < entry.getValue()) { maximumRoll = entry.getValue(); - } else { - this.playersHaveToRoll.remove(entry.getKey()); + this.playersHaveToRoll.clear(); + this.playersHaveToRoll.add(entry.getKey()); + } + else { this.logic.getServerSender().send(entry.getKey(), new EndOfTurnMessage()); } } - if (this.playersHaveToRoll.size() == 1) { - this.logic.getServerSender().broadcast(new ActivePlayerMessage(this.logic.getGame().getPlayerById(this.playersHaveToRoll.get(0)).getColor())); - this.gameAutomaton.setCurrentState(this.gameAutomaton.getAnimationState()); - } else { - for (Integer id: this.playersHaveToRoll) { + for (int id: this.playersHaveToRoll) { + this.diceResults.remove(id); + } + } + } + + /** + * This method will be called whenever the server received an AnimationEndMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a AnimationEndMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(AnimationEndMessage msg, int from) { + this.messageReceived.add(from); + if (this.messageReceived.size() == this.logic.getGame().getPlayers().size()) { + this.messageReceived.clear(); + if (this.playersHaveToRoll.size() > 1) { + for (Integer id : this.playersHaveToRoll) { this.logic.getServerSender().send(id, new DiceNowMessage()); } - diceResults.clear(); + } + else { + LOGGER.log(Level.INFO, "Players have to roll: %s".formatted(this.logic.getGame().getPlayerById(this.playersHaveToRoll.get(0)))); + Color color = this.logic.getGame().getPlayerById(this.playersHaveToRoll.get(0)).getColor(); + this.logic.getGame().setActiveColor(color); + this.logic.getServerSender().broadcast(new RankingResponseMessage(this.diceResults)); + this.logic.getServerSender().broadcast(new ActivePlayerMessage(color)); + this.gameAutomaton.setCurrentState(this.gameAutomaton.getAnimationState()); } } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java index 52a38735..4ed6feb8 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/TurnState.java @@ -1,8 +1,20 @@ package pp.mdga.server.automaton.game; +import pp.mdga.game.Player; +import pp.mdga.message.client.NoPowerCardMessage; +import pp.mdga.message.client.RequestDieMessage; +import pp.mdga.message.client.RequestMoveMessage; +import pp.mdga.message.client.SelectedPiecesMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.GameState; -import pp.mdga.server.automaton.game.turn.*; +import pp.mdga.server.automaton.game.turn.ChoosePieceState; +import pp.mdga.server.automaton.game.turn.MovePieceState; +import pp.mdga.server.automaton.game.turn.PlayPowerCardState; +import pp.mdga.server.automaton.game.turn.PowerCardState; +import pp.mdga.server.automaton.game.turn.RollDiceState; +import pp.mdga.server.automaton.game.turn.TurnAutomatonState; + +import java.lang.System.Logger.Level; /** * This class represents the turn state of the server state automaton. @@ -22,6 +34,7 @@ public class TurnState extends GameAutomatonState { private final RollDiceState rollDiceState; private final ChoosePieceState choosePieceState; private final MovePieceState movePieceState; + private Player player; /** * Constructs a server state of the specified game logic. @@ -36,17 +49,66 @@ public TurnState(GameState gameAutomaton, ServerGameLogic logic) { this.rollDiceState = new RollDiceState(this, logic); this.choosePieceState = new ChoosePieceState(this, logic); this.movePieceState = new MovePieceState(this, logic); - this.setCurrentState(this.powerCardState); } @Override public void enter() { - LOGGER.log(System.Logger.Level.DEBUG, "Entered TurnState state."); + LOGGER.log(Level.INFO, "Entered TurnState state."); + this.player = this.logic.getGame().getPlayerById(this.logic.getGame().getActivePlayerId()); + this.setCurrentState(this.powerCardState); } @Override public void exit() { - LOGGER.log(System.Logger.Level.DEBUG, "Exited TurnState state."); + LOGGER.log(Level.DEBUG, "Exited TurnState state."); + } + + /** + * This method will be called whenever the server received an SelectedPiecesMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a SelectedPiecesMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(SelectedPiecesMessage msg, int from) { + this.currentState.received(msg, from); + } + + /** + * This method will be called whenever the server received an NoPowerCardMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a NoPowerCardMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(NoPowerCardMessage msg, int from) { + this.currentState.received(msg, from); + } + + /** + * This method will be called whenever the server received a RequestDieMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a RequestDieMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(RequestDieMessage msg, int from) { + this.currentState.received(msg, from); + } + + /** + * This method will be called whenever the server received a RequestMoveMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a RequestMoveMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(RequestMoveMessage msg, int from) { + this.currentState.received(msg, from); } /** @@ -103,6 +165,15 @@ public MovePieceState getMovePieceState() { return this.movePieceState; } + /** + * This method will be used to return player attribute of TurnState class. + * + * @return player as a Player object. + */ + public Player getPlayer() { + return this.player; + } + /** * This method will be used to set currentState attribute of TurnState class to the given state parameter. * In Addition, the currentState will be exited, changed and entered. diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java index 63479370..06765f8f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/ChoosePieceState.java @@ -1,5 +1,6 @@ package pp.mdga.server.automaton.game.turn; +import pp.mdga.message.client.RequestMoveMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.TurnState; import pp.mdga.server.automaton.game.turn.choosepiece.*; @@ -46,6 +47,18 @@ public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Entered ChoosePieceState state."); } + /** + * This method will be called whenever the server received a RequestMoveMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a RequestMoveMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(RequestMoveMessage msg, int from) { + this.currentState.received(msg, from); + } + /** * This method will be used to return currentState attribute of ChoosePieceState class. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java index 1a40bf37..fe877ffc 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PlayPowerCardState.java @@ -1,15 +1,25 @@ package pp.mdga.server.automaton.game.turn; +import pp.mdga.message.client.AnimationEndMessage; +import pp.mdga.message.server.DiceNowMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.AnimationState; import pp.mdga.server.automaton.game.TurnState; +import java.util.HashSet; +import java.util.Set; + public class PlayPowerCardState extends TurnAutomatonState { /** * Create FirstRollState constants. */ private static final System.Logger LOGGER = System.getLogger(PlayPowerCardState.class.getName()); + /** + * Create PlayPowerCardState attributes. + */ + private Set messageReceived = new HashSet(); + /** * Constructs a server state of the specified game logic. * @@ -29,4 +39,20 @@ public void enter() { public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Exited PlayPowerCardState state."); } + + /** + * This method will be called whenever the server received an AnimationEndMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a AnimationEndMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(AnimationEndMessage msg, int from) { + this.messageReceived.add(from); + if (this.messageReceived.size() == this.logic.getGame().getPlayers().size()) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DiceNowMessage()); + this.turnAutomaton.setCurrentState(this.turnAutomaton.getRollDiceState()); + } + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java index 9f8e7ee0..c34ec6ba 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/PowerCardState.java @@ -1,8 +1,21 @@ package pp.mdga.server.automaton.game.turn; +import pp.mdga.game.Piece; +import pp.mdga.game.card.PowerCard; +import pp.mdga.message.client.SelectedPiecesMessage; +import pp.mdga.message.server.DiceNowMessage; +import pp.mdga.message.server.PossibleCardsMessage; import pp.mdga.server.ServerGameLogic; -import pp.mdga.server.automaton.game.AnimationState; import pp.mdga.server.automaton.game.TurnState; +import pp.mdga.server.automaton.game.turn.powercard.ChoosePowerCardState; +import pp.mdga.server.automaton.game.turn.powercard.PowerCardAutomatonState; +import pp.mdga.server.automaton.game.turn.powercard.ShieldCardState; +import pp.mdga.server.automaton.game.turn.powercard.SwapCardState; +import pp.mdga.server.automaton.game.turn.powercard.TurboCardState; +import pp.mdga.visitor.ServerCardVisitor; + +import java.util.HashSet; +import java.util.Set; public class PowerCardState extends TurnAutomatonState { /** @@ -10,6 +23,22 @@ public class PowerCardState extends TurnAutomatonState { */ private static final System.Logger LOGGER = System.getLogger(PowerCardState.class.getName()); + /** + * Create PowerCardState states. + */ + private PowerCardAutomatonState currentState; + private final ChoosePowerCardState choosePowerCardState; + private final ShieldCardState shieldCardState; + private final SwapCardState swapCardState; + private final TurboCardState turboCardState; + + /** + * Create PowerCardState attributes. + */ + private ServerCardVisitor visitor; + private PowerCard selectedCard; + private final Set selectedPieces = new HashSet<>(); + /** * Constructs a server state of the specified game logic. * @@ -18,15 +47,150 @@ public class PowerCardState extends TurnAutomatonState { */ public PowerCardState(TurnState turnAutomaton, ServerGameLogic logic) { super(turnAutomaton, logic); + this.choosePowerCardState = new ChoosePowerCardState(this, logic); + this.shieldCardState = new ShieldCardState(this, logic); + this.swapCardState = new SwapCardState(this, logic); + this.turboCardState = new TurboCardState(this, logic); + this.setCurrentState(this.choosePowerCardState); } @Override public void enter() { LOGGER.log(System.Logger.Level.DEBUG, "Exited PowerCardState state."); + this.visitor = new ServerCardVisitor(this.logic); + for (PowerCard card : this.turnAutomaton.getPlayer().getHandCards()) { + card.accept(this.visitor); + } + + if (this.visitor.getCards().isEmpty()) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DiceNowMessage()); + this.turnAutomaton.setCurrentState(this.turnAutomaton.getRollDiceState()); + } + else { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new PossibleCardsMessage(this.visitor.getCards())); + } } @Override public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Entered PowerCardState state."); } + + /** + * This method will be used to add the given piece parameter to the selectedPieces attribute of PowerCardState + * class. + * + * @param piece as the new selected piece as a Piece object. + */ + public void addSelectedPiece(Piece piece) { + this.selectedPieces.add(piece); + } + + /** + * This method will be called whenever the server received an SelectedPiecesMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a SelectedPiecesMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(SelectedPiecesMessage msg, int from) { + this.currentState.received(msg, from); + } + + /** + * This method will be used to return currentState attribute of PowerCardState class. + * + * @return currentState as a PowerCardAutomatonState object. + */ + public PowerCardAutomatonState getCurrentState() { + return this.currentState; + } + + /** + * This method will be used to return choosePowerCardState attribute of PowerCardState class. + * + * @return choosePowerCardState as a ChoosePowerCardState object. + */ + public ChoosePowerCardState getChoosePowerCardState() { + return this.choosePowerCardState; + } + + /** + * This method will be used to return shieldCardState attribute of PowerCardState class. + * + * @return shieldCardState as a ShieldCardState object. + */ + public ShieldCardState getShieldCardState() { + return this.shieldCardState; + } + + /** + * This method will be used to return swapCardState attribute of PowerCardState class. + * + * @return swapCardState as a SwapCardState object. + */ + public SwapCardState getSwapCardState() { + return this.swapCardState; + } + + /** + * This method will be used to return turboCardState attribute of PowerCardState class. + * + * @return turboCardState as a TurboCardState object. + */ + public TurboCardState getTurboCardState() { + return this.turboCardState; + } + + /** + * This method will be used to return visitor attribute of PowerCardState class. + * + * @return visitor as a ServerCardVisitor object. + */ + public ServerCardVisitor getVisitor() { + return this.visitor; + } + + /** + * This method will be used to return selectedPieces attribute of PowerCardState class. + * + * @return selectedCard as a PowerCard object. + */ + public PowerCard getSelectedCard() { + return this.selectedCard; + } + + /** + * This method will be used to return selectedPieces attribute of PowerCardState class. + * + * @return selectedPieces as a Set of Piece objects. + */ + public Set getSelectedPieces() { + return this.selectedPieces; + } + + /** + * This method will be used to set currentState attribute of PowerCardState class to the given state parameter. + * In Addition, the currentState will be exited, changed and entered. + * + * @param state as the new currentState attribute as a PowerCardAutomatonState object. + */ + public void setCurrentState(PowerCardAutomatonState state) { + if (this.currentState != null) { + this.currentState.exit(); + } + this.currentState = state; + this.currentState.enter(); + } + + /** + * This method will be used to set selectedCard attribute of PowerCardState class to the given selectedCard + * parameter. + * + * @param selectedCard as the new selectedCard attribute as a PowerCard object. + */ + public void setSelectedCard(PowerCard selectedCard) { + this.selectedCard = selectedCard; + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java index 0d4fd1e8..a343abfe 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/RollDiceState.java @@ -1,5 +1,6 @@ package pp.mdga.server.automaton.game.turn; +import pp.mdga.message.client.RequestDieMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.TurnState; import pp.mdga.server.automaton.game.turn.rolldice.FirstRollState; @@ -45,6 +46,18 @@ public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Exited RollDiceState state."); } + /** + * This method will be called whenever the server received a RequestDieMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a RequestDieMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(RequestDieMessage msg, int from) { + this.currentState.received(msg, from); + } + /** * This method will be used to return currentState attribute of RollDiceState class. * diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ChoosePowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ChoosePowerCardState.java new file mode 100644 index 00000000..04f24f3c --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ChoosePowerCardState.java @@ -0,0 +1,125 @@ +package pp.mdga.server.automaton.game.turn.powercard; + +import pp.mdga.game.card.HiddenCard; +import pp.mdga.game.card.ShieldCard; +import pp.mdga.game.card.SwapCard; +import pp.mdga.game.card.TurboCard; +import pp.mdga.message.client.SelectCardMessage; +import pp.mdga.message.server.IncorrectRequestMessage; +import pp.mdga.server.ServerGameLogic; +import pp.mdga.server.automaton.game.turn.PowerCardState; +import pp.mdga.visitor.Visitor; + +public class ChoosePowerCardState extends PowerCardAutomatonState implements Visitor { + /** + * Constructs a server state of the specified game logic. + * + * @param powerCardAutomaton as the automaton of the turn state as a PowerCardState object. + * @param logic the game logic + */ + public ChoosePowerCardState(PowerCardState powerCardAutomaton, ServerGameLogic logic) { + super(powerCardAutomaton, logic); + } + + /** + * This method will be used whenever this state will be entered. + */ + @Override + public void enter() { + + } + + /** + * This method will be used whenever this state will be exited. + */ + @Override + public void exit() { + + } + + @Override + public void received(SelectCardMessage msg, int from) { + if (this.powerCardAutomaton.getVisitor().getCards().contains(msg.getCard())) { + this.powerCardAutomaton.setSelectedCard(msg.getCard()); + msg.getCard().accept(this); + } else { + this.logic.getServerSender().send(from, new IncorrectRequestMessage(2)); + } + } + + /** + * This method will be used to change the state of the power card automaton depending on the given card parameter. + * + * @param card as a ShieldCard object. + */ + private void changeState(ShieldCard card) { + this.powerCardAutomaton.setCurrentState(this.powerCardAutomaton.getShieldCardState()); + } + + /** + * This method will be used to change the state of the power card automaton depending on the given card parameter. + * + * @param card as a SwapCard object. + */ + private void changeState(SwapCard card) { + this.powerCardAutomaton.setCurrentState(this.powerCardAutomaton.getSwapCardState()); + } + + /** + * This method will be used to change the state of the power card automaton depending on the given card parameter. + * + * @param card as a TurboCard object. + */ + private void changeState(TurboCard card) { + this.powerCardAutomaton.setCurrentState(this.powerCardAutomaton.getTurboCardState()); + } + + /** + * This method will be used to change the state of the power card automaton depending on the given card parameter. + * + * @param card as a TurboCard object. + */ + private void changeState(HiddenCard card) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new IncorrectRequestMessage(5)); + } + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a TurboCard object. + */ + @Override + public void visit(TurboCard card) { + this.changeState(card); + } + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a SwapCard object. + */ + @Override + public void visit(SwapCard card) { + this.changeState(card); + } + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a ShieldCard oblect + */ + @Override + public void visit(ShieldCard card) { + this.changeState(card); + } + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a HiddenCard object. + */ + @Override + public void visit(HiddenCard card) { + this.changeState(card); + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/PowerCardAutomatonState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/PowerCardAutomatonState.java new file mode 100644 index 00000000..da8c83a7 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/PowerCardAutomatonState.java @@ -0,0 +1,23 @@ +package pp.mdga.server.automaton.game.turn.powercard; + +import pp.mdga.server.ServerGameLogic; +import pp.mdga.server.automaton.ServerState; +import pp.mdga.server.automaton.game.turn.PowerCardState; + +public abstract class PowerCardAutomatonState extends ServerState { + /** + * Create PowerCardAutomatonState attributes. + */ + protected final PowerCardState powerCardAutomaton; + + /** + * Constructs a server state of the specified game logic. + * + * @param powerCardAutomaton as the automaton of the turn state as a PowerCardState object. + * @param logic the game logic + */ + public PowerCardAutomatonState(PowerCardState powerCardAutomaton, ServerGameLogic logic) { + super(logic); + this.powerCardAutomaton = powerCardAutomaton; + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ShieldCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ShieldCardState.java new file mode 100644 index 00000000..77a2b75d --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/ShieldCardState.java @@ -0,0 +1,64 @@ +package pp.mdga.server.automaton.game.turn.powercard; + +import pp.mdga.game.Piece; +import pp.mdga.game.PieceState; +import pp.mdga.game.ShieldState; +import pp.mdga.message.client.SelectedPiecesMessage; +import pp.mdga.message.server.IncorrectRequestMessage; +import pp.mdga.message.server.PlayCardMessage; +import pp.mdga.server.ServerGameLogic; +import pp.mdga.server.automaton.game.turn.PowerCardState; + +import java.util.ArrayList; + +public class ShieldCardState extends PowerCardAutomatonState { + /** + * Constructs a server state of the specified game logic. + * + * @param powerCardAutomaton as the automaton of the turn state as a PowerCardState object. + * @param logic the game logic + */ + public ShieldCardState(PowerCardState powerCardAutomaton, ServerGameLogic logic) { + super(powerCardAutomaton, logic); + } + + /** + * This method will be used whenever this state will be entered. + */ + @Override + public void enter() { + + } + + /** + * This method will be used whenever this state will be exited. + */ + @Override + public void exit() { + + } + + /** + * This method will be called whenever the server received a SelectedPiecesMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a SelectedPiecesMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(SelectedPiecesMessage msg, int from) { + if (msg.getPieces().size() == 1 && this.powerCardAutomaton.getVisitor().getShieldPieces().contains(msg.getPieces().get(0))) { + this.powerCardAutomaton.addSelectedPiece(msg.getPieces().get(0)); + for (Piece piece : this.logic.getGame().getPlayerByColor(this.logic.getGame().getActiveColor()).getPieces()) { + if (piece == msg.getPieces().get(0)) { + piece.setShield(ShieldState.ACTIVE); + } + } + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new PlayCardMessage(this.powerCardAutomaton.getSelectedCard(), new ArrayList<>(), this.logic.getGame().getDiceModifier())); + this.powerCardAutomaton.getTurnAutomaton().setCurrentState(this.powerCardAutomaton.getTurnAutomaton().getPlayPowerCardState()); + } + else { + this.logic.getServerSender().send(from, new IncorrectRequestMessage(3)); + } + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/SwapCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/SwapCardState.java new file mode 100644 index 00000000..51aad9e3 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/SwapCardState.java @@ -0,0 +1,60 @@ +package pp.mdga.server.automaton.game.turn.powercard; + +import pp.mdga.game.Piece; +import pp.mdga.message.client.SelectedPiecesMessage; +import pp.mdga.message.server.IncorrectRequestMessage; +import pp.mdga.server.ServerGameLogic; +import pp.mdga.server.automaton.game.turn.PowerCardState; + +public class SwapCardState extends PowerCardAutomatonState { + /** + * Constructs a server state of the specified game logic. + * + * @param powerCardAutomaton as the automaton of the turn state as a PowerCardState object. + * @param logic the game logic + */ + public SwapCardState(PowerCardState powerCardAutomaton, ServerGameLogic logic) { + super(powerCardAutomaton, logic); + } + + /** + * This method will be used whenever this state will be entered. + */ + @Override + public void enter() { + + } + + /** + * This method will be used whenever this state will be exited. + */ + @Override + public void exit() { + + } + + /** + * This method will be called whenever the server received a SelectedPiecesMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a SelectedPiecesMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(SelectedPiecesMessage msg, int from) { + if (msg.getPieces().size() == 2) { + Piece first = msg.getPieces().get(0); + Piece second = msg.getPieces().get(1); + if ((this.powerCardAutomaton.getVisitor().getSwapOwnPieces().contains(first) + && this.powerCardAutomaton.getVisitor().getSwapOtherPieces().contains(second)) + || (this.powerCardAutomaton.getVisitor().getSwapOwnPieces().contains(second) + && this.powerCardAutomaton.getVisitor().getSwapOtherPieces().contains(first))) { + this.powerCardAutomaton.addSelectedPiece(first); + this.powerCardAutomaton.addSelectedPiece(second); + this.powerCardAutomaton.getTurnAutomaton().setCurrentState(this.powerCardAutomaton.getTurnAutomaton().getPlayPowerCardState()); + } + } else { + this.logic.getServerSender().send(from, new IncorrectRequestMessage(4)); + } + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/TurboCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/TurboCardState.java new file mode 100644 index 00000000..093aacb9 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/powercard/TurboCardState.java @@ -0,0 +1,51 @@ +package pp.mdga.server.automaton.game.turn.powercard; + +import pp.mdga.message.client.SelectedPiecesMessage; +import pp.mdga.message.server.PlayCardMessage; +import pp.mdga.server.ServerGameLogic; +import pp.mdga.server.automaton.game.turn.PowerCardState; + +import java.util.ArrayList; + +public class TurboCardState extends PowerCardAutomatonState { + /** + * Constructs a server state of the specified game logic. + * + * @param powerCardAutomaton as the automaton of the turn state as a PowerCardState object. + * @param logic the game logic + */ + public TurboCardState(PowerCardState powerCardAutomaton, ServerGameLogic logic) { + super(powerCardAutomaton, logic); + } + + /** + * This method will be used whenever this state will be entered. + */ + @Override + public void enter() { + this.logic.getGame().getDie().modify(); + this.logic.getGame().setDiceModifier(this.logic.getGame().getDiceModifier()); + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new PlayCardMessage(this.powerCardAutomaton.getSelectedCard(), new ArrayList<>(), this.logic.getGame().getDiceModifier())); + this.powerCardAutomaton.getTurnAutomaton().setCurrentState(this.powerCardAutomaton.getTurnAutomaton().getPlayPowerCardState()); + } + + /** + * This method will be used whenever this state will be exited. + */ + @Override + public void exit() { + + } + + /** + * This method will be called whenever the server received a SelectedPiecesMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a SelectedPiecesMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(SelectedPiecesMessage msg, int from) { + // ToDo: We can use this method to catch irregular client messages. + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java index 09fe1093..776d9b08 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/FirstRollState.java @@ -1,8 +1,17 @@ package pp.mdga.server.automaton.game.turn.rolldice; +import pp.mdga.Resources; +import pp.mdga.game.Piece; +import pp.mdga.game.PieceState; +import pp.mdga.message.client.RequestDieMessage; +import pp.mdga.message.server.DiceAgainMessage; +import pp.mdga.message.server.DieMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.RollDiceState; +import java.util.ArrayList; +import java.util.List; + public class FirstRollState extends RollDiceAutomatonState { /** * Create FirstRollState constants. @@ -28,4 +37,37 @@ public void enter() { public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Exited FirstRollState state."); } + + /** + * This method will be called whenever the server received a RequestDieMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a RequestDieMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(RequestDieMessage msg, int from) { + List moveablePieces = new ArrayList<>(); + for (Piece piece : this.rollDiceAutomaton.getTurnAutomaton().getPlayer().getPieces()) { + if (piece.getState() == PieceState.HOME || piece.getState() == PieceState.ACTIVE) { + moveablePieces.add(piece); + } + } + + int roll = this.logic.getGame().getDie().shuffle(); + this.logic.getGame().setDiceEyes(roll); + + if (!moveablePieces.isEmpty()) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DieMessage(roll)); + this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState()); + } else { + if (roll == Resources.MAX_EYES) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DieMessage(roll)); + this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState()); + } else { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DiceAgainMessage()); + this.rollDiceAutomaton.setCurrentState(this.rollDiceAutomaton.getSecondRollState()); + } + } + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java index e41eac29..0787a9f1 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/SecondRollState.java @@ -1,5 +1,8 @@ package pp.mdga.server.automaton.game.turn.rolldice; +import pp.mdga.message.client.RequestDieMessage; +import pp.mdga.message.server.DiceAgainMessage; +import pp.mdga.message.server.DieMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.RollDiceState; @@ -28,4 +31,23 @@ public void enter() { public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Exited SecondRollState state."); } + + /** + * This method will be called whenever the server received a RequestDieMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a RequestDieMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(RequestDieMessage msg, int from) { + int roll = this.logic.getGame().getDie().shuffle(); + if (roll == 6) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DieMessage(roll)); + this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState()); + } else { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DiceAgainMessage()); + this.rollDiceAutomaton.setCurrentState(this.rollDiceAutomaton.getThirdRollState()); + } + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java index f736ee46..ffb81db6 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/rolldice/ThirdRollState.java @@ -1,5 +1,11 @@ package pp.mdga.server.automaton.game.turn.rolldice; +import pp.mdga.message.client.RequestDieMessage; +import pp.mdga.message.server.ActivePlayerMessage; +import pp.mdga.message.server.CeremonyMessage; +import pp.mdga.message.server.DieMessage; +import pp.mdga.message.server.NoTurnMessage; +import pp.mdga.message.server.SpectatorMessage; import pp.mdga.server.ServerGameLogic; import pp.mdga.server.automaton.game.turn.RollDiceState; @@ -28,4 +34,34 @@ public void enter() { public void exit() { LOGGER.log(System.Logger.Level.DEBUG, "Entered ThirdRollState state."); } + + /** + * This method will be called whenever the server received a RequestDieMessage message. + * It will also get the client id of the player who send this message. + * + * @param msg as the message which was sent by the player as a RequestDieMessage object. + * @param from as the client id of the player as an Integer. + */ + @Override + public void received(RequestDieMessage msg, int from) { + int roll = this.logic.getGame().getDie().shuffle(); + if (roll == 6) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new DieMessage(roll)); + this.rollDiceAutomaton.getTurnAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getChoosePieceState()); + } else { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new NoTurnMessage()); + + if (this.rollDiceAutomaton.getTurnAutomaton().getPlayer().isFinished()) { + this.logic.getServerSender().send(this.logic.getGame().getActivePlayerId(), new SpectatorMessage()); + + if (this.logic.getGame().getNumberOfActivePlayers() == 1) { + this.logic.getServerSender().broadcast(new CeremonyMessage()); + } else { + this.logic.getGame().setActiveColor(this.logic.getGame().getActiveColor().next()); + this.logic.getServerSender().broadcast(new ActivePlayerMessage(this.logic.getGame().getActiveColor())); + this.rollDiceAutomaton.getTurnAutomaton().getGameAutomaton().setCurrentState(this.rollDiceAutomaton.getTurnAutomaton().getGameAutomaton().getAnimationState()); + } + } + } + } } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/visitor/ServerCardVisitor.java b/Projekte/mdga/model/src/main/java/pp/mdga/visitor/ServerCardVisitor.java new file mode 100644 index 00000000..da5ca036 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/visitor/ServerCardVisitor.java @@ -0,0 +1,147 @@ +package pp.mdga.visitor; + +import pp.mdga.game.Piece; +import pp.mdga.game.PieceState; +import pp.mdga.game.card.HiddenCard; +import pp.mdga.game.card.PowerCard; +import pp.mdga.game.card.ShieldCard; +import pp.mdga.game.card.SwapCard; +import pp.mdga.game.card.TurboCard; +import pp.mdga.server.ServerGameLogic; + +import java.util.ArrayList; +import java.util.List; + +/** + * This class represents the visitor for all types of power cards. + */ +public class ServerCardVisitor implements Visitor { + /** + * Create ServerCardVisitor attributes + */ + private final List cards = new ArrayList<>(); + private final List shieldPieces = new ArrayList<>(); + private final List swapOwnPieces = new ArrayList<>(); + private final List swapOtherPieces = new ArrayList<>(); + private final ServerGameLogic logic; + + /** + * Constructor. + * + * @param logic as the logic of this server which holds the model as a ServerGameLogic object. + */ + public ServerCardVisitor(ServerGameLogic logic) { + this.logic = logic; + } + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a TurboCard object. + */ + @Override + public void visit(TurboCard card) { + this.cards.add(card); + } + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a SwapCard object. + */ + @Override + public void visit(SwapCard card) { + List possibleOwnPieces = new ArrayList<>(); + for (Piece piece : this.logic.getGame().getPlayerByColor(this.logic.getGame().getActiveColor()).getPieces()) { + if (piece.getState() == PieceState.ACTIVE) { + if (!possibleOwnPieces.contains(piece)) { + possibleOwnPieces.add(piece); + } + } + } + + List possibleOtherPieces = new ArrayList<>(); + for (var player : this.logic.getGame().getPlayers().values()) { + if (player != this.logic.getGame().getPlayerByColor(this.logic.getGame().getActiveColor())) { + for (Piece piece : player.getPieces()) { + if (piece.getState() == PieceState.ACTIVE) { + if (!possibleOtherPieces.contains(piece)) { + possibleOtherPieces.add(piece); + } + } + } + } + } + + if (!possibleOtherPieces.isEmpty() && !possibleOwnPieces.isEmpty()) { + this.swapOwnPieces.addAll(possibleOtherPieces); + this.swapOtherPieces.addAll(possibleOwnPieces); + this.cards.add(card); + } + } + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a ShieldCard object. + */ + @Override + public void visit(ShieldCard card) { + for (Piece piece : this.logic.getGame().getPlayerByColor(this.logic.getGame().getActiveColor()).getPieces()) { + if (piece.getState() == PieceState.ACTIVE) { + if (!this.shieldPieces.contains(piece)) { + this.shieldPieces.add(piece); + } + if (!this.cards.contains(card)) { + this.cards.add(card); + } + } + } + } + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a HiddenCard object. + */ + @Override + public void visit(HiddenCard card) { + + } + + /** + * This method will be used to return cards attribute of ServerCardVisitor class. + * + * @return cards as a List of PowerCard objects. + */ + public List getCards() { + return this.cards; + } + + /** + * This method will be used to return shieldPieces attribute of ServerCardVisitor class. + * + * @return shieldPieces as a List of Piece objects. + */ + public List getShieldPieces() { + return this.shieldPieces; + } + + /** + * This method will be used to return swapOwnPieces attribute of ServerCardVisitor class. + * + * @return swapOwnPieces as a List of Piece objects. + */ + public List getSwapOwnPieces() { + return this.swapOwnPieces; + } + + /** + * This method will be used to return swapOtherPieces attribute of ServerCardVisitor class. + * + * @return swapOtherPieces as a List of Piece objects. + */ + public List getSwapOtherPieces() { + return this.swapOtherPieces; + } +} diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/visitor/Visitor.java b/Projekte/mdga/model/src/main/java/pp/mdga/visitor/Visitor.java new file mode 100644 index 00000000..12e86fd2 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/visitor/Visitor.java @@ -0,0 +1,39 @@ +package pp.mdga.visitor; + +import pp.mdga.game.card.HiddenCard; +import pp.mdga.game.card.ShieldCard; +import pp.mdga.game.card.SwapCard; +import pp.mdga.game.card.TurboCard; + +/** + * This interface will be used to realize the visitor pattern inside the application. + */ +public interface Visitor { + /** + * This method will be used to visit the given card parameter. + * + * @param card as a TurboCard object. + */ + void visit(TurboCard card); + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a SwapCard object. + */ + void visit(SwapCard card); + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a ShieldCard oblect + */ + void visit(ShieldCard card); + + /** + * This method will be used to visit the given card parameter. + * + * @param card as a HiddenCard object. + */ + void visit(HiddenCard card); +} diff --git a/Projekte/mdga/model/src/test/java/pp/mdga/client/clientState/ClientStateTest.java b/Projekte/mdga/model/src/test/java/pp/mdga/client/clientState/ClientStateTest.java index c5c84b68..3b7c87db 100644 --- a/Projekte/mdga/model/src/test/java/pp/mdga/client/clientState/ClientStateTest.java +++ b/Projekte/mdga/model/src/test/java/pp/mdga/client/clientState/ClientStateTest.java @@ -4,22 +4,22 @@ import org.junit.Test; import pp.mdga.client.*; import pp.mdga.client.CeremonyState; -import pp.mdga.client.ceremonyState.PodiumState; -import pp.mdga.client.ceremonyState.StatisticsState; -import pp.mdga.client.dialogState.LobbyState; -import pp.mdga.client.dialogState.NetworkDialogState; -import pp.mdga.client.dialogState.StartDialogState; -import pp.mdga.client.gameState.*; -import pp.mdga.client.gameState.turnState.choosePieceState.*; -import pp.mdga.client.gameState.determineStartPlayer.DetermineStartPlayerStateMachine; -import pp.mdga.client.gameState.turnState.*; -import pp.mdga.client.gameState.turnState.powerCardState.ChoosePowerCardState; -import pp.mdga.client.gameState.turnState.powerCardState.ShieldState; -import pp.mdga.client.gameState.turnState.powerCardState.SwapState; +import pp.mdga.client.ceremonystate.PodiumState; +import pp.mdga.client.ceremonystate.StatisticsState; +import pp.mdga.client.dialogstate.LobbyState; +import pp.mdga.client.dialogstate.NetworkDialogState; +import pp.mdga.client.dialogstate.StartDialogState; +import pp.mdga.client.gamestate.*; +import pp.mdga.client.gamestate.turnstate.choosepiecestate.*; +import pp.mdga.client.gamestate.determineStartPlayer.DetermineStartPlayerStateMachine; +import pp.mdga.client.gamestate.turnstate.*; +import pp.mdga.client.gamestate.turnstate.powercardstate.ChoosePowerCardState; +import pp.mdga.client.gamestate.turnstate.powercardstate.ShieldState; +import pp.mdga.client.gamestate.turnstate.powercardstate.SwapState; import pp.mdga.client.SettingsState; -import pp.mdga.client.settingsState.AudioSettingsState; -import pp.mdga.client.settingsState.MainSettingsState; -import pp.mdga.client.settingsState.VideoSettingsState; +import pp.mdga.client.settingsstate.AudioSettingsState; +import pp.mdga.client.settingsstate.MainSettingsState; +import pp.mdga.client.settingsstate.VideoSettingsState; import pp.mdga.game.BonusCard; import pp.mdga.game.Color; import pp.mdga.message.client.ClientMessage;