Frames Clippen für Animation

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
NeoRon
Beiträge: 67
Registriert: 22.03.2013 18:56

Frames Clippen für Animation

Beitrag von NeoRon »

Hallo PB Forum,

ich will ein Bild Clippen.
Das Bild ist 44 Breit und 48 Hoch und hat 8 Gleiche Frames neben einander.

Nun will ich das nach einander in einer gewissen zeit das Bild auf der Stelle Clipt.
So das eine Explosion Animation entsteht.

Hie hab ich mein relevanten Code zu dieser Sache:

Code: Alles auswählen

Procedure Animation()
  
  With Animations()
    
    ForEach Animations()
      
      Protected time = ElapsedMilliseconds() 
      Define frame.i
      
      time()\frame = ((time - \StartTime)/ \frameDuration)%\Frames  ;// Hier bringt er mir den fehler: Division by Zero forbidden.
      
      Frame = time()\frame
      
      If \StartTime < \StopTime
        ClipSprite(#SPRITE_EXPLO, Mod(frame,\framesPerRow)*\frameWidth, Int(frame/\framesPerRow)*\frameHeight, \frameWidth , \frameHeight)
      Else
        Break
      EndIf
      
    EndWith
  Next
  
EndProcedure



Hier löst sich die Explosion aus:

  ForEach enemy()   
    ForEach Shoot_Act_List() 
      
      If IsSpriteCol(Shoot_Act_List()\x, Shoot_Act_List()\y, SpriteWidth(#SPRITE_PLAYER_SHOOT), SpriteHeight(#SPRITE_PLAYER_SHOOT), enemy()\x, enemy()\y, SpriteWidth(#SPRITE_ENEMY_BOMBER), SpriteHeight(#SPRITE_ENEMY_BOMBER))

        AddAnimation(10, 5, 8, 8, 5,#SPRITE_EXPLO, enemy()\x,enemy()\y.i,1,0 ,0) 

        DeleteElement( enemy() )
        DeleteElement( Shoot_Act_List() )  
        Break
      EndIf



Procedure AddAnimation(StartTime.i,StopTime.i,frames.i,framesPerRow.i,frameDuration.i,sprite.i,x.i,y.i, id.i,DrumPosition.i,Sound = #PB_Ignore)  
  If AddElement(Animations())    
    With Animations()
      \id                 = id
      \sprite             = sprite
      \startTime          = StartTime
      \stopTime           = StopTime
      \frames             = frames
      \framesPerRow       = framesPerRow      
      \frameWidth         = image\width    
      \frameHeight        = image\height    
      \frameDuration      = frameDuration
      \x                  = x
      \y                  = y   
      \Sound              = Sound
      \DrumPosition       = DrumPosition
    EndWith    
  EndIf  
EndProcedure
      
    Next
  Next



Global NewList Animations.animation()
Global NewList time.time()


Structure time
  frame.i
EndStructure

Structure image
  width.i
  height.i
EndStructure

Structure animation
  Sprite.i
  x.i
  y.i
  ID.i
  StartTime.i
  StopTime.i
  frames.i
  framesPerRow.i
  frameDuration.i
  frameWidth.i
  frameheight.i
  DrumPosition.i
  Sound.i
EndStructure



#SPRITE_HEIGHT = 48
#SPRITE_WIDTH = 44



Global image.image 



image\height = #SPRITE_HEIGHT
image\width = #SPRITE_WIDTH



  ForEach Animations()
      If Animations()\Sprite = #SPRITE_EXPLO
      DisplayTransparentSprite(Animations()\Sprite, Animations()\x, Animations()\y)
    EndIf
    Next

Vielen Dank! Hoffe ich bekomme es mit euch noch riichtig hin. :)
Habe halt noch nicht so den Überblick über die Sache.

Mit Erklärungen wäre echt hilfreich.

Grüße
Manuel
The World is Cyber
True29
Beiträge: 283
Registriert: 18.08.2012 19:18
Computerausstattung: Windows 8 64bit .Profan x2,Purebasic 5.5
Wohnort: Worms
Kontaktdaten:

Re: Frames Clippen für Animation

Beitrag von True29 »

kleine hilfestellung ;)
wäre dir keine hilfe wenn wir dir jetzt einen korrigierten code geben.

falsch :

Code: Alles auswählen

AddAnimation(10, 5, 8, 8, 5,#SPRITE_EXPLO, enemy()\x,enemy()\y.i,1,0 ,0)
richtig wäre:

Code: Alles auswählen

  AddAnimation(ElapsedMilliseconds(), 0, 8, 8, 40,#SPRITE_EXPLO, enemy()\x,enemy()\y.i,1,0 ,0)
Animation_Frames_Duration muss man berechnen ;) etwas so zwischen 30 und 50 frames pro sekunde
Global NewList time.time() ? warum unötig ;)
\Sound = Sound
\DrumPosition = DrumPosition
unötig brauchst du ja nicht ;)

If \StartTime < \StopTime diese abfrage ist eigentlich auch unötig ;) da wenn die animation fertig sein soll einfach das animation element löschst.
i7,12gb ram , Windows 10 ,Purebasic 5.50
SilverSurfer
Beiträge: 32
Registriert: 14.06.2015 10:23

Re: Frames Clippen für Animation

Beitrag von SilverSurfer »

Hallo Manuel.....

Bitte programmiere ein Stück lauffähigen Code, wo der Fehler auftritt.
Denn es ist schwer für andere sich in deinen Code rein zu denken, da der Fehler ja
auch schon ganz woanders entstanden sein kann. ( Falsche Wertzuweiseung anstatt Float z.B.
als Integer deklariert u.s.w )
Was jetzt nichts mit deiner Frage zu tun hat, aber was ich trotzdem ansprechen möchte, ist deine
Art zu programmieren.
Dein Code ist sehr unstrukturiert. Da wecheln sich Proceduren mit Structuren und Gloabel Wertzuweisungen ab.
Ich habe dir mal ein Beispiel gemacht, wie ich so ein Programm gestalte, vom Codeaufbau her.
Ist nicht lauffähig, aber so baue ich meine Programme auf.

Code: Alles auswählen

EnableExplicit ; <---- IMMER !!! Dadurch wirst du gezwungen deine Variablen zu definieren...

;****************************************************************************************************
; Jetzt definiere ich die benötigte Konstanten
;****************************************************************************************************

#SCREEN_WIDTH   = 1024
#SCREEN_HEIGHT  = 768
#FPS            = 60

;****************************************************************************************************
; Jetzt definiere ich die benötigte Aufzählungen
;****************************************************************************************************

Enumeration 
  #Rechts
  #Links
  #Hoch
  #Runter
EndEnumeration

Enumeration 
  #Pause
  #Schuss
EndEnumeration

;****************************************************************************************************
; Jetzt wird der Bildschirm geöffnet
;****************************************************************************************************

OpenScreen( #SCREEN_WIDTH, #SCREEN_HEIGHT, 32, "BALLERGAME", 1 )
UsePNGImageDecoder()

;****************************************************************************************************
; Jetzt deklariere ich die Variablen
;****************************************************************************************************

Global Exit.b, i.i
;u.s.w.....

;****************************************************************************************************
; Jetzt kommen die Structuren
;****************************************************************************************************

Structure pos
  
  sprite.i
  x.f
  y.f
  speed.f
  angle.f
  zoom.f
  trans.f
  
EndStructure

;Alle Structuren untereinander schreiben

;****************************************************************************************************
; Jetzt definiere ich Listen und Structuren u.s.w.
;****************************************************************************************************

Global Player.pos           ; Dem Player eine Structure geben
Global NewList Shoot.pos()  ; Eine Liste für die Schüsse

;****************************************************************************************************
; Jetzt werden die Sprites geladen
;****************************************************************************************************

Global Player\sprite   = LoadSprite( #PB_Any, "GFX\Player.png", #PB_Sprite_AlphaBlending )
Global ShootSprite.i   = LoadSprite( #PB_Any, "GFX\Shoot.png", #PB_Sprite_AlphaBlending )

Global Dim ExplosionShoot( 7 )

;_-------------------------------------------------------------------------------------------------------
; Explosion Kugel laden
;_-------------------------------------------------------------------------------------------------------

For i = 0 To 7  
  
  ExplosionShoot( i ) = LoadSprite( #PB_Any, "GFX\ExplosionShoot" + Str( i ) + ".png", #PB_Sprite_AlphaBlending )
  
Next

;****************************************************************************************************
; Und nü kommen alle Proceduren
;****************************************************************************************************

Procedure DisplayTransformSprite(Sprite.i, X.f, Y.f, Width.f, Height.f, angle.f, CenterX.f=0, CenterY.f=0, Transparency=255)
  
  Protected Sin.f = Sin(Radian(angle)), Cos.f = Cos(Radian(angle))
  
  TransformSprite(Sprite, X + Cos*(-Width*0.5-CenterX) - Sin*(-Height*0.5-CenterY), Y + Sin*(-Width*0.5-CenterX) + Cos*(-Height*0.5-CenterY), X + Cos*( Width*0.5-CenterX) - Sin*(-Height*0.5-CenterY), Y + Sin*( Width*0.5-CenterX) + Cos*(-Height*0.5-CenterY), X + Cos*( Width*0.5-CenterX) - Sin*( Height*0.5-CenterY), Y + Sin*( Width*0.5-CenterX) + Cos*( Height*0.5-CenterY), X + Cos*(-Width*0.5-CenterX) - Sin*( Height*0.5-CenterY), Y + Sin*(-Width*0.5-CenterX) + Cos*( Height*0.5-CenterY))
  DisplayTransparentSprite(Sprite, 0, 0, Transparency)
  
EndProcedure
;****************************************************************************************************
Procedure ResetVar()
  
  Player\x = #SCREEN_WIDTH / 2: Player\y = #SCREEN_HEIGHT / 2: Player\speed = 0: Player\angle = 0  
  Exit = #False
  
EndProcedure
;****************************************************************************************************
Procedure UpdateScreen()
  
  ClearScreen( 0 )
  
  ; Hier Kommt jetzt ALLES rein was auf den Bilschirm soll
  DisplayTransformSprite( Player\sprite, Player\x, Player\y, Player\zoom, Player\zoom, Player\angle, 0, 0, Player\trans )
  
  FlipBuffers()
  
EndProcedure
;****************************************************************************************************
Procedure UpdateKeyboard()
  
  ExamineKeyboard()
  
  If KeyboardPushed( #PB_Key_Right )
    
  EndIf
  
  If KeyboardPushed( #PB_Key_Left )
    
  EndIf
  
  If KeyboardPushed( #PB_Key_Up )
    
  EndIf
  
  If KeyboardPushed( #PB_Key_Down )
    
  EndIf
  
  If KeyboardPushed( #PB_Key_Escape )
    
    Exit = #True
    
  EndIf
  
EndProcedure
;****************************************************************************************************
Procedure UpdateMove()
  
  Protected Factor.f
  Static OldTime.i   
  
  If OldTime = 0 : OldTime = ElapsedMilliseconds(): EndIf
  
  Factor = ( ElapsedMilliseconds() - OldTime ) * 0.001
  
  ;Alle Bewegungen updaten
  
  
  OldTime = ElapsedMilliseconds(); Zeit zwischenspeichern
  
EndProcedure
;****************************************************************************************************
Procedure UpdateCollision()
  
EndProcedure

;****************************************************************************************************
; Und hier kommt das Hauptprogramm
;****************************************************************************************************
;-Hauptprogramm

ResetVar(); Variablen auf den Anfangswert setzen

Repeat
  
  If ElapsedMilliseconds() >= GameTimer
    
    UpdateScreen()      ; Erst alles zeichnen
    UpdateKeyboard()    ; Eingaben holen
    UpdateMove()        ; Objekte bewegen
    UpdateCollision()   ; Prüfen auf Collisionen 
    
    GameTimer = ElapsedMilliseconds() + #FPS; Nächtes Frame berechnen
    
  EndIf
  
Until Exit = #True

CloseScreen()

End

LG Klaus
SilverSurfer
Beiträge: 32
Registriert: 14.06.2015 10:23

Re: Frames Clippen für Animation

Beitrag von SilverSurfer »

Hallo Manuel....

Ein Demo für die Explosionen....
Ich hoffe ich habe das Wichtigste kommentiert, ansonsten fragen...

LG Klaus

Code: Alles auswählen

EnableExplicit
;***************************************************************************
;* 
;*     Coded By: Klaus Wilke
;*     PB 5.31/ September 2015
;*
;***************************************************************************
#Screen_Width  = 1024
#Screen_Height = 768
#FPS           = 1000/60
;*******************************************************************************************************************
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0
  
  MessageRequester("Error", "Can't open screen & sprite environment!", 0)
  
  End
  
EndIf
;*******************************************************************************************************************
If  OpenWindow( 0, 0, 0, #Screen_Width, #Screen_Height, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered ) = 0
  
  MessageRequester( "Error", "Can`t open Window !", 0 )
  
EndIf
;*******************************************************************************************************************
If  OpenWindowedScreen( WindowID(0), 0, 0, #Screen_Width, #Screen_Height ) = 0
  
  MessageRequester( "Error", "Can`t open WindowScreen !", 0 )
  
EndIf

UsePNGImageDecoder()
;*******************************************************************************************************************
Structure attribute
  
  sprite.f
  x.f
  y.f
  zoom.f
  angle.f
  trans.f
  speed.f
  frame.i
  framemax.i
  timetoshownextframe.i
  frameshowtime.i
  
EndStructure

Global NewList Explosion.attribute()

;*******************************************************************************************************************

Global Event.i, Exit.b, GameTimer.i, i.i
Global Font1.i = LoadFont(#PB_Any, "Arial"  , 180, #PB_Font_Bold)
Global CountTimer.i

;*******************************************************************************************************************

Global SpriteSet.i = CatchSprite( #PB_Any, ?Explostest2_png_start, #PB_Sprite_AlphaBlending ); Aus den Datazeilen das SpriteSet generieren

Procedure InitVar()
  
  Exit = #False
  
EndProcedure
;*******************************************************************************************************************
Procedure DisplayTransformSprite(Sprite.i, X.f, Y.f, Width.f, Height.f, angle.f, CenterX.f=0, CenterY.f=0, Transparency=255)
  
  Protected Sin.f = Sin(Radian(angle)), Cos.f = Cos(Radian(angle))
  TransformSprite(Sprite, X + Cos*(-Width*0.5-CenterX) - Sin*(-Height*0.5-CenterY), Y + Sin*(-Width*0.5-CenterX) + Cos*(-Height*0.5-CenterY), X + Cos*( Width*0.5-CenterX) - Sin*(-Height*0.5-CenterY), Y + Sin*( Width*0.5-CenterX) + Cos*(-Height*0.5-CenterY), X + Cos*( Width*0.5-CenterX) - Sin*( Height*0.5-CenterY), Y + Sin*( Width*0.5-CenterX) + Cos*( Height*0.5-CenterY), X + Cos*(-Width*0.5-CenterX) - Sin*( Height*0.5-CenterY), Y + Sin*(-Width*0.5-CenterX) + Cos*( Height*0.5-CenterY))
  DisplayTransparentSprite(Sprite, 0, 0, Transparency)
  
EndProcedure
;*******************************************************************************************************************
Procedure AddExplosionAnim( x.f, y.f )
  
  AddElement( Explosion() )
  
  With Explosion()
    
    \sprite         = SpriteSet
    \x              = x
    \y              = y
    \zoom           = 64
    \angle          = 0
    \frame          = 0
    \framemax       = 7                                           ; Anzahl der Bilder, angefangen bei 0, hier also insgesamt 8 Bilder
    \frameshowtime  = 60                                          ; Angabe wieviel Millisekunden das einzelne Frame angezeigt werden soll
    \timetoshownextframe = ElapsedMilliseconds() + \frameshowtime ; Zeit speichern für das nächste Frame
    \trans          = 255
    \speed          = 40                                          ; In Pixel/Sekunde
    
  EndWith
  
EndProcedure
;*******************************************************************************************************************
Procedure ShowExplosion()
  
  Protected Sprite.i
  Protected Factor.f
  Static OldTime.i  
  
  If OldTime = 0 : OldTime = ElapsedMilliseconds(): EndIf
  
  Factor = ( ElapsedMilliseconds() - OldTime ) * 0.001
  
  ForEach Explosion()
    
    With Explosion()      
      
      ClipSprite( \sprite, \frame * 64, 0, 64, 64 )
      
      DisplayTransformSprite( \sprite, \x, \y, \zoom + 80, \zoom + 80, \angle, 0, 0, \trans )
      
      \trans - 50 * Factor
      
      If ElapsedMilliseconds() >= \timetoshownextframe                           ; Zeit für das nächste Frame ?
        
        \angle + 10
        
        \frame + 1                                                               ; zum nächsten Frame schalten
        
        If \frame = \framemax +1                                                 ; prüfen ob das Ende erreicht wurde
          
          DeleteElement( Explosion() )                                           ; wenn ja, dann Animation löschen 
          Continue
          
        EndIf
        
        \timetoshownextframe = ElapsedMilliseconds() + \frameshowtime             ; Zeit für das nächste Frame speichern
        
      EndIf 
      
    EndWith     
    
  Next
  
  OldTime = ElapsedMilliseconds()
  
EndProcedure
;*******************************************************************************************************************
Procedure UpdateScreen()
  
  ClearScreen( 0 )
  
  StartDrawing( ScreenOutput() )
  
  DrawingFont( FontID( Font1 ) ) 
  
  DrawRotatedText( 100, 500,"DEMO", 45, $FFFFFF)
  
  StopDrawing()  
  
  SpriteQuality( 1 )
  SpriteBlendingMode( 6, 8 )
  
  ShowExplosion()
  
  FlipBuffers() 
  
EndProcedure
;*******************************************************************************************************************
Procedure UpdateKeyboard()
  
  ExamineKeyboard()
  
  ;   If KeyboardPushed( #PB_Key_Right )
  ;     
  ;   EndIf
  ;   
  ;   If KeyboardPushed( #PB_Key_Left )
  ;     
  ;   EndIf
  ;   
  ;   If KeyboardPushed( #PB_Key_Up )
  ;     
  ;   EndIf
  ;   
  ;   If KeyboardPushed( #PB_Key_Down )
  ;     
  ;   EndIf
  
  If KeyboardPushed( #PB_Key_Escape )
    
    Exit = #True
    
  EndIf
  
EndProcedure
;*******************************************************************************************************************
;-MAIN

InitVar()

Repeat
  
  If ListSize( Explosion() ) < 30 ; Immer neue Explosionen erstellen  
    
    If ElapsedMilliseconds() >= CountTimer
      
      AddExplosionAnim( Random( #Screen_Width ), Random( #Screen_Height) )
      
      CountTimer = ElapsedMilliseconds() + 50 
      
    EndIf
    
  EndIf
  
  Repeat
    
    Event = WindowEvent()
    
    Select Event 
        
      Case #PB_Event_CloseWindow
        
        End 
        
    EndSelect
    
  Until Event = 0
  
  If ElapsedMilliseconds() >= GameTimer
    
    UpdateScreen()
    UpdateKeyboard()
    
    GameTimer = ElapsedMilliseconds() + #FPS 
    
  EndIf
  
  Delay(0)   
  
Until Exit = #True

CloseScreen()

End

DataSection
  Explostest2_png_start:
  ; size : 20783 bytes
  Data.q $0A1A0A0D474E5089,$524448490D000000,$4000000000020000,$CFBF6C0000000608,$474B6206000000BF
  Data.q $A0FF00FF00FF0044,$700900000093A7BD,$00130B0000735948,$189C9A0001130B00,$454D497407000000
  Data.q $DC1E360E1B09DF07,$691D000000A93739,$656D6D6F43745854,$430000000000746E,$7720646574616572
  Data.q $504D494720687469,$0020000007652E64,$BDECDA7854414449,$3BF7DE79D7669079,$CF4DBD7FB7EFDDCB
  Data.q $526920804AC19800,$1DB25144A630A8A4,$CAB32296252C4C49,$CBB22B929D949C51,$5552A1B2476454A9
  Data.q $4E529525D891FF16,$C5AC5A5D0ED91CB9,$1245A02A52C71C71,$3800404904904894,$EFDBFDE9E9F660E0
  Data.q $134CF6F71FC9CE76,$7C83D3331045CA94,$FBAF97A7AFADD4CF,$3779F79F79EF7B9E,$8962589625896258
  Data.q $5896258962589625,$2589625896258962,$6258962589625896,$5B80ADE258962589,$04B96218F712C12E
  Data.q $D0D67712C4B12C4B,$F600103E0355FA8B,$93EC713300C01C0D,$3EF5BB5FD44AC7CD,$B12C4B0024B12C4B
  Data.q $0F40900107F712C4,$009CFEA280DA00D8,$043818C0640E600A,$6930B21BB68FCD16,$B12F1FD452004FBE
  Data.q $F712C4B12C0092C4,$706DFFFDC7FC77BF,$100EFF18D9B0097E,$18DE7E2E37E02103,$084351814C7349FD
  Data.q $078736C4966A2012,$4B12C309A8B6C054,$FF712C4B12C0092C,$FC11170431F77D19,$840162EFE065E015
  Data.q $AC0A3C08679C5B78,$62D16974027CDE35,$3180E72731448840,$600435980C861915,$BCD32E59AF7B18D6
  Data.q $180B2F0118010DFA,$12C0092C4B03432F,$3F003E0D62712C4B,$06FF8E10F8224084,$FA90478EB0405FC7
  Data.q $9F9C97431F12A68C,$393EE0A516FF12A1,$E4F1BF4003C033EF,$8045A6D1AC863C63,$023810A8A8E2C287
  Data.q $B14C7B199B60A4A0,$355FA31A6FD78DE4,$EC03B1CD0703914B,$B0024B12E14E6588,$B3F002489C4B12C4
  Data.q $934A8420B31FAC48,$781B1A39821E92DB,$9CC728A385214224,$F80F7F8A857CA6AF,$FB9C5FFE2712821A
  Data.q $2713823C087F8230,$78DEB0026A439CFF,$525590CDA5D021FF,$BE7E37403C022252,$CC9B928C80224620
  Data.q $3A928E193198CCB8,$531E980FCEA53024,$12E0A251D6C04609,$712C4B12C0092C4B,$A79C9017E0A10C52
  Data.q $45A18862541B528D,$564F80E2A580454E,$332A2A7588ABAE33,$95E41450C16AC3E2,$D82CA5619E5020C3
  Data.q $D47FF1521F928EA1,$A5A94EF3DC9C4F06,$1B01FFFD45A055FF,$1080848B45A5590C,$22408500F0E1468D
  Data.q $DB318D71990E38B1,$EA7DFB18D160382C,$CB460673B711817C,$0972F42CDE25805C,$07C3DB6F89625896
  Data.q $DD7FC4E2CF8234F8,$975E7C03034FEE7C,$75E8C7D1386B2443,$5784CC6736260626,$9D7823582B21CF8C
  Data.q $5BE0ADE7DF390C03,$15F842A2164BA043,$C4B6C4168939ABD7,$27544B89920F399A,$96A4B5BDB1C42D74
  Data.q $8F1B45048A3E25F1,$D0E0428D08808094,$63C23F7F6B87E698,$2B79414A61854040,$0351BCC06A37900C
  Data.q $2C0092C4B81DE5B2,$F8DBE2903609C4B1,$DF9222FFFC617DFA,$0098E1CFDC037145,$50B20F918FA18516
  Data.q $ADB18EB0A48DCCAB,$36848098B81C2CC8,$6C2456211E053982,$450CCDF14BD236DB,$23375811DA4BCA81
  Data.q $BBAC0EF253725374,$6A68313D71B51584,$2292FB1E43EA7DF7,$849B444A484BA021,$0716042A06850490
  Data.q $0A483A48031A2C58,$C077BB70118C9760,$7D76F16BCD90C111,$5B13AB807B36DE36,$BF73E6F99E2033DD
  Data.q $4B12F3DB9720EB57,$C20F7DC0E90361DC,$0FB840E103A459FD,$FDDCF9A0823FAF36,$235921AFE0027E78
  Data.q $EFB168B6D6CA6F20,$17D9F54A80E4C9F7,$C6FB34EFB0D63B01,$1B41602E7B156871,$62904622844B0743
  Data.q $9AB0FE1354CF9B5D,$9E1707642C79D572,$34AE4245210F93C3,$7BEE91F023E3E5A2,$6C31D7375AE92751
  Data.q $2AC040969191C008,$B4C4A4243A127D31,$E8B5FE6ED292E948,$84974A43A221D090,$DE7EF35131293116
  Data.q $36C7DDCAAF3743B1,$DFE8D5DBD1D9A8F4,$19E211C7EE014F3A,$F6E48457F703EF70,$3E37EE9C290DF2FD
  Data.q $62580152E7AED77E,$59C5027FFACD3B89,$1473E1843F144A22,$E7E089BF0C0384BC,$277533EE24DFFC31
  Data.q $4FD63448E08EFBB8,$C29F5898E528C491,$9AAE5A5466B44C85,$1E732285F088B109,$2C4A7C3884B00B95
  Data.q $C7C28E430CC30C96,$2541644CE79F3839,$222510EA449D3622,$FBA9236C16F8108C,$47998C6C8BC52754
  Data.q $A40840886827BCDD,$FA56E74A4862D0AC,$405F4DD0A043C29F,$B22C2A68B062C181,$07FBB7210939F131
  Data.q $911FFF2D416FBD1C,$C09AEDF00936FB8C,$51792C3D4FB80428,$A7DCE0439AF17FC0,$2D67EEF03DFDA484
  Data.q $E7EE08FECFC11B7F,$37E32D9AF7F0537F,$82A46BAC27DAFC90,$4B12C0092F5F7D3B,$ADD7F70A401DB1DC
  Data.q $49022CFA22444E66,$60A59E73A789CF4B,$54DA18B3F03AE680,$7DEC15F2C2EF7680,$5888828204FE0443
  Data.q $AAF6494C988B99B5,$D3B91C6C64328390,$1E2174252EB009CC,$4A38661208DA422D,$A142854E4940A672
  Data.q $3854870192249D28,$624D880F36C4E193,$01284DD7622222D9,$5156EB00A0DFE087,$43265DE0F9737F6C
  Data.q $2013B0637ED031B2,$8F46B3E9079F47A5,$7C68A40C4D0F0884,$1430080116EA1C42,$66D0519140181658
  Data.q $57E8C6ED299CCA41,$74D77C002032AB70,$16DC4249438FBC0F,$C3DCF7016116DECC,$BFC19ED255BFBF01
  Data.q $5FB7E18CF97E68EE,$9280FF8F75F77F84,$0538FCD59F6BF016,$E0851CEE68E9037F,$A8420CE700833DEF
  Data.q $2C4B0024B9E2573B,$EF8B1CCFF03D56F1,$D84980DA0FC11BBD,$8ABB12ECA41D9427,$F86383E0B6A895B1
  Data.q $1C4878EB1443252C,$FBA5377929D72C53,$3471E003752FC9F2,$C2888A8B75A117BE,$732126873E566E09
  Data.q $4240470A0042D029,$900E888A0E989F4C,$1624385057010150,$70085239B0866585,$5D7599756C0AE516
  Data.q $CF5E71132D1ED1D1,$4DB01AE68660ACD8,$6A2F708BEE117BC1,$F0DA8E6A3B191BE2,$B39D64EF01889B43
  Data.q $A02020268861D26C,$89160E80874A4A4D,$9CC54143128060C3,$5633292525345305,$251D059A69D05988
  Data.q $9A89501901A91E03,$ECD78DFFC68FDC14,$8E0E3D4FDDCC4878,$54EA7960746071CF,$8BC4F2577D873848
  Data.q $C345F6FC955CEF8E,$4565E78A80E3C05F,$C7C717BE5803E281,$A874B82DDF9FFC70,$92FB9ECEEA25CBE1
  Data.q $C5B7FE1E12712C00,$051225FF728DB079,$8FAAC8AB13D9F10C,$9B4E44A2CE205BF0,$07E73C458F76A49B
  Data.q $0690460434B99CB3,$46AC5E2314984811,$8BA081C6D7D27640,$6AE02AB02AE24222,$1B3E29193E713259
  Data.q $248F8178889AF484,$13E04523C1252624,$01DCEB498848F0E0,$43373213250981F6,$AF2555EC3685929B
  Data.q $94C944327F7C5B16,$3C58661321FC64B3,$2628287E6B1E0904,$35D4FD1A8E1D64F7,$B28F3E9B4DA05DFF
  Data.q $6D3126CEB26C63CE,$627C6D1109010124,$E0C19CA8A108DA62,$1C1887142A0A5830,$43645871C8A0199A
  Data.q $4088C78407E68E2E,$F56FC8A4B49CC0E1,$255BA8F1F01277D9,$1FB8A4A9AE94160B,$C25DF77FDC008088
  Data.q $F0B969BF8975F53D,$B214774569EB4952,$49E8D8EC757252BF,$161826BED70D3C9E,$F8A5FBC0F1DF0D8A
  Data.q $F49F2D13EE94CFDE,$6E7FEEE5EFEFC945,$1FCEFEE749FFBC79,$77F07C429FE6FE18,$EE2580125FF3F2DE
  Data.q $BFE48FF0CE3E3B09,$AFF8391BF7CF606F,$2AFF16C3B45A1850,$CC03C1FA12A13C73,$4451F72C873858F0
  Data.q $E123CDB375C3A278,$81D62CE861A9F883,$01F0C0C23D270276,$9BD42F99717A1AEF,$2D7ADFF6AF1BDC3A
  Data.q $928702C918C1067F,$D6E404CB632ABD8E,$8B4242484D10BAC3,$A526252087810890,$68F49188A2C22483
  Data.q $DA4A48E409487313,$090EE665D8298C54,$0F21119280429CCB,$3590F2C0FD36E4A0,$3E7255E48A4E6CF4
  Data.q $7773AC210A4E545B,$2FC128F87B9BDCFA,$4F06C2B3EFF1837C,$A22358564326C6B0,$DA222D3E29FE08DD
  Data.q $681124D425612204,$7581C05E3016C929,$42623C08C65814E4,$76E6DFA32DDC6222,$71D281C80111E019
  Data.q $07684C558E8F84FF,$D3E212909367551A,$D5539876639826A2,$0215DFB8F7E277E7,$1C97A3040AA3C975
  Data.q $CB0B44523110BDAB,$15A6A71576321878,$0F7D24D7F108DDAF,$9FB8599F0B92A66E,$E2813E2A4E1FF345
  Data.q $3705ABDAE62A7D3F,$7BB34FBF6FF8E4BE,$712C0092E423A8F9,$8FEEF73C37FAB19F,$F8D4EA0E40DE07D8
  Data.q $C49D0216B80484FB,$212E43971FE6DB38,$E5DCC665E3CE4F39,$A921C4E04270E738,$82A725738F8D8C15
  Data.q $E0556F37A8A54907,$0F8E753C6D568D59,$4ECE79E7F3040BA9,$E44013E284C6FB01,$25243C11CC901704
  Data.q $594B95251757849E,$5A48841121448D38,$A0111011116974C4,$0A7C28240478D008,$733E90CD161E2C0A
  Data.q $1C0B1E26E0390E32,$23B0C3C09CF08C7B,$F98F1CE04862AB14,$DBE9CD9E8F6AAD9A,$F793BB9C0A52CF92
  Data.q $BF1B3B731AFDBB8C,$C2B1ACFE1BABF44E,$65585629CEB34F2A,$85108A3111368883,$CD635662244C4F8F
  Data.q $0CF90D3C1B690FA0,$344263040F283DFC,$0C7D3AC24249021E,$A238434C72481B8E,$6EDCD0210D87F0C6
  Data.q $B8DC3783F7227C1D,$6890880909A0901E,$0D49A89F0F1A143C,$E002709ECC24D905,$7F8AADAEFCFA6EA0
  Data.q $04A77874388464F1,$92E648A56AE4AB6A,$1BB392A237098787,$AC34DF6CE60FD721,$B0FA3C45EB9CD69F
  Data.q $3B0264FF394BB9E4,$240E0F8A1039F75F,$E1CEEF95F9CD9ED7,$2580125E6FFCB795,$44A3C11EEF6272DE
  Data.q $C2304423804B0970,$1C052D54707343D0,$02111D00258F2B93,$5BF0F1913AC1EC71,$979779B891C7DB9B
  Data.q $4C282290ADD57169,$A15A70E3E0C68BC9,$E88C39CCC509408C,$93C1BB80F0D2E9F2,$9526ADB4564090FE
  Data.q $218950461465C63E,$BF638BB39E55A80F,$401F7002BBC844F2,$2C2C948C68445122,$61C4A03871C8E718
  Data.q $622D36808B40F870,$F8DA5212427C4242,$7870C88CC66811B4,$C849B92929290C78,$664A1894161D929C
  Data.q $B109918B58519768,$357E82D5582BC92F,$E0CEEE769B1C2BC7,$78CC780319DFEFC4,$A6343D9AABE31AB5
  Data.q $198780CBA037F49E,$210E949B45A122D0,$030184809A113E11,$30815FD25F46CDBF,$128814081841A505
  Data.q $4643A3D3E260E0A8,$2C1D1ACE4A454E46,$43710143A9C99715,$733BF9B281948E00,$A3F71A86F012B1EE
  Data.q $10081AC811A3F372,$346268C4443A6884,$0A9A14680470089A,$D49C53EF3410C689,$168BF05273F7018A
  Data.q $1DC923C05C79AFCE,$559F221A57E2107A,$5EAB1954C3DAD061,$66C4632BA2BF68C2,$E9FE4A67BA4A2540
  Data.q $E405CA3EC6571EF9,$46B8DE6FC44872AC,$77B919BFE8F2AEA8,$B723C3AA3CBE2A77,$4B1FB93B7F194EAA
  Data.q $8E3E41BB5BC4B002,$C25587E287163AE0,$CD38B69B5522EBC0,$62CEFCCBBA99CEC4,$ACF33736C4A04387
  Data.q $9D0DB728A6EBBA91,$159385CB062451E0,$F4AA7EE3038D74DB,$ECB60EF57D9D6211,$C14030F1298BA18C
  Data.q $08F8512565051982,$56AF0DEF934119A7,$ED382129C2B80E53,$0CEB127080629CC5,$3797AC9B05692BA5
  Data.q $223F89D5E63F22D9,$48DDE0B79E6EEA69,$708794C9F0A3429E,$92AAD71CAA450A9A,$5BB958F60C7011AA
  Data.q $B47A62558F478A45,$3644158C3D2A4264,$0E0B1982C1662020,$072EC3A3D392C038,$4E61301432488494
  Data.q $E3684450922C68DB,$8CD9FA0A1D09E951,$0FDBC6A2097C770B,$1874FA01D7F25DB8,$874BA5D2AC2B30F2
  Data.q $4487F789B88F1480,$564AAF4E6DD55874,$72EDD8D503D240CF,$C1822607B6819504,$7515150194BB9354
  Data.q $7112E84CA607DC5C,$61D978F812DD4A48,$F810EC5DC4CFC471,$F810EF468E2E29C7,$43C382444F82FE4D
  Data.q $0F49E2131093E1E0,$8A4D108E044A0ADF,$8C16398752C28047,$13A3F0F5735F02E8,$1F1D65BF803A0AA5
  Data.q $35C386F3FD62BF78,$4D0B286FA529D089,$F31515515A845791,$7EC784A9F730E224,$BD90AAF63C2E3016
  Data.q $70438A4195E629C9,$272332C2D3ACAB09,$4427C8C6E5580232,$5742DBA9CC312253,$12583F6A6F0126AE
  Data.q $58FFB3FEC0C9FB80,$BC219C4E57E8FF8A,$2243C1D821ED0F15,$3A911ADE9B210F79,$125340AD28675485
  Data.q $23339E35D5A794C8,$78DB5537AC57C6CA,$0A08DA5801B80634,$67533C032B6E971C,$4FDC0080D0EBDFDA
  Data.q $9A79A986787E1E95,$94C24C446CA3E37D,$8694D94F854B0A98,$73192C38C4C42455,$11D92ABD702C1304
  Data.q $6B2DF41F19CA9739,$75D92DA52C654FBA,$6ECC94959E16C825,$FC607B89BCEDF52F,$05ED7C4469810A05
  Data.q $CA839474509C2894,$A78F8D50E1E1C0B0,$CEB3E9F47A282410,$98018417DEB11C5A,$072ED36B9F13660C
  Data.q $3E31828E1998C5B6,$60252C4A38700A11,$3E93C594498D56B8,$62900808E548A452,$1DF6C251B0EDE841
  Data.q $EFC91FFDE3617033,$D671E43168F47371,$65D1E9F4B4DBA358,$AC44F87A627D1695,$B082D8411D7A6D7B
  Data.q $674D5F55640B410D,$345602241DA76A6B,$282CDA2D2521941C,$C00875C2119B88C8,$55E6CABCD7840A34
  Data.q $81F666C8EB1BF770,$E8514FB25AEEFCDF,$29212101140BC8C6,$909E15210F9D7E1E,$8DC9272A0B563428
  Data.q $A4449022113C5BAE,$AB6ADD98B45454C4,$23FC074154A27FBC,$98C9ED70417AEF24,$C080B3B0286469C8
  Data.q $648CC8AD7314084A,$33E145093131166F,$1B65A61D170E232E,$1E369A5259622369,$D750D1AA9B411F02
  Data.q $653051505111C7D9,$4DE8051A4C318C0A,$FEFEE0020BEEBD87,$37FFF5FFE5FC425F,$923700D663F8B45E
  Data.q $7FB8429FDF2CB49C,$6D1C130412EDC4D1,$C8415EA43DD51E7C,$4C3ACE2520944236,$7814D1B69755F1A1
  Data.q $2B07923ED39B0E58,$DD2E087176020314,$FDEE033C9405125A,$3E210EB013F9F148,$1816CC8B64E219B9
  Data.q $8DB34C6D346D2422,$49B368F470C98975,$0AE15C0732E38517,$68E60B70A1D1C330,$825B333972884CB6
  Data.q $A2529B632D60705A,$95BBB3DAB0F29BF1,$7DCE014137377934,$150B010E8A18F819,$508A344915454B20
  Data.q $534180549414E62A,$988563D092EFB4F7,$AE1822BEB0156D3E,$65A02FA18CEBD5D7,$4262DB15C9735B25
  Data.q $BF626B854A658142,$B021C64C8C127135,$5CF162C3D210D6A2,$CFF32E6539CE5C9F,$725AB85FD901DF99
  Data.q $1E8110D47BD236EF,$358F4D3974866D1E,$2190C3A1D3E80C86,$C2D09010E888D67D,$A20F8102512D4D27
  Data.q $82990AF353781C68,$D0D2D0C6F02AC0F0,$488E02D35BF3252B,$3999EC7320B46B90,$FB8BB8B1CD178F8A
  Data.q $04A8E4151B360495,$44A4245022524332,$B4DA1D01111C4268,$E8F3642910E81368,$952D2B67B595AC1B
  Data.q $28881213443C1815,$172D1668B19908C8,$24A07F8193C444F5,$19030DB338EE3EAF,$6689F812B2142070
  Data.q $331EE4C69428AFBC,$8BB998896887F757,$B561E8AA089D4C29,$CBA8A5B42C292B03,$941603989CC26D42
  Data.q $2C6444147864318C,$88A3B7F912193458,$A4FD2FDCFC6E93E8,$89C6799EE2CF7DE0,$58A97A191B799E67
  Data.q $8F77B3A8AC2D9AB7,$09ADF3723FB33B62,$73F8B4C7FD7EE550,$4883F60B989D5ABF,$83C8C051C45A1DFE
  Data.q $40DC943D44E8A670,$CA25718E6C0E0D8A,$4AB5F2C7D9A71856,$B344F53E9606CFB3,$C04B18BDAFA5CDAB
  Data.q $D4BC1BA94CCB9C90,$09CB017C787DFEC6,$321147C2A00EFE30,$3D319563A8A539B6,$84C4C45149F07486
  Data.q $96147D1ACC444064,$62EE1B1DAFEDC361,$8DB616CB92B898A9,$C0BA18D39525B322,$21BFCF7366AD0521
  Data.q $4A9DE38054977244,$9E90098406D1C7D9,$2038D8CF83089A42,$8A7013E923E34022,$6FD01E0C8D86433E
  Data.q $D79883EED01B864B,$0145D623AA228DE9,$C2926C2126D9A159,$BB14386405A2E7EA,$072A29C70A836326
  Data.q $EB10F9424A0A29CA,$5BEAEE462F4E05C1,$E23EBEC65BC88EAA,$218E71E8084F6E46,$8490CAB3E8F43A43
  Data.q $4AB29219747A5D0E,$0F281E241474245B,$D164ACFAE81050A2,$78C12540D20F9DBC,$A0269EA0273AFC60
  Data.q $51519053920E8D90,$2FE93B70540C1ADD,$F74BBD1F29A26603,$61E3B8F6E01E0284,$A7110E8E011C0043
  Data.q $B478267027534159,$92804589B6474C44,$A561C18E46430A8A,$CE14EB1691871AC2,$1CC3036724814641
  Data.q $D7BD3070B0192EC9,$9B01CFE035FB800A,$292934613289F2C6,$C99F7C61E95505FA,$1A158D5AC495A05C
  Data.q $1E1EBA509B7C0365,$A558EB31D099025D,$13E0112850AC3890,$01D51B8A92811851,$473041D198CC4B86
  Data.q $7CB081EC91F00921,$C79E6D5EFA2F255B,$C344099BC6DB407A,$392FE4FDF0C1BE66,$BCCF33C4AA3FABF7
  Data.q $18F8F08EBA45DA6D,$EC62003F563BC03F,$1C83EC7E73CF170E,$824B8D7BACFDA2F0,$C41EFD9EE6749E6F
  Data.q $C013404CE4F57E47,$A9290C7D7893425F,$ED85356C6491B009,$0F2D5C476BB05191,$0177275EACE48DC8
  Data.q $956558A71CE15D85,$6D3393CF745E5842,$366326E0871C9B3C,$52F1C05E3DAC38A8,$9EF87EE05BF0BF7D
  Data.q $C2442CA6460501C7,$49744450A73219C2,$2E874447A223D2E9,$380860335B4F269D,$25193E2418664252
  Data.q $339B75C073990E63,$CE62AE7B368F0610,$DB9F2F24EA7D8201,$595DC050B1E51279,$19A37244EFB80107
  Data.q $CCC5D6042850EB59,$E342831F63CA046D,$5A2D0E8A73E211E3,$73603F5D142878F8,$36A3A00DAF5DD053
  Data.q $93024E852F04A676,$F487078BAB288E8B,$9AA05C1029A561D8,$9B4A0BB2A587029C,$5058B915B0872950
  Data.q $CAB7C618D7811888,$A38E683D2B1A760E,$D169F4A4AB11FF1E,$0E94909A368B43A7,$D662A1B3E8B47A6D
  Data.q $9228835C20578852,$F02420B280D080B0,$0D05C05794198838,$800CD359B883EBB5,$CFB19119CCC67319
  Data.q $5D638AC739B4CB1C,$77EC711DEA5DC501,$392C86ED0C19B7C4,$585661E3D20F3134,$A11E17C0F204D3A1
  Data.q $7FD8EAA2426589F0,$F58412312BB90CE5,$CE94708C4A720211,$8F391473B0826332,$6AE87CE21AA01211
  Data.q $47E207DEABDDC967,$2F809EE79224FDC1,$5F1F09C620DE0594,$3875D723045ACA2A,$28A0630691893A44
  Data.q $BDF46B1446D17223,$23C27804118C811E,$9D8F9CE368812951,$9F004BA403B344FB,$51CCE4B08C70B62D
  Data.q $89F379D8A34E5074,$3C03F70DD95EFA91,$72B0A273FF0D77C1,$5EEDA0FD7C2BECE3,$417E385E79E39F35
  Data.q $51CCD7EC7E2033DD,$8F21BBF7816DF3D0,$AD3C39FE99C23E0D,$F917EBB9C63FB618,$31D4D3F3C8178DFC
  Data.q $3C9F23E2F4326FF0,$224C55055222E779,$5F3AE2B5CF86629F,$81F14C5B75D80F2D,$4F10985988009292
  Data.q $5F7C7A253C44C4F8,$F16E79078AACBDEB,$1AEE2BC0BE5BBF28,$948762A720A38716,$C3238AB8E018D798
  Data.q $8FF7EF5DDECF8E00,$9B91861E100304DC,$3C2215B8582AB372,$CBA5E8337E111442,$025202227C289B1A
  Data.q $B06C7A2203219234,$E9F9C267452CF48E,$A3C676C43B166E4D,$2B9B625F0927780C,$1F5C127B71EC0EBC
  Data.q $0A15BB989CAD5DC8,$0F1BD77792010070,$31244226478B1A1E,$40902C7BABD75B0B,$1013E5CC936E908F
  Data.q $57B6A8BC3D083093,$052EDF63AFD10722,$F3D307A6FB0AD65F,$E63AD94F1AE5BB3E,$C70A1058619BBCFB
  Data.q $9535630AC9E8088A,$A62AA02BD5CAC8B0,$9AC56F4EBD61C676,$79AF5F8951FFB234,$6FC7C69235BA95AD
  Data.q $8B4A424C4F87A7D1,$2BAA70E9F43A6D16,$AD1087E047415648,$38D0541762067409,$9AA00F4137014FCF
  Data.q $4E988C96B202B883,$21C5B1998CA60B04,$8F08434980E43957,$7BB87386A8DE6048,$93B70AFF72D5D8A4
  Data.q $DA41E68049023553,$631213ACB39F483C,$0113C7C204F85128,$31E90212F2D2192D,$7C4B326AAAF22A2B
  Data.q $324B6E6322E410A4,$C332C9043D5D2197,$319C784C6B08F151,$0E1DBBFD8E6AD806,$FE02BFC77A34CF73
  Data.q $376659ACCE7C579F,$05690A07A257AE0D,$CA46B198D62C83DA,$301261478E460FBA,$F9E975E5A6D9421D
  Data.q $C3094FC4977E5A03,$0F1DF32460054088,$21536CF95E629D93,$3990862406315398,$C7637E264AFEFF01
  Data.q $17F2FE293EFFBFB8,$E70042EF742265BE,$60D4E39CEB5907C2,$EFD2FB3C83FDA0C0,$5BCA30DABE37ABF0
  Data.q $F1BBF7AAD6A39DF1,$14A6E003B41B86FF,$2DC6910F1B43C155,$82625F372BE524E2,$6B7A4F971CE1B043
  Data.q $204F3CB8213FF74F,$DB2E5DCB1754E3A8,$E6368611190E9C92,$7158B5DF61D94C96,$A69C143C7B0A1E1D
  Data.q $1F06CFE2B50C261B,$73FCF6FCB3B3DDE4,$5960AF0C7311B8EC,$6B76B888D6531AF0,$823F2C37FE287AF9
  Data.q $725F80546F79BF75,$3D92B7D8F0B7F108,$59EF8DF80635C87B,$65D01909890F73F7,$5C42106681EB218D
  Data.q $59D5539884C25941,$7F633923DE06E9C6,$DC2EEEF2E4D8FBCC,$8BAB1E1E0AEC2780,$0C6BC3D90E2DF897
  Data.q $77631CDB5EA46A91,$486D304DF1DD088C,$241D0513F6D9A2C0,$142629484574F952,$412525D06CD0F02C
  Data.q $607B442224405751,$73C825F02C6A8EE6,$20426AE938449A20,$CE857610A058F0DA,$736EEE6E324D44B8
  Data.q $5434B68F39101CC9,$02408614A4A6160E,$8F36ACD5F2C24414,$A3B14482DF6A27B5,$0092021AF376FEDA
  Data.q $26D016CA93610E8F,$3F28DDA626D21046,$82D54784110416A9,$440D7A0168119815,$1875F9C1170A08D2
  Data.q $3BA087D05D102A44,$11929CF812D49B30,$FD9D4072C231AE0B,$D54086A3C9F668BD,$ACD53A139AC7DADD
  Data.q $731168A24904DD4F,$F4AB06CAB18F2E86,$2423C0E31889E1E8,$DA538BD09D2D0911,$B2E33999183AC03A
  Data.q $D2849C42204559C0,$C4831A73867691CD,$A5D01505BFF49A22,$CF3492EB9A4798CF,$7019E20124DDDEC0
  Data.q $1CE7A3C0BDE485BF,$48C44B8F06686F37,$80B30B9256524F41,$2D6440650957371B,$BE0ADDA0AEC18AB6
  Data.q $3740609D3E8A121E,$D094D389F56C33EA,$D34A820AC12D4857,$2414C4942557043E,$C1407060E8CC8494
  Data.q $C6E48E3EE873B5FF,$B8009D77EA753795,$7C1D1E4D9FBC24B3,$7E06DAE6CA768307,$F1B99FCB39D9B090
  Data.q $6DE39F32E4A15F04,$F1AD4279367EF708,$21EF43F7797BE768,$6528825DDA743A0C,$F47C13FEB1E53DBA
  Data.q $9336C0B848D798DA,$3811EF8D1C004B93,$D17098BE736CB99F,$B2536BB980DBECE5,$9B4141494D1F478E
  Data.q $5BF4779A7044FE55,$86E459F2B88A82F4,$E43FA6C72A92C2E9,$C0B9F665B077D9C3,$C11629997118F635
  Data.q $047D35C120A07D84,$88BF77F18DEF372C,$D5230EA859A2AFE4,$6B1E01D952954AE5,$10909312E9097478
  Data.q $53A1E696E9CDA1D1,$D2B00590F9E0B2D0,$45CF298C825AB386,$8AFF853C4C7A995C,$BB38F51A1E2D7622
  Data.q $97F2F7E6D2BE42D9,$4BD1A8FC966D23D9,$E01D479047A278D1,$48EB0461F826D8EE,$3654E4AB2C7C065E
  Data.q $C71BEC1494E5EBA3,$8988743A0A3D8A57,$1026D011E25F911A,$F6B2C810843A5A11,$119043902A2091F6
  Data.q $8E0F08620A440678,$173EBD8B294BE315,$2C161807467675B3,$0D20632533930384,$D2BC072C322013A9
  Data.q $5BFBBDBE21CD4428,$435F7B1E5FDEBB71,$4FD7334E829CC545,$0F0B4047C64DD1A3,$515541481A34711F
  Data.q $458F48A5BF56739F,$B4E5ADFABD103C74,$9961C1AF836B9AFE,$98C82C7B1990E733,$8D02AD4E6FD13B73
  Data.q $E6DD0E3E6EE27B9A,$E6D16888010D545E,$A7D1432AC23CFA61,$4F8FA02136243B2F,$0A9E8B45F444408B
  Data.q $68EB5871388F4389,$08B0E34A068716AB,$B8E39B840694939C,$060515116FDCD949,$18EF4CEAD4DE64D5
  Data.q $0F61775366BD7B51,$FCE6826042C87A38,$2CF08C71BA48D005,$7B31E7AE3B97B011,$1122A127DB020D8B
  Data.q $5CBE2AD448F44892,$B8FD0AC13A5DD225,$09E51F52B4A49C4D,$069058DC4AC0A064,$FAE045A2D1E17486
  Data.q $025052C29CC8CC54,$1D331939B3683FDF,$77D026F56F8B074B,$B63CE3F270FC68DD,$C6F4E3595E9C7DF2
  Data.q $83498C58B3E7B419,$A9D5C411FD3FEF94,$09DBCB38179E2CBB,$81E79FE97DE5251F,$8783EB16A3B4D3FE
  Data.q $A4AAAA7DA9049388,$07C43E43BA360A2C,$309917EDB6286E88,$0F01770023A7A939,$653325E08DB6632D
  Data.q $18F34E0846CCC846,$66232C586B20F30F,$9DAC23FEA1F2E974,$57D21C6F08D56471,$795F0A9687B9A21D
  Data.q $58297517F057F39C,$345D2C28D13A0CD8,$48ABE48D3C30CC3B,$F7065CBB99F1C11E,$C846238F8A7F820A
  Data.q $42B246D19948B184,$262020336D7BB4D2,$87487DFA2D1527C6,$67105DC421903810,$B30839DFCDEA0C40
  Data.q $DD5C33DCA52CDD80,$1E59E780747579CB,$B335F219DA9C25EC,$F08EE9B349FC18D6,$6B2BC6889C9B2828
  Data.q $D5471EFC19DFC17A,$02C5F061428D16E6,$70C66BCE6C764A23,$304DC45A1D345368,$A841874C47A22124
  Data.q $59E8119DE9683E19,$E6B58806C016F463,$D6D0E5381E841DCD,$8C8F11046C1159D2,$D8C72838F79B5C86
  Data.q $537186494845B14A,$A1DF32B8C928E732,$7D149C71189E6D85,$651F712639B8B71B,$C68245B29D442BD6
  Data.q $3A6FC1D291925392,$025642366628E5F3,$1CFD3450FD1BAF37,$721A3477C8356087,$057C18A82C210C93
  Data.q $4E50CB710DAF0726,$3A900551EC62751C,$1ADDD830B1D4FE46,$5FFC76FBCF1AAC09,$BAC2B2CE1D00F313
  Data.q $244BAE5A1D53D218,$575975CF156EC4FB,$C5E047612556A731,$D66AECA1670EF9E0,$14E980AA8285E007
  Data.q $1604C8681E6E1C8A,$39CBD3C692458149,$5441444900200000,$DD504D4D14D029A1,$E04DD4949AA04A1E
  Data.q $8A118F1DC44FD36A,$224F8208FDF9B13B,$592840F1465C7148,$66AE8242377494EC,$B1583BC2F17CC5DF
  Data.q $E3E502A68FB58967,$2FC35888A7011E89,$246885E045AE247B,$0BE112FB44811018,$E4841B2CF6125F4C
  Data.q $BC8CCCA8CE510D76,$11BD63F3ECCF643C,$3D583DE9F21EED1F,$2D6FF9C975F4796B,$9B4DDF002AEEE21F
  Data.q $DD9A71BB387BF6F5,$94C5930EEEE121F1,$3C1E2F1D6318C9FD,$6DF38875F3E0D5CF,$CD9279D1B18F0E86
  Data.q $66DBDAD865653AC1,$19E4584C5933EAA5,$F4F6CA61DA43A3DB,$92EF2E992AF8372A,$A1E18FE18CE6F7AA
  Data.q $10E684D18BFF2AE4,$16909F470F0A9B45,$2A426D26CB380C1B,$ACABA6F780AA9251,$74FB170893070C3E
  Data.q $DF2A1CC3EC7A36B3,$6DB524B97A02AED2,$2E97490E1C2D1402,$8D3C107E53A838A7,$019FEC11D07B85E3
  Data.q $5C530F22DF969215,$53915151C48528A9,$CB68FA19156B6535,$103CE0D020B7E036,$51F7AA9D4F46D60F
  Data.q $427AFFC3C8FE04E7,$6184A1EEECAE5899,$D153F88D2A739677,$0F2DF9817A6E7CE3,$8A41128E3E2404B4
  Data.q $3B888BE381409DE2,$82FFAD268CDD1F55,$66020B6462A38B00,$8A168F019AF093EC,$62431FC9757A7D0E
  Data.q $6821A7AB11FBACFA,$A714493517019C2B,$FDED46ED9DB88781,$EB8020CB2B8833FB,$383AEF113A361B2F
  Data.q $0A25C16E0171F5CD,$339B9684ECE39876,$3658678D93B6CC67,$B9F000FB8405B45B,$2C77B55E4726B537
  Data.q $4E46494F209AE2E4,$9A0948B48721C141,$3EE96AAFB4775DDF,$6AD507D5A037100F,$3CF84D7DF20BAFCE
  Data.q $F3956DB5942E263C,$348A16743EA8009A,$DD2E12033197690B,$118EA18D0DF700EA,$168CCAEDCB01BB80
  Data.q $A43092E8B41B2921,$132C4A4549744743,$0F1E94212426DB62,$0F740A3055BD1574,$B0EA298163542E92
  Data.q $C3EB8D17DA6DD84F,$136D9988F5D99253,$44D940E55D798C8A,$3598A94C146406BB,$749BCC052B2D70DE
  Data.q $C0484776EB9AE362,$98A30F8E2CF0469F,$F132340E10449005,$9B7CE8FF158B8DF9,$8488901D758B65C7
  Data.q $CF4EB10C64F51554,$904D274D3FDF4D3B,$52C4D55912928571,$03B020440B19027A,$5991A3AD6190F84B
  Data.q $93641B93700D9917,$F1505779D7048F39,$EBD51D25DF1CF677,$F0043927F38067F0,$0AACA0306930FC44
  Data.q $98C349CC5A6020C2,$366B62DEDF5E5ACA,$117B7A5F12B0F4E5,$930F26CE3C31F700,$5C96C280CE830946
  Data.q $CE45166B4F0576B8,$D7A7F64A2B233E64,$C517AB6605E8F4F9,$E2BF83EE89FEF6C1,$2424DB3209535C85
  Data.q $8D655848A19112C6,$E89111037548D704,$7AF411DDA02B5E98,$4C8229182287BD01,$FDC3862BF3357623
  Data.q $B4CAC32B482ED702,$A0F0924750D35AC5,$1EC5D9F2EA8CE1DF,$D9F774B9212E38EB,$A4589BFB9C19F891
  Data.q $517C0A5B426C7456,$78BBEA44D4663190,$B660B77336D6534D,$31AB7752D44A9008,$45B93AA2A271A27A
  Data.q $39CE12AFD35F5102,$494CA8F3CB433DC8,$537932E1D2AC5B6C,$9DE9B74E64253E07,$F1DC738E12F2C530
  Data.q $8863C69CB08C3801,$F058B14541638262,$22D3695762613579,$A4F8FA2D2E9743A5,$A4DDC2C75A442E75
  Data.q $46C4804D4113F52E,$4EBD6425DB71F1FD,$0C133B0646604F7A,$B80C54CFA0EF8F65,$1CC665CBB2506EE9
  Data.q $3BB73E2C72E26232,$DCF82051C65BB9DF,$78F78F31C401569B,$7233195AA8DB0DFF,$48FAE6CA2A18A486
  Data.q $51C2C1C3380FAD5C,$033BC0AE835882C5,$A61BF093B1BE31EA,$6862E053BC08C85F,$88555C6E2B5D6077
  Data.q $B9C918E2187EF1C9,$AC087A749341CFAB,$4D848D622359F1A0,$9227D7819765F45A,$013027D2F826DA31
  Data.q $5A546B21D547CF3D,$2980F5409E503DCF,$A9BE0FAC7C4D59C8,$12FC0BE841E8764D,$811F1A990929A962
  Data.q $1EC2C3AE063D2862,$3C5208163339B0D1,$071A68A5D82C063C,$E22FE038095796F1,$3E7A4F0C45CF8D38
  Data.q $FF0DB8BE4233A89E,$47CE71565D16F9C3,$8B4047A509F0F120,$36078A75A0C2B796,$58422D29892DF886
  Data.q $102DAF02DBF127A4,$9C652510C1F7516D,$8446A0E7EB02AB61,$2A27DE15D59B26E6,$7140F793FE32B6B6
  Data.q $BF010A33B7E7E7DD,$4077AC7801304EE0,$754E75F170BCD43B,$5447BE50D60C6CBB,$DA5CDBA24041A405
  Data.q $9737D98A6E12EB3D,$9207C71678B7DE04,$A10AFB7171C65433,$A7E8A9283AB7E80E,$62C1CDB24130D22D
  Data.q $7897CEB664432ACA,$E5E86953FFC744FD,$52221D3909FD31B6,$5466D23D0ACAB1CE,$F893A130D20BA7A9
  Data.q $A3E43EAC78CE1428,$F7CC945C04AA893C,$9B28287486ABE761,$4904C04A747A87B4,$E4DC6BE12684C65F
  Data.q $4F9224FE681DE035,$8F78A9E79FF283DD,$6CE1E79E92D9105D,$212C35C7B058CC09,$93119C862511169A
  Data.q $28823B4F8EE1C245,$8DBD78D738017503,$3E07104F483E118D,$2903317EB8AC3E4F,$3CBDE2B9160B5698
  Data.q $50EC149117889F48,$30A6E81074B00860,$934F7E2B9877CBE8,$0023850609920003,$1E3121113231C39E
  Data.q $5A6EA1D16974AB09,$AF01B41671B40F5A,$94829B032ADD3DA8,$DC02B3D91D4346C7,$4519E04C8821C40C
  Data.q $5A1ED62D739CD135,$205E2CDC7B574BE3,$EEAD0DD35684C3A6,$BA1BF58C32DC50A7,$D5637BDBB886A737
  Data.q $01A73E6E303EFF48,$2339829EB4698541,$04502CB048094CE6,$D66EA4A206267C08,$3E3FFC4D3B2095EA
  Data.q $0F3D75CF6639C766,$C4BF0A0BE30EF857,$CEB2B20A2BDA5B6B,$6EEFBEB87A35BD20,$20630C3A2EE6084B
  Data.q $9DD411E9A09047C7,$21152222204C641B,$BB48F3D0823687A5,$47E0912013A92892,$0B50509A21640B75
  Data.q $42DF304F4DB075EC,$E118D0A9240920A8,$1E2CE50274851993,$094ED23190285205,$43C02A3854140430
  Data.q $02B96F2A8E9B2092,$658660807FB80420,$DCD829DA0A9B2481,$2010E31025178BF1,$4D0BE0113C49CA0D
  Data.q $25376E8F4124DA28,$AA25611233C249E8,$550C4410ABC15757,$93196598A95E98EE,$AFB3F380E2E6E322
  Data.q $90FFCCDC2BFCFAF1,$D9D0F2CEEB3ED153,$F4FCB4B2F0D97118,$4C0F2DFABF1F80E9,$976BF5FC68D57792
  Data.q $49055AD639FDDDD8,$70E695F0F6E83010,$54AFC07FEBB9E63A,$256DF89F47A5D2CF,$B408CFED9C314FFF
  Data.q $AA43E33B2EF6E2E6,$0CE31293852B44AA,$DCF94A3E7911EF81,$E3927539BBDC7718,$4A78F45882F24CFF
  Data.q $2ACE3C5A62485A6A,$26CC3CAB14E35867,$C7DF426A1A45BA6B,$0BC4A988D4AA3E77,$6744575A26BAF114
  Data.q $D7C143DA3CE79B04,$80E35C27C85C26B7,$2F19C0703905059C,$15613243F1CEF621,$01EEB5D614F96298
  Data.q $132136458A8D79F1,$6250CEC494CCF4BB,$8373AF1182CC6586,$170E13050C080711,$28A1760E392EB673
  Data.q $DABAE0AE3B801DC1,$9A2B860B40633579,$C49265914204D134,$4867D1AC3380790C,$BE9A201CA451C81B
  Data.q $CB164EE2A15E4768,$62C7C1836C4C9A2C,$6D7E9A67EB4D4451,$82147C7C226D0909,$1DF3026760831F00
  Data.q $46E064414EC176C8,$9ECA54757ECD1620,$B2D3764763029B83,$9707254BCEC572FB,$7F0336BD3380B44A
  Data.q $78D2707E69FA91AD,$FD5498F2ACB1AAFF,$A5B56B0D669164A6,$8BADC50F7547B236,$27238500974441B6
  Data.q $339399EAB4D26727,$0332129A45D791C2,$15EA75C7F171F9A6,$8C34B8C1577C1DB7,$1F5A0F942AA31CF3
  Data.q $BACD87C1235DFBC5,$0B0B545DC02A47FB,$28A8C8CCBB058760,$8DA89520428FD9EB,$04E85349A10854BF
  Data.q $007F482EF0643275,$86173AE9F2093FFC,$56AA94169801B821,$D2810D7D1C0A8E01,$74A4AE1430292168
  Data.q $EDC9B76461373305,$4630C5D9C837150E,$E0A586414A63C130,$EFF81F76B7ED28F6,$12C4382343833C11
  Data.q $9F39667D70E79820,$2D12D8C4A0916AD5,$1E57C13278844A05,$B009D6170A1C6B5A,$5EF0414EFFC17BE1
  Data.q $2619C284DC824FD0,$80F8D6C649C392E3,$FC0BBD83F9D746D7,$4EF02E8FCE79FEC1,$98FAF0BC7330E731
  Data.q $5B62C149CBCF8183,$77920D596FC99FF0,$DDB5FC4E3AFC68D5,$CE713A6DFEAEF117,$9250887260E3316C
  Data.q $71109277947CA5C0,$D8E017FD93B7C385,$4CE4BFE5E497FEDC,$D3A2209243F12237,$67F613664C7382E9
  Data.q $5F359E69F5B93E63,$04724F47949CCE60,$25D1158488C08100,$888F4C42B045D1C6,$F4FBF69C06033136
  Data.q $3A2A93A028830EBD,$D84485A87B924FA1,$9582D9836CC9F13A,$704CB1CC05410B6E,$64892FC6705929CC
  Data.q $A9360DBD36222048,$5FAEE4C5A38FB1E5,$8C598646BC00B847,$6203C5711DF21CB0,$E7D88C7B059F6284
  Data.q $E460A2A7D8CC5B2A,$03606332181FECC6,$3750226B5754298A,$5F37B0D6EB0E0335,$61350FE8EF3F5CB3
  Data.q $8CF235A8090CA0A0,$2A48F8734449BC82,$793584EBA9C56E0E,$815376C0EB00C307,$4D54B09780546931
  Data.q $D1E31131A7555829,$6E32721870E34026,$1D0EB64AF617199A,$7D832FF202B20687,$F607B021CBB67A8D
  Data.q $7E60AAFE6017141A,$23A234E91457B215,$C70A2CB336430635,$C9B36EC0DB058288,$12E5F8EAF1B1638B
  Data.q $71FB9263DB5AFE6F,$CC6D23DF5C9EBDD9,$071905024BBE6DB1,$5299991ECE64382C,$62B1BE3C8BFEB654
  Data.q $CE0079365A81BCCF,$A05BBA392651C582,$F51B65790C6E4B62,$0D3854F8F00128E1,$CCDACDBA292EEEA4
  Data.q $84F0E1E058A84C71,$35250289B4DD0946,$447127497C74D2A1,$24DD3F41BBF084EF,$E043DC07BC093E40
  Data.q $3017CC21541EB834,$B925B332D4FEC11E,$EE623323299A98CB,$8AE3DDA998DC2CA6,$B85782CABCAB9D7B
  Data.q $BE2316CFB26E75C6,$8385D6EC648B9CC6,$38F8E06FE61F2477,$506B511A7960AF92,$8D021C2D06670E02
  Data.q $136B344E51270487,$73B06150CE0C7523,$939E68E20F3A7570,$468C57ED98EA6A84,$B63D935B31E37B19
  Data.q $683334C679A67DB2,$124B8CEC9657B153,$A5C07AF87823E63C,$77E7B65BF6D3F2C2,$89FD79B47E200435
  Data.q $BC08A7D6C2FDDB62,$CEAE31172BD5F10F,$BDF4F8F7E2311980,$82CF8E7B96FE779E,$BFFFBEB755FEC8F8
  Data.q $79FE18D9D76BD3F3,$C43F620E1007EDBA,$4E32E1416CD33ED7,$4F27C2B9278279A1,$E82A62CD5D843AF4
  Data.q $E63866614B1EA089,$117020287A68E638,$69217527C27876A1,$CF6073C5248FE1E5,$AFDB0F3E505CD439
  Data.q $8141200B75267639,$3CFB1021D88590E6,$E5440752AF316B2A,$337B89FDEE26F582,$922F2C61EE005416
  Data.q $EE2A780DB68CCEB3,$022847C99F159492,$136988D71AE3D876,$61D99A24385462D2,$3E801442ED45E4DD
  Data.q $2B8382DB8EB82B75,$D8D61EBBC041DC0B,$CB83721C975C12DC,$1205301C8706E35C,$35EC100C104C3B0C
  Data.q $581C1978A0779061,$8EF775BF2FC4027E,$0A7821CE58E7F803,$00CCB963CF86398F,$793E365C0EBA9747
  Data.q $14C30CC54B1190D9,$2A84BB92CAFD989F,$5079FA0672042703,$00F2E33DA81EF013,$7A29982085502DB2
  Data.q $69E24B0A507AC62A,$1CF02F339F192776,$7B47A6B1B971512F,$373C56FB75BC69BC,$7F801E51C01576EE
  Data.q $C7C0BF989AAA61CB,$3E1905B6219A4960,$98CCCC9C961E8F0A,$1388D91F5256028D,$3ABE9B341F28D26E
  Data.q $5611470B60165DC6,$8C0B4C8E61B06168,$83CD8FB4F8055013,$ECC552A381118EA8,$4CE628E66804E5AE
  Data.q $FDBDD5C08BA325D8,$19E90E948B49C385,$D68F24869141628A,$ED7116A2C7A4F1F5,$60CC50CBCA0AB804
  Data.q $633E56C343A303BC,$87665B3EC8721EDB,$6637731184CBBB7D,$C3B26E72630984CA,$DECF70DE5711BF08
  Data.q $0977F0C47FE9EF51,$70FF04B0ADD401B9,$298E9EA48F9CA922,$7C420815AC3ACC80,$08B16732D8148111
  Data.q $48119E2517057310,$CEC976F18EA6605F,$A13664CA78F18CEE,$AB2152D24EF816A8,$3C6315521E7AE7CA
  Data.q $48D319E729AD4A1F,$36307B69D39CB973,$F2FD7E037C009627,$F96956C67ED1F32F,$5372ECC6533CFB92
  Data.q $319BDBF2744F4C54,$5FDC28B75E691F1A,$F334F4ADF9AFF9BD,$FECD326FF6B661E2,$AEECB2C63CCEF6BF
  Data.q $557BDE5DCE739FEF,$67A67BA7BDEAF6AF,$3062C3030783C7B1,$80592C141C83B20C,$884FF20240516221
  Data.q $28243A428A459413,$3121C04EC5140124,$280991CD9D8A4490,$C18621836C19098A,$4F4F74F4CF19EE03
  Data.q $67BDFBBF6FAD7557,$838F1AAABEF71FC9,$6A9E95F7875E9E32,$FDBF39773BDEF57B,$28D2B282CAC9CDFB
  Data.q $D8973E989E70ACDA,$7F2D348DE517ABB8,$22245B6733CE4A8B,$14AB2BE5357B7622,$37DE6289175944C4
  Data.q $B105DE24B9302718,$823915CC834F11AD,$8889C98D3766BEED,$16F21A8435C464D8,$850973C02778E3CF
  Data.q $8E1E823CCC63D01E,$BA6F1685BFB9421F,$A031F8E20F806503,$59C243A73B510D4A,$7253A3B2C6F3956F
  Data.q $1642058967D8763C,$37587A3E2550C758,$2F86EA3FFC425183,$3732825BC0694211,$53602D2E96124DEC
  Data.q $ECAB9766D8CEBEC5,$3238118121AF4BB2,$C9156906356C30D6,$DCAFDCE01011DAB5,$48EDFDD740E7DBDC
  Data.q $73C91DBC78EB043C,$8CD0A8023E392407,$369E64A08BB21888,$64CB387AD58F1229,$4559E36DD31B41E8
  Data.q $DDD51BA0B13A1971,$DF72576296FBFBE1,$5ECB2DF3C0A9781A,$9F7A7A395214A040,$F7648F0C8655C5E7
  Data.q $51D5D231B2121AA7,$9BB34D25EEE5F003,$1E00B20F2D25923C,$3116874D04822C6D,$C3C086B0AC247319
  Data.q $C8EA65243C383162,$7D46F201C019757A,$80D30192F352C5AE,$4A7689606A82331A,$567E98B5D6C645FA
  Data.q $6022DD2106E809E0,$5E18ECE35CC70B40,$09DD00545B780639,$34130506E1875F04,$4BE0197C684E191E
  Data.q $20B0B26955B3B0EF,$608226A018609216,$C8356BA7521C1C51,$ECB7D9304748E7B2,$1D80DCF652431597
  Data.q $33111113EBBECBB3,$04DAC6392A137621,$12F99858707DA07B,$2804DD7F592DECD7,$5624F2A087DCB029
  Data.q $05CCD4996A9E8409,$ACE0D6A4B5A53E25,$10D2D23CE710B9C0,$1B824A564B0615C6,$84E1AD9A459003B5
  Data.q $AE811320C7A15251,$7157BE293E05391C,$6C55B105754E29D6,$4A6D6CD65CAF929A,$3A8EFFC6AD7BC01E
  Data.q $17E0E4F88C93E200,$3246F778CC5FF81D,$B1BFB9C0B75AAFFE,$2F7AE0DD6B6F0CF3,$EDF309D720387362
  Data.q $19F02F9972E89639,$03908EADDD10C69E,$F136A89FB950CFC4,$8C8C9910592813FD,$88623152938E2D36
  Data.q $3176EF471D9E4E47,$174097B4B2DE4B6D,$9D923226B9940C16,$13050992989C9F74,$164275CE122A1232
  Data.q $AB0A1326C13A0964,$BF6ED70451E182B9,$71C71B615188E7F1,$157A1346265B4E04,$9F7A8BCD0F1754E7
  Data.q $124E5D2E89665897,$B4EA09D16A326131,$EE4C188DBA0338DF,$A13F6EC2EEC385C8,$FB21010D36A7C14F
  Data.q $64A1D88CAB9D706C,$148892099A319F1B,$FEF9D37E960031AF,$CDD3929A07EEB0EF,$759A1C081382E73F
  Data.q $3CC6BDA3A41D4F24,$A8206C508CA44496,$022524120A5891C8,$158B622C59478F81,$8163A0597161DA4C
  Data.q $933FCF25860C96DC,$220C28FA4F35AC73,$C96CC8F0A115278D,$7A2B937CF9E6317E,$9A691894C226A1C8
  Data.q $A79CD77679376D43,$F371A7F9A8145B2F,$E9DDF535D2BDD39A,$A2851236923E2C93,$A136115147C3C4A4
  Data.q $17204A88EB3205AE,$D4DC12F5C4404DCC,$BA4B03D04AE01167,$91C45712432BC865,$D749CDB6F31E1425
  Data.q $4C683FD2503CC266,$5B80A523CA0FA69C,$65928F0BBC03DF7B,$16A020589675894E,$2811CD40875509AE
  Data.q $24E609279E04A785,$5D87033072604E6A,$F241ECB7AF594813,$F4375F10D57261A2,$89199225329325C7
  Data.q $2EC4674284AB931C,$104DC63125091327,$FDA25B7E67F34DA4,$22AFC714B8E1EF57,$41FAC769772EA128
  Data.q $368668E4716248C6,$05F1D0CF320AAD22,$694145A471B44ADA,$1CEB12C4524AFC3D,$E92D05C6B64A37FB
  Data.q $B665B31B28CB3CA1,$326A43BB321DCB19,$4779B804E62A77CE,$41796489B3E0AB6B,$F22CD6D273122723
  Data.q $F8AD4370E00642F7,$EDFEF0CF250F86B3,$E3D5512D7D5B48FF,$D80636C9BB3CF745,$0A008F57705145E2
  Data.q $9F78495FF0377DC0,$8232CE4EB3559E78,$42414FA3D9F18807,$A38977428634E48C,$AD21964E35931665
  Data.q $5860A4D19656C3B6,$9E48D2426CE786B9,$48785A13264444F4,$3388ED8CBB14915B,$C3BDD9A12E38FA68
  Data.q $4ABD2C41E3846107,$AC9292C1C4C509E2,$67D2EC1BE8AE6D07,$571EC7A133ACE38F,$DA25948DA4C32EA3
  Data.q $07DA91C9952D884A,$01931DA184EC48E9,$D9B665F5724D44FB,$64029C989E613142,$AA041D2C4A336944
  Data.q $A75BD3FC013FC7A9,$71E2A59FB9C0208F,$14B9BF0178E1F704,$D435182058E3038A,$3A86D80729A2012C
  Data.q $F7DB68D91E6383A9,$BF5E848C6D568133,$7E9CF315C13FBB60,$85F879EF830AC493,$CA3643946C965263
  Data.q $247062D857D69F3E,$C4D69FFB9C392DF5,$39A8471EBFF0D4C5,$1E5DAD69FD79B690,$3E211E1682256B14
  Data.q $0261BC8A92929F0A,$EA67685471163870,$EA4809CEE8E146FE,$D49D40C6EAD6075E,$4D18E1451DCDA14E
  Data.q $4DA73F7F632A864A,$E570F01261B69F80,$20AFD04CC670880E,$18A9F2DC1FF299FE,$4D38AC5D343C3EF7
  Data.q $784B37C1D79459C0,$8410EBC740490E72,$E250FC3DF3C29D20,$04BAE2E050BC282F,$EF61BAE4812A8E02
  Data.q $919A169397BF454A,$34A9495D28C989C9,$D85252505278959E,$464D219B42632914,$BB7653A9B9432688
  Data.q $E3C79C947DF1C1D1,$0B9BDF1596F0EB01,$C892DDC1F21B5C1E,$23972582B0906C66,$102B942AEA4EB772
  Data.q $85D60EE8E8A17416,$0B583943B5A1ED18,$28D837E72F050442,$49772C49B325E45F,$1310537C276D0F6C
  Data.q $F4E486B967850D8D,$89E32456A1C6E41C,$F6E198F283246BC7,$BFE0C0FBA509D01B,$3CF8E63D977E36F1
  Data.q $F79D09DCCCDDD4BB,$E986C9A9FF0D6B2F,$F4CB5259E6F08FB2,$08F886623D90CC4D,$0A29CB38492909E6
  Data.q $29659F1F213B2212,$E9A21D6064AC2369,$EC1B9F4FA3D31EA1,$1662AD252287A431,$74DFB2C03DE6C68C
  Data.q $0910F0771160EEDD,$68A2ACA44B8A8B60,$AC292BBCCD0090B9,$092EC14D88754962,$0A5D1CCFB3E88967
  Data.q $86C8A1851AB28ABB,$12925B4A1D013458,$8F643318C8882151,$61238FA226D8761D,$2623B38545D63841
  Data.q $1C4D8702915E3608,$237DA5BE3F8845EF,$22833E28A3C1108E,$DAA35C59848F5042,$91C928A9F0A8A19E
  Data.q $C62187A9788D4444,$C051C63CEC407161,$59C78312B851EC4E,$8CE24F581CF6917F,$76AECD0A76389FA1
  Data.q $18DB063E8B66306C,$DB8749BF6618DD62,$DE99F6EB37342226,$A6DBB14D3D844D8B,$198CD0624324AFDD
  Data.q $337CC3A42798A861,$79641383196058CD,$6425EC275755C58B,$046A805BC04E50DB,$D715DBFA11F9ABBE
  Data.q $40ADE09F21782A5F,$846B460F017A0B48,$0E1E219F6032514E,$7066E2D29FEF507D,$1BBC70F4DDA7466B
  Data.q $59E5234E6D2E8A8F,$2EA92C5A284538B4,$2F8906042B017273,$C75E1E86125F7C02,$817DCA0B971254C7
  Data.q $3263918A1AB164B7,$CC30996EC64D8CD0,$58F865564A558633,$4A126C4264892B8C,$8429A7798CC94131
  Data.q $A687301A18A378E1,$3FBF86A2DDCA8360,$2C7067E039FC41D5,$5BE2AAA404E84BAC,$51F3FC244F87923A
  Data.q $ADF495E64C69B3CE,$5B92CC45EB346547,$BDBF075E2B24AC26,$0ED5807E50172B86,$D8F62FD9298C5A5B
  Data.q $5DDF64DCAD706F29,$B5DE7D8A0CFB1123,$0E9027912CACB098,$86A4B783B1250F1E,$0094EF727F78AC38
  Data.q $D6C5BF168863CCFE,$01C40952F76BD2AB,$6269ECB2501808FF,$42A42E54C5C4CDB7,$95605C2B96782152
  Data.q $63D956799B413847,$1E50937CC3A09F49,$426122D97615C9B3,$AAF8E7460931219F,$B046D0E174681F87
  Data.q $DDE11D44486DE180,$FF73A621D5C94709,$20A722EF346EF806,$C1D7524BB610D426,$98C0662225830217
  Data.q $7C3B456B22ECFA79,$1F4C4B0E21929A04,$D29313468C62218D,$613119F63D2EC7A3,$B3D670CF05CC411F
  Data.q $78A1E8E546E4BA64,$9204E580D1A78633,$19047D231A1B797F,$118D145FF8C9C796,$828F28326BDB5BAE
  Data.q $1F18C260850C8C90,$9C8A86368B478F89,$447CE117404F811C,$01AB9D9AD233B643,$925493240C9827A1
  Data.q $458C734185494739,$697631B0C7B11956,$EC390C88E36CA9F3,$918D0787A526E330,$628A60037557469D
  Data.q $884AD4DA231E9F1E,$FCB5169611193915,$78EE8AE64221208D,$F66ADA052F25A415,$0AF81E2D0BDA2A77
  Data.q $06B92381F21D7B49,$4541A31E308D7DA3,$60B81E2D070F2D28,$C8B3EEACA8935F19,$5AD9F365FDA48E29
  Data.q $22B7BB1896E220D3,$249FE1056258B490,$B928F301168C9166,$42B654338C1D128C,$8CE24A10A79E36CA
  Data.q $3063BA086A86E5C5,$B2F2199E419902BB,$8FEC3193A6059524,$411A125B2A03D3D8,$5CF04E448898C241
  Data.q $84E943269414574A,$BEDC9EA411B08282,$1067031FE157B649,$182D9467ED857124,$B58F07F8F7D7431A
  Data.q $570EF2FC7C155AB9,$B598996C175080F3,$325D7220328B18F2,$D636C3B48B93C33F,$DB3AEAD5C4558649
  Data.q $EBAA3675ECB665E6,$3A5FC072AD9F6AC4,$A3022692577B7863,$38EE5C70AC8E0541,$6BD901D41B9C10F6
  Data.q $220C1DC00E67DEBC,$802FFB09EF9FB4FF,$4272A73860E8A00F,$E0C7C6A4E452B925,$75C8615C5A6218D0
  Data.q $CE39F4B395635836,$11828F0E6799E659,$3D2929113195732F,$1B2360E2639DF486,$C18718CB1F4D3220
  Data.q $33BE2E71E65827F1,$8FC105BF3DE0ECC7,$C72E944430601922,$A7242425D94202AB,$48B38E7D01828B45
  Data.q $4947021E111EC786,$C414D0A963E24280,$4C440E975FB0198C,$D7C06A4B2194848F,$8B72CA05BD962DF8
  Data.q $4692021E0826322D,$0110DBF5821CEE66,$13C0B0227782037D,$244D5A72230EFC94,$E3E2423246BDBF5A
  Data.q $B3905147C0421810,$E9BF1F0E210132CE,$5870A82251CC579D,$88C1008B76ECF297,$C267D1E84C863D8C
  Data.q $53C231BA15090990,$48563D3CC141000E,$409B8288CA15F978,$E013A99F1A6A2C8B,$A127D2EB336C3980
  Data.q $68E612121D38E2A4,$50E0C4A059A01921,$497EE2F09B9C7C08,$D21D2E832946DC67,$49A81FE649EA5874
  Data.q $1E52D048E806EC8F,$F8E7C20494A43C1D,$160C376045774F8A,$1C47027921C5464D,$EF040EE1522B7300
  Data.q $00AA4423C0213045,$A58BBA4662126A4F,$50D65A2B62415743,$650561120406700A,$DAF1AFB1159718EA
  Data.q $86D7258AC438CF02,$2386F4C719325249,$A1325D012F003312,$9609CB462EE7F9AE,$2AE1424C088CA098
  Data.q $9020C2A42058F156,$01CE2B6F609B0F74,$74D7CA344B5863CF,$57304B6105630F32,$F11666C7B8FABE58
  Data.q $37C8D91A1877579B,$DF2F61D218097465,$245766D265215025,$D70A2DEB6C1B765C,$3C26602652237127
  Data.q $153722D5B4786F34,$B929AD91075831A5,$470F92BA971DF49F,$0065B5ED7108F386,$8C7F0FAF0CC00E67
  Data.q $6169C3492CD084E1,$40878B4BAE72A638,$6C49C9C82D96C509,$30CE4316CDBB15CC,$90C866D32CEB0CE4
  Data.q $3319C9484889764D,$B776C36DCEB868A6,$71F9AC131C71E38D,$DCE7038577C3F78C,$E1AFE5B3677862AF
  Data.q $0C39962929155768,$208847A0D9884C73,$74611CD544A38862,$8C1407E8D78DA799,$5DB4260D8063D118
  Data.q $691E19C9613539C6,$14EC33B479DA469D,$1E3CE029C1453C3B,$7C4A9271E04F347D,$DCE0CF8A8C8FD6FC
  Data.q $9BE3891F1FBE18CB,$F9EA5D291C5DF888,$F800638E4A4B0AAE,$D0B4DA120A0A5854,$21D14088604E8D64
  Data.q $1191CC0F8640B041,$876627D151C43051,$ECC4C454E406031E,$A6DA74EEA7D11311,$CCBCA45B311ACC4B
  Data.q $D441134D37FD0717,$925C0D28774D86D9,$0A8F0963D1E09290,$3A2813927252C681,$571B2D69C6AA48F8
  Data.q $E15974DA420B2D38,$66591C17F38B52DC,$0ACB934CA25BEC99,$D062C53A1CED5CA1,$192882E712516D62
  Data.q $A8E89440E4C863D3,$23ACFFD2AB7E61F2,$E545A08DA31C8470,$B63B39B3D8F4D234,$654129BCC73971CB
  Data.q $36B2162D16463B68,$A5D035E6B690F2BE,$A47283BDAAA02841,$633883054718A9C9,$529CDB42A654E652
  Data.q $B72263D72532E465,$81CB426691B6E647,$308F95B4B6A419EF,$1A1DD18E12C10E1E,$0BBAC31F106DFE97
  Data.q $096F586390555CC0,$6C1EAA1B9E45A74C,$B58444A1572D8617,$8A135C1CF4B3B91E,$25C919192211E975
  Data.q $B491A4C910CFB193,$CDA47A9F98E5F14A,$823A554E75A01549,$C52D9B056B065010,$E38538E20F25C6E7
  Data.q $07334BBAF822DE17,$E514FB0758DB8660,$9C2A6145FD542FF8,$12436E392DAE7368,$4D760239C044A217
  Data.q $AE1357EFC6BF9AC0,$04065D82B9AE2D9A,$64D149C8498C018D,$863E09B6066A5208,$0F89F865E386B01E
  Data.q $723495492EFE7F63,$84601FFC314796C8,$6CC4C3C30E0118E1,$3D96FF31B960A030,$27C799F1E6487806
  Data.q $61252320A28DA622,$CF81CDE63784232C,$08E73C05BBE3E7B2,$3A17176AD23320D0,$12963AE3C230C282
  Data.q $806E36F67C5298C1,$57F031153DFE38FB,$7B100000AB011EAB,$131B78F154414449,$F21A48074C49017E
  Data.q $AE22A68C7FE7BA9F,$78504DC88744E31B,$DA7D7287851B4574,$363C58F8B1F1A2AC,$9113EC247A589451
  Data.q $585B3191A5355151,$F0992705213102AE,$8A410177EC41D922,$EF5F66E7B840FB64,$3DDBA4D56D8DAB91
  Data.q $57C3A6D091CF0934,$3863828C908B4EB2,$47C386268D14F314,$478B42DCE2D36922,$E18EDB460A30E6DE
  Data.q $F03E63841A549344,$A781F73572A4ADF1,$363DB9ECB39E9714,$F4C3AF61CC43B018,$6A29C0032AB7B452
  Data.q $90D6F87470D92FD2,$B414D1A7D05E43FA,$399297285548C56D,$59D618562F023581,$E27AB890A53C4308
  Data.q $4F16B4A5B19470A1,$55CC96A792DA78F8,$74A685C96150D214,$F1692AE4321B9105,$3E944282425E2B2C
  Data.q $72124A68B1A5096D,$EDE7D4C5785E2A0A,$39EE726B863EFFDB,$491AD962D7C7803F,$09EB1F75FC48E81E
  Data.q $94A6ED4F8B54FFBE,$A10A09DC98A822E5,$66CB2BCC2520C291,$0C186A2E015B11E9,$DFDC7ACEBBE72053
  Data.q $6574185615C5516E,$70D16E344E269531,$7E498F76382B0E5F,$61AF35E9723E0F63,$E7826EFAF0CC00E6
  Data.q $E281DE03B0E54100,$1CF4B4F8EE27D891,$F1B414B456CA9088,$CB8FE2327833C278,$99AF122E8E319898
  Data.q $4A49128E1E802DE9,$4FCB0A72C7EE6D9B,$2EE38179F806F861,$22E208BB801490E9,$2585782EB50F7DDA
  Data.q $8A9C8290D2B136C3,$01C69D2403341D92,$94F9466B64286C58,$E5BEFDCE65B4C54A,$054C625B0813B9E1
  Data.q $532D0298925D1894,$E0C081EEAD62B48A,$157A6F36FF64A7D8,$31E18C3FD9A4D5B0,$B01F91E12F312CE0
  Data.q $1697C2A94DE484BC,$97C7D65424460D2D,$87AD8908090BA53E,$A6B87870163C3DB2,$8A44662630C32ED1
  Data.q $A9F5FA3752511046,$98C9F4440B048649,$A70418B00C08B247,$3ED4DCF7881F6CB0,$264D7B072AB5E691
  Data.q $27F3E1915D464A60,$F1F48471D67C7C08,$DB5ABE5C6932C559,$90DAA1CD7D62D242,$30F28240208C6065
  Data.q $F487083E0DE88EAA,$9B7493F84C6F4F14,$750911849362D9E7,$DC791E51ACD943BF,$B0F455BD2EA16BFC
  Data.q $84CD0AC7C78437AC,$700A67A4B3ADA6F5,$C8256F0135308129,$E8E7A11AFEE39627,$B404CB407E733EFA
  Data.q $BD3C15A3E3A164A5,$62350DC5B646C5BB,$C24E5682232108C0,$B8997141897DB198,$FE486DF15952E6DC
  Data.q $318E610E1CC74910,$03825B13BBAC08CD,$2C29F1445DCE0421,$DD7A19EDD90C1FE7,$E528B25859F38109
  Data.q $6C294BD33E157C78,$8B3D74D495199585,$28872A7057B682DF,$5A6F9CD907396411,$58762E22FCF7BCB3
  Data.q $1632A1A4A1C2D0EB,$9AFCD11608E2591B,$B1E046F967B7DC10,$AF0CC00E67FE7ED7,$DA14F883F73612DF
  Data.q $7528DD52BBE18F3D,$659429AD5D090C4B,$E8E312937AF94BCE,$F44DEB2C69CC66D3,$C2239C7B3E340232
  Data.q $E3EC4E292411F190,$FD2FCEEFDEABF8F8,$89DF768A3E146362,$29C547A08CB044A0,$A9C822C25804CC60
  Data.q $9D421B0C78447028,$3F09C44BA3208710,$A1521CAF1E72CDE1,$0532A21362425DF1,$8DA0A05E1329339B
  Data.q $EDDD53E757A58BA0,$1C25C905BC6AF4DF,$3F8F66AFAD37A837,$5A2F6B4F5A44457C,$6CBE0ECB682FAAC1
  Data.q $24B62629D09F4BE1,$9211B38C727B2C2D,$463B530A8F108000,$4F2E9AFF3507A464,$3C72624A6D816631
  Data.q $D1B563824D04C03A,$5E6045D37F9E6BE2,$A6398099D5C4FDF9,$05BCB0678E310793,$0F0A9611168B478B
  Data.q $30647AB98564804B,$A5A994B0B60FAC87,$C423BA8AC39C60D0,$8F5F849851448D08,$B36C0BC1B3CF80FF
  Data.q $097DD4FA8271BF47,$9D311BA928899365,$6F5CE5377640A43B,$B813BF1770D6B8E2,$2238FA0E71D7138C
  Data.q $B5D1CEC478D074C6,$865593426454266D,$A716BC3F7BAE2ABD,$C23A5467CADA5D3A,$12F02F2ECC0C8B1B
  Data.q $5D8E26F417CBB0CF,$CC4463566398D596,$686BD8BAE60BB57E,$C6EEB7E240FD7E7E,$E032D3702B767730
  Data.q $9489FEE31171075F,$62D0B83E638BC77C,$7452D027EEB2EA21,$63DC6525567BC854,$5C453BE1E31887E8
  Data.q $2B6392854E2B6055,$B2C7BE040769EF15,$0E708213A6D32855,$90669978D4B43BED,$16311C0582E24C17
  Data.q $9FC70A2CB3BCE487,$5CF5FA7B83E2575F,$4ADDC88BEEDC33D3,$438DD453763B96F5,$8B14231476F3E18F
  Data.q $0C3831A2E861EC84,$0A25897240D80296,$E4337784F59F4D3A,$5EFF78D3B1970C39,$C7863C91277686A0
  Data.q $2CFC71B4F8AB1C49,$9A23264D47DC94CB,$42DBEDCD11215A8D,$74D1DA3F16CCB192,$AC8E7844365132D5
  Data.q $85F89444C57E1430,$F8E1CF961EC54061,$679F0EE29403E061,$0170405E08CDF700,$E7C4A48FBF1419C1
  Data.q $58208F01767D4D6D,$5C2A1AC04EBDBE61,$C44CF4D1B19A30A6,$AB886DA006E524E5,$570339105851D315
  Data.q $A0DC0B0E2C6BBB6B,$1A767EE3870DBE8E,$DC4E0EC1027003ED,$8494FAD723F0D9E2,$F3CE15827043CA68
  Data.q $68C71469C539A738,$FB9D631C8B369E71,$6832EAC79E83CD38,$596897589AA618E5,$D1A138E45282C952
  Data.q $7C9E5F976AE5E2AA,$FA60E176075CCB96,$AA63C8EAE61C6CA1,$F5EADFD333525083,$68747803C04DE04B
  Data.q $59D6158C73CC0F31,$60D9678E24258564,$4E2E94DA450B454C,$7D31848767C384B0,$1C816631E2181360
  Data.q $EE27BB3B049A889F,$41D5A57E083000FD,$2E031F0D8D4F0584,$7C018308BFDCFAAE,$F911C37BB22DB7D5
  Data.q $5762C73B680DA18A,$45AB543D8B810A10,$F38E59A416B43C69,$C37A7C17F164742A,$688446F363A16394
  Data.q $0DF96FAE64B88A09,$ED3D93F149AC4F34,$CCECF8B88A3E2E00,$4D6D1BE60CD7B801,$3E24F1469CE4B347
  Data.q $F25A3437C7088057,$AFF047AF8E1CE013,$589B3476F8A2ACB0,$7EE3E3C1EE2D1A7E,$1E7C46F921EFC104
  Data.q $31BA736C78D3F1C3,$5B29287D8D26AD10,$E339B641F9F7C7F7,$9328F69116B9C209,$21DBA8B6382729B8
  Data.q $E9A3CF0405C70B7F,$CE0E22F9E7744462,$8A32C519BC903BF5,$04ED7E7F69862415,$82B128B1C887DD04
  Data.q $A905A9477C2996A7,$8AAF4544C8636871,$AC03605BAC4B3BE9,$98E40284C674F4D2,$46D1C72220590ECC
  Data.q $0CEA3BA3C8D57831,$AA4424A60C77DB88,$E29C2B1AC0F3CF39,$C7DCF32CE7582702,$10F1CE09C539C71C
  Data.q $D149692265D6E8C7,$8C62C65222672E44,$4F3EBAEC96561996,$FE31B36E73E05F55,$1A70E1384CA95E03
  Data.q $F2A681CE400E34C2,$041E87C4690A9FAD,$39D6B914D10A03CE,$23A23D390990874D,$F94D31EFEEA4BB9F
  Data.q $E6EBDF9A8B7F3644,$06DA5DB8BE7D346B,$DAA72441FE21CB37,$F80DE4F8A95D6F01,$21DE3BC11CA1C7E6
  Data.q $96827C158B66FCF9,$F32611DB4525CF24,$71081B443F02BA24,$CC2EACB0A28A8A8C,$39DBBB29044A4C31
  Data.q $F7C7C166DC3BF7EB,$D67C3EE145CFF884,$F1711673151BB9E7,$DFE6E19866B567F5,$7C107BE487382010
  Data.q $61886283A049C102,$E6DD3479F01CC111,$315DEE37E2B1E65F,$25F9F1BBC1167728,$1FC3A1DF8F137F34
  Data.q $03A18A4787319011,$F88CADE336508688,$6487A18DA6BF6021,$5447F1C6870B4519,$F28CF96CEF8E1EFC
  Data.q $D40A6B97E278D392,$9187EDE7D75CE4BB,$705628C451741174,$18F8B15F006E5844,$124F0D885E07B645
  Data.q $08B43871F6A516C8,$88AE99011385AE50,$CF447A46185C98ED,$442521D80D5AB98E,$C35231D36EC90273
  Data.q $E01911C46725D17E,$669BC9C47004E8DB,$8564581718F02E04,$38D66586732CCB0E,$4785A3C459E639C7
  Data.q $1E80C10E0C82E4D0,$3D1AE65E05E0D9D7,$FD8631BF658FA25E,$5F355624DD43E8C6,$9DB831CDC5DF91F5
  Data.q $7A0BB7534E03DFE7,$5E06341E695F918D,$388F64564A6D9F35,$22281C4410E3412F,$CB04EE2141CE3711
  Data.q $449D0F82099797DF,$3DCF75E2A697D8FC,$ED0E8EF461979124,$1FC5AAB1F7322C07,$39B1EE9A5B3A69ED
  Data.q $515E1E4B4AD9616C,$AAF9B7AFA78CE364,$23F5BE0AFB827D87,$CA46EA3CF4EE7E7D,$6FC6C54993F14964
  Data.q $CCF22CAEBFB799C3,$081C3967B6E19801,$8AEF7557A5F8047E,$E4B85C3BA4128237,$009C717648249167
  Data.q $41EF01EC6B19BB7E,$7099AD70018A08F2,$68D3C7717E9B20EF,$A4E7FC4D9FF8602E,$222FDD0FDAEEE215
  Data.q $002F821AFE38CBF8,$E8AF05335442486B,$4854E63C5D244302,$0BA088F3DBB43AE5,$9165873B002EB0B4
  Data.q $A23D2A25DD28B5CA,$5C94D9711AA76224,$B741E18216861403,$B0C6D1C5D4BFDD7B,$CD50E413B8065877
  Data.q $631C0DB6C89AB6DB,$B18E6589671CF399,$39974BA7599671C2,$09D0D861034D04BA,$73E3D2EC067D346B
  Data.q $E388311F6CB3CF3C,$FF75A7659B4FF8C6,$7766226D200648F2,$A740B3E6B34ED607,$8D0428EA1C0BCCF9
  Data.q $4C7A2FAADFCD7751,$5EF6CA84713D37B3,$37B5F9E022BE00C9,$C9057F3417C77C79,$8BFD1F7185995E07
  Data.q $DF27DDA0FF9EF89E,$AB1EFB867C67912A,$33D73C4677F4F36B,$C36B2E6A504DBAF8,$6C4F92FC278F0585
  Data.q $C25C0FB15666FC7B,$FEF1D678DF143EF0,$33003999E1929B8D,$6243EF8636AB70CC,$B786E84BF2431C11
  Data.q $8D13C51DBE7876AE,$861AC8D29A27C868,$10F8A14E086B8211,$A22E3C49EEB1C885,$F077F41440F793C5
  Data.q $1C72C39E38845128,$043A58D3A951B89F,$C5A722D138DAB4AC,$C908AC42ACA5D05C,$460A7D977CA336CC
  Data.q $54D371253CF8D98D,$921AE38FAFF35878,$746CBAFD2C55961E,$05729D6A3ABE9D47,$E71CBA5D00F16974
  Data.q $74786B3CC339C718,$8A21251C427C0830,$0C86327248901625,$EA31BB619E0DCCB9,$6B3DACDC7FED7519
  Data.q $EA1ABE6CB988D31E,$1334C2D7C3B9BFB4,$F34C4497532C0732,$493BF36945C2A799,$FFFC192F7FB0AFDD
  Data.q $DD3FC5C4222FDAE7,$3EB7C449FBFF7301,$17F8AE3BDFF3F875,$9E4ACE48E18F96BB,$E097B5F8198E4B6E
  Data.q $6EFBFE6A5A21AB1D,$53C4224F758D3E25,$CC3300399BC1D737,$A99A5203C4376B70,$47EE011E08138D48
  Data.q $9E28A3C0DDE069F0,$238E3EF8637F72C5,$7B08449CE2CF89C4,$307DBF8038446BF7,$2804F890E3182459
  Data.q $9F0F0A876284B00C,$6873F8AC7815490C,$9DF9F44F63894733,$6406B143581F486C,$E648DA185B2C2A08
  Data.q $DB11DD85D457FD81,$2581561C71DDC561,$3696720F1AC51560,$D94140B14558B42B,$6AD02C78DA09C8A8
  Data.q $E3D85719290494E4,$DD7429D4BB1C033A,$4C04EA7FA8D30138,$77716818E69200F5,$2F7D8722C04BF75D
  Data.q $0766A423E9CE71D3,$5CD7917E7DFCF732,$DFDE210CFF007787,$F10E5410BEFF0D24,$0E27C421CFEE710F
  Data.q $F3ECDF0E34D779EF,$4736E1986600733B,$21F7BAD5535782C9,$19B344BBE147CBFE,$5BBFCEB83DF42078
  Data.q $FE484B9210F0BED3,$469CB08C7803C110,$AFC0873247D0C131,$D4BCB0F608D13CC7,$C41E080B02EC894C
  Data.q $76A07B3CB0B40463,$9F3BA9E7C40C7927,$733C4238FC4D4365,$C02B01CA47C5EBE7,$0761AE710F3F701A
  Data.q $8B1C8C84CBA0215C,$10A140225800E6A4,$08CA4FB0AE326248,$4400C9AF65A269D8,$BA86D3E8D34F6BCD
  Data.q $BBD77DDC4027E1B4,$1A0CACE34101326A,$1A37DF46C5EE657A,$26F0EE19867EC766,$455B6B00DE1FEAF9
  Data.q $D3F02C66DD045EF2,$2C69F04324823C94,$91C8E1AC1048A30F,$201240A080B0C35C,$6806383B01CC3128
  Data.q $BF142EF02CF1C51E,$D6FC90478E34E689,$77B3C4147BAFECA1,$700EEFA9D41579C5,$BA1D38E09C338F0E
  Data.q $283A3894310C0414,$23814048B00CA6E2,$46349BF8683E24A3,$D390254C02C91D5F,$F386443B8C809923
  Data.q $CCCF7F4437811C1A,$FFF8661986619801,$22080BE071F9F4DC,$E3F70473D8399F1C,$DF8141B1E2ACB1A3
  Data.q $61E8216C11742770,$F0455CB12BE08D38,$522F7C01B0D91A1C,$31EF77118526A47C,$F0FB8027DC53A808
  Data.q $0AFC40E40B22C339,$911D30393D4D5F2A,$C553FD534DF6369B,$F53587240871AAC5,$CC33F29DEDDF9011
  Data.q $A8CFE1986619801C,$3C66D9F14813C033,$CE1D39A019F03BEF,$E049C5067C6451B1,$1AF9B411B47C519B
  Data.q $CE0863800A80FE3C,$BDEC5BFC420B78E2,$32EA3C80711E4910,$0E280AC9BD6019C0,$DC635E8DCDA7DFE7
  Data.q $C8E6083A9F718DC7,$58CFE929FBE6F3F3,$007330CFA14B3640,$B819DFBB86619866,$396A6BFC313BC51F
  Data.q $206BCD4F805007E5,$846F86AA238E0F78,$0132685C0A61A9CD,$E0864DA4E0121C6B,$CE349F1F3A7F4A68
  Data.q $1CE5C70E0DFCD940,$7330CFF5167FCD75,$13237B8661986600,$883EC0DDF8F0D070,$BFD2FC9EF3C4BEA7
  Data.q $E5807EEAEDD7D7BF,$CC0721FD469819C6,$E74FE91D6890CDF6,$FD4598ED952FABFE,$61986619801CCC33
  Data.q $8159D49021CF7B86,$407BE54871D5F376,$C330CC33F2333B7D,$1A067606F0CC330C,$1986619FB220E087
  Data.q $6198661986619866,$6619866198661986,$8661986619866198,$9866198661986619,$D786619866198661
  Data.q $725D24C0440BFF8A,$490000000098510D
  Data.b $45,$4E,$44,$AE,$42,$60,$82
  Explostest2_png_end:
EndDataSection
Benutzeravatar
NeoRon
Beiträge: 67
Registriert: 22.03.2013 18:56

Re: Frames Clippen für Animation

Beitrag von NeoRon »

Hi,
danke für eure Beiträge!

Klaus habe hier eine zusammengefasste Kurzfassung meines Problems erstellt.
dort kommt auch der Fehler auf.

Hoffe das ich die Demo richtig erstellt habe.

Das Sprite kannst dir hier runterladen.

Bild

http://fs5.directupload.net/images/150927/u67vhskp.png

Code: Alles auswählen

EnableExplicit
;***************************************************************************
;* 
;*     Coded By: Manuel Munoz-Martin
;*     PB 5.21/ September 2015
;*
;***************************************************************************
#Screen_Width  = 1024
#Screen_Height = 768
#FPS           = 1000/60

#SPRITE_HEIGHT = 48
#SPRITE_WIDTH = 44

;*******************************************************************************************************************

Enumeration 
#SPRITE_EXPLO
EndEnumeration

;*******************************************************************************************************************

If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0
  
  MessageRequester("Error", "Can't open screen & sprite environment!", 0)
  
  End
  
EndIf

;*******************************************************************************************************************

If  OpenWindow( 0, 0, 0, #Screen_Width, #Screen_Height, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered ) = 0
  
  MessageRequester( "Error", "Can`t open Window !", 0 )
  
EndIf

;*******************************************************************************************************************

If  OpenWindowedScreen( WindowID(0), 0, 0, #Screen_Width, #Screen_Height ) = 0
  
  MessageRequester( "Error", "Can`t open WindowScreen !", 0 )
  
EndIf

UsePNGImageDecoder()

;*******************************************************************************************************************

Structure image
  width.i
  height.i
EndStructure

Structure animation
  Sprite.i
  x.i
  y.i
  ID.i
  StartTime.i
  StopTime.i
  frames.i
  framesPerRow.i
  frameDuration.i
  frameWidth.i
  frameheight.i
EndStructure

Global NewList Animations.animation()

Global image.image 

image\height = #SPRITE_HEIGHT
image\width = #SPRITE_WIDTH

;*******************************************************************************************************************

Global Event.i, Exit.b, GameTimer.i, i.i

;*******************************************************************************************************************

LoadSprite(#SPRITE_EXPLO,"gfx/objects/explosion_01.png",#PB_Sprite_AlphaBlending) 
AddElement(Animations())
Animations()\Sprite = #SPRITE_EXPLO

Procedure InitVar()
  
  Exit = #False
  
EndProcedure

;*******************************************************************************************************************

  ForEach Animations()
    
    If Animations()\Sprite = #SPRITE_EXPLO
      DisplayTransparentSprite(Animations()\Sprite, Animations()\x, Animations()\y)
    EndIf
    
  Next

;*******************************************************************************************************************

Procedure AddAnimation(StartTime.i,StopTime.i,frames.i,framesPerRow.i,frameDuration.i,sprite.i,x.i,y.i, id.i)  
  If AddElement(Animations())    
   With Animations()
      \id                 = id
      \sprite             = sprite
      \startTime          = StartTime
      \stopTime           = StopTime
      \frames             = frames
      \framesPerRow       = framesPerRow      
      \frameWidth         = image\width    
      \frameHeight        = image\height    
      \frameDuration      = frameDuration
      \x                  = x
      \y                  = y   
    EndWith    
  EndIf  
EndProcedure

;*******************************************************************************************************************

Procedure Animation()
  
  With Animations()
    
    ForEach Animations()
      
      Protected time = ElapsedMilliseconds() 
      Define frame.i
      
        frame = ((time - \StartTime)/ \frameDuration)%\frames

                    Debug "frameduration " + Str(\frameDuration)
        ClipSprite(#SPRITE_EXPLO, Mod(frame,\framesPerRow)*\frameWidth, Int(frame/\framesPerRow)*\frameHeight, \frameWidth , \frameHeight)
      
    EndWith
  Next
  
EndProcedure

;*******************************************************************************************************************

Procedure UpdateScreen()
  
  ClearScreen(RGB(0,0,0)) 
  
  Animation()
  
  FlipBuffers() 
  
EndProcedure

;*******************************************************************************************************************

Procedure UpdateKeyboard()
  
  ExamineKeyboard()
  
     If KeyboardPushed( #PB_Key_Space )
       
       AddAnimation(ElapsedMilliseconds(), 10, 7, 7, 40,#SPRITE_EXPLO, 500, 500, 1) 
       
     EndIf
  
  If KeyboardPushed( #PB_Key_Escape )
    
    Exit = #True
    
  EndIf
  
EndProcedure
;*******************************************************************************************************************
;-MAIN

InitVar()

Repeat
  
  Repeat
    
    Event = WindowEvent()
    
    Select Event 
        
      Case #PB_Event_CloseWindow
        
        End 
        
    EndSelect
    
  Until Event = 0
  
  If ElapsedMilliseconds() >= GameTimer
    
    UpdateScreen()
    UpdateKeyboard()
    
    GameTimer = ElapsedMilliseconds() + #FPS 
    
  EndIf
  
  Delay(0)   
  
Until Exit = #True

CloseScreen()

End
Vielen Dank im voraus an euch.

Grüße
Manuel
The World is Cyber
Benutzeravatar
NeoRon
Beiträge: 67
Registriert: 22.03.2013 18:56

Re: Frames Clippen für Animation

Beitrag von NeoRon »

Hi,

durch die Hilfe eines Freundes der meine Fehler korrigierte funzt die Demo nun und
habe das in meinem Hauptprogramm so übernommen das es dort auch läuft.

Werde an der Sache dran bleiben und mich da so einfuchsen das es ins Blut mir übergeht. xD
Mit Hilfe des debuggers werde ich meine Fehler lokalisieren und daraus lernen.

Vielen Dank!

Hier die funktionierende Demo:

Code: Alles auswählen

EnableExplicit
;***************************************************************************
;*
;*     Coded By: Manuel Munoz-Martin
;*     PB 5.21/ September 2015
;*
;***************************************************************************
#Screen_Width  = 1024
#Screen_Height = 768
#FPS           = 1000/60

#SPRITE_HEIGHT = 48
#SPRITE_WIDTH = 48

;*******************************************************************************************************************

Enumeration
#SPRITE_EXPLO
EndEnumeration

;*******************************************************************************************************************

If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0
 
  MessageRequester("Error", "Can't open screen & sprite environment!", 0)
 
  End
 
EndIf

;*******************************************************************************************************************

If  OpenWindow( 0, 0, 0, #Screen_Width, #Screen_Height, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered ) = 0
 
  MessageRequester( "Error", "Can`t open Window !", 0 )
 
EndIf

;*******************************************************************************************************************

If  OpenWindowedScreen( WindowID(0), 0, 0, #Screen_Width, #Screen_Height ) = 0
 
  MessageRequester( "Error", "Can`t open WindowScreen !", 0 )
 
EndIf

UsePNGImageDecoder()

;*******************************************************************************************************************

Structure image
  width.i
  height.i
EndStructure

Structure animation
  Sprite.i
  x.i
  y.i
  ID.i
  StartTime.i
  StopTime.i
  frames.i
  framesPerRow.i
  frameDuration.i
  frameWidth.i
  frameheight.i
  frame.i
EndStructure

Global NewList Animations.animation()

Global image.image

image\height = #SPRITE_HEIGHT
image\width = #SPRITE_WIDTH

;*******************************************************************************************************************

Global Event.i, Exit.b, GameTimer.i, i.i

;*******************************************************************************************************************

LoadSprite(#SPRITE_EXPLO, "gfx/objects/explosion_01.png" ,#PB_Sprite_AlphaBlending)

;AddElement(Animations())
;Animations()\Sprite = #SPRITE_EXPLO

Procedure InitVar()
 
  Exit = #False
 
EndProcedure

;*******************************************************************************************************************

  ;ForEach Animations()
  ; 
   ; If Animations()\Sprite = #SPRITE_EXPLO
   ;   DisplayTransparentSprite(Animations()\Sprite, Animations()\x, Animations()\y)
   ; EndIf
   
 ; Next

;*******************************************************************************************************************

Procedure AddAnimation(StartTime.i,StopTime.i,frames.i,framesPerRow.i,frameDuration.i,sprite.i,x.i,y.i, id.i) 
  If AddElement(Animations())   
   With Animations()
      \id                 = id
      \sprite             = sprite
      \startTime          = StartTime
      \stopTime           = StopTime
      \frames             = frames
      \framesPerRow       = framesPerRow     
      \frameWidth         = image\width   
      \frameHeight        = image\height   
      \frameDuration      = frameDuration
      \x                  = x
      \y                  = y   
    EndWith   
  EndIf 
EndProcedure

;*******************************************************************************************************************

Procedure Animation()
 
  With Animations()
   
    ForEach Animations()     
      Protected time = ElapsedMilliseconds()
                              
      \frame = ((time - \startTime)/\frameDuration)%\frames         
        ClipSprite(\sprite,Mod(\frame,\framesPerRow)*\frameWidth,Int(\frame/\framesPerRow)*\frameHeight,\frameWidth,\frameHeight)                                
        DisplaySprite(\sprite,\x,\y)
        
    EndWith
  Next
 
EndProcedure

;*******************************************************************************************************************

Procedure UpdateScreen()
 
  ClearScreen(RGB(0,0,0))
 
  Animation()
 
  FlipBuffers()
 
EndProcedure

;*******************************************************************************************************************

Procedure UpdateKeyboard()
 
  ExamineKeyboard()
 
     If KeyboardPushed( #PB_Key_Space )
       
       AddAnimation(ElapsedMilliseconds(),0,9,9,50,#SPRITE_EXPLO, 500, 500,1)       
     EndIf
 
  If KeyboardPushed( #PB_Key_Escape )
   
    Exit = #True
   
  EndIf
 
EndProcedure
;*******************************************************************************************************************
;-MAIN

InitVar()

Repeat
 
  Repeat
   
    Event = WindowEvent()
   
    Select Event
       
      Case #PB_Event_CloseWindow
       
        End
       
    EndSelect
   
  Until Event = 0
 
  If ElapsedMilliseconds() >= GameTimer
   
    UpdateScreen()
    UpdateKeyboard()
   
    GameTimer = ElapsedMilliseconds() + #FPS
   
  EndIf
 
  Delay(0)   
 
Until Exit = #True

CloseScreen()

End
The World is Cyber
Antworten