diff --git a/Languages/norwegian.lang b/Languages/norwegian.lang
index af180410..dbef7817 100644
--- a/Languages/norwegian.lang
+++ b/Languages/norwegian.lang
@@ -1,1382 +1,1382 @@
-# USB Loader GX language source file.
-# norwegian.lang - r813
-# don't delete/change this line (é).
-msgid ""
-msgstr ""
-"Project-Id-Version: USB Loader GX\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-05-30 23:36+0200\n"
-"PO-Revision-Date: 2009-10-01 01:00+0200\n"
-"Last-Translator: raschi\n"
-"Language-Team: raschi\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid " "
-msgstr ""
-
-msgid " Wad Saved as:"
-msgstr " WAD lagret som:"
-
-msgid " could not be downloaded."
-msgstr " kan ikke lastes ned."
-
-msgid " has been Saved. The text has not been verified. Some of the code may not work right with each other. If you experience trouble, open the text in a real text editor for more information."
-msgstr " har blitt lagret. Teksten har ikke blitt verifisert. Noe av koden vil kanskje ikke fungere riktig. Hvis du får problemer, åpne teksten i et ekte redigeringsprogram for mer informasjon."
-
-msgid " is not on the server."
-msgstr " finnes ikke på serveren."
-
-#, c-format
-msgid "%s : %s May not boot correctly if your System Menu is not up to date."
-msgstr "%s : %s vil kanskje ikke starte riktig hvis System Menyen ikke er oppdatert."
-
-msgid "0 (Everyone)"
-msgstr "0 (Alle)"
-
-msgid "1 (Child 7+)"
-msgstr "1 (Barn 7+)"
-
-msgid "1 hour"
-msgstr "1 time"
-
-msgid "10 min"
-msgstr ""
-
-msgid "2 (Teen 12+)"
-msgstr "2 (Ungdom 12+)"
-
-msgid "20 min"
-msgstr ""
-
-msgid "2D Cover Path"
-msgstr "2D Cover sti"
-
-msgid "3 (Mature 16+)"
-msgstr "3 (Ungdom 16+)"
-
-msgid "3 min"
-msgstr ""
-
-msgid "30 min"
-msgstr ""
-
-msgid "3D Cover Path"
-msgstr "3D Cover sti"
-
-msgid "3D Covers"
-msgstr "3D cover"
-
-msgid "4 (Adults Only 18+)"
-msgstr "4 (Voksen 18+)"
-
-msgid "5 min"
-msgstr ""
-
-msgid ">> Deleting tickets..."
-msgstr ">> Sletter tickets..."
-
-msgid ">> Deleting tickets...ERROR! "
-msgstr ">> Sletter tickets...FEIL! "
-
-msgid ">> Deleting tickets...Ok! "
-msgstr ">> Sletter tickets...OK! "
-
-msgid ">> Deleting title ...ERROR! "
-msgstr ">> Sletter tittel ...FEIL! "
-
-msgid ">> Deleting title ...Ok!"
-msgstr ">> Sletter tittel ...OK!"
-
-msgid ">> Deleting title contents..."
-msgstr ">> Sletter tittel innhold..."
-
-msgid ">> Deleting title contents...ERROR! "
-msgstr ">> Sletter tittel innhold...FEIL! "
-
-msgid ">> Deleting title contents...Ok!"
-msgstr ">> Sletter tittel innhold...OK!"
-
-msgid ">> Deleting title..."
-msgstr ">> Sletter tittel..."
-
-msgid ">> Finishing installation..."
-msgstr ">> Sluttfører installasjon..."
-
-msgid ">> Installing content #"
-msgstr ">> Installerer innhold #"
-
-msgid ">> Installing ticket..."
-msgstr ">> Installerer ticket..."
-
-msgid ">> Installing title..."
-msgstr ">> Installerer tittel..."
-
-msgid ">> Reading WAD data..."
-msgstr ">> Leser WAD data..."
-
-msgid ">> Reading WAD data...ERROR! "
-msgstr ">> Leser WAD data...FEIL! "
-
-msgid ">> Reading WAD data...Ok!"
-msgstr ">> Leser WAD data...OK!"
-
-msgid "AUTO"
-msgstr ""
-
-msgid "All partitions"
-msgstr ""
-
-msgid "All the features of USB Loader GX are unlocked."
-msgstr "Alle funksjonene til USB Loader GX er opplåst."
-
-msgid "Alternate DOL"
-msgstr "Alternativ DOL"
-
-msgid "An Error occured"
-msgstr "En feil oppstod"
-
-msgid "Anti"
-msgstr ""
-
-msgid "App Language"
-msgstr "Program språk"
-
-msgid "Apr"
-msgstr ""
-
-msgid "Are you sure you want to enable Parent Control?"
-msgstr ""
-
-msgid "Are you sure?"
-msgstr "Er du sikker?"
-
-msgid "Aug"
-msgstr ""
-
-msgid "Author:"
-msgstr "Forfatter:"
-
-msgid "AutoInit Network"
-msgstr "Autostart nettverk"
-
-msgid "AutoPatch"
-msgstr ""
-
-msgid "BCA Codes Path"
-msgstr ""
-
-msgid "BCA Codes Path changed"
-msgstr ""
-
-msgid "BETA revisions"
-msgstr ""
-
-msgid "Back"
-msgstr "Tilbake"
-
-msgid "Back to HBC or Wii Menu"
-msgstr "Tilbake til HBC eller Wii meny"
-
-msgid "Back to Loader"
-msgstr "HBC/Loader"
-
-msgid "Back to Wii Menu"
-msgstr "Wii meny"
-
-msgid "Backgroundmusic"
-msgstr "Bakgrunnsmusikk"
-
-msgid "Big thanks to:"
-msgstr "Stor takk til:"
-
-msgid "Block IOS Reload"
-msgstr "Blokkér IOS Reload"
-
-msgid "Boot/Standard"
-msgstr "Boot/Standard"
-
-msgid "Boot?"
-msgstr "Start?"
-
-msgid "Both"
-msgstr "Begge"
-
-msgid "Can't be formatted"
-msgstr "Kan ikke formateres"
-
-msgid "Can't create directory"
-msgstr "Kan ikke opprette mappe"
-
-msgid "Can't create file"
-msgstr "Kan ikke opprette fil"
-
-msgid "Can't delete:"
-msgstr "Kan ikke slette:"
-
-msgid "Cancel"
-msgstr "Avbryt"
-
-msgid "Change Play Path"
-msgstr ""
-
-msgid "Channels"
-msgstr "Kanaler"
-
-msgid "Cheatfile is blank"
-msgstr "Juksefil er blank"
-
-msgid "Checking existing artwork"
-msgstr "Sjekker eksisterende bilder"
-
-msgid "Checking for Updates"
-msgstr "Søker etter oppdateringer"
-
-msgid "Click to Download Covers"
-msgstr "Klikk for å laste ned cover"
-
-msgid "Click to change game ID"
-msgstr "Klikk for å endre spill ID"
-
-msgid "Clock"
-msgstr "Klokke"
-
-msgid "Close"
-msgstr "Lukk"
-
-msgid "Code Download"
-msgstr "Kode nedlasting"
-
-#, c-format
-msgid "Coded by: %s"
-msgstr "Kodet av: %s"
-
-msgid "Coding:"
-msgstr "Koding:"
-
-msgid "Confirm"
-msgstr "Bekreft"
-
-msgid "Connection lost..."
-msgstr ""
-
-msgid "Console"
-msgstr "Konsoll"
-
-msgid "Console Default"
-msgstr "Konsoll Standard"
-
-msgid "Console Locked"
-msgstr "Konsoll låst"
-
-msgid "Console should be unlocked to modify it."
-msgstr "Konsoll må være opplåst for å modifisere."
-
-msgid "Continue to install game?"
-msgstr "Fortsett å installere spill?"
-
-msgid "Controllevel"
-msgstr "Kontrollnivå"
-
-msgid "Correct Password"
-msgstr "Riktig passord"
-
-msgid "Could not create GCT file"
-msgstr "Kan ikke opprette GCT fil"
-
-msgid "Could not find a WBFS partition."
-msgstr "Kan ikke finne en WBFS partisjon."
-
-msgid "Could not initialize DIP module!"
-msgstr "Kan ikke initialisere DIP modul!"
-
-msgid "Could not initialize network!"
-msgstr "Kan ikke initialisere nettverk!"
-
-msgid "Could not open Disc"
-msgstr "Kan ikke åpne plate"
-
-msgid "Could not open WBFS partition"
-msgstr "Kan ikke åpne WBFS partisjon"
-
-msgid "Could not read the disc."
-msgstr "Kan ikke lese plate."
-
-msgid "Could not save."
-msgstr "Kan ikke lagre."
-
-msgid "Could not set USB."
-msgstr "Kan ikke velge USB."
-
-msgid "Cover Download"
-msgstr "Cover nedlasting"
-
-msgid "Cover Path Changed"
-msgstr "Cover sti endret"
-
-msgid "Create"
-msgstr "Opprett"
-
-msgid "Credits"
-msgstr "Medvirkende"
-
-msgid "Custom Paths"
-msgstr "Endre stier"
-
-msgid "Customs/Original"
-msgstr "Custom/Original"
-
-msgid "DOL Path"
-msgstr "DOL sti"
-
-msgid "DOL path changed"
-msgstr "DOL sti endret"
-
-msgid "Dec"
-msgstr "Des"
-
-msgid "Default"
-msgstr "Standard"
-
-msgid "Default Gamesettings"
-msgstr "Standard innstillinger"
-
-msgid "Default Settings"
-msgstr "Standard innstillinger"
-
-msgid "Delete"
-msgstr "Slett"
-
-msgid "Delete ?"
-msgstr "Slett ?"
-
-msgid "Delete Cheat GCT"
-msgstr "Slett juksefil GCT"
-
-msgid "Delete Cheat TXT"
-msgstr "Slett juksefil TXT"
-
-msgid "Delete Cover Artwork"
-msgstr "Slett cover"
-
-msgid "Delete Disc Artwork"
-msgstr "Slett platebilde"
-
-msgid "Design:"
-msgstr ""
-
-msgid "Developed by"
-msgstr "Utviklet av"
-
-msgid "Directory does not exist!"
-msgstr "Mappestruktur finnes ikke!"
-
-msgid "Disc Artwork Download"
-msgstr "Platebilde nedlasting"
-
-msgid "Disc Artwork Path"
-msgstr "Platebilde sti"
-
-msgid "Disc Default"
-msgstr "Spill Standard"
-
-msgid "Disc Images"
-msgstr "Plate bilder"
-
-msgid "Disc Path Changed"
-msgstr "Plate sti endret"
-
-msgid "DiskFlip"
-msgstr "Snu plate"
-
-msgid "Display"
-msgstr "Vis"
-
-msgid "Display as a carousel"
-msgstr "Vis som karusell"
-
-msgid "Display as a grid"
-msgstr "Vis som rutemønster"
-
-msgid "Display as a list"
-msgstr "Vis som liste"
-
-msgid "Display favorites"
-msgstr "Vis favoritter"
-
-msgid "Do you really want to delete:"
-msgstr "Er du sikker på at du vil slette:"
-
-msgid "Do you want to apply it now?"
-msgstr ""
-
-msgid "Do you want to change language?"
-msgstr "Vil du endre språk?"
-
-msgid "Do you want to download this theme?"
-msgstr "Vil du laste ned dette temaet?"
-
-msgid "Do you want to format:"
-msgstr "Vil du formatere:"
-
-msgid "Do you want to retry for 30 secs?"
-msgstr "Vil du fortsette å prøve i 30 sekunder?"
-
-msgid "Do you want to use the alternate DOL that is known to be correct?"
-msgstr "Vil du bruke alt DOL filen som er kjent for å være riktig?"
-
-msgid "Do you wish to update/download all language files?"
-msgstr "Vil du oppdatere/laste ned alle språkfiler?"
-
-msgid "Done!"
-msgstr "Ferdig!"
-
-msgid "Download"
-msgstr "Last ned"
-
-msgid "Download Boxart image?"
-msgstr "Last ned cover bilde?"
-
-msgid "Download Discart image?"
-msgstr "Last ned plate bilde?"
-
-msgid "Download Now"
-msgstr "Last ned nå"
-
-msgid "Download failed."
-msgstr "Nedlasting feilet."
-
-msgid "Download finished"
-msgstr "Nedlasting ferdig"
-
-msgid "Download request failed."
-msgstr "Nedlast spørring feilet."
-
-msgid "Downloading"
-msgstr "Laster ned"
-
-msgid "Downloading Page List:"
-msgstr "Laster ned side liste:"
-
-msgid "Downloading file"
-msgstr "Laster ned fil"
-
-msgid "Downloading image:"
-msgstr "Laster ned bilde:"
-
-msgid "Dutch"
-msgstr "Nederlandsk"
-
-msgid "ERROR"
-msgstr "FEIL"
-
-msgid "ERROR:"
-msgstr "FEIL:"
-
-msgid "ERROR: Can't set up theme."
-msgstr ""
-
-msgid "Enable Parental Control"
-msgstr ""
-
-msgid "English"
-msgstr "Engelsk"
-
-msgid "Error"
-msgstr "Feil"
-
-msgid "Error !"
-msgstr "Feil !"
-
-msgid "Error 002 fix"
-msgstr "Error 002 fiks"
-
-msgid "Error reading Disc"
-msgstr "Feil ved lesing av plate"
-
-msgid "Error while transfering data."
-msgstr "Feil ved overføring av data."
-
-msgid "Error..."
-msgstr "Feil..."
-
-msgid "Error:"
-msgstr "Feil:"
-
-msgid "Extracting files..."
-msgstr "Pakker ut filer..."
-
-msgid "FAT: Use directories"
-msgstr ""
-
-msgid "Failed formating"
-msgstr "Feil ved formatering"
-
-msgid "Failed to extract."
-msgstr "Utpakking feilet."
-
-msgid "Failed to open partition"
-msgstr "Feil ved åpning av partisjon"
-
-msgid "Feb"
-msgstr ""
-
-msgid "File not found."
-msgstr "Fil ikke funnet."
-
-msgid "Finishing installation... Ok!"
-msgstr "Sluttfører installasjon... OK!"
-
-msgid "Flip-X"
-msgstr ""
-
-msgid "Force"
-msgstr "Tving"
-
-msgid "Format"
-msgstr "Formatér"
-
-msgid "Formatting, please wait..."
-msgstr "Formaterer, vennligst vent..."
-
-msgid "Free Space"
-msgstr "Ledig plass"
-
-msgid "French"
-msgstr "Fransk"
-
-msgid "Full Shutdown"
-msgstr "Skru helt av"
-
-msgid "GAMEID_Gamename"
-msgstr ""
-
-msgid "GCT Cheatcodes Path"
-msgstr "GCT Juksekode sti"
-
-msgid "GCT Cheatcodes Path changed"
-msgstr "GCT Juksekode sti endret"
-
-msgid "GCT File created"
-msgstr "GCT fil opprettet"
-
-msgid "GUI Settings"
-msgstr "GUI innstillinger"
-
-msgid "GXtheme.cfg not found in any subfolder."
-msgstr ""
-
-msgid "Game ID"
-msgstr "Spill ID"
-
-msgid "Game Language"
-msgstr "Språk"
-
-msgid "Game Load"
-msgstr "Lasting av spill"
-
-msgid "Game Region"
-msgstr "Region"
-
-msgid "Game Size"
-msgstr "Spill størrelse"
-
-msgid "Game Sound Mode"
-msgstr ""
-
-msgid "Game Sound Volume"
-msgstr ""
-
-msgid "Game is already installed:"
-msgstr "Spillet er allerede installert:"
-
-msgid "Game partition"
-msgstr ""
-
-msgid "Gamename [GAMEID]"
-msgstr ""
-
-msgid "Games"
-msgstr "Spill"
-
-msgid "German"
-msgstr "Tysk"
-
-msgid "HOME Menu"
-msgstr "HOME Meny"
-
-msgid "Hermes CIOS"
-msgstr ""
-
-msgid "Homebrew Apps Path"
-msgstr "Homebrew Apps sti"
-
-msgid "Homebrew Appspath changed"
-msgstr "Homebrew Apps sti endret"
-
-msgid "Homebrew Launcher"
-msgstr "Homebrew Laster"
-
-msgid "Hour"
-msgstr "Timer"
-
-msgid "How do you want to update?"
-msgstr "Hvordan vil du oppdatere?"
-
-msgid "How to Shutdown?"
-msgstr "Hvordan skru av?"
-
-msgid "If you don't have WiFi, press 1 to get an URL to get your WiiTDB.zip"
-msgstr "Hvis du ikke har WiFi, klikk 1 for å få en URL til din WiiTDB.zip"
-
-#, c-format
-msgid "Incoming file %0.2fKB"
-msgstr "Laster ned fil %0.2fKB"
-
-#, c-format
-msgid "Incoming file %0.2fMB"
-msgstr "Laster ned fil %0.2fMB"
-
-msgid "Initializing Network"
-msgstr "Initialiserer nettverk"
-
-msgid "Insert Disk"
-msgstr "Sett inn plate"
-
-msgid "Insert a Wii Disc!"
-msgstr "Sett inn en Wii plate!"
-
-msgid "Insert an SD-Card to download images."
-msgstr "Sett inn et SD-kort for å laste ned bilder."
-
-msgid "Insert an SD-Card to save."
-msgstr "Sett inn et SD-kort for å lagre."
-
-msgid "Insert an SD-Card to use this option."
-msgstr "Sett inn et SD-kort for å bruke innstillingen."
-
-msgid "Install"
-msgstr "Installér"
-
-msgid "Install 1:1 Copy"
-msgstr ""
-
-msgid "Install Error!"
-msgstr "Installasjonsfeil!"
-
-msgid "Install a game"
-msgstr "Installér et spill"
-
-msgid "Install not possible"
-msgstr ""
-
-msgid "Install partitions"
-msgstr ""
-
-msgid "Installing content... Ok!"
-msgstr "Installerer innhold... OK!"
-
-msgid "Installing game:"
-msgstr "Installerer spill:"
-
-msgid "Installing ticket... Ok!"
-msgstr "Installerer ticket... OK!"
-
-msgid "Installing title... Ok!"
-msgstr "Installerer tittel... OK!"
-
-msgid "Installing wad"
-msgstr "Installerer WAD"
-
-msgid "Invalid PIN code"
-msgstr ""
-
-msgid "It seems that you have some information that will be helpful to us. Please pass this information along to the DEV team."
-msgstr "Det ser ut til at du har informasjon som kan være nyttig for oss. Vennligst videresend denne informasjonen til utviklerteamet."
-
-msgid "Italian"
-msgstr "Italiensk"
-
-msgid "Jan"
-msgstr ""
-
-msgid "Japanese"
-msgstr "Japansk"
-
-msgid "July"
-msgstr "Jul"
-
-msgid "June"
-msgstr "Jun"
-
-msgid "Keep"
-msgstr "Behold"
-
-msgid "Keyboard"
-msgstr "Tastatur"
-
-msgid "Korean"
-msgstr "Koreansk"
-
-msgid "Language File"
-msgstr "Språk Fil"
-
-msgid "Language change:"
-msgstr "Endre språk"
-
-msgid "Languagepath changed."
-msgstr "Språksti endret."
-
-msgid "Left"
-msgstr "Venstre"
-
-msgid "Like SysMenu"
-msgstr "Lik Systemmeny"
-
-msgid "Load"
-msgstr "Start"
-
-msgid "Load From SD/USB"
-msgstr "Start fra SD/USB"
-
-#, c-format
-msgid "Load file from: %s ?"
-msgstr "Start fil fra: %s ?"
-
-msgid "Load this DOL as alternate DOL?"
-msgstr "Last denne DOL som alternativ DOL?"
-
-msgid "Loading standard language."
-msgstr "Laster standard språk."
-
-msgid "Loading standard music."
-msgstr "Laster standard musikk."
-
-msgid "Lock Console"
-msgstr "LÃ¥s konsoll"
-
-msgid "Locked"
-msgstr "LÃ¥st"
-
-msgid "Loop Directory"
-msgstr ""
-
-msgid "Loop Music"
-msgstr ""
-
-msgid "Loop Sound"
-msgstr ""
-
-msgid "Mar"
-msgstr ""
-
-msgid "Mark new games"
-msgstr ""
-
-msgid "May"
-msgstr "Mai"
-
-msgid "Missing files"
-msgstr "Manglende filer"
-
-msgid "Most likely it has dimensions that are not evenly divisible by 4."
-msgstr "Sannsynligvis har bildet dimensjoner som ikke kan deles med 4."
-
-msgid "Mount DVD drive"
-msgstr "Last DVD stasjon"
-
-msgid "Music Loop Mode"
-msgstr ""
-
-msgid "Music Volume"
-msgstr "Musikk volum"
-
-msgid "Neither"
-msgstr "Ingen"
-
-msgid "Network init error"
-msgstr "Nettverk init feil"
-
-msgid "New Disc Detected"
-msgstr "Ny plate oppdaget"
-
-msgid "Next"
-msgstr "Neste"
-
-msgid "No"
-msgstr "Nei"
-
-msgid "No .dol or .elf files found."
-msgstr "Ingen .dol eller .elf filer funnet."
-
-msgid "No Cheatfile found"
-msgstr "Ingen juksefil funnet"
-
-msgid "No DOL file found on disc."
-msgstr "Ingen DOL fil funnet på plate."
-
-msgid "No Favorites"
-msgstr "Ingen favoritter"
-
-msgid "No SD-Card inserted!"
-msgstr "Intet SD-kort satt i!"
-
-msgid "No USB Device"
-msgstr "Ingen USB enhet"
-
-msgid "No USB Device found."
-msgstr "Ingen USB enhet funnet."
-
-msgid "No WBFS or FAT/NTFS partition found"
-msgstr ""
-
-msgid "No cheats were selected"
-msgstr "Ingen juksefiler valgt"
-
-msgid "No data could be read."
-msgstr "Ingen data kan leses."
-
-msgid "No file missing!"
-msgstr "Ingen filer mangler!"
-
-msgid "No new updates."
-msgstr "Ingen nye oppdateringer."
-
-msgid "No themes found on the site."
-msgstr "Ingen temaer funnet på websiden."
-
-msgid "None"
-msgstr ""
-
-msgid "Normal"
-msgstr ""
-
-msgid "Normal Covers"
-msgstr "Normale cover"
-
-msgid "Not Found"
-msgstr "Ikke funnet"
-
-msgid "Not a DOL/ELF file."
-msgstr "Ikke en DOL/ELF fil."
-
-msgid "Not a WAD file."
-msgstr ""
-
-msgid "Not a Wii Disc"
-msgstr "Ikke en Wii plate"
-
-msgid "Not enough free memory."
-msgstr "Ikke nok ledig minne."
-
-msgid "Not enough free space!"
-msgstr "Ikke nok ledig plass!"
-
-msgid "Not supported format!"
-msgstr "Ikke et støttet format!"
-
-msgid "Nov"
-msgstr ""
-
-msgid "OFF"
-msgstr "AV"
-
-msgid "OK"
-msgstr ""
-
-msgid "ON"
-msgstr "PÃ…"
-
-msgid "Oct"
-msgstr "Okt"
-
-msgid "Official Site:"
-msgstr "Offisiell nettside:"
-
-msgid "Only Customs"
-msgstr "Kun custom"
-
-msgid "Only Original"
-msgstr "Kun original"
-
-msgid "Only for Install"
-msgstr "Kun for installering"
-
-msgid "Original/Customs"
-msgstr "Original/Custom"
-
-msgid "Parental Control"
-msgstr "Foreldrekontroll"
-
-msgid "Parental Control disabled"
-msgstr ""
-
-msgid "Partition"
-msgstr "Partisjon"
-
-msgid "Password"
-msgstr "Passord"
-
-msgid "Password Changed"
-msgstr "Passord endret"
-
-msgid "Password has been changed"
-msgstr "Passord har blitt endret"
-
-msgid "Paste it into your browser to get your WiiTDB.zip."
-msgstr "Lim den inn i nettleseren din for å få WiiTDB.zip."
-
-msgid "Patch Country Strings"
-msgstr "Patch land strenger"
-
-msgid "Pick from a list"
-msgstr "Velg fra liste"
-
-msgid "Play Count"
-msgstr "Ganger spilt"
-
-msgid "Play Next"
-msgstr ""
-
-msgid "Play Once"
-msgstr ""
-
-msgid "Play Previous"
-msgstr ""
-
-msgid "Playing Music:"
-msgstr ""
-
-msgid "Please wait..."
-msgstr "Vennligst vent..."
-
-msgid "Power off the Wii"
-msgstr "Skru av Wii"
-
-msgid "Prev"
-msgstr "Forrige"
-
-msgid "Prompts Buttons"
-msgstr "Dialog knapper"
-
-msgid "Published by"
-msgstr "Publisert av"
-
-msgid "Quick Boot"
-msgstr "Hurtig start"
-
-msgid "Random Directory Music"
-msgstr ""
-
-msgid "Reading WAD data... Ok!"
-msgstr "Leser WAD data... OK!"
-
-msgid "Receiving file from:"
-msgstr "Mottar fil fra:"
-
-msgid "Released"
-msgstr "Utgitt"
-
-msgid "Reload SD"
-msgstr "Les SD på nytt"
-
-msgid "Remove update"
-msgstr ""
-
-msgid "Rename Game on WBFS"
-msgstr "Gi nytt navn til spill på WBFS"
-
-msgid "Reset BG Music"
-msgstr ""
-
-msgid "Reset Playcounter"
-msgstr "Nullstill teller"
-
-msgid "Reset to standard BGM?"
-msgstr ""
-
-msgid "Restarting..."
-msgstr "Starter på nytt..."
-
-msgid "Return"
-msgstr "GÃ¥ tilbake"
-
-msgid "Return to Wii Menu"
-msgstr "Tilbake til Wii meny"
-
-msgid "Right"
-msgstr "Høyre"
-
-msgid "Rumble"
-msgstr "Vibrasjon"
-
-msgid "SChinese"
-msgstr "S.Kinesisk"
-
-msgid "SFX Volume"
-msgstr "Effekt volum"
-
-msgid "Save"
-msgstr "Lagre"
-
-msgid "Save Failed"
-msgstr "Lagring feilet"
-
-msgid "Save Game List to"
-msgstr "Lagre spilliste som"
-
-msgid "Saved"
-msgstr "Lagret"
-
-msgid "Screensaver"
-msgstr "Skjermbeskytter"
-
-msgid "Select"
-msgstr ""
-
-msgid "Select a DOL"
-msgstr "Velg en DOL fil"
-
-msgid "Selected DOL"
-msgstr "Valgt DOL fil"
-
-msgid "Sept"
-msgstr "Sep"
-
-msgid "Set Search-Filter"
-msgstr "Angi søkefilter"
-
-msgid "Settings"
-msgstr "Innstillinger"
-
-msgid "Shutdown System"
-msgstr "Skru helt av"
-
-msgid "Shutdown to Idle"
-msgstr "Skru av"
-
-msgid "Sort alphabetically"
-msgstr "Sortér alfabetisk"
-
-msgid "Sort by rank"
-msgstr "Sortér etter rangering"
-
-msgid "Sort order by most played"
-msgstr "Sortér etter ganger spilt"
-
-msgid "Sound"
-msgstr "Lyd"
-
-msgid "Sound+BGM"
-msgstr ""
-
-msgid "Sound+Quiet"
-msgstr ""
-
-msgid "Spanish"
-msgstr "Spansk"
-
-msgid "Special thanks to:"
-msgstr "Spesielt takk til:"
-
-msgid "Standard"
-msgstr "Standard"
-
-msgid "Success"
-msgstr "Suksess"
-
-msgid "Success:"
-msgstr "Suksess:"
-
-msgid "Successfully Saved"
-msgstr "Vellykket lagring"
-
-msgid "Successfully Updated"
-msgstr "Vellykket oppdatering"
-
-msgid "Successfully Updated thanks to www.techjawa.com"
-msgstr ""
-
-msgid "Successfully deleted:"
-msgstr "Vellykket sletting:"
-
-msgid "Successfully extracted theme."
-msgstr "Vellykket utpakking av tema."
-
-msgid "Successfully installed:"
-msgstr "Vellykket installering:"
-
-msgid "System Default"
-msgstr "System Standard"
-
-msgid "TChinese"
-msgstr "T.Kinesisk"
-
-msgid "TXT Cheatcodes Path"
-msgstr "TXTjuksekode sti"
-
-msgid "TXT Cheatcodes Path changed"
-msgstr "TXTjuksekode sti endret"
-
-msgid "The entered directory does not exist. Would you like to create it?"
-msgstr "Valgt mappe finnes ikke. Vil du opprette den?"
-
-msgid "The wad file was installed. But It could not be deleted from the SD card."
-msgstr "WAD filen ble installert. Men ble ikke slettet fra SD kort."
-
-#, c-format
-msgid "The wad installation failed with error %ld"
-msgstr "WAD installasjonen feilet med feilkode %ld"
-
-msgid "Theme Download Path"
-msgstr "Tema nedlasting sti"
-
-msgid "Theme Download Path changed"
-msgstr "Tema nedlasting sti endret"
-
-msgid "Theme Downloader"
-msgstr "Tema Nedlaster"
-
-msgid "Theme Path"
-msgstr "Tema sti"
-
-msgid "Theme Path Changed"
-msgstr "Tema sti endret"
-
-msgid "Theme Title:"
-msgstr "Tema tittel:"
-
-msgid "Time left:"
-msgstr "Tid igjen:"
-
-msgid "Title Launcher"
-msgstr "Tittel Laster"
-
-msgid "Titles from WiiTDB"
-msgstr "Titler fra WiiTDB"
-
-msgid "Tooltips"
-msgstr "Verktøystips"
-
-msgid "Transfer failed."
-msgstr "Overføring feilet."
-
-msgid "USB Device not found"
-msgstr "USB enhet ikke funnet"
-
-msgid "USB Loader GX is protected"
-msgstr "USB Loader GX er beskyttet"
-
-msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
-msgstr ""
-
-#, c-format
-msgid "Unable to open the wad that was just downloaded (%s)."
-msgstr "Kan ikke åpne nedlastet WAD fil (%s)."
-
-msgid "Uninstall"
-msgstr "Avinstallér"
-
-msgid "Uninstall Game"
-msgstr "Avinstallér spill"
-
-msgid "Uninstall Menu"
-msgstr "Avinstallér Meny"
-
-msgid "Uninstalling wad"
-msgstr "Avinstallerer WAD"
-
-msgid "Unlock Parental Control"
-msgstr ""
-
-msgid "Unlock console to use this option."
-msgstr "Lås opp konsollen for å bruke denne innstillingen."
-
-msgid "Unlocked"
-msgstr "Opplåst"
-
-msgid "Unsupported format, try to extract manually."
-msgstr "Format ikke støttet, prøv å pakk ut manuelt."
-
-msgid "Update"
-msgstr "Oppdater"
-
-msgid "Update All"
-msgstr "Oppdater alt"
-
-msgid "Update DOL"
-msgstr "Oppdater DOL"
-
-msgid "Update Files"
-msgstr "Oppdater filer"
-
-msgid "Update Path"
-msgstr "Oppdatering sti"
-
-msgid "Update Path changed."
-msgstr "Oppdatering sti endret."
-
-msgid "Update all Language Files"
-msgstr "Oppdater alle språkfiler"
-
-msgid "Update failed"
-msgstr "Mislykket oppdatering"
-
-msgid "Update to"
-msgstr "Oppdater til"
-
-msgid "Updating"
-msgstr "Oppdaterer"
-
-msgid "Updating Language Files..."
-msgstr "Oppdaterer språkfiler..."
-
-msgid "Updating Language Files:"
-msgstr "Oppdaterer språkfiler:"
-
-msgid "Updating WiiTDB.zip"
-msgstr "Oppdaterer WiiTDB.zip"
-
-msgid "Uploaded ZIP file installed to homebrew directory."
-msgstr "Opplastet ZIP fil installert i homebrew mappen."
-
-msgid "VIDTV Patch"
-msgstr ""
-
-#, c-format
-msgid "Version: %s"
-msgstr "Versjon: %s"
-
-msgid "Video Mode"
-msgstr "Video modus"
-
-msgid "WIP Patches Path"
-msgstr ""
-
-msgid "WIP Patches Path changed"
-msgstr ""
-
-msgid "Waiting for USB Device"
-msgstr "Venter på USB enhet"
-
-msgid "Waiting..."
-msgstr "Venter..."
-
-msgid "What do you want to update?"
-msgstr "Hva vil du oppdatere?"
-
-msgid "WiFi Features"
-msgstr "WiFi egenskaper"
-
-msgid "Widescreen Fix"
-msgstr "Widescreen fiks"
-
-msgid "Wii Menu"
-msgstr "Wii Meny"
-
-msgid "Wii Settings"
-msgstr "Wii Innstillinger"
-
-msgid "WiiTDB Files"
-msgstr "WiiTDB filer"
-
-msgid "WiiTDB Path"
-msgstr "WiiTDB sti"
-
-msgid "WiiTDB Path changed."
-msgstr "WiiTDB sti endret."
-
-msgid "Wiilight"
-msgstr "Wii DVD lys"
-
-msgid "Wrong Password"
-msgstr "Feil passord"
-
-msgid "Yes"
-msgstr "Ja"
-
-msgid "You are about to delete "
-msgstr "Du er i ferd med å slette "
-
-msgid "You are choosing to display favorites and you do not have any selected."
-msgstr "Du prøver å vise favoritter når du ikke har noen valgt."
-
-msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
-msgstr ""
-
-msgid "You don't have Parental Control enabled. If you wish to use Parental Control, enable it in the Wii Settings."
-msgstr ""
-
-msgid "You have attempted to load a bad image"
-msgstr "Du har forsøkt å vise et korrupt bilde"
-
-msgid "You need to select or format a partition"
-msgstr ""
-
-#, c-format
-msgid "Your URL has been saved in %sWiiTDB_URL.txt."
-msgstr "Din URL ble lagret i %sWiiTDB_URL.txt."
-
-msgid "and translaters for language files updates"
-msgstr "og oversettere for språkfiler"
-
-msgid "available"
-msgstr "tilgjengelig"
-
-msgid "does not exist!"
-msgstr "finnes ikke!"
-
-msgid "does not exist! Loading game without cheats."
-msgstr "finnes ikke! Laster spill uten juksekode."
-
-msgid "does not exist! You Messed something up, Idiot."
-msgstr "finnes ikke! Du har gjort noe galt."
-
-msgid "file left"
-msgstr "fil gjenstår"
-
-msgid "files left"
-msgstr "filer gjenstår"
-
-msgid "files not found on the server!"
-msgstr "filer ikke funnet på serveren!"
-
-msgid "for FAT/NTFS support"
-msgstr ""
-
-msgid "for Ocarina"
-msgstr ""
-
-msgid "for WiiTDB and hosting covers / disc images"
-msgstr "for WiiTDB og hosting av bilder"
-
-msgid "for diverse patches"
-msgstr "for diverse patcher"
-
-msgid "for his awesome tool LibWiiGui"
-msgstr "for hans råe verktøy LibWiiGui"
-
-msgid "for hosting the themes"
-msgstr "for hosting av tema"
-
-msgid "for hosting the update files"
-msgstr "for hosting av oppdateringer"
-
-msgid "for the USB Loader source"
-msgstr "for kilden til USB Loader"
-
-msgid "formatted!"
-msgstr "formatert!"
-
-msgid "free"
-msgstr "ledig"
-
-msgid "not set"
-msgstr "ikke satt"
-
-msgid "of"
-msgstr "av"
-
-msgid "seconds left"
-msgstr "sekunder gjenstår"
+# USB Loader GX language source file.
+# norwegian.lang - r813
+# don't delete/change this line (é).
+msgid ""
+msgstr ""
+"Project-Id-Version: USB Loader GX\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-05-30 23:36+0200\n"
+"PO-Revision-Date: 2009-10-01 01:00+0200\n"
+"Last-Translator: raschi\n"
+"Language-Team: raschi\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid " "
+msgstr ""
+
+msgid " Wad Saved as:"
+msgstr " WAD lagret som:"
+
+msgid " could not be downloaded."
+msgstr " kan ikke lastes ned."
+
+msgid " has been Saved. The text has not been verified. Some of the code may not work right with each other. If you experience trouble, open the text in a real text editor for more information."
+msgstr " har blitt lagret. Teksten har ikke blitt verifisert. Noe av koden vil kanskje ikke fungere riktig. Hvis du får problemer, åpne teksten i et ekte redigeringsprogram for mer informasjon."
+
+msgid " is not on the server."
+msgstr " finnes ikke på serveren."
+
+#, c-format
+msgid "%s : %s May not boot correctly if your System Menu is not up to date."
+msgstr "%s : %s vil kanskje ikke starte riktig hvis System Menyen ikke er oppdatert."
+
+msgid "0 (Everyone)"
+msgstr "0 (Alle)"
+
+msgid "1 (Child 7+)"
+msgstr "1 (Barn 7+)"
+
+msgid "1 hour"
+msgstr "1 time"
+
+msgid "10 min"
+msgstr ""
+
+msgid "2 (Teen 12+)"
+msgstr "2 (Ungdom 12+)"
+
+msgid "20 min"
+msgstr ""
+
+msgid "2D Cover Path"
+msgstr "2D Cover sti"
+
+msgid "3 (Mature 16+)"
+msgstr "3 (Ungdom 16+)"
+
+msgid "3 min"
+msgstr ""
+
+msgid "30 min"
+msgstr ""
+
+msgid "3D Cover Path"
+msgstr "3D Cover sti"
+
+msgid "3D Covers"
+msgstr "3D cover"
+
+msgid "4 (Adults Only 18+)"
+msgstr "4 (Voksen 18+)"
+
+msgid "5 min"
+msgstr ""
+
+msgid ">> Deleting tickets..."
+msgstr ">> Sletter tickets..."
+
+msgid ">> Deleting tickets...ERROR! "
+msgstr ">> Sletter tickets...FEIL! "
+
+msgid ">> Deleting tickets...Ok! "
+msgstr ">> Sletter tickets...OK! "
+
+msgid ">> Deleting title ...ERROR! "
+msgstr ">> Sletter tittel ...FEIL! "
+
+msgid ">> Deleting title ...Ok!"
+msgstr ">> Sletter tittel ...OK!"
+
+msgid ">> Deleting title contents..."
+msgstr ">> Sletter tittel innhold..."
+
+msgid ">> Deleting title contents...ERROR! "
+msgstr ">> Sletter tittel innhold...FEIL! "
+
+msgid ">> Deleting title contents...Ok!"
+msgstr ">> Sletter tittel innhold...OK!"
+
+msgid ">> Deleting title..."
+msgstr ">> Sletter tittel..."
+
+msgid ">> Finishing installation..."
+msgstr ">> Sluttfører installasjon..."
+
+msgid ">> Installing content #"
+msgstr ">> Installerer innhold #"
+
+msgid ">> Installing ticket..."
+msgstr ">> Installerer ticket..."
+
+msgid ">> Installing title..."
+msgstr ">> Installerer tittel..."
+
+msgid ">> Reading WAD data..."
+msgstr ">> Leser WAD data..."
+
+msgid ">> Reading WAD data...ERROR! "
+msgstr ">> Leser WAD data...FEIL! "
+
+msgid ">> Reading WAD data...Ok!"
+msgstr ">> Leser WAD data...OK!"
+
+msgid "AUTO"
+msgstr ""
+
+msgid "All partitions"
+msgstr ""
+
+msgid "All the features of USB Loader GX are unlocked."
+msgstr "Alle funksjonene til USB Loader GX er opplåst."
+
+msgid "Alternate DOL"
+msgstr "Alternativ DOL"
+
+msgid "An Error occured"
+msgstr "En feil oppstod"
+
+msgid "Anti"
+msgstr ""
+
+msgid "App Language"
+msgstr "Program språk"
+
+msgid "Apr"
+msgstr ""
+
+msgid "Are you sure you want to enable Parent Control?"
+msgstr ""
+
+msgid "Are you sure?"
+msgstr "Er du sikker?"
+
+msgid "Aug"
+msgstr ""
+
+msgid "Author:"
+msgstr "Forfatter:"
+
+msgid "AutoInit Network"
+msgstr "Autostart nettverk"
+
+msgid "AutoPatch"
+msgstr ""
+
+msgid "BCA Codes Path"
+msgstr ""
+
+msgid "BCA Codes Path changed"
+msgstr ""
+
+msgid "BETA revisions"
+msgstr ""
+
+msgid "Back"
+msgstr "Tilbake"
+
+msgid "Back to HBC or Wii Menu"
+msgstr "Tilbake til HBC eller Wii meny"
+
+msgid "Back to Loader"
+msgstr "HBC/Loader"
+
+msgid "Back to Wii Menu"
+msgstr "Wii meny"
+
+msgid "Backgroundmusic"
+msgstr "Bakgrunnsmusikk"
+
+msgid "Big thanks to:"
+msgstr "Stor takk til:"
+
+msgid "Block IOS Reload"
+msgstr "Blokkér IOS Reload"
+
+msgid "Boot/Standard"
+msgstr "Boot/Standard"
+
+msgid "Boot?"
+msgstr "Start?"
+
+msgid "Both"
+msgstr "Begge"
+
+msgid "Can't be formatted"
+msgstr "Kan ikke formateres"
+
+msgid "Can't create directory"
+msgstr "Kan ikke opprette mappe"
+
+msgid "Can't create file"
+msgstr "Kan ikke opprette fil"
+
+msgid "Can't delete:"
+msgstr "Kan ikke slette:"
+
+msgid "Cancel"
+msgstr "Avbryt"
+
+msgid "Change Play Path"
+msgstr ""
+
+msgid "Channels"
+msgstr "Kanaler"
+
+msgid "Cheatfile is blank"
+msgstr "Juksefil er blank"
+
+msgid "Checking existing artwork"
+msgstr "Sjekker eksisterende bilder"
+
+msgid "Checking for Updates"
+msgstr "Søker etter oppdateringer"
+
+msgid "Click to Download Covers"
+msgstr "Klikk for å laste ned cover"
+
+msgid "Click to change game ID"
+msgstr "Klikk for å endre spill ID"
+
+msgid "Clock"
+msgstr "Klokke"
+
+msgid "Close"
+msgstr "Lukk"
+
+msgid "Code Download"
+msgstr "Kode nedlasting"
+
+#, c-format
+msgid "Coded by: %s"
+msgstr "Kodet av: %s"
+
+msgid "Coding:"
+msgstr "Koding:"
+
+msgid "Confirm"
+msgstr "Bekreft"
+
+msgid "Connection lost..."
+msgstr ""
+
+msgid "Console"
+msgstr "Konsoll"
+
+msgid "Console Default"
+msgstr "Konsoll Standard"
+
+msgid "Console Locked"
+msgstr "Konsoll låst"
+
+msgid "Console should be unlocked to modify it."
+msgstr "Konsoll må være opplåst for å modifisere."
+
+msgid "Continue to install game?"
+msgstr "Fortsett å installere spill?"
+
+msgid "Controllevel"
+msgstr "Kontrollnivå"
+
+msgid "Correct Password"
+msgstr "Riktig passord"
+
+msgid "Could not create GCT file"
+msgstr "Kan ikke opprette GCT fil"
+
+msgid "Could not find a WBFS partition."
+msgstr "Kan ikke finne en WBFS partisjon."
+
+msgid "Could not initialize DIP module!"
+msgstr "Kan ikke initialisere DIP modul!"
+
+msgid "Could not initialize network!"
+msgstr "Kan ikke initialisere nettverk!"
+
+msgid "Could not open Disc"
+msgstr "Kan ikke åpne plate"
+
+msgid "Could not open WBFS partition"
+msgstr "Kan ikke åpne WBFS partisjon"
+
+msgid "Could not read the disc."
+msgstr "Kan ikke lese plate."
+
+msgid "Could not save."
+msgstr "Kan ikke lagre."
+
+msgid "Could not set USB."
+msgstr "Kan ikke velge USB."
+
+msgid "Cover Download"
+msgstr "Cover nedlasting"
+
+msgid "Cover Path Changed"
+msgstr "Cover sti endret"
+
+msgid "Create"
+msgstr "Opprett"
+
+msgid "Credits"
+msgstr "Medvirkende"
+
+msgid "Custom Paths"
+msgstr "Endre stier"
+
+msgid "Customs/Original"
+msgstr "Custom/Original"
+
+msgid "DOL Path"
+msgstr "DOL sti"
+
+msgid "DOL path changed"
+msgstr "DOL sti endret"
+
+msgid "Dec"
+msgstr "Des"
+
+msgid "Default"
+msgstr "Standard"
+
+msgid "Default Gamesettings"
+msgstr "Standard innstillinger"
+
+msgid "Default Settings"
+msgstr "Standard innstillinger"
+
+msgid "Delete"
+msgstr "Slett"
+
+msgid "Delete ?"
+msgstr "Slett ?"
+
+msgid "Delete Cheat GCT"
+msgstr "Slett juksefil GCT"
+
+msgid "Delete Cheat TXT"
+msgstr "Slett juksefil TXT"
+
+msgid "Delete Cover Artwork"
+msgstr "Slett cover"
+
+msgid "Delete Disc Artwork"
+msgstr "Slett platebilde"
+
+msgid "Design:"
+msgstr ""
+
+msgid "Developed by"
+msgstr "Utviklet av"
+
+msgid "Directory does not exist!"
+msgstr "Mappestruktur finnes ikke!"
+
+msgid "Disc Artwork Download"
+msgstr "Platebilde nedlasting"
+
+msgid "Disc Artwork Path"
+msgstr "Platebilde sti"
+
+msgid "Disc Default"
+msgstr "Spill Standard"
+
+msgid "Disc Images"
+msgstr "Plate bilder"
+
+msgid "Disc Path Changed"
+msgstr "Plate sti endret"
+
+msgid "DiskFlip"
+msgstr "Snu plate"
+
+msgid "Display"
+msgstr "Vis"
+
+msgid "Display as a carousel"
+msgstr "Vis som karusell"
+
+msgid "Display as a grid"
+msgstr "Vis som rutemønster"
+
+msgid "Display as a list"
+msgstr "Vis som liste"
+
+msgid "Display favorites"
+msgstr "Vis favoritter"
+
+msgid "Do you really want to delete:"
+msgstr "Er du sikker på at du vil slette:"
+
+msgid "Do you want to apply it now?"
+msgstr ""
+
+msgid "Do you want to change language?"
+msgstr "Vil du endre språk?"
+
+msgid "Do you want to download this theme?"
+msgstr "Vil du laste ned dette temaet?"
+
+msgid "Do you want to format:"
+msgstr "Vil du formatere:"
+
+msgid "Do you want to retry for 30 secs?"
+msgstr "Vil du fortsette å prøve i 30 sekunder?"
+
+msgid "Do you want to use the alternate DOL that is known to be correct?"
+msgstr "Vil du bruke alt DOL filen som er kjent for å være riktig?"
+
+msgid "Do you wish to update/download all language files?"
+msgstr "Vil du oppdatere/laste ned alle språkfiler?"
+
+msgid "Done!"
+msgstr "Ferdig!"
+
+msgid "Download"
+msgstr "Last ned"
+
+msgid "Download Boxart image?"
+msgstr "Last ned cover bilde?"
+
+msgid "Download Discart image?"
+msgstr "Last ned plate bilde?"
+
+msgid "Download Now"
+msgstr "Last ned nå"
+
+msgid "Download failed."
+msgstr "Nedlasting feilet."
+
+msgid "Download finished"
+msgstr "Nedlasting ferdig"
+
+msgid "Download request failed."
+msgstr "Nedlast spørring feilet."
+
+msgid "Downloading"
+msgstr "Laster ned"
+
+msgid "Downloading Page List:"
+msgstr "Laster ned side liste:"
+
+msgid "Downloading file"
+msgstr "Laster ned fil"
+
+msgid "Downloading image:"
+msgstr "Laster ned bilde:"
+
+msgid "Dutch"
+msgstr "Nederlandsk"
+
+msgid "ERROR"
+msgstr "FEIL"
+
+msgid "ERROR:"
+msgstr "FEIL:"
+
+msgid "ERROR: Can't set up theme."
+msgstr ""
+
+msgid "Enable Parental Control"
+msgstr ""
+
+msgid "English"
+msgstr "Engelsk"
+
+msgid "Error"
+msgstr "Feil"
+
+msgid "Error !"
+msgstr "Feil !"
+
+msgid "Error 002 fix"
+msgstr "Error 002 fiks"
+
+msgid "Error reading Disc"
+msgstr "Feil ved lesing av plate"
+
+msgid "Error while transfering data."
+msgstr "Feil ved overføring av data."
+
+msgid "Error..."
+msgstr "Feil..."
+
+msgid "Error:"
+msgstr "Feil:"
+
+msgid "Extracting files..."
+msgstr "Pakker ut filer..."
+
+msgid "FAT: Use directories"
+msgstr ""
+
+msgid "Failed formating"
+msgstr "Feil ved formatering"
+
+msgid "Failed to extract."
+msgstr "Utpakking feilet."
+
+msgid "Failed to open partition"
+msgstr "Feil ved åpning av partisjon"
+
+msgid "Feb"
+msgstr ""
+
+msgid "File not found."
+msgstr "Fil ikke funnet."
+
+msgid "Finishing installation... Ok!"
+msgstr "Sluttfører installasjon... OK!"
+
+msgid "Flip-X"
+msgstr ""
+
+msgid "Force"
+msgstr "Tving"
+
+msgid "Format"
+msgstr "Formatér"
+
+msgid "Formatting, please wait..."
+msgstr "Formaterer, vennligst vent..."
+
+msgid "Free Space"
+msgstr "Ledig plass"
+
+msgid "French"
+msgstr "Fransk"
+
+msgid "Full Shutdown"
+msgstr "Skru helt av"
+
+msgid "GAMEID_Gamename"
+msgstr ""
+
+msgid "GCT Cheatcodes Path"
+msgstr "GCT Juksekode sti"
+
+msgid "GCT Cheatcodes Path changed"
+msgstr "GCT Juksekode sti endret"
+
+msgid "GCT File created"
+msgstr "GCT fil opprettet"
+
+msgid "GUI Settings"
+msgstr "GUI innstillinger"
+
+msgid "GXtheme.cfg not found in any subfolder."
+msgstr ""
+
+msgid "Game ID"
+msgstr "Spill ID"
+
+msgid "Game Language"
+msgstr "Språk"
+
+msgid "Game Load"
+msgstr "Lasting av spill"
+
+msgid "Game Region"
+msgstr "Region"
+
+msgid "Game Size"
+msgstr "Spill størrelse"
+
+msgid "Game Sound Mode"
+msgstr ""
+
+msgid "Game Sound Volume"
+msgstr ""
+
+msgid "Game is already installed:"
+msgstr "Spillet er allerede installert:"
+
+msgid "Game partition"
+msgstr ""
+
+msgid "Gamename [GAMEID]"
+msgstr ""
+
+msgid "Games"
+msgstr "Spill"
+
+msgid "German"
+msgstr "Tysk"
+
+msgid "HOME Menu"
+msgstr "HOME Meny"
+
+msgid "Hermes CIOS"
+msgstr ""
+
+msgid "Homebrew Apps Path"
+msgstr "Homebrew Apps sti"
+
+msgid "Homebrew Appspath changed"
+msgstr "Homebrew Apps sti endret"
+
+msgid "Homebrew Launcher"
+msgstr "Homebrew Laster"
+
+msgid "Hour"
+msgstr "Timer"
+
+msgid "How do you want to update?"
+msgstr "Hvordan vil du oppdatere?"
+
+msgid "How to Shutdown?"
+msgstr "Hvordan skru av?"
+
+msgid "If you don't have WiFi, press 1 to get an URL to get your WiiTDB.zip"
+msgstr "Hvis du ikke har WiFi, klikk 1 for å få en URL til din WiiTDB.zip"
+
+#, c-format
+msgid "Incoming file %0.2fKB"
+msgstr "Laster ned fil %0.2fKB"
+
+#, c-format
+msgid "Incoming file %0.2fMB"
+msgstr "Laster ned fil %0.2fMB"
+
+msgid "Initializing Network"
+msgstr "Initialiserer nettverk"
+
+msgid "Insert Disk"
+msgstr "Sett inn plate"
+
+msgid "Insert a Wii Disc!"
+msgstr "Sett inn en Wii plate!"
+
+msgid "Insert an SD-Card to download images."
+msgstr "Sett inn et SD-kort for å laste ned bilder."
+
+msgid "Insert an SD-Card to save."
+msgstr "Sett inn et SD-kort for å lagre."
+
+msgid "Insert an SD-Card to use this option."
+msgstr "Sett inn et SD-kort for å bruke innstillingen."
+
+msgid "Install"
+msgstr "Installér"
+
+msgid "Install 1:1 Copy"
+msgstr ""
+
+msgid "Install Error!"
+msgstr "Installasjonsfeil!"
+
+msgid "Install a game"
+msgstr "Installér et spill"
+
+msgid "Install not possible"
+msgstr ""
+
+msgid "Install partitions"
+msgstr ""
+
+msgid "Installing content... Ok!"
+msgstr "Installerer innhold... OK!"
+
+msgid "Installing game:"
+msgstr "Installerer spill:"
+
+msgid "Installing ticket... Ok!"
+msgstr "Installerer ticket... OK!"
+
+msgid "Installing title... Ok!"
+msgstr "Installerer tittel... OK!"
+
+msgid "Installing wad"
+msgstr "Installerer WAD"
+
+msgid "Invalid PIN code"
+msgstr ""
+
+msgid "It seems that you have some information that will be helpful to us. Please pass this information along to the DEV team."
+msgstr "Det ser ut til at du har informasjon som kan være nyttig for oss. Vennligst videresend denne informasjonen til utviklerteamet."
+
+msgid "Italian"
+msgstr "Italiensk"
+
+msgid "Jan"
+msgstr ""
+
+msgid "Japanese"
+msgstr "Japansk"
+
+msgid "July"
+msgstr "Jul"
+
+msgid "June"
+msgstr "Jun"
+
+msgid "Keep"
+msgstr "Behold"
+
+msgid "Keyboard"
+msgstr "Tastatur"
+
+msgid "Korean"
+msgstr "Koreansk"
+
+msgid "Language File"
+msgstr "Språk Fil"
+
+msgid "Language change:"
+msgstr "Endre språk"
+
+msgid "Languagepath changed."
+msgstr "Språksti endret."
+
+msgid "Left"
+msgstr "Venstre"
+
+msgid "Like SysMenu"
+msgstr "Lik Systemmeny"
+
+msgid "Load"
+msgstr "Start"
+
+msgid "Load From SD/USB"
+msgstr "Start fra SD/USB"
+
+#, c-format
+msgid "Load file from: %s ?"
+msgstr "Start fil fra: %s ?"
+
+msgid "Load this DOL as alternate DOL?"
+msgstr "Last denne DOL som alternativ DOL?"
+
+msgid "Loading standard language."
+msgstr "Laster standard språk."
+
+msgid "Loading standard music."
+msgstr "Laster standard musikk."
+
+msgid "Lock Console"
+msgstr "LÃ¥s konsoll"
+
+msgid "Locked"
+msgstr "LÃ¥st"
+
+msgid "Loop Directory"
+msgstr ""
+
+msgid "Loop Music"
+msgstr ""
+
+msgid "Loop Sound"
+msgstr ""
+
+msgid "Mar"
+msgstr ""
+
+msgid "Mark new games"
+msgstr ""
+
+msgid "May"
+msgstr "Mai"
+
+msgid "Missing files"
+msgstr "Manglende filer"
+
+msgid "Most likely it has dimensions that are not evenly divisible by 4."
+msgstr "Sannsynligvis har bildet dimensjoner som ikke kan deles med 4."
+
+msgid "Mount DVD drive"
+msgstr "Last DVD stasjon"
+
+msgid "Music Loop Mode"
+msgstr ""
+
+msgid "Music Volume"
+msgstr "Musikk volum"
+
+msgid "Neither"
+msgstr "Ingen"
+
+msgid "Network init error"
+msgstr "Nettverk init feil"
+
+msgid "New Disc Detected"
+msgstr "Ny plate oppdaget"
+
+msgid "Next"
+msgstr "Neste"
+
+msgid "No"
+msgstr "Nei"
+
+msgid "No .dol or .elf files found."
+msgstr "Ingen .dol eller .elf filer funnet."
+
+msgid "No Cheatfile found"
+msgstr "Ingen juksefil funnet"
+
+msgid "No DOL file found on disc."
+msgstr "Ingen DOL fil funnet på plate."
+
+msgid "No Favorites"
+msgstr "Ingen favoritter"
+
+msgid "No SD-Card inserted!"
+msgstr "Intet SD-kort satt i!"
+
+msgid "No USB Device"
+msgstr "Ingen USB enhet"
+
+msgid "No USB Device found."
+msgstr "Ingen USB enhet funnet."
+
+msgid "No WBFS or FAT/NTFS partition found"
+msgstr ""
+
+msgid "No cheats were selected"
+msgstr "Ingen juksefiler valgt"
+
+msgid "No data could be read."
+msgstr "Ingen data kan leses."
+
+msgid "No file missing!"
+msgstr "Ingen filer mangler!"
+
+msgid "No new updates."
+msgstr "Ingen nye oppdateringer."
+
+msgid "No themes found on the site."
+msgstr "Ingen temaer funnet på websiden."
+
+msgid "None"
+msgstr ""
+
+msgid "Normal"
+msgstr ""
+
+msgid "Normal Covers"
+msgstr "Normale cover"
+
+msgid "Not Found"
+msgstr "Ikke funnet"
+
+msgid "Not a DOL/ELF file."
+msgstr "Ikke en DOL/ELF fil."
+
+msgid "Not a WAD file."
+msgstr ""
+
+msgid "Not a Wii Disc"
+msgstr "Ikke en Wii plate"
+
+msgid "Not enough free memory."
+msgstr "Ikke nok ledig minne."
+
+msgid "Not enough free space!"
+msgstr "Ikke nok ledig plass!"
+
+msgid "Not supported format!"
+msgstr "Ikke et støttet format!"
+
+msgid "Nov"
+msgstr ""
+
+msgid "OFF"
+msgstr "AV"
+
+msgid "OK"
+msgstr ""
+
+msgid "ON"
+msgstr "PÃ…"
+
+msgid "Oct"
+msgstr "Okt"
+
+msgid "Official Site:"
+msgstr "Offisiell nettside:"
+
+msgid "Only Customs"
+msgstr "Kun custom"
+
+msgid "Only Original"
+msgstr "Kun original"
+
+msgid "Only for Install"
+msgstr "Kun for installering"
+
+msgid "Original/Customs"
+msgstr "Original/Custom"
+
+msgid "Parental Control"
+msgstr "Foreldrekontroll"
+
+msgid "Parental Control disabled"
+msgstr ""
+
+msgid "Partition"
+msgstr "Partisjon"
+
+msgid "Password"
+msgstr "Passord"
+
+msgid "Password Changed"
+msgstr "Passord endret"
+
+msgid "Password has been changed"
+msgstr "Passord har blitt endret"
+
+msgid "Paste it into your browser to get your WiiTDB.zip."
+msgstr "Lim den inn i nettleseren din for å få WiiTDB.zip."
+
+msgid "Patch Country Strings"
+msgstr "Patch land strenger"
+
+msgid "Pick from a list"
+msgstr "Velg fra liste"
+
+msgid "Play Count"
+msgstr "Ganger spilt"
+
+msgid "Play Next"
+msgstr ""
+
+msgid "Play Once"
+msgstr ""
+
+msgid "Play Previous"
+msgstr ""
+
+msgid "Playing Music:"
+msgstr ""
+
+msgid "Please wait..."
+msgstr "Vennligst vent..."
+
+msgid "Power off the Wii"
+msgstr "Skru av Wii"
+
+msgid "Prev"
+msgstr "Forrige"
+
+msgid "Prompts Buttons"
+msgstr "Dialog knapper"
+
+msgid "Published by"
+msgstr "Publisert av"
+
+msgid "Quick Boot"
+msgstr "Hurtig start"
+
+msgid "Random Directory Music"
+msgstr ""
+
+msgid "Reading WAD data... Ok!"
+msgstr "Leser WAD data... OK!"
+
+msgid "Receiving file from:"
+msgstr "Mottar fil fra:"
+
+msgid "Released"
+msgstr "Utgitt"
+
+msgid "Reload SD"
+msgstr "Les SD på nytt"
+
+msgid "Remove update"
+msgstr ""
+
+msgid "Rename Game on WBFS"
+msgstr "Gi nytt navn til spill på WBFS"
+
+msgid "Reset BG Music"
+msgstr ""
+
+msgid "Reset Playcounter"
+msgstr "Nullstill teller"
+
+msgid "Reset to standard BGM?"
+msgstr ""
+
+msgid "Restarting..."
+msgstr "Starter på nytt..."
+
+msgid "Return"
+msgstr "GÃ¥ tilbake"
+
+msgid "Return to Wii Menu"
+msgstr "Tilbake til Wii meny"
+
+msgid "Right"
+msgstr "Høyre"
+
+msgid "Rumble"
+msgstr "Vibrasjon"
+
+msgid "SChinese"
+msgstr "S.Kinesisk"
+
+msgid "SFX Volume"
+msgstr "Effekt volum"
+
+msgid "Save"
+msgstr "Lagre"
+
+msgid "Save Failed"
+msgstr "Lagring feilet"
+
+msgid "Save Game List to"
+msgstr "Lagre spilliste som"
+
+msgid "Saved"
+msgstr "Lagret"
+
+msgid "Screensaver"
+msgstr "Skjermbeskytter"
+
+msgid "Select"
+msgstr ""
+
+msgid "Select a DOL"
+msgstr "Velg en DOL fil"
+
+msgid "Selected DOL"
+msgstr "Valgt DOL fil"
+
+msgid "Sept"
+msgstr "Sep"
+
+msgid "Set Search-Filter"
+msgstr "Angi søkefilter"
+
+msgid "Settings"
+msgstr "Innstillinger"
+
+msgid "Shutdown System"
+msgstr "Skru helt av"
+
+msgid "Shutdown to Idle"
+msgstr "Skru av"
+
+msgid "Sort alphabetically"
+msgstr "Sortér alfabetisk"
+
+msgid "Sort by rank"
+msgstr "Sortér etter rangering"
+
+msgid "Sort order by most played"
+msgstr "Sortér etter ganger spilt"
+
+msgid "Sound"
+msgstr "Lyd"
+
+msgid "Sound+BGM"
+msgstr ""
+
+msgid "Sound+Quiet"
+msgstr ""
+
+msgid "Spanish"
+msgstr "Spansk"
+
+msgid "Special thanks to:"
+msgstr "Spesielt takk til:"
+
+msgid "Standard"
+msgstr "Standard"
+
+msgid "Success"
+msgstr "Suksess"
+
+msgid "Success:"
+msgstr "Suksess:"
+
+msgid "Successfully Saved"
+msgstr "Vellykket lagring"
+
+msgid "Successfully Updated"
+msgstr "Vellykket oppdatering"
+
+msgid "Successfully Updated thanks to www.techjawa.com"
+msgstr ""
+
+msgid "Successfully deleted:"
+msgstr "Vellykket sletting:"
+
+msgid "Successfully extracted theme."
+msgstr "Vellykket utpakking av tema."
+
+msgid "Successfully installed:"
+msgstr "Vellykket installering:"
+
+msgid "System Default"
+msgstr "System Standard"
+
+msgid "TChinese"
+msgstr "T.Kinesisk"
+
+msgid "TXT Cheatcodes Path"
+msgstr "TXTjuksekode sti"
+
+msgid "TXT Cheatcodes Path changed"
+msgstr "TXTjuksekode sti endret"
+
+msgid "The entered directory does not exist. Would you like to create it?"
+msgstr "Valgt mappe finnes ikke. Vil du opprette den?"
+
+msgid "The wad file was installed. But It could not be deleted from the SD card."
+msgstr "WAD filen ble installert. Men ble ikke slettet fra SD kort."
+
+#, c-format
+msgid "The wad installation failed with error %ld"
+msgstr "WAD installasjonen feilet med feilkode %ld"
+
+msgid "Theme Download Path"
+msgstr "Tema nedlasting sti"
+
+msgid "Theme Download Path changed"
+msgstr "Tema nedlasting sti endret"
+
+msgid "Theme Downloader"
+msgstr "Tema Nedlaster"
+
+msgid "Theme Path"
+msgstr "Tema sti"
+
+msgid "Theme Path Changed"
+msgstr "Tema sti endret"
+
+msgid "Theme Title:"
+msgstr "Tema tittel:"
+
+msgid "Time left:"
+msgstr "Tid igjen:"
+
+msgid "Title Launcher"
+msgstr "Tittel Laster"
+
+msgid "Titles from WiiTDB"
+msgstr "Titler fra WiiTDB"
+
+msgid "Tooltips"
+msgstr "Verktøystips"
+
+msgid "Transfer failed."
+msgstr "Overføring feilet."
+
+msgid "USB Device not found"
+msgstr "USB enhet ikke funnet"
+
+msgid "USB Loader GX is protected"
+msgstr "USB Loader GX er beskyttet"
+
+msgid "USB Loader GX will only run with Hermes CIOS rev 4! Please make sure you have revision 4 installed!"
+msgstr ""
+
+#, c-format
+msgid "Unable to open the wad that was just downloaded (%s)."
+msgstr "Kan ikke åpne nedlastet WAD fil (%s)."
+
+msgid "Uninstall"
+msgstr "Avinstallér"
+
+msgid "Uninstall Game"
+msgstr "Avinstallér spill"
+
+msgid "Uninstall Menu"
+msgstr "Avinstallér Meny"
+
+msgid "Uninstalling wad"
+msgstr "Avinstallerer WAD"
+
+msgid "Unlock Parental Control"
+msgstr ""
+
+msgid "Unlock console to use this option."
+msgstr "Lås opp konsollen for å bruke denne innstillingen."
+
+msgid "Unlocked"
+msgstr "Opplåst"
+
+msgid "Unsupported format, try to extract manually."
+msgstr "Format ikke støttet, prøv å pakk ut manuelt."
+
+msgid "Update"
+msgstr "Oppdater"
+
+msgid "Update All"
+msgstr "Oppdater alt"
+
+msgid "Update DOL"
+msgstr "Oppdater DOL"
+
+msgid "Update Files"
+msgstr "Oppdater filer"
+
+msgid "Update Path"
+msgstr "Oppdatering sti"
+
+msgid "Update Path changed."
+msgstr "Oppdatering sti endret."
+
+msgid "Update all Language Files"
+msgstr "Oppdater alle språkfiler"
+
+msgid "Update failed"
+msgstr "Mislykket oppdatering"
+
+msgid "Update to"
+msgstr "Oppdater til"
+
+msgid "Updating"
+msgstr "Oppdaterer"
+
+msgid "Updating Language Files..."
+msgstr "Oppdaterer språkfiler..."
+
+msgid "Updating Language Files:"
+msgstr "Oppdaterer språkfiler:"
+
+msgid "Updating WiiTDB.zip"
+msgstr "Oppdaterer WiiTDB.zip"
+
+msgid "Uploaded ZIP file installed to homebrew directory."
+msgstr "Opplastet ZIP fil installert i homebrew mappen."
+
+msgid "VIDTV Patch"
+msgstr ""
+
+#, c-format
+msgid "Version: %s"
+msgstr "Versjon: %s"
+
+msgid "Video Mode"
+msgstr "Video modus"
+
+msgid "WIP Patches Path"
+msgstr ""
+
+msgid "WIP Patches Path changed"
+msgstr ""
+
+msgid "Waiting for USB Device"
+msgstr "Venter på USB enhet"
+
+msgid "Waiting..."
+msgstr "Venter..."
+
+msgid "What do you want to update?"
+msgstr "Hva vil du oppdatere?"
+
+msgid "WiFi Features"
+msgstr "WiFi egenskaper"
+
+msgid "Widescreen Fix"
+msgstr "Widescreen fiks"
+
+msgid "Wii Menu"
+msgstr "Wii Meny"
+
+msgid "Wii Settings"
+msgstr "Wii Innstillinger"
+
+msgid "WiiTDB Files"
+msgstr "WiiTDB filer"
+
+msgid "WiiTDB Path"
+msgstr "WiiTDB sti"
+
+msgid "WiiTDB Path changed."
+msgstr "WiiTDB sti endret."
+
+msgid "Wiilight"
+msgstr "Wii DVD lys"
+
+msgid "Wrong Password"
+msgstr "Feil passord"
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "You are about to delete "
+msgstr "Du er i ferd med å slette "
+
+msgid "You are choosing to display favorites and you do not have any selected."
+msgstr "Du prøver å vise favoritter når du ikke har noen valgt."
+
+msgid "You are using NTFS filesystem. Due to possible write errors to a NTFS partition, installing a game is not possible."
+msgstr ""
+
+msgid "You don't have Parental Control enabled. If you wish to use Parental Control, enable it in the Wii Settings."
+msgstr ""
+
+msgid "You have attempted to load a bad image"
+msgstr "Du har forsøkt å vise et korrupt bilde"
+
+msgid "You need to select or format a partition"
+msgstr ""
+
+#, c-format
+msgid "Your URL has been saved in %sWiiTDB_URL.txt."
+msgstr "Din URL ble lagret i %sWiiTDB_URL.txt."
+
+msgid "and translaters for language files updates"
+msgstr "og oversettere for språkfiler"
+
+msgid "available"
+msgstr "tilgjengelig"
+
+msgid "does not exist!"
+msgstr "finnes ikke!"
+
+msgid "does not exist! Loading game without cheats."
+msgstr "finnes ikke! Laster spill uten juksekode."
+
+msgid "does not exist! You Messed something up, Idiot."
+msgstr "finnes ikke! Du har gjort noe galt."
+
+msgid "file left"
+msgstr "fil gjenstår"
+
+msgid "files left"
+msgstr "filer gjenstår"
+
+msgid "files not found on the server!"
+msgstr "filer ikke funnet på serveren!"
+
+msgid "for FAT/NTFS support"
+msgstr ""
+
+msgid "for Ocarina"
+msgstr ""
+
+msgid "for WiiTDB and hosting covers / disc images"
+msgstr "for WiiTDB og hosting av bilder"
+
+msgid "for diverse patches"
+msgstr "for diverse patcher"
+
+msgid "for his awesome tool LibWiiGui"
+msgstr "for hans råe verktøy LibWiiGui"
+
+msgid "for hosting the themes"
+msgstr "for hosting av tema"
+
+msgid "for hosting the update files"
+msgstr "for hosting av oppdateringer"
+
+msgid "for the USB Loader source"
+msgstr "for kilden til USB Loader"
+
+msgid "formatted!"
+msgstr "formatert!"
+
+msgid "free"
+msgstr "ledig"
+
+msgid "not set"
+msgstr "ikke satt"
+
+msgid "of"
+msgstr "av"
+
+msgid "seconds left"
+msgstr "sekunder gjenstår"
diff --git a/Make.config.default b/Make.config.default
index 1a10dbf2..63e7993a 100644
--- a/Make.config.default
+++ b/Make.config.default
@@ -1,12 +1,12 @@
-#
-# to use this file rename Make.config.default to Make.config
-# or create a new Make.config
-#
-# you can here add defines
-#
-# in example i have included a switch to diseble
-# the gecko-debug stuff. so also in source gecko.c+gecko.h
-#
-# NOTE when add, remove or change a define here then a "make clean" is needed
-#
-CFLAGS += -DNO_DEBUG DDEBUG_WBFS
+#
+# to use this file rename Make.config.default to Make.config
+# or create a new Make.config
+#
+# you can here add defines
+#
+# in example i have included a switch to diseble
+# the gecko-debug stuff. so also in source gecko.c+gecko.h
+#
+# NOTE when add, remove or change a define here then a "make clean" is needed
+#
+CFLAGS += -DNO_DEBUG DDEBUG_WBFS
diff --git a/Makefile b/Makefile
index 26947e51..f85e4935 100644
--- a/Makefile
+++ b/Makefile
@@ -64,7 +64,8 @@ LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map,--section-start,.init=0x80B00
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
-LIBS := -lpngu -lpng -lgd -lm -lz -lwiiuse -lbte -lasnd -logc -lfreetype -lvorbisidec -lmad -lmxml -ljpeg -lzip -lext2fs
+LIBS := -lpngu -lpng -lgd -lm -lz -lwiiuse -lbte -lasnd -logc -lfreetype -lvorbisidec \
+ -lmad -lmxml -ljpeg -lzip -lcustomext2fs
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
@@ -99,7 +100,7 @@ PCMFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pcm)))
WAVFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.wav)))
DOLFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.dol)))
MP3FILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.mp3)))
-
+
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
@@ -127,7 +128,7 @@ export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
#---------------------------------------------------------------------------------
# build a list of library paths
#---------------------------------------------------------------------------------
-export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
+export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) -L$(CURDIR)/source/libs/libext2fs/ \
-L$(LIBOGC_LIB)
export OUTPUT := $(CURDIR)/$(TARGET)
@@ -167,15 +168,15 @@ run:
$(MAKE)
@echo Done building ...
@echo Now Run That Shit ...
-
+
wiiload $(OUTPUT).dol
#---------------------------------------------------------------------------------
reload:
wiiload -r $(OUTPUT).dol
-#---------------------------------------------------------------------------------
-release:
+#---------------------------------------------------------------------------------
+release:
$(MAKE)
cp boot.dol ./hbc/boot.dol
@@ -183,7 +184,7 @@ release:
#---------------------------------------------------------------------------------
else
-DEPENDS := $(OFILES:.o=.d)
+DEPENDS := $(OFILES:.o=.d)
#---------------------------------------------------------------------------------
# main targets
@@ -211,15 +212,15 @@ language: $(wildcard $(PROJECTDIR)/Languages/*.lang)
%.png.o : %.png
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
-
+
%.ogg.o : %.ogg
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
-
+
%.pcm.o : %.pcm
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
-
+
%.wav.o : %.wav
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
@@ -227,7 +228,7 @@ language: $(wildcard $(PROJECTDIR)/Languages/*.lang)
%.mp3.o : %.mp3
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
-
+
%.certs.o : %.certs
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
diff --git a/data/app_booter.dol b/data/app_booter.dol
index 2f1df769..a2a2e52d 100644
Binary files a/data/app_booter.dol and b/data/app_booter.dol differ
diff --git a/gui.pnproj b/gui.pnproj
index 02a4005a..7a64453e 100644
--- a/gui.pnproj
+++ b/gui.pnproj
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/source/ZipFile.h b/source/ZipFile.h
index 237c1290..7e714625 100644
--- a/source/ZipFile.h
+++ b/source/ZipFile.h
@@ -1,58 +1,58 @@
-/***************************************************************************
- * Copyright (C) 2009
- * by Dimok
- *
- * This software is provided 'as-is', without any express or implied
- * warranty. In no event will the authors be held liable for any
- * damages arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any
- * purpose, including commercial applications, and to alter it and
- * redistribute it freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you
- * must not claim that you wrote the original software. If you use
- * this software in a product, an acknowledgment in the product
- * documentation would be appreciated but is not required.
- *
- * 2. Altered source versions must be plainly marked as such, and
- * must not be misrepresented as being the original software.
- *
- * 3. This notice may not be removed or altered from any source
- * distribution.
- *
- * ZipFile.cpp
- *
- * for Wii-FileXplorer 2009
- ***************************************************************************/
-#ifndef _ZIPFILE_H_
-#define _ZIPFILE_H_
-
-#include
-
-typedef struct
-{
- u64 offset; // ZipFile offset
- u64 length; // uncompressed file length in 64 bytes for sizes higher than 4GB
- bool isdir; // 0 - file, 1 - directory
- char filename[256]; // full filename
-} FileStructure;
-
-class ZipFile
-{
- public:
- //!Constructor
- ZipFile(const char *filepath);
- //!Destructor
- ~ZipFile();
- //!Extract all files from a zip file to a directory
- //!\param dest Destination path to where to extract
- bool ExtractAll(const char *dest);
- protected:
- bool LoadList();
- unzFile File;
- unz_file_info cur_file_info;
- FileStructure *FileList;
-};
-
-#endif
+/***************************************************************************
+ * Copyright (C) 2009
+ * by Dimok
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any
+ * damages arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any
+ * purpose, including commercial applications, and to alter it and
+ * redistribute it freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you
+ * must not claim that you wrote the original software. If you use
+ * this software in a product, an acknowledgment in the product
+ * documentation would be appreciated but is not required.
+ *
+ * 2. Altered source versions must be plainly marked as such, and
+ * must not be misrepresented as being the original software.
+ *
+ * 3. This notice may not be removed or altered from any source
+ * distribution.
+ *
+ * ZipFile.cpp
+ *
+ * for Wii-FileXplorer 2009
+ ***************************************************************************/
+#ifndef _ZIPFILE_H_
+#define _ZIPFILE_H_
+
+#include
+
+typedef struct
+{
+ u64 offset; // ZipFile offset
+ u64 length; // uncompressed file length in 64 bytes for sizes higher than 4GB
+ bool isdir; // 0 - file, 1 - directory
+ char filename[256]; // full filename
+} FileStructure;
+
+class ZipFile
+{
+ public:
+ //!Constructor
+ ZipFile(const char *filepath);
+ //!Destructor
+ ~ZipFile();
+ //!Extract all files from a zip file to a directory
+ //!\param dest Destination path to where to extract
+ bool ExtractAll(const char *dest);
+ protected:
+ bool LoadList();
+ unzFile File;
+ unz_file_info cur_file_info;
+ FileStructure *FileList;
+};
+
+#endif
diff --git a/source/banner/MD5.h b/source/banner/MD5.h
index 1faa9fa0..07902c2b 100644
--- a/source/banner/MD5.h
+++ b/source/banner/MD5.h
@@ -1,241 +1,241 @@
-#ifndef MD5_H
-#define MD5_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- /* ========================================================================== **
- *
- * MD5.h
- *
- * Copyright:
- * Copyright (C) 2003-2005 by Christopher R. Hertel
- *
- * Email: crh@ubiqx.mn.org
- *
- * $Id: MD5.h,v 0.6 2005/06/08 18:35:59 crh Exp $
- *
- * Modifications and additions by dimok
- *
- * -------------------------------------------------------------------------- **
- *
- * Description:
- * Implements the MD5 hash algorithm, as described in RFC 1321.
- *
- * -------------------------------------------------------------------------- **
- *
- * License:
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * -------------------------------------------------------------------------- **
- *
- * Notes:
- *
- * None of this will make any sense unless you're studying RFC 1321 as you
- * read the code.
- *
- * MD5 is described in RFC 1321.
- * The MD*4* algorithm is described in RFC 1320 (that's 1321 - 1).
- * MD5 is very similar to MD4, but not quite similar enough to justify
- * putting the two into a single module. Besides, I wanted to add a few
- * extra functions to this one to expand its usability.
- *
- * There are three primary motivations for this particular implementation.
- * 1) Programmer's pride. I wanted to be able to say I'd done it, and I
- * wanted to learn from the experience.
- * 2) Portability. I wanted an implementation that I knew to be portable
- * to a reasonable number of platforms. In particular, the algorithm is
- * designed with little-endian platforms in mind, but I wanted an
- * endian-agnostic implementation.
- * 3) Compactness. While not an overriding goal, I thought it worth-while
- * to see if I could reduce the overall size of the result. This is in
- * keeping with my hopes that this library will be suitable for use in
- * some embedded environments.
- * Beyond that, cleanliness and clarity are always worth pursuing.
- *
- * As mentioned above, the code really only makes sense if you are familiar
- * with the MD5 algorithm or are using RFC 1321 as a guide. This code is
- * quirky, however, so you'll want to be reading carefully.
- *
- * Yeah...most of the comments are cut-and-paste from my MD4 implementation.
- *
- * -------------------------------------------------------------------------- **
- *
- * References:
- * IETF RFC 1321: The MD5 Message-Digest Algorithm
- * Ron Rivest. IETF, April, 1992
- *
- * ========================================================================== **
- */
- /* -------------------------------------------------------------------------- **
- * Typedefs:
- */
-
- typedef struct
- {
- unsigned int len;
- unsigned int ABCD[4];
- int b_used;
- unsigned char block[64];
- } auth_md5Ctx;
-
- /* -------------------------------------------------------------------------- **
- * Functions:
- */
-
- auth_md5Ctx *auth_md5InitCtx(auth_md5Ctx *ctx);
- /* ------------------------------------------------------------------------ **
- * Initialize an MD5 context.
- *
- * Input: ctx - A pointer to the MD5 context structure to be initialized.
- * Contexts are typically created thusly:
- * ctx = (auth_md5Ctx *)malloc( sizeof(auth_md5Ctx) );
- *
- * Output: A pointer to the initialized context (same as ).
- *
- * Notes: The purpose of the context is to make it possible to generate
- * an MD5 Message Digest in stages, rather than having to pass a
- * single large block to a single MD5 function. The context
- * structure keeps track of various bits of state information.
- *
- * Once the context is initialized, the blocks of message data
- * are passed to the function. Once the
- * final bit of data has been handed to the
- * context can be closed out by calling ,
- * which also calculates the final MD5 result.
- *
- * Don't forget to free an allocated context structure when
- * you've finished using it.
- *
- * See Also: ,
- *
- * ------------------------------------------------------------------------ **
- */
-
- auth_md5Ctx *auth_md5SumCtx(auth_md5Ctx *ctx, const unsigned char *src, const int len);
- /* ------------------------------------------------------------------------ **
- * Build an MD5 Message Digest within the given context.
- *
- * Input: ctx - Pointer to the context in which the MD5 sum is being
- * built.
- * src - A chunk of source data. This will be used to drive
- * the MD5 algorithm.
- * len - The number of bytes in .
- *
- * Output: A pointer to the updated context (same as ).
- *
- * See Also: , ,
- *
- * ------------------------------------------------------------------------ **
- */
-
- auth_md5Ctx *auth_md5CloseCtx(auth_md5Ctx *ctx, unsigned char *dst);
- /* ------------------------------------------------------------------------ **
- * Close an MD5 Message Digest context and generate the final MD5 sum.
- *
- * Input: ctx - Pointer to the context in which the MD5 sum is being
- * built.
- * dst - A pointer to at least 16 bytes of memory, which will
- * receive the finished MD5 sum.
- *
- * Output: A pointer to the closed context (same as ).
- * You might use this to free a malloc'd context structure. :)
- *
- * Notes: The context () is returned in an undefined state.
- * It must be re-initialized before re-use.
- *
- * See Also: ,
- *
- * ------------------------------------------------------------------------ **
- */
-
- unsigned char * MD5(unsigned char * hash, const unsigned char *src, const int len);
- /* ------------------------------------------------------------------------ **
- * Compute an MD5 message digest.
- *
- * Input: dst - Destination buffer into which the result will be written.
- * Must be 16 bytes, minimum.
- * src - Source data block to be MD5'd.
- * len - The length, in bytes, of the source block.
- * (Note that the length is given in bytes, not bits.)
- *
- * Output: A pointer to , which will contain the calculated 16-byte
- * MD5 message digest.
- *
- * Notes: This function is a shortcut. It takes a single input block.
- * For more drawn-out operations, see .
- *
- * This function is interface-compatible with the
- * function in the MD4 module.
- *
- * The MD5 algorithm is designed to work on data with an
- * arbitrary *bit* length. Most implementations, this one
- * included, handle the input data in byte-sized chunks.
- *
- * The MD5 algorithm does much of its work using four-byte
- * words, and so can be tuned for speed based on the endian-ness
- * of the host. This implementation is intended to be
- * endian-neutral, which may make it a teeny bit slower than
- * others. ...maybe.
- *
- * See Also:
- *
- * ------------------------------------------------------------------------ **
- */
-
- unsigned char * MD5fromFile(unsigned char *dst, const char *src);
- /* ------------------------------------------------------------------------ **
- * Compute an MD5 message digest.
- *
- * Input: dst - Destination buffer into which the result will be written.
- * Must be 16 bytes, minimum.
- * src - filepath to the file to be MD5'd.
- *
- * Output: A pointer to , which will contain the calculated 16-byte
- * MD5 message digest.
- *
- * Notes: This function is a shortcut. It takes a single input block.
- * For more drawn-out operations, see .
- *
- * This function is interface-compatible with the
- * function in the MD4 module.
- *
- * The MD5 algorithm is designed to work on data with an
- * arbitrary *bit* length. Most implementations, this one
- * included, handle the input data in byte-sized chunks.
- *
- * The MD5 algorithm does much of its work using four-byte
- * words, and so can be tuned for speed based on the endian-ness
- * of the host. This implementation is intended to be
- * endian-neutral, which may make it a teeny bit slower than
- * others. ...maybe.
- *
- * See Also:
- *
- * ------------------------------------------------------------------------ **
- */
-
- const char * MD5ToString(const unsigned char *hash, char *dst);
- unsigned char * StringToMD5(const char * hash, unsigned char * dst);
-
-/* ========================================================================== */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* AUTH_MD5_H */
+#ifndef MD5_H
+#define MD5_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ /* ========================================================================== **
+ *
+ * MD5.h
+ *
+ * Copyright:
+ * Copyright (C) 2003-2005 by Christopher R. Hertel
+ *
+ * Email: crh@ubiqx.mn.org
+ *
+ * $Id: MD5.h,v 0.6 2005/06/08 18:35:59 crh Exp $
+ *
+ * Modifications and additions by dimok
+ *
+ * -------------------------------------------------------------------------- **
+ *
+ * Description:
+ * Implements the MD5 hash algorithm, as described in RFC 1321.
+ *
+ * -------------------------------------------------------------------------- **
+ *
+ * License:
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * -------------------------------------------------------------------------- **
+ *
+ * Notes:
+ *
+ * None of this will make any sense unless you're studying RFC 1321 as you
+ * read the code.
+ *
+ * MD5 is described in RFC 1321.
+ * The MD*4* algorithm is described in RFC 1320 (that's 1321 - 1).
+ * MD5 is very similar to MD4, but not quite similar enough to justify
+ * putting the two into a single module. Besides, I wanted to add a few
+ * extra functions to this one to expand its usability.
+ *
+ * There are three primary motivations for this particular implementation.
+ * 1) Programmer's pride. I wanted to be able to say I'd done it, and I
+ * wanted to learn from the experience.
+ * 2) Portability. I wanted an implementation that I knew to be portable
+ * to a reasonable number of platforms. In particular, the algorithm is
+ * designed with little-endian platforms in mind, but I wanted an
+ * endian-agnostic implementation.
+ * 3) Compactness. While not an overriding goal, I thought it worth-while
+ * to see if I could reduce the overall size of the result. This is in
+ * keeping with my hopes that this library will be suitable for use in
+ * some embedded environments.
+ * Beyond that, cleanliness and clarity are always worth pursuing.
+ *
+ * As mentioned above, the code really only makes sense if you are familiar
+ * with the MD5 algorithm or are using RFC 1321 as a guide. This code is
+ * quirky, however, so you'll want to be reading carefully.
+ *
+ * Yeah...most of the comments are cut-and-paste from my MD4 implementation.
+ *
+ * -------------------------------------------------------------------------- **
+ *
+ * References:
+ * IETF RFC 1321: The MD5 Message-Digest Algorithm
+ * Ron Rivest. IETF, April, 1992
+ *
+ * ========================================================================== **
+ */
+ /* -------------------------------------------------------------------------- **
+ * Typedefs:
+ */
+
+ typedef struct
+ {
+ unsigned int len;
+ unsigned int ABCD[4];
+ int b_used;
+ unsigned char block[64];
+ } auth_md5Ctx;
+
+ /* -------------------------------------------------------------------------- **
+ * Functions:
+ */
+
+ auth_md5Ctx *auth_md5InitCtx(auth_md5Ctx *ctx);
+ /* ------------------------------------------------------------------------ **
+ * Initialize an MD5 context.
+ *
+ * Input: ctx - A pointer to the MD5 context structure to be initialized.
+ * Contexts are typically created thusly:
+ * ctx = (auth_md5Ctx *)malloc( sizeof(auth_md5Ctx) );
+ *
+ * Output: A pointer to the initialized context (same as ).
+ *
+ * Notes: The purpose of the context is to make it possible to generate
+ * an MD5 Message Digest in stages, rather than having to pass a
+ * single large block to a single MD5 function. The context
+ * structure keeps track of various bits of state information.
+ *
+ * Once the context is initialized, the blocks of message data
+ * are passed to the function. Once the
+ * final bit of data has been handed to the
+ * context can be closed out by calling ,
+ * which also calculates the final MD5 result.
+ *
+ * Don't forget to free an allocated context structure when
+ * you've finished using it.
+ *
+ * See Also: ,
+ *
+ * ------------------------------------------------------------------------ **
+ */
+
+ auth_md5Ctx *auth_md5SumCtx(auth_md5Ctx *ctx, const unsigned char *src, const int len);
+ /* ------------------------------------------------------------------------ **
+ * Build an MD5 Message Digest within the given context.
+ *
+ * Input: ctx - Pointer to the context in which the MD5 sum is being
+ * built.
+ * src - A chunk of source data. This will be used to drive
+ * the MD5 algorithm.
+ * len - The number of bytes in .
+ *
+ * Output: A pointer to the updated context (same as ).
+ *
+ * See Also: , ,
+ *
+ * ------------------------------------------------------------------------ **
+ */
+
+ auth_md5Ctx *auth_md5CloseCtx(auth_md5Ctx *ctx, unsigned char *dst);
+ /* ------------------------------------------------------------------------ **
+ * Close an MD5 Message Digest context and generate the final MD5 sum.
+ *
+ * Input: ctx - Pointer to the context in which the MD5 sum is being
+ * built.
+ * dst - A pointer to at least 16 bytes of memory, which will
+ * receive the finished MD5 sum.
+ *
+ * Output: A pointer to the closed context (same as ).
+ * You might use this to free a malloc'd context structure. :)
+ *
+ * Notes: The context () is returned in an undefined state.
+ * It must be re-initialized before re-use.
+ *
+ * See Also: ,
+ *
+ * ------------------------------------------------------------------------ **
+ */
+
+ unsigned char * MD5(unsigned char * hash, const unsigned char *src, const int len);
+ /* ------------------------------------------------------------------------ **
+ * Compute an MD5 message digest.
+ *
+ * Input: dst - Destination buffer into which the result will be written.
+ * Must be 16 bytes, minimum.
+ * src - Source data block to be MD5'd.
+ * len - The length, in bytes, of the source block.
+ * (Note that the length is given in bytes, not bits.)
+ *
+ * Output: A pointer to , which will contain the calculated 16-byte
+ * MD5 message digest.
+ *
+ * Notes: This function is a shortcut. It takes a single input block.
+ * For more drawn-out operations, see .
+ *
+ * This function is interface-compatible with the
+ * function in the MD4 module.
+ *
+ * The MD5 algorithm is designed to work on data with an
+ * arbitrary *bit* length. Most implementations, this one
+ * included, handle the input data in byte-sized chunks.
+ *
+ * The MD5 algorithm does much of its work using four-byte
+ * words, and so can be tuned for speed based on the endian-ness
+ * of the host. This implementation is intended to be
+ * endian-neutral, which may make it a teeny bit slower than
+ * others. ...maybe.
+ *
+ * See Also:
+ *
+ * ------------------------------------------------------------------------ **
+ */
+
+ unsigned char * MD5fromFile(unsigned char *dst, const char *src);
+ /* ------------------------------------------------------------------------ **
+ * Compute an MD5 message digest.
+ *
+ * Input: dst - Destination buffer into which the result will be written.
+ * Must be 16 bytes, minimum.
+ * src - filepath to the file to be MD5'd.
+ *
+ * Output: A pointer to , which will contain the calculated 16-byte
+ * MD5 message digest.
+ *
+ * Notes: This function is a shortcut. It takes a single input block.
+ * For more drawn-out operations, see .
+ *
+ * This function is interface-compatible with the
+ * function in the MD4 module.
+ *
+ * The MD5 algorithm is designed to work on data with an
+ * arbitrary *bit* length. Most implementations, this one
+ * included, handle the input data in byte-sized chunks.
+ *
+ * The MD5 algorithm does much of its work using four-byte
+ * words, and so can be tuned for speed based on the endian-ness
+ * of the host. This implementation is intended to be
+ * endian-neutral, which may make it a teeny bit slower than
+ * others. ...maybe.
+ *
+ * See Also:
+ *
+ * ------------------------------------------------------------------------ **
+ */
+
+ const char * MD5ToString(const unsigned char *hash, char *dst);
+ unsigned char * StringToMD5(const char * hash, unsigned char * dst);
+
+/* ========================================================================== */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AUTH_MD5_H */
diff --git a/source/bannersound.h b/source/bannersound.h
index 6cf7b526..b6da62d1 100644
--- a/source/bannersound.h
+++ b/source/bannersound.h
@@ -1,6 +1,6 @@
-#ifndef BANNERSOUND_H
-#define BANNERSOUND_H
-
-const u8 *LoadBannerSound(const u8 *discid, u32 *size);
-
-#endif /* BANNERSOUND_H */
+#ifndef BANNERSOUND_H
+#define BANNERSOUND_H
+
+const u8 *LoadBannerSound(const u8 *discid, u32 *size);
+
+#endif /* BANNERSOUND_H */
diff --git a/source/gecko.c b/source/gecko.c
index 21bbf356..06a1e15a 100644
--- a/source/gecko.c
+++ b/source/gecko.c
@@ -21,7 +21,7 @@ void gprintf(const char *format, ...)
if((vasprintf(&tmp, format, va) >= 0) && tmp)
{
u32 level = IRQ_Disable();
- usb_sendbuffer(1, tmp, strlen(tmp));
+ usb_sendbuffer_safe(1, tmp, strlen(tmp));
IRQ_Restore(level);
}
va_end(va);
diff --git a/source/homebrewboot/dolloader.c b/source/homebrewboot/dolloader.c
index 32f0ef29..d957f7e8 100644
--- a/source/homebrewboot/dolloader.c
+++ b/source/homebrewboot/dolloader.c
@@ -8,52 +8,57 @@
#include "dolloader.h"
-typedef struct _dolheader
-{
- u32 text_pos[7];
- u32 data_pos[11];
- u32 text_start[7];
- u32 data_start[11];
- u32 text_size[7];
- u32 data_size[11];
- u32 bss_start;
- u32 bss_size;
- u32 entry_point;
+typedef struct _dolheader {
+ u32 text_pos[7];
+ u32 data_pos[11];
+ u32 text_start[7];
+ u32 data_start[11];
+ u32 text_size[7];
+ u32 data_size[11];
+ u32 bss_start;
+ u32 bss_size;
+ u32 entry_point;
} dolheader;
u32 load_dol(const void *dolstart, struct __argv *argv)
{
- u32 i;
- dolheader *dolfile;
+ u32 i;
+ dolheader *dolfile;
- if (dolstart)
- {
- dolfile = (dolheader *) dolstart;
- for (i = 0; i < 7; i++)
- {
- if ((!dolfile->text_size[i]) || (dolfile->text_start[i] < 0x100)) continue;
- ICInvalidateRange((void *) dolfile->text_start[i], dolfile->text_size[i]);
- memcpy((void *) dolfile->text_start[i], dolstart + dolfile->text_pos[i], dolfile->text_size[i]);
- }
+ if (dolstart)
+ {
+ dolfile = (dolheader *) dolstart;
+ for (i = 0; i < 7; i++)
+ {
+ if ((!dolfile->text_size[i]) || (dolfile->text_start[i] < 0x100))
+ continue;
- for (i = 0; i < 11; i++)
- {
- if ((!dolfile->data_size[i]) || (dolfile->data_start[i] < 0x100)) continue;
- memcpy((void *) dolfile->data_start[i], dolstart + dolfile->data_pos[i], dolfile->data_size[i]);
- DCFlushRangeNoSync((void *) dolfile->data_start[i], dolfile->data_size[i]);
- }
+ memmove((void *) dolfile->text_start[i], dolstart
+ + dolfile->text_pos[i], dolfile->text_size[i]);
- memset((void *) dolfile->bss_start, 0, dolfile->bss_size);
- DCFlushRange((void *) dolfile->bss_start, dolfile->bss_size);
+ DCFlushRange ((void *) dolfile->text_start[i], dolfile->text_size[i]);
+ ICInvalidateRange((void *) dolfile->text_start[i], dolfile->text_size[i]);
+ }
- if (argv && argv->argvMagic == ARGV_MAGIC)
- {
- void *new_argv = (void *) (dolfile->entry_point + 8);
- memcpy(new_argv, argv, sizeof(*argv));
- DCFlushRange(new_argv, sizeof(*argv));
- }
+ for (i = 0; i < 11; i++)
+ {
+ if ((!dolfile->data_size[i]) || (dolfile->data_start[i] < 0x100))
+ continue;
- return dolfile->entry_point;
- }
- return 0;
+ memmove((void *) dolfile->data_start[i], dolstart
+ + dolfile->data_pos[i], dolfile->data_size[i]);
+
+ DCFlushRange((void *) dolfile->data_start[i],
+ dolfile->data_size[i]);
+ }
+
+ if (argv && argv->argvMagic == ARGV_MAGIC)
+ {
+ void *new_argv = (void *) (dolfile->entry_point + 8);
+ memmove(new_argv, argv, sizeof(*argv));
+ DCFlushRange(new_argv, sizeof(*argv));
+ }
+ return dolfile->entry_point;
+ }
+ return 0;
}
diff --git a/source/homebrewboot/dolloader.h b/source/homebrewboot/dolloader.h
index 96d2abc8..af644414 100644
--- a/source/homebrewboot/dolloader.h
+++ b/source/homebrewboot/dolloader.h
@@ -2,14 +2,14 @@
#define _DOLLOADER_H_
#ifdef __cplusplus
-extern "C"
-{
+extern "C" {
#endif
- extern void __exception_closeall();
- typedef void (*entrypoint)(void);
+extern void __exception_closeall();
+typedef void (*entrypoint) (void);
+
+u32 load_dol(const void *dolstart, struct __argv *argv);
- u32 load_dol(const void *dolstart, struct __argv *argv);
#ifdef __cplusplus
}
diff --git a/source/libs/libext2fs/bitops.h b/source/libs/libext2fs/bitops.h
new file mode 100644
index 00000000..bf6ee82a
--- /dev/null
+++ b/source/libs/libext2fs/bitops.h
@@ -0,0 +1,638 @@
+/*
+ * bitops.h --- Bitmap frobbing code. The byte swapping routines are
+ * also included here.
+ *
+ * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o.
+ *
+ * %Begin-Header%
+ * This file may be redistributed under the terms of the GNU Library
+ * General Public License, version 2.
+ * %End-Header%
+ */
+#ifndef _BITOPS_H_
+#define _BITOPS_H_
+
+extern int ext2fs_set_bit(unsigned int nr,void * addr);
+extern int ext2fs_clear_bit(unsigned int nr, void * addr);
+extern int ext2fs_test_bit(unsigned int nr, const void * addr);
+extern void ext2fs_fast_set_bit(unsigned int nr,void * addr);
+extern void ext2fs_fast_clear_bit(unsigned int nr, void * addr);
+extern int ext2fs_set_bit64(__u64 nr,void * addr);
+extern int ext2fs_clear_bit64(__u64 nr, void * addr);
+extern int ext2fs_test_bit64(__u64 nr, const void * addr);
+extern void ext2fs_fast_set_bit64(__u64 nr,void * addr);
+extern void ext2fs_fast_clear_bit64(__u64 nr, void * addr);
+extern __u16 ext2fs_swab16(__u16 val);
+extern __u32 ext2fs_swab32(__u32 val);
+extern __u64 ext2fs_swab64(__u64 val);
+
+#ifdef WORDS_BIGENDIAN
+#define ext2fs_cpu_to_le64(x) ext2fs_swab64((x))
+#define ext2fs_le64_to_cpu(x) ext2fs_swab64((x))
+#define ext2fs_cpu_to_le32(x) ext2fs_swab32((x))
+#define ext2fs_le32_to_cpu(x) ext2fs_swab32((x))
+#define ext2fs_cpu_to_le16(x) ext2fs_swab16((x))
+#define ext2fs_le16_to_cpu(x) ext2fs_swab16((x))
+#define ext2fs_cpu_to_be32(x) ((__u32)(x))
+#define ext2fs_be32_to_cpu(x) ((__u32)(x))
+#define ext2fs_cpu_to_be16(x) ((__u16)(x))
+#define ext2fs_be16_to_cpu(x) ((__u16)(x))
+#else
+#define ext2fs_cpu_to_le64(x) ((__u64)(x))
+#define ext2fs_le64_to_cpu(x) ((__u64)(x))
+#define ext2fs_cpu_to_le32(x) ((__u32)(x))
+#define ext2fs_le32_to_cpu(x) ((__u32)(x))
+#define ext2fs_cpu_to_le16(x) ((__u16)(x))
+#define ext2fs_le16_to_cpu(x) ((__u16)(x))
+#define ext2fs_cpu_to_be32(x) ext2fs_swab32((x))
+#define ext2fs_be32_to_cpu(x) ext2fs_swab32((x))
+#define ext2fs_cpu_to_be16(x) ext2fs_swab16((x))
+#define ext2fs_be16_to_cpu(x) ext2fs_swab16((x))
+#endif
+
+/*
+ * EXT2FS bitmap manipulation routines.
+ */
+
+/* Support for sending warning messages from the inline subroutines */
+extern const char *ext2fs_block_string;
+extern const char *ext2fs_inode_string;
+extern const char *ext2fs_mark_string;
+extern const char *ext2fs_unmark_string;
+extern const char *ext2fs_test_string;
+extern void ext2fs_warn_bitmap(errcode_t errcode, unsigned long arg,
+ const char *description);
+extern void ext2fs_warn_bitmap2(ext2fs_generic_bitmap bitmap,
+ int code, unsigned long arg);
+
+extern int ext2fs_mark_block_bitmap(ext2fs_block_bitmap bitmap, blk_t block);
+extern int ext2fs_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
+ blk_t block);
+extern int ext2fs_test_block_bitmap(ext2fs_block_bitmap bitmap, blk_t block);
+
+extern int ext2fs_mark_inode_bitmap(ext2fs_inode_bitmap bitmap, ext2_ino_t inode);
+extern int ext2fs_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode);
+extern int ext2fs_test_inode_bitmap(ext2fs_inode_bitmap bitmap, ext2_ino_t inode);
+
+extern void ext2fs_fast_mark_block_bitmap(ext2fs_block_bitmap bitmap,
+ blk_t block);
+extern void ext2fs_fast_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
+ blk_t block);
+extern int ext2fs_fast_test_block_bitmap(ext2fs_block_bitmap bitmap,
+ blk_t block);
+
+extern void ext2fs_fast_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode);
+extern void ext2fs_fast_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode);
+extern int ext2fs_fast_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode);
+extern blk_t ext2fs_get_block_bitmap_start(ext2fs_block_bitmap bitmap);
+extern ext2_ino_t ext2fs_get_inode_bitmap_start(ext2fs_inode_bitmap bitmap);
+extern blk_t ext2fs_get_block_bitmap_end(ext2fs_block_bitmap bitmap);
+extern ext2_ino_t ext2fs_get_inode_bitmap_end(ext2fs_inode_bitmap bitmap);
+
+extern void ext2fs_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
+ blk_t block, int num);
+extern void ext2fs_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
+ blk_t block, int num);
+extern int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
+ blk_t block, int num);
+extern int ext2fs_test_inode_bitmap_range(ext2fs_inode_bitmap bitmap,
+ ino_t inode, int num);
+extern void ext2fs_fast_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
+ blk_t block, int num);
+extern void ext2fs_fast_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
+ blk_t block, int num);
+extern int ext2fs_fast_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
+ blk_t block, int num);
+extern void ext2fs_set_bitmap_padding(ext2fs_generic_bitmap map);
+
+/* These routines moved to gen_bitmap.c (actually, some of the above, too) */
+extern int ext2fs_mark_generic_bitmap(ext2fs_generic_bitmap bitmap,
+ __u32 bitno);
+extern int ext2fs_unmark_generic_bitmap(ext2fs_generic_bitmap bitmap,
+ blk_t bitno);
+extern int ext2fs_test_generic_bitmap(ext2fs_generic_bitmap bitmap,
+ blk_t bitno);
+extern int ext2fs_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
+ blk_t block, int num);
+extern __u32 ext2fs_get_generic_bitmap_start(ext2fs_generic_bitmap bitmap);
+extern __u32 ext2fs_get_generic_bitmap_end(ext2fs_generic_bitmap bitmap);
+
+/* 64-bit versions */
+
+extern int ext2fs_mark_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block);
+extern int ext2fs_unmark_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block);
+extern int ext2fs_test_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block);
+
+extern int ext2fs_mark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode);
+extern int ext2fs_unmark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode);
+extern int ext2fs_test_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode);
+
+extern void ext2fs_fast_mark_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block);
+extern void ext2fs_fast_unmark_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block);
+extern int ext2fs_fast_test_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block);
+
+extern void ext2fs_fast_mark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode);
+extern void ext2fs_fast_unmark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode);
+extern int ext2fs_fast_test_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode);
+extern blk64_t ext2fs_get_block_bitmap_start2(ext2fs_block_bitmap bitmap);
+extern ext2_ino_t ext2fs_get_inode_bitmap_start2(ext2fs_inode_bitmap bitmap);
+extern blk64_t ext2fs_get_block_bitmap_end2(ext2fs_block_bitmap bitmap);
+extern ext2_ino_t ext2fs_get_inode_bitmap_end2(ext2fs_inode_bitmap bitmap);
+
+extern int ext2fs_fast_test_block_bitmap_range2(ext2fs_block_bitmap bitmap,
+ blk64_t block,
+ unsigned int num);
+extern void ext2fs_fast_mark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
+ blk64_t block,
+ unsigned int num);
+extern void ext2fs_fast_unmark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
+ blk64_t block,
+ unsigned int num);
+/* These routines moved to gen_bitmap64.c */
+extern void ext2fs_clear_generic_bmap(ext2fs_generic_bitmap bitmap);
+extern errcode_t ext2fs_compare_generic_bmap(errcode_t neq,
+ ext2fs_generic_bitmap bm1,
+ ext2fs_generic_bitmap bm2);
+extern void ext2fs_set_generic_bmap_padding(ext2fs_generic_bitmap bmap);
+extern int ext2fs_mark_generic_bmap(ext2fs_generic_bitmap bitmap,
+ blk64_t bitno);
+extern int ext2fs_unmark_generic_bmap(ext2fs_generic_bitmap bitmap,
+ blk64_t bitno);
+extern int ext2fs_test_generic_bmap(ext2fs_generic_bitmap bitmap,
+ blk64_t bitno);
+extern int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap bitmap,
+ blk64_t block, unsigned int num);
+extern __u64 ext2fs_get_generic_bmap_start(ext2fs_generic_bitmap bitmap);
+extern __u64 ext2fs_get_generic_bmap_end(ext2fs_generic_bitmap bitmap);
+extern int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap bitmap,
+ blk64_t block, unsigned int num);
+extern void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
+ blk64_t block, unsigned int num);
+extern void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
+ blk64_t block, unsigned int num);
+
+/*
+ * The inline routines themselves...
+ *
+ * If NO_INLINE_FUNCS is defined, then we won't try to do inline
+ * functions at all; they will be included as normal functions in
+ * inline.c
+ */
+#ifdef NO_INLINE_FUNCS
+#if (defined(__GNUC__) && (defined(__i386__) || defined(__i486__) || \
+ defined(__i586__) || defined(__mc68000__)))
+ /* This prevents bitops.c from trying to include the C */
+ /* function version of these functions */
+#define _EXT2_HAVE_ASM_BITOPS_
+#endif
+#endif /* NO_INLINE_FUNCS */
+
+#if (defined(INCLUDE_INLINE_FUNCS) || !defined(NO_INLINE_FUNCS))
+#ifdef INCLUDE_INLINE_FUNCS
+#define _INLINE_ extern
+#else
+#ifdef __GNUC__
+#define _INLINE_ extern __inline__
+#else /* For Watcom C */
+#define _INLINE_ extern inline
+#endif
+#endif
+
+/*
+ * Fast bit set/clear functions that doesn't need to return the
+ * previous bit value.
+ */
+
+_INLINE_ void ext2fs_fast_set_bit(unsigned int nr,void * addr)
+{
+ unsigned char *ADDR = (unsigned char *) addr;
+
+ ADDR += nr >> 3;
+ *ADDR |= (1 << (nr & 0x07));
+}
+
+_INLINE_ void ext2fs_fast_clear_bit(unsigned int nr, void * addr)
+{
+ unsigned char *ADDR = (unsigned char *) addr;
+
+ ADDR += nr >> 3;
+ *ADDR &= ~(1 << (nr & 0x07));
+}
+
+
+_INLINE_ void ext2fs_fast_set_bit64(__u64 nr, void * addr)
+{
+ unsigned char *ADDR = (unsigned char *) addr;
+
+ ADDR += nr >> 3;
+ *ADDR |= (1 << (nr & 0x07));
+}
+
+_INLINE_ void ext2fs_fast_clear_bit64(__u64 nr, void * addr)
+{
+ unsigned char *ADDR = (unsigned char *) addr;
+
+ ADDR += nr >> 3;
+ *ADDR &= ~(1 << (nr & 0x07));
+}
+
+
+#if ((defined __GNUC__) && !defined(_EXT2_USE_C_VERSIONS_) && \
+ (defined(__i386__) || defined(__i486__) || defined(__i586__)))
+
+#define _EXT2_HAVE_ASM_BITOPS_
+#define _EXT2_HAVE_ASM_SWAB_
+
+/*
+ * These are done by inline assembly for speed reasons.....
+ *
+ * All bitoperations return 0 if the bit was cleared before the
+ * operation and != 0 if it was not. Bit 0 is the LSB of addr; bit 32
+ * is the LSB of (addr+1).
+ */
+
+/*
+ * Some hacks to defeat gcc over-optimizations..
+ */
+struct __dummy_h { unsigned long a[100]; };
+#define EXT2FS_ADDR (*(struct __dummy_h *) addr)
+#define EXT2FS_CONST_ADDR (*(const struct __dummy_h *) addr)
+
+_INLINE_ int ext2fs_set_bit(unsigned int nr, void * addr)
+{
+ int oldbit;
+
+ addr = (void *) (((unsigned char *) addr) + (nr >> 3));
+ __asm__ __volatile__("btsl %2,%1\n\tsbbl %0,%0"
+ :"=r" (oldbit),"+m" (EXT2FS_ADDR)
+ :"r" (nr & 7));
+ return oldbit;
+}
+
+_INLINE_ int ext2fs_clear_bit(unsigned int nr, void * addr)
+{
+ int oldbit;
+
+ addr = (void *) (((unsigned char *) addr) + (nr >> 3));
+ __asm__ __volatile__("btrl %2,%1\n\tsbbl %0,%0"
+ :"=r" (oldbit),"+m" (EXT2FS_ADDR)
+ :"r" (nr & 7));
+ return oldbit;
+}
+
+_INLINE_ int ext2fs_test_bit(unsigned int nr, const void * addr)
+{
+ int oldbit;
+
+ addr = (const void *) (((const unsigned char *) addr) + (nr >> 3));
+ __asm__ __volatile__("btl %2,%1\n\tsbbl %0,%0"
+ :"=r" (oldbit)
+ :"m" (EXT2FS_CONST_ADDR),"r" (nr & 7));
+ return oldbit;
+}
+
+_INLINE_ __u32 ext2fs_swab32(__u32 val)
+{
+#ifdef EXT2FS_REQUIRE_486
+ __asm__("bswap %0" : "=r" (val) : "0" (val));
+#else
+ __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */
+ "rorl $16,%0\n\t" /* swap words */
+ "xchgb %b0,%h0" /* swap higher bytes */
+ :"=q" (val)
+ : "0" (val));
+#endif
+ return val;
+}
+
+_INLINE_ __u16 ext2fs_swab16(__u16 val)
+{
+ __asm__("xchgb %b0,%h0" /* swap bytes */ \
+ : "=q" (val) \
+ : "0" (val)); \
+ return val;
+}
+
+#undef EXT2FS_ADDR
+
+#endif /* i386 */
+
+#if ((defined __GNUC__) && !defined(_EXT2_USE_C_VERSIONS_) && \
+ (defined(__mc68000__)))
+
+#define _EXT2_HAVE_ASM_BITOPS_
+
+_INLINE_ int ext2fs_set_bit(unsigned int nr,void * addr)
+{
+ char retval;
+
+ __asm__ __volatile__ ("bfset %2@{%1:#1}; sne %0"
+ : "=d" (retval) : "d" (nr^7), "a" (addr));
+
+ return retval;
+}
+
+_INLINE_ int ext2fs_clear_bit(unsigned int nr, void * addr)
+{
+ char retval;
+
+ __asm__ __volatile__ ("bfclr %2@{%1:#1}; sne %0"
+ : "=d" (retval) : "d" (nr^7), "a" (addr));
+
+ return retval;
+}
+
+_INLINE_ int ext2fs_test_bit(unsigned int nr, const void * addr)
+{
+ char retval;
+
+ __asm__ __volatile__ ("bftst %2@{%1:#1}; sne %0"
+ : "=d" (retval) : "d" (nr^7), "a" (addr));
+
+ return retval;
+}
+
+#endif /* __mc68000__ */
+
+
+#if !defined(_EXT2_HAVE_ASM_SWAB_)
+
+_INLINE_ __u16 ext2fs_swab16(__u16 val)
+{
+ return (val >> 8) | (val << 8);
+}
+
+_INLINE_ __u32 ext2fs_swab32(__u32 val)
+{
+ return ((val>>24) | ((val>>8)&0xFF00) |
+ ((val<<8)&0xFF0000) | (val<<24));
+}
+
+#endif /* !_EXT2_HAVE_ASM_SWAB */
+
+_INLINE_ __u64 ext2fs_swab64(__u64 val)
+{
+ return (ext2fs_swab32(val >> 32) |
+ (((__u64)ext2fs_swab32(val & 0xFFFFFFFFUL)) << 32));
+}
+
+_INLINE_ int ext2fs_mark_block_bitmap(ext2fs_block_bitmap bitmap,
+ blk_t block)
+{
+ return ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
+ block);
+}
+
+_INLINE_ int ext2fs_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
+ blk_t block)
+{
+ return ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
+ block);
+}
+
+_INLINE_ int ext2fs_test_block_bitmap(ext2fs_block_bitmap bitmap,
+ blk_t block)
+{
+ return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
+ block);
+}
+
+_INLINE_ int ext2fs_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ return ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
+ inode);
+}
+
+_INLINE_ int ext2fs_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ return ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap,
+ inode);
+}
+
+_INLINE_ int ext2fs_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
+ inode);
+}
+
+_INLINE_ void ext2fs_fast_mark_block_bitmap(ext2fs_block_bitmap bitmap,
+ blk_t block)
+{
+ ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap, block);
+}
+
+_INLINE_ void ext2fs_fast_unmark_block_bitmap(ext2fs_block_bitmap bitmap,
+ blk_t block)
+{
+ ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap, block);
+}
+
+_INLINE_ int ext2fs_fast_test_block_bitmap(ext2fs_block_bitmap bitmap,
+ blk_t block)
+{
+ return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
+ block);
+}
+
+_INLINE_ void ext2fs_fast_mark_inode_bitmap(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ ext2fs_mark_generic_bitmap((ext2fs_generic_bitmap) bitmap, inode);
+}
+
+_INLINE_ void ext2fs_fast_unmark_inode_bitmap(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ ext2fs_unmark_generic_bitmap((ext2fs_generic_bitmap) bitmap, inode);
+}
+
+_INLINE_ int ext2fs_fast_test_inode_bitmap(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ return ext2fs_test_generic_bitmap((ext2fs_generic_bitmap) bitmap,
+ inode);
+}
+
+_INLINE_ blk_t ext2fs_get_block_bitmap_start(ext2fs_block_bitmap bitmap)
+{
+ return ext2fs_get_generic_bitmap_start((ext2fs_generic_bitmap) bitmap);
+}
+
+_INLINE_ ext2_ino_t ext2fs_get_inode_bitmap_start(ext2fs_inode_bitmap bitmap)
+{
+ return ext2fs_get_generic_bitmap_start((ext2fs_generic_bitmap) bitmap);
+}
+
+_INLINE_ blk_t ext2fs_get_block_bitmap_end(ext2fs_block_bitmap bitmap)
+{
+ return ext2fs_get_generic_bitmap_end((ext2fs_generic_bitmap) bitmap);
+}
+
+_INLINE_ ext2_ino_t ext2fs_get_inode_bitmap_end(ext2fs_inode_bitmap bitmap)
+{
+ return ext2fs_get_generic_bitmap_end((ext2fs_generic_bitmap) bitmap);
+}
+
+_INLINE_ int ext2fs_fast_test_block_bitmap_range(ext2fs_block_bitmap bitmap,
+ blk_t block, int num)
+{
+ return ext2fs_test_block_bitmap_range(bitmap, block, num);
+}
+
+_INLINE_ void ext2fs_fast_mark_block_bitmap_range(ext2fs_block_bitmap bitmap,
+ blk_t block, int num)
+{
+ ext2fs_mark_block_bitmap_range(bitmap, block, num);
+}
+
+_INLINE_ void ext2fs_fast_unmark_block_bitmap_range(ext2fs_block_bitmap bitmap,
+ blk_t block, int num)
+{
+ ext2fs_unmark_block_bitmap_range(bitmap, block, num);
+}
+
+/* 64-bit versions */
+
+_INLINE_ int ext2fs_mark_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block)
+{
+ return ext2fs_mark_generic_bmap((ext2fs_generic_bitmap) bitmap,
+ block);
+}
+
+_INLINE_ int ext2fs_unmark_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block)
+{
+ return ext2fs_unmark_generic_bmap((ext2fs_generic_bitmap) bitmap, block);
+}
+
+_INLINE_ int ext2fs_test_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block)
+{
+ return ext2fs_test_generic_bmap((ext2fs_generic_bitmap) bitmap,
+ block);
+}
+
+_INLINE_ int ext2fs_mark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ return ext2fs_mark_generic_bmap((ext2fs_generic_bitmap) bitmap,
+ inode);
+}
+
+_INLINE_ int ext2fs_unmark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ return ext2fs_unmark_generic_bmap((ext2fs_generic_bitmap) bitmap,
+ inode);
+}
+
+_INLINE_ int ext2fs_test_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ return ext2fs_test_generic_bmap((ext2fs_generic_bitmap) bitmap,
+ inode);
+}
+
+_INLINE_ void ext2fs_fast_mark_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block)
+{
+ ext2fs_mark_generic_bmap((ext2fs_generic_bitmap) bitmap, block);
+}
+
+_INLINE_ void ext2fs_fast_unmark_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block)
+{
+ ext2fs_unmark_generic_bmap((ext2fs_generic_bitmap) bitmap, block);
+}
+
+_INLINE_ int ext2fs_fast_test_block_bitmap2(ext2fs_block_bitmap bitmap,
+ blk64_t block)
+{
+ return ext2fs_test_generic_bmap((ext2fs_generic_bitmap) bitmap,
+ block);
+}
+
+_INLINE_ void ext2fs_fast_mark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ ext2fs_mark_generic_bmap((ext2fs_generic_bitmap) bitmap, inode);
+}
+
+_INLINE_ void ext2fs_fast_unmark_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ ext2fs_unmark_generic_bmap((ext2fs_generic_bitmap) bitmap, inode);
+}
+
+_INLINE_ int ext2fs_fast_test_inode_bitmap2(ext2fs_inode_bitmap bitmap,
+ ext2_ino_t inode)
+{
+ return ext2fs_test_generic_bmap((ext2fs_generic_bitmap) bitmap,
+ inode);
+}
+
+_INLINE_ blk64_t ext2fs_get_block_bitmap_start2(ext2fs_block_bitmap bitmap)
+{
+ return ext2fs_get_generic_bmap_start((ext2fs_generic_bitmap) bitmap);
+}
+
+_INLINE_ ext2_ino_t ext2fs_get_inode_bitmap_start2(ext2fs_inode_bitmap bitmap)
+{
+ return ext2fs_get_generic_bmap_start((ext2fs_generic_bitmap) bitmap);
+}
+
+_INLINE_ blk64_t ext2fs_get_block_bitmap_end2(ext2fs_block_bitmap bitmap)
+{
+ return ext2fs_get_generic_bmap_end((ext2fs_generic_bitmap) bitmap);
+}
+
+_INLINE_ ext2_ino_t ext2fs_get_inode_bitmap_end2(ext2fs_inode_bitmap bitmap)
+{
+ return ext2fs_get_generic_bmap_end((ext2fs_generic_bitmap) bitmap);
+}
+
+_INLINE_ int ext2fs_fast_test_block_bitmap_range2(ext2fs_block_bitmap bitmap,
+ blk64_t block,
+ unsigned int num)
+{
+ return ext2fs_test_block_bitmap_range2(bitmap, block, num);
+}
+
+_INLINE_ void ext2fs_fast_mark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
+ blk64_t block,
+ unsigned int num)
+{
+ ext2fs_mark_block_bitmap_range2(bitmap, block, num);
+}
+
+_INLINE_ void ext2fs_fast_unmark_block_bitmap_range2(ext2fs_block_bitmap bitmap,
+ blk64_t block,
+ unsigned int num)
+{
+ ext2fs_unmark_block_bitmap_range2(bitmap, block, num);
+}
+
+#undef _INLINE_
+#endif
+
+#endif
diff --git a/source/libs/libext2fs/com_err.h b/source/libs/libext2fs/com_err.h
new file mode 100644
index 00000000..0c31a4ec
--- /dev/null
+++ b/source/libs/libext2fs/com_err.h
@@ -0,0 +1,70 @@
+/*
+ * Header file for common error description library.
+ *
+ * Copyright 1988, Student Information Processing Board of the
+ * Massachusetts Institute of Technology.
+ *
+ * For copyright and distribution info, see the documentation supplied
+ * with this package.
+ */
+
+#if !defined(__COM_ERR_H) && !defined(__COM_ERR_H__)
+
+#ifdef __GNUC__
+#define COM_ERR_ATTR(x) __attribute__(x)
+#else
+#define COM_ERR_ATTR(x)
+#endif
+
+#ifndef DEBUG_GEKKO
+#define OMIT_COM_ERR
+#endif
+
+#include
+#include
+
+typedef long errcode_t;
+
+struct error_table {
+ char const * const * msgs;
+ long base;
+ int n_msgs;
+};
+struct et_list;
+
+extern void com_err (const char *, long, const char *, ...)
+ COM_ERR_ATTR((format(printf, 3, 4)));
+
+extern void com_err_va (const char *whoami, errcode_t code, const char *fmt,
+ va_list args)
+ COM_ERR_ATTR((format(printf, 3, 0)));
+
+extern char const *error_message (long);
+extern void (*com_err_hook) (const char *, long, const char *, va_list);
+extern void (*set_com_err_hook (void (*) (const char *, long,
+ const char *, va_list)))
+ (const char *, long, const char *, va_list);
+extern void (*reset_com_err_hook (void)) (const char *, long,
+ const char *, va_list);
+extern int init_error_table(const char * const *msgs, long base, int count);
+
+extern errcode_t add_error_table(const struct error_table * et);
+extern errcode_t remove_error_table(const struct error_table * et);
+extern void add_to_error_table(struct et_list *new_table);
+
+/* Provided for Heimdall compatibility */
+extern const char *com_right(struct et_list *list, long code);
+extern const char *com_right_r(struct et_list *list, long code, char *str, size_t len);
+extern void initialize_error_table_r(struct et_list **list,
+ const char **messages,
+ int num_errors,
+ long base);
+extern void free_error_table(struct et_list *et);
+
+/* Provided for compatibility with other com_err libraries */
+extern int et_list_lock(void);
+extern int et_list_unlock(void);
+
+#define __COM_ERR_H
+#define __COM_ERR_H__
+#endif /* !defined(__COM_ERR_H) && !defined(__COM_ERR_H__)*/
diff --git a/source/libs/libext2fs/ext2_err.h b/source/libs/libext2fs/ext2_err.h
new file mode 100644
index 00000000..4f127443
--- /dev/null
+++ b/source/libs/libext2fs/ext2_err.h
@@ -0,0 +1,152 @@
+//
+// Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o.
+//
+// This file may be redistributed under the terms of the GNU Public
+// License.
+#ifndef EXT2_ERR_H_
+#define EXT2_ERR_H_
+
+#define EXT2_ET_OK 0
+#define EXT2_ET_BASE -1
+#define EXT2_ET_MAGIC_EXT2FS_FILSYS -2
+#define EXT2_ET_MAGIC_BADBLOCKS_LIST -3
+#define EXT2_ET_MAGIC_BADBLOCKS_ITERATE -4
+#define EXT2_ET_MAGIC_INODE_SCAN -5
+#define EXT2_ET_MAGIC_IO_CHANNEL -6
+#define EXT2_ET_MAGIC_UNIX_IO_CHANNEL -7
+#define EXT2_ET_MAGIC_IO_MANAGER -8
+#define EXT2_ET_MAGIC_BLOCK_BITMAP -9
+#define EXT2_ET_MAGIC_INODE_BITMAP -10
+#define EXT2_ET_MAGIC_GENERIC_BITMAP -11
+#define EXT2_ET_MAGIC_TEST_IO_CHANNEL -12
+#define EXT2_ET_MAGIC_DBLIST -13
+#define EXT2_ET_MAGIC_ICOUNT -14
+#define EXT2_ET_MAGIC_PQ_IO_CHANNEL -15
+#define EXT2_ET_MAGIC_EXT2_FILE -16
+#define EXT2_ET_MAGIC_E2IMAGE -17
+#define EXT2_ET_MAGIC_INODE_IO_CHANNEL -18
+#define EXT2_ET_MAGIC_EXTENT_HANDLE -19
+#define EXT2_ET_BAD_MAGIC -20
+#define EXT2_ET_REV_TOO_HIGH -21
+#define EXT2_ET_RO_FILSYS -22
+#define EXT2_ET_GDESC_READ -23
+#define EXT2_ET_GDESC_WRITE -24
+#define EXT2_ET_GDESC_BAD_BLOCK_MAP -25
+#define EXT2_ET_GDESC_BAD_INODE_MAP -26
+#define EXT2_ET_GDESC_BAD_INODE_TABLE -27
+#define EXT2_ET_INODE_BITMAP_WRITE -28
+#define EXT2_ET_INODE_BITMAP_READ -29
+#define EXT2_ET_BLOCK_BITMAP_WRITE -30
+#define EXT2_ET_BLOCK_BITMAP_READ -31
+#define EXT2_ET_INODE_TABLE_WRITE -32
+#define EXT2_ET_INODE_TABLE_READ -33
+#define EXT2_ET_NEXT_INODE_READ -34
+#define EXT2_ET_UNEXPECTED_BLOCK_SIZE -35
+#define EXT2_ET_DIR_CORRUPTED -36
+#define EXT2_ET_SHORT_READ -37
+#define EXT2_ET_SHORT_WRITE -38
+#define EXT2_ET_DIR_NO_SPACE -39
+#define EXT2_ET_NO_INODE_BITMAP -40
+#define EXT2_ET_NO_BLOCK_BITMAP -41
+#define EXT2_ET_BAD_INODE_NUM -42
+#define EXT2_ET_BAD_BLOCK_NUM -45
+#define EXT2_ET_EXPAND_DIR_ERR -46
+#define EXT2_ET_TOOSMALL -47
+#define EXT2_ET_BAD_BLOCK_MARK -48
+#define EXT2_ET_BAD_BLOCK_UNMARK -49
+#define EXT2_ET_BAD_BLOCK_TEST -50
+#define EXT2_ET_BAD_INODE_MARK -51
+#define EXT2_ET_BAD_INODE_UNMARK -52
+#define EXT2_ET_BAD_INODE_TEST -53
+#define EXT2_ET_FUDGE_BLOCK_BITMAP_END -54
+#define EXT2_ET_FUDGE_INODE_BITMAP_END -55
+#define EXT2_ET_BAD_IND_BLOCK -56
+#define EXT2_ET_BAD_DIND_BLOCK -57
+#define EXT2_ET_BAD_TIND_BLOCK -58
+#define EXT2_ET_NEQ_BLOCK_BITMAP -59
+#define EXT2_ET_NEQ_INODE_BITMAP -60
+#define EXT2_ET_BAD_DEVICE_NAME -61
+#define EXT2_ET_MISSING_INODE_TABLE -62
+#define EXT2_ET_CORRUPT_SUPERBLOCK -63
+#define EXT2_ET_BAD_GENERIC_MARK -64
+#define EXT2_ET_BAD_GENERIC_UNMARK -65
+#define EXT2_ET_BAD_GENERIC_TEST -66
+#define EXT2_ET_SYMLINK_LOOP -67
+#define EXT2_ET_CALLBACK_NOTHANDLED -68
+#define EXT2_ET_BAD_BLOCK_IN_INODE_TABLE -69
+#define EXT2_ET_UNSUPP_FEATURE -70
+#define EXT2_ET_RO_UNSUPP_FEATURE -71
+#define EXT2_ET_LLSEEK_FAILED -72
+#define EXT2_ET_NO_MEMORY -73
+#define EXT2_ET_INVALID_ARGUMENT -74
+#define EXT2_ET_BLOCK_ALLOC_FAIL -75
+#define EXT2_ET_INODE_ALLOC_FAIL -76
+#define EXT2_ET_NO_DIRECTORY -77
+#define EXT2_ET_TOO_MANY_REFS -78
+#define EXT2_ET_FILE_NOT_FOUND -79
+#define EXT2_ET_FILE_RO -80
+#define EXT2_ET_DB_NOT_FOUND -81
+#define EXT2_ET_DIR_EXISTS -82
+#define EXT2_ET_UNIMPLEMENTED -83
+#define EXT2_ET_CANCEL_REQUESTED -84
+#define EXT2_ET_FILE_TOO_BIG -85
+#define EXT2_ET_JOURNAL_NOT_BLOCK -86
+#define EXT2_ET_NO_JOURNAL_SB -87
+#define EXT2_ET_JOURNAL_TOO_SMALL -88
+#define EXT2_ET_JOURNAL_UNSUPP_VERSION -89
+#define EXT2_ET_LOAD_EXT_JOURNAL -90
+#define EXT2_ET_NO_JOURNAL -91
+#define EXT2_ET_DIRHASH_UNSUPP -92
+#define EXT2_ET_BAD_EA_BLOCK_NUM -93
+#define EXT2_ET_TOO_MANY_INODES -94
+#define EXT2_ET_NOT_IMAGE_FILE -95
+#define EXT2_ET_RES_GDT_BLOCKS -96
+#define EXT2_ET_RESIZE_INODE_CORRUPT -97
+#define EXT2_ET_SET_BMAP_NO_IND -98
+#define EXT2_ET_TDB_SUCCESS -99
+#define EXT2_ET_TDB_ERR_CORRUPT -100
+#define EXT2_ET_TDB_ERR_IO -101
+#define EXT2_ET_TDB_ERR_LOCK -102
+#define EXT2_ET_TDB_ERR_OOM -103
+#define EXT2_ET_TDB_ERR_EXISTS -104
+#define EXT2_ET_TDB_ERR_NOLOCK -105
+#define EXT2_ET_TDB_ERR_EINVAL -106
+#define EXT2_ET_TDB_ERR_NOEXIST -107
+#define EXT2_ET_TDB_ERR_RDONLY -108
+#define EXT2_ET_DBLIST_EMPTY -109
+#define EXT2_ET_RO_BLOCK_ITERATE -110
+#define EXT2_ET_MAGIC_EXTENT_PATH -111
+#define EXT2_ET_MAGIC_RESERVED_10 -112
+#define EXT2_ET_MAGIC_RESERVED_11 -113
+#define EXT2_ET_MAGIC_RESERVED_12 -114
+#define EXT2_ET_MAGIC_RESERVED_13 -115
+#define EXT2_ET_MAGIC_RESERVED_14 -116
+#define EXT2_ET_MAGIC_RESERVED_15 -117
+#define EXT2_ET_MAGIC_RESERVED_16 -118
+#define EXT2_ET_MAGIC_RESERVED_17 -119
+#define EXT2_ET_MAGIC_RESERVED_18 -120
+#define EXT2_ET_MAGIC_RESERVED_19 -121
+#define EXT2_ET_EXTENT_HEADER_BAD -122
+#define EXT2_ET_EXTENT_INDEX_BAD -123
+#define EXT2_ET_EXTENT_LEAF_BAD -124
+#define EXT2_ET_EXTENT_NO_SPACE -125
+#define EXT2_ET_INODE_NOT_EXTENT -126
+#define EXT2_ET_EXTENT_NO_NEXT -127
+#define EXT2_ET_EXTENT_NO_PREV -128
+#define EXT2_ET_EXTENT_NO_UP -129
+#define EXT2_ET_EXTENT_NO_DOWN -130
+#define EXT2_ET_NO_CURRENT_NODE -131
+#define EXT2_ET_OP_NOT_SUPPORTED -132
+#define EXT2_ET_CANT_INSERT_EXTENT -133
+#define EXT2_ET_CANT_SPLIT_EXTENT -134
+#define EXT2_ET_EXTENT_NOT_FOUND -135
+#define EXT2_ET_EXTENT_NOT_SUPPORTED -136
+#define EXT2_ET_EXTENT_INVALID_LENGTH -137
+#define EXT2_ET_IO_CHANNEL_NO_SUPPORT_64 -138
+#define EXT2_NO_MTAB_FILE -139
+#define EXT2_ET_MAGIC_GENERIC_BITMAP64 -140
+#define EXT2_ET_MAGIC_BLOCK_BITMAP64 -141
+#define EXT2_ET_MAGIC_INODE_BITMAP64 -142
+#define EXT2_ET_CANT_USE_LEGACY_BITMAPS -143
+
+#endif
diff --git a/source/libs/libext2fs/ext2_ext_attr.h b/source/libs/libext2fs/ext2_ext_attr.h
new file mode 100644
index 00000000..ed548d12
--- /dev/null
+++ b/source/libs/libext2fs/ext2_ext_attr.h
@@ -0,0 +1,71 @@
+/*
+ File: linux/ext2_ext_attr.h
+
+ On-disk format of extended attributes for the ext2 filesystem.
+
+ (C) 2000 Andreas Gruenbacher,
+*/
+
+#ifndef _EXT2_EXT_ATTR_H
+#define _EXT2_EXT_ATTR_H
+/* Magic value in attribute blocks */
+#define EXT2_EXT_ATTR_MAGIC_v1 0xEA010000
+#define EXT2_EXT_ATTR_MAGIC 0xEA020000
+
+/* Maximum number of references to one attribute block */
+#define EXT2_EXT_ATTR_REFCOUNT_MAX 1024
+
+struct ext2_ext_attr_header {
+ __u32 h_magic; /* magic number for identification */
+ __u32 h_refcount; /* reference count */
+ __u32 h_blocks; /* number of disk blocks used */
+ __u32 h_hash; /* hash value of all attributes */
+ __u32 h_reserved[4]; /* zero right now */
+};
+
+struct ext2_ext_attr_entry {
+ __u8 e_name_len; /* length of name */
+ __u8 e_name_index; /* attribute name index */
+ __u16 e_value_offs; /* offset in disk block of value */
+ __u32 e_value_block; /* disk block attribute is stored on (n/i) */
+ __u32 e_value_size; /* size of attribute value */
+ __u32 e_hash; /* hash value of name and value */
+#if 0
+ char e_name[0]; /* attribute name */
+#endif
+};
+
+#define EXT2_EXT_ATTR_PAD_BITS 2
+#define EXT2_EXT_ATTR_PAD ((unsigned) 1<e_name_len)) )
+#define EXT2_EXT_ATTR_SIZE(size) \
+ (((size) + EXT2_EXT_ATTR_ROUND) & ~EXT2_EXT_ATTR_ROUND)
+#define EXT2_EXT_IS_LAST_ENTRY(entry) (*((__u32 *)(entry)) == 0UL)
+#define EXT2_EXT_ATTR_NAME(entry) \
+ (((char *) (entry)) + sizeof(struct ext2_ext_attr_entry))
+#define EXT2_XATTR_LEN(name_len) \
+ (((name_len) + EXT2_EXT_ATTR_ROUND + \
+ sizeof(struct ext2_xattr_entry)) & ~EXT2_EXT_ATTR_ROUND)
+#define EXT2_XATTR_SIZE(size) \
+ (((size) + EXT2_EXT_ATTR_ROUND) & ~EXT2_EXT_ATTR_ROUND)
+
+#ifdef __KERNEL__
+# ifdef CONFIG_EXT2_FS_EXT_ATTR
+extern int ext2_get_ext_attr(struct inode *, const char *, char *, size_t, int);
+extern int ext2_set_ext_attr(struct inode *, const char *, char *, size_t, int);
+extern void ext2_ext_attr_free_inode(struct inode *inode);
+extern void ext2_ext_attr_put_super(struct super_block *sb);
+extern int ext2_ext_attr_init(void);
+extern void ext2_ext_attr_done(void);
+# else
+# define ext2_get_ext_attr NULL
+# define ext2_set_ext_attr NULL
+# endif
+#endif /* __KERNEL__ */
+#endif /* _EXT2_EXT_ATTR_H */
diff --git a/source/libs/libext2fs/ext2_frag.c b/source/libs/libext2fs/ext2_frag.c
index bf008f7a..e05a4bc7 100644
--- a/source/libs/libext2fs/ext2_frag.c
+++ b/source/libs/libext2fs/ext2_frag.c
@@ -7,10 +7,10 @@ typedef struct _PrivData
void * callback_data;
} PrivDataST;
-static int block_iter_callback(ext2_filsys fs, blk_t *blocknr, int blockcnt, void *privateData)
+static int block_iter_callback(ext2_filsys fs, blk64_t *blocknr, e2_blkcnt_t blockcnt, blk64_t ref_block, int ref_offset, void *privateData)
{
PrivDataST *priv = (PrivDataST *) privateData;
- blk_t block;
+ blk64_t block;
block = *blocknr;
return priv->append_fragment(priv->callback_data, blockcnt*fs->io->block_size/512, block*fs->io->block_size/512, fs->io->block_size/512);
@@ -47,9 +47,10 @@ int _EXT2_get_fragments(const char *in_path, _ext2_frag_append_t append_fragment
priv.callback_data = callback_data;
priv.append_fragment = append_fragment;
- ext2fs_block_iterate(vd->fs, ni->ino, 0, NULL, block_iter_callback, &priv);
+ int ret = ext2fs_block_iterate3(vd->fs, ni->ino, BLOCK_FLAG_DATA_ONLY, NULL, block_iter_callback, &priv);
- int ret = priv.append_fragment(callback_data, EXT2_I_SIZE(&ni->ni) >> 9, 0, 0);
+ if(ret == 0)
+ ret = priv.append_fragment(callback_data, EXT2_I_SIZE(&ni->ni) >> 9, 0, 0);
ext2UpdateTimes(vd, ni, EXT2_UPDATE_ATIME);
diff --git a/source/libs/libext2fs/ext2_frag.j b/source/libs/libext2fs/ext2_frag.j
new file mode 100644
index 00000000..fe4ca658
--- /dev/null
+++ b/source/libs/libext2fs/ext2_frag.j
@@ -0,0 +1,107 @@
+#include "ext2_internal.h"
+#include "ext2_frag.h"
+#include "mem_allocate.h"
+
+typedef struct _DataBlocks
+{
+ u32 block;
+ u32 blockcnt;
+} DataBlocks;
+
+typedef struct _PrivData
+{
+ DataBlocks * blocks;
+ u32 blocksCnt;
+} PrivDataST;
+
+static int block_iter_callback(ext2_filsys fs, blk_t *blocknr, int blockcnt, void *privateData)
+{
+ PrivDataST *priv = (PrivDataST *) privateData;
+
+ if(!priv->blocks)
+ priv->blocks = (DataBlocks *) mem_alloc(sizeof(DataBlocks));
+
+ priv->blocksCnt++;
+
+ DataBlocks * tmp = (DataBlocks *) mem_realloc(priv->blocks, priv->blocksCnt*sizeof(DataBlocks));
+ if(!tmp)
+ {
+ free(priv->blocks);
+ priv->blocks = NULL;
+ return -1;
+ }
+
+ priv->blocks = tmp;
+
+ priv->blocks[priv->blocksCnt-1].block = *blocknr;
+ priv->blocks[priv->blocksCnt-1].blockcnt = blockcnt;
+ return 0;
+}
+
+int _EXT2_get_fragments(const char *in_path, _ext2_frag_append_t append_fragment, void *callback_data)
+{
+ ext2_inode_t *ni = NULL;
+ ext2_vd *vd;
+
+ vd = ext2GetVolume(in_path);
+
+ if(!vd)
+ {
+ errno = EXDEV;
+ return -1;
+ }
+
+ // Get the actual path of the entry
+ const char * path = ext2RealPath(in_path);
+ if (!path) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ // Find the entry
+ ni = ext2OpenEntry(vd, path);
+ if (!ni) {
+ errno = ENOENT;
+ return -1;
+ }
+
+ PrivDataST priv;
+ priv.blocks = NULL;
+ priv.blocksCnt = 0;
+
+ int ret = ext2fs_block_iterate(vd->fs, ni->ino, BLOCK_FLAG_DATA_ONLY, NULL, block_iter_callback, &priv);
+ if(ret == 0 && priv.blocksCnt > 0)
+ {
+ int i = 0;
+ u32 size = 1;
+ u32 block_size = vd->fs->io->block_size/512;
+ int printfs = 30;
+
+ for(i = 0; i < priv.blocksCnt-1; ++i)
+ {
+ //size = priv.blocks[i+1].blockcnt-priv.blocks[i].blockcnt;
+ ret = append_fragment(callback_data, priv.blocks[i].blockcnt*block_size, priv.blocks[i].block*block_size, size*block_size);
+ if(ret)
+ break;
+ if(printfs > 0)
+ {
+ printfs--;
+ }
+ }
+
+ if(ret == 0)
+ ret = append_fragment(callback_data, priv.blocks[i].blockcnt*block_size, priv.blocks[i].block*block_size, block_size);
+ }
+
+ if(ret == 0)
+ ret = append_fragment(callback_data, EXT2_I_SIZE(&ni->ni) >> 9, 0, 0);
+
+ if(priv.blocks)
+ mem_free(priv.blocks);
+
+ ext2UpdateTimes(vd, ni, EXT2_UPDATE_ATIME);
+
+ ext2CloseEntry(vd, ni);
+
+ return ret;
+}
diff --git a/source/libs/libext2fs/ext2_io.h b/source/libs/libext2fs/ext2_io.h
new file mode 100644
index 00000000..25aec665
--- /dev/null
+++ b/source/libs/libext2fs/ext2_io.h
@@ -0,0 +1,136 @@
+/*
+ * io.h --- the I/O manager abstraction
+ *
+ * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o.
+ *
+ * %Begin-Header%
+ * This file may be redistributed under the terms of the GNU Library
+ * General Public License, version 2.
+ * %End-Header%
+ */
+
+#ifndef _EXT2FS_EXT2_IO_H
+#define _EXT2FS_EXT2_IO_H
+
+#include "ext2fs.h"
+
+/*
+ * ext2_loff_t is defined here since unix_io.c needs it.
+ */
+typedef long long ext2_loff_t;
+
+/* llseek.c */
+ext2_loff_t ext2fs_llseek (int, ext2_loff_t, int);
+
+typedef struct struct_io_manager *io_manager;
+typedef struct struct_io_channel *io_channel;
+typedef struct struct_io_stats *io_stats;
+
+#define CHANNEL_FLAGS_WRITETHROUGH 0x01
+
+struct struct_io_channel {
+ errcode_t magic;
+ io_manager manager;
+ char *name;
+ int block_size;
+ errcode_t (*read_error)(io_channel channel,
+ unsigned long block,
+ int count,
+ void *data,
+ size_t size,
+ int actual_bytes_read,
+ errcode_t error);
+ errcode_t (*write_error)(io_channel channel,
+ unsigned long block,
+ int count,
+ const void *data,
+ size_t size,
+ int actual_bytes_written,
+ errcode_t error);
+ int refcount;
+ int flags;
+ long reserved[14];
+ void *private_data;
+ void *app_data;
+};
+
+struct struct_io_stats {
+ int num_fields;
+ int reserved;
+ unsigned long long bytes_read;
+ unsigned long long bytes_written;
+};
+
+struct struct_io_manager {
+ errcode_t magic;
+ const char *name;
+ errcode_t (*open)(const char *name, int flags, io_channel *channel);
+ errcode_t (*close)(io_channel channel);
+ errcode_t (*set_blksize)(io_channel channel, int blksize);
+ errcode_t (*read_blk)(io_channel channel, unsigned long block,
+ int count, void *data);
+ errcode_t (*write_blk)(io_channel channel, unsigned long block,
+ int count, const void *data);
+ errcode_t (*flush)(io_channel channel);
+ errcode_t (*write_byte)(io_channel channel, unsigned long offset,
+ int count, const void *data);
+ errcode_t (*set_option)(io_channel channel, const char *option,
+ const char *arg);
+ errcode_t (*get_stats)(io_channel channel, io_stats *io_stats);
+ errcode_t (*read_blk64)(io_channel channel, unsigned long long block,
+ int count, void *data);
+ errcode_t (*write_blk64)(io_channel channel, unsigned long long block,
+ int count, const void *data);
+ long reserved[16];
+};
+
+#define IO_FLAG_RW 0x0001
+#define IO_FLAG_EXCLUSIVE 0x0002
+#define IO_FLAG_DIRECT_IO 0x0004
+
+/*
+ * Convenience functions....
+ */
+#define io_channel_close(c) ((c)->manager->close((c)))
+#define io_channel_set_blksize(c,s) ((c)->manager->set_blksize((c),s))
+#define io_channel_read_blk(c,b,n,d) ((c)->manager->read_blk((c),b,n,d))
+#define io_channel_write_blk(c,b,n,d) ((c)->manager->write_blk((c),b,n,d))
+#define io_channel_flush(c) ((c)->manager->flush((c)))
+#define io_channel_bumpcount(c) ((c)->refcount++)
+
+/* io_manager.c */
+extern errcode_t io_channel_set_options(io_channel channel,
+ const char *options);
+extern errcode_t io_channel_write_byte(io_channel channel,
+ unsigned long offset,
+ int count, const void *data);
+extern errcode_t io_channel_read_blk64(io_channel channel,
+ unsigned long long block,
+ int count, void *data);
+extern errcode_t io_channel_write_blk64(io_channel channel,
+ unsigned long long block,
+ int count, const void *data);
+
+/* unix_io.c */
+extern io_manager unix_io_manager;
+
+/* undo_io.c */
+extern io_manager undo_io_manager;
+extern errcode_t set_undo_io_backing_manager(io_manager manager);
+extern errcode_t set_undo_io_backup_file(char *file_name);
+
+/* test_io.c */
+extern io_manager test_io_manager, test_io_backing_manager;
+extern void (*test_io_cb_read_blk)
+ (unsigned long block, int count, errcode_t err);
+extern void (*test_io_cb_write_blk)
+ (unsigned long block, int count, errcode_t err);
+extern void (*test_io_cb_read_blk64)
+ (unsigned long long block, int count, errcode_t err);
+extern void (*test_io_cb_write_blk64)
+ (unsigned long long block, int count, errcode_t err);
+extern void (*test_io_cb_set_blksize)
+ (int blksize, errcode_t err);
+
+#endif /* _EXT2FS_EXT2_IO_H */
+
diff --git a/source/libs/libext2fs/ext2_types.h b/source/libs/libext2fs/ext2_types.h
new file mode 100644
index 00000000..5f5f7a57
--- /dev/null
+++ b/source/libs/libext2fs/ext2_types.h
@@ -0,0 +1,18 @@
+/*
+ * If linux/types.h is already been included, assume it has defined
+ * everything we need. (cross fingers) Other header files may have
+ * also defined the types that we need.
+ */
+#ifndef _EXT2_TYPES_H
+#define _EXT2_TYPES_H
+
+typedef unsigned char __u8;
+typedef signed char __s8;
+typedef unsigned short __u16;
+typedef short __s16;
+typedef unsigned int __u32;
+typedef int __s32;
+typedef unsigned long long __u64;
+typedef signed long long __s64;
+
+#endif /* _EXT2_TYPES_H */
diff --git a/source/libs/libext2fs/ext2fs.h b/source/libs/libext2fs/ext2fs.h
index b55b2179..ce3b88de 100644
--- a/source/libs/libext2fs/ext2fs.h
+++ b/source/libs/libext2fs/ext2fs.h
@@ -1356,6 +1356,7 @@ extern __u64 ext2fs_div64_ceil(__u64 a, __u64 b);
#ifndef EXT2_CUSTOM_MEMORY_ROUTINES
#include
+#include "mem_allocate.h"
/*
* Allocate memory
*/
@@ -1363,7 +1364,7 @@ _INLINE_ errcode_t ext2fs_get_mem(unsigned long size, void *ptr)
{
void *pp;
- pp = malloc(size);
+ pp = mem_alloc(size);
if (!pp)
return EXT2_ET_NO_MEMORY;
memcpy(ptr, &pp, sizeof (pp));
@@ -1376,9 +1377,9 @@ _INLINE_ errcode_t ext2fs_get_memalign(unsigned long size,
void *pp;
#ifdef HWRVL
- pp = memalign(32, size);
+ pp = mem_align(32, size);
#else
- pp = malloc(size);
+ pp = mem_alloc(size);
#endif
if (!pp)
return EXT2_ET_NO_MEMORY;
@@ -1402,7 +1403,7 @@ _INLINE_ errcode_t ext2fs_free_mem(void *ptr)
void *p;
memcpy(&p, ptr, sizeof(p));
- free(p);
+ mem_free(p);
p = 0;
memcpy(ptr, &p, sizeof(p));
return 0;
@@ -1419,7 +1420,7 @@ _INLINE_ errcode_t ext2fs_resize_mem(unsigned long EXT2FS_ATTR((unused)) old_siz
/* Use "memcpy" for pointer assignments here to avoid problems
* with C99 strict type aliasing rules. */
memcpy(&p, ptr, sizeof(p));
- p = realloc(p, size);
+ p = mem_realloc(p, size);
if (!p)
return EXT2_ET_NO_MEMORY;
memcpy(ptr, &p, sizeof(p));
diff --git a/source/libs/libext2fs/ext3_extents.h b/source/libs/libext2fs/ext3_extents.h
new file mode 100644
index 00000000..88fabc9d
--- /dev/null
+++ b/source/libs/libext2fs/ext3_extents.h
@@ -0,0 +1,109 @@
+/*
+ * Copyright (c) 2003,2004 Cluster File Systems, Inc, info@clusterfs.com
+ * Written by Alex Tomas
+ *
+ * %Begin-Header%
+ * This file may be redistributed under the terms of the GNU Library
+ * General Public License, version 2.
+ * %End-Header%
+ */
+
+#ifndef _LINUX_EXT3_EXTENTS
+#define _LINUX_EXT3_EXTENTS
+
+/*
+ * ext3_inode has i_block array (total 60 bytes)
+ * first 4 bytes are used to store:
+ * - tree depth (0 mean there is no tree yet. all extents in the inode)
+ * - number of alive extents in the inode
+ */
+
+/*
+ * this is extent on-disk structure
+ * it's used at the bottom of the tree
+ */
+struct ext3_extent {
+ __u32 ee_block; /* first logical block extent covers */
+ __u16 ee_len; /* number of blocks covered by extent */
+ __u16 ee_start_hi; /* high 16 bits of physical block */
+ __u32 ee_start; /* low 32 bigs of physical block */
+};
+
+/*
+ * this is index on-disk structure
+ * it's used at all the levels, but the bottom
+ */
+struct ext3_extent_idx {
+ __u32 ei_block; /* index covers logical blocks from 'block' */
+ __u32 ei_leaf; /* pointer to the physical block of the next *
+ * level. leaf or next index could bet here */
+ __u16 ei_leaf_hi; /* high 16 bits of physical block */
+ __u16 ei_unused;
+};
+
+/*
+ * each block (leaves and indexes), even inode-stored has header
+ */
+struct ext3_extent_header {
+ __u16 eh_magic; /* probably will support different formats */
+ __u16 eh_entries; /* number of valid entries */
+ __u16 eh_max; /* capacity of store in entries */
+ __u16 eh_depth; /* has tree real underlaying blocks? */
+ __u32 eh_generation; /* generation of the tree */
+};
+
+#define EXT3_EXT_MAGIC 0xf30a
+
+/*
+ * array of ext3_ext_path contains path to some extent
+ * creation/lookup routines use it for traversal/splitting/etc
+ * truncate uses it to simulate recursive walking
+ */
+struct ext3_ext_path {
+ __u32 p_block;
+ __u16 p_depth;
+ struct ext3_extent *p_ext;
+ struct ext3_extent_idx *p_idx;
+ struct ext3_extent_header *p_hdr;
+ struct buffer_head *p_bh;
+};
+
+/*
+ * EXT_INIT_MAX_LEN is the maximum number of blocks we can have in an
+ * initialized extent. This is 2^15 and not (2^16 - 1), since we use the
+ * MSB of ee_len field in the extent datastructure to signify if this
+ * particular extent is an initialized extent or an uninitialized (i.e.
+ * preallocated).
+ * EXT_UNINIT_MAX_LEN is the maximum number of blocks we can have in an
+ * uninitialized extent.
+ * If ee_len is <= 0x8000, it is an initialized extent. Otherwise, it is an
+ * uninitialized one. In other words, if MSB of ee_len is set, it is an
+ * uninitialized extent with only one special scenario when ee_len = 0x8000.
+ * In this case we can not have an uninitialized extent of zero length and
+ * thus we make it as a special case of initialized extent with 0x8000 length.
+ * This way we get better extent-to-group alignment for initialized extents.
+ * Hence, the maximum number of blocks we can have in an *initialized*
+ * extent is 2^15 (32768) and in an *uninitialized* extent is 2^15-1 (32767).
+ */
+#define EXT_INIT_MAX_LEN (1UL << 15)
+#define EXT_UNINIT_MAX_LEN (EXT_INIT_MAX_LEN - 1)
+
+#define EXT_FIRST_EXTENT(__hdr__) \
+ ((struct ext3_extent *) (((char *) (__hdr__)) + \
+ sizeof(struct ext3_extent_header)))
+#define EXT_FIRST_INDEX(__hdr__) \
+ ((struct ext3_extent_idx *) (((char *) (__hdr__)) + \
+ sizeof(struct ext3_extent_header)))
+#define EXT_HAS_FREE_INDEX(__path__) \
+ ((__path__)->p_hdr->eh_entries < (__path__)->p_hdr->eh_max)
+#define EXT_LAST_EXTENT(__hdr__) \
+ (EXT_FIRST_EXTENT((__hdr__)) + (__hdr__)->eh_entries - 1)
+#define EXT_LAST_INDEX(__hdr__) \
+ (EXT_FIRST_INDEX((__hdr__)) + (__hdr__)->eh_entries - 1)
+#define EXT_MAX_EXTENT(__hdr__) \
+ (EXT_FIRST_EXTENT((__hdr__)) + (__hdr__)->eh_max - 1)
+#define EXT_MAX_INDEX(__hdr__) \
+ (EXT_FIRST_INDEX((__hdr__)) + (__hdr__)->eh_max - 1)
+
+#endif /* _LINUX_EXT3_EXTENTS */
+
diff --git a/source/libs/libext2fs/libcustomext2fs.a b/source/libs/libext2fs/libcustomext2fs.a
new file mode 100644
index 00000000..a53a8496
Binary files /dev/null and b/source/libs/libext2fs/libcustomext2fs.a differ
diff --git a/source/libs/libext2fs/mem_allocate.h b/source/libs/libext2fs/mem_allocate.h
index 3cbc3064..46a2dd07 100644
--- a/source/libs/libext2fs/mem_allocate.h
+++ b/source/libs/libext2fs/mem_allocate.h
@@ -2,25 +2,22 @@
#define _MEM_ALLOCATE_H
#include
+#include "memory/mem2.h"
-static inline void* mem_alloc (size_t size) {
- return malloc(size);
+extern __inline__ void* mem_alloc (size_t size) {
+ return MEM2_alloc(size);
}
-static inline void* mem_realloc (void *p, size_t size) {
- return realloc(p, size);
+extern __inline__ void* mem_realloc (void *p, size_t size) {
+ return MEM2_realloc(p, size);
}
-static inline void* mem_align (size_t size) {
- #ifdef __wii__
- return memalign(32, size);
- #else
- return malloc(size);
- #endif
+extern __inline__ void* mem_align (size_t a, size_t size) {
+ return MEM2_alloc(size);
}
-static inline void mem_free (void* mem) {
- free(mem);
+extern __inline__ void mem_free (void* mem) {
+ MEM2_free(mem);
}
#endif /* _MEM_ALLOCATE_H */
diff --git a/source/libs/libwbfs/rijndael.c b/source/libs/libwbfs/rijndael.c
index 09790080..473023d9 100644
--- a/source/libs/libwbfs/rijndael.c
+++ b/source/libs/libwbfs/rijndael.c
@@ -1,432 +1,432 @@
-/* Rijndael Block Cipher - rijndael.c
-
- Written by Mike Scott 21st April 1999
- mike@compapp.dcu.ie
-
- Permission for free direct or derivative use is granted subject
- to compliance with any conditions that the originators of the
- algorithm place on its exploitation.
-
- */
-
-#include
-#include
-
-#define u8 unsigned char /* 8 bits */
-#define u32 unsigned long /* 32 bits */
-#define u64 unsigned long long
-
-/* rotates x one bit to the left */
-
-#define ROTL(x) (((x)>>7)|((x)<<1))
-
-/* Rotates 32-bit word left by 1, 2 or 3 byte */
-
-#define ROTL8(x) (((x)<<8)|((x)>>24))
-#define ROTL16(x) (((x)<<16)|((x)>>16))
-#define ROTL24(x) (((x)<<24)|((x)>>8))
-
-/* Fixed Data */
-
-static u8 InCo[4] = { 0xB, 0xD, 0x9, 0xE }; /* Inverse Coefficients */
-
-static u8 fbsub[256];
-static u8 rbsub[256];
-static u8 ptab[256], ltab[256];
-static u32 ftable[256];
-static u32 rtable[256];
-static u32 rco[30];
-
-/* Parameter-dependent data */
-
-int Nk, Nb, Nr;
-u8 fi[24], ri[24];
-u32 fkey[120];
-u32 rkey[120];
-
-static u32 pack(u8 *b)
-{ /* pack bytes into a 32-bit Word */
- return ((u32 ) b[3] << 24) | ((u32 ) b[2] << 16) | ((u32 ) b[1] << 8) | (u32 ) b[0];
-}
-
-static void unpack(u32 a, u8 *b)
-{ /* unpack bytes from a word */
- b[0] = (u8 ) a;
- b[1] = (u8 ) (a >> 8);
- b[2] = (u8 ) (a >> 16);
- b[3] = (u8 ) (a >> 24);
-}
-
-static u8 xtime(u8 a)
-{
- u8 b;
- if (a & 0x80)
- b = 0x1B;
- else b = 0;
- a <<= 1;
- a ^= b;
- return a;
-}
-
-static u8 bmul(u8 x, u8 y)
-{ /* x.y= AntiLog(Log(x) + Log(y)) */
- if (x && y)
- return ptab[(ltab[x] + ltab[y]) % 255];
- else return 0;
-}
-
-static u32 SubByte(u32 a)
-{
- u8 b[4];
- unpack(a, b);
- b[0] = fbsub[b[0]];
- b[1] = fbsub[b[1]];
- b[2] = fbsub[b[2]];
- b[3] = fbsub[b[3]];
- return pack(b);
-}
-
-static u8 product(u32 x, u32 y)
-{ /* dot product of two 4-byte arrays */
- u8 xb[4], yb[4];
- unpack(x, xb);
- unpack(y, yb);
- return bmul(xb[0], yb[0]) ^ bmul(xb[1], yb[1]) ^ bmul(xb[2], yb[2]) ^ bmul(xb[3], yb[3]);
-}
-
-static u32 InvMixCol(u32 x)
-{ /* matrix Multiplication */
- u32 y, m;
- u8 b[4];
-
- m = pack(InCo);
- b[3] = product(m, x);
- m = ROTL24( m );
- b[2] = product(m, x);
- m = ROTL24( m );
- b[1] = product(m, x);
- m = ROTL24( m );
- b[0] = product(m, x);
- y = pack(b);
- return y;
-}
-
-u8 ByteSub(u8 x)
-{
- u8 y = ptab[255 - ltab[x]]; /* multiplicative inverse */
- x = y;
- x = ROTL( x );
- y ^= x;
- x = ROTL( x );
- y ^= x;
- x = ROTL( x );
- y ^= x;
- x = ROTL( x );
- y ^= x;
- y ^= 0x63;
- return y;
-}
-
-void gentables(void)
-{ /* generate tables */
- int i;
- u8 y, b[4];
-
- /* use 3 as primitive root to generate power and log tables */
-
- ltab[0] = 0;
- ptab[0] = 1;
- ltab[1] = 0;
- ptab[1] = 3;
- ltab[3] = 1;
- for (i = 2; i < 256; i++)
- {
- ptab[i] = ptab[i - 1] ^ xtime(ptab[i - 1]);
- ltab[ptab[i]] = i;
- }
-
- /* affine transformation:- each bit is xored with itself shifted one bit */
-
- fbsub[0] = 0x63;
- rbsub[0x63] = 0;
- for (i = 1; i < 256; i++)
- {
- y = ByteSub((u8 ) i);
- fbsub[i] = y;
- rbsub[y] = i;
- }
-
- for (i = 0, y = 1; i < 30; i++)
- {
- rco[i] = y;
- y = xtime(y);
- }
-
- /* calculate forward and reverse tables */
- for (i = 0; i < 256; i++)
- {
- y = fbsub[i];
- b[3] = y ^ xtime(y);
- b[2] = y;
- b[1] = y;
- b[0] = xtime(y);
- ftable[i] = pack(b);
-
- y = rbsub[i];
- b[3] = bmul(InCo[0], y);
- b[2] = bmul(InCo[1], y);
- b[1] = bmul(InCo[2], y);
- b[0] = bmul(InCo[3], y);
- rtable[i] = pack(b);
- }
-}
-
-void gkey(int nb, int nk, char *key)
-{ /* blocksize=32*nb bits. Key=32*nk bits */
- /* currently nb,bk = 4, 6 or 8 */
- /* key comes as 4*Nk bytes */
- /* Key Scheduler. Create expanded encryption key */
- int i, j, k, m, N;
- int C1, C2, C3;
- u32 CipherKey[8];
-
- Nb = nb;
- Nk = nk;
-
- /* Nr is number of rounds */
- if (Nb >= Nk)
- Nr = 6 + Nb;
- else Nr = 6 + Nk;
-
- C1 = 1;
- if (Nb < 8)
- {
- C2 = 2;
- C3 = 3;
- }
- else
- {
- C2 = 3;
- C3 = 4;
- }
-
- /* pre-calculate forward and reverse increments */
- for (m = j = 0; j < nb; j++, m += 3)
- {
- fi[m] = (j + C1) % nb;
- fi[m + 1] = (j + C2) % nb;
- fi[m + 2] = (j + C3) % nb;
- ri[m] = (nb + j - C1) % nb;
- ri[m + 1] = (nb + j - C2) % nb;
- ri[m + 2] = (nb + j - C3) % nb;
- }
-
- N = Nb * (Nr + 1);
-
- for (i = j = 0; i < Nk; i++, j += 4)
- {
- CipherKey[i] = pack((u8 *) &key[j]);
- }
- for (i = 0; i < Nk; i++)
- fkey[i] = CipherKey[i];
- for (j = Nk, k = 0; j < N; j += Nk, k++)
- {
- fkey[j] = fkey[j - Nk] ^ SubByte(ROTL24( fkey[j-1] )) ^ rco[k];
- if (Nk <= 6)
- {
- for (i = 1; i < Nk && (i + j) < N; i++)
- fkey[i + j] = fkey[i + j - Nk] ^ fkey[i + j - 1];
- }
- else
- {
- for (i = 1; i < 4 && (i + j) < N; i++)
- fkey[i + j] = fkey[i + j - Nk] ^ fkey[i + j - 1];
- if ((j + 4) < N) fkey[j + 4] = fkey[j + 4 - Nk] ^ SubByte(fkey[j + 3]);
- for (i = 5; i < Nk && (i + j) < N; i++)
- fkey[i + j] = fkey[i + j - Nk] ^ fkey[i + j - 1];
- }
-
- }
-
- /* now for the expanded decrypt key in reverse order */
-
- for (j = 0; j < Nb; j++)
- rkey[j + N - Nb] = fkey[j];
- for (i = Nb; i < N - Nb; i += Nb)
- {
- k = N - Nb - i;
- for (j = 0; j < Nb; j++)
- rkey[k + j] = InvMixCol(fkey[i + j]);
- }
- for (j = N - Nb; j < N; j++)
- rkey[j - N + Nb] = fkey[j];
-}
-
-/* There is an obvious time/space trade-off possible here. *
- * Instead of just one ftable[], I could have 4, the other *
- * 3 pre-rotated to save the ROTL8, ROTL16 and ROTL24 overhead */
-
-void encrypt(char *buff)
-{
- int i, j, k, m;
- u32 a[8], b[8], *x, *y, *t;
-
- for (i = j = 0; i < Nb; i++, j += 4)
- {
- a[i] = pack((u8 *) &buff[j]);
- a[i] ^= fkey[i];
- }
- k = Nb;
- x = a;
- y = b;
-
- /* State alternates between a and b */
- for (i = 1; i < Nr; i++)
- { /* Nr is number of rounds. May be odd. */
-
- /* if Nb is fixed - unroll this next
- loop and hard-code in the values of fi[] */
-
- for (m = j = 0; j < Nb; j++, m += 3)
- { /* deal with each 32-bit element of the State */
- /* This is the time-critical bit */
- y[j] = fkey[k++] ^ ftable[(u8 ) x[j]] ^ ROTL8( ftable[( u8 )( x[fi[m]] >> 8 )] )
- ^ ROTL16( ftable[( u8 )( x[fi[m+1]] >> 16 )] ) ^ ROTL24( ftable[x[fi[m+2]] >> 24] );
- }
- t = x;
- x = y;
- y = t; /* swap pointers */
- }
-
- /* Last Round - unroll if possible */
- for (m = j = 0; j < Nb; j++, m += 3)
- {
- y[j] = fkey[k++] ^ (u32 ) fbsub[(u8 ) x[j]] ^ ROTL8( ( u32 )fbsub[( u8 )( x[fi[m]] >> 8 )] )
- ^ ROTL16( ( u32 )fbsub[( u8 )( x[fi[m+1]] >> 16 )] ) ^ ROTL24( ( u32 )fbsub[x[fi[m+2]] >> 24] );
- }
- for (i = j = 0; i < Nb; i++, j += 4)
- {
- unpack(y[i], (u8 *) &buff[j]);
- x[i] = y[i] = 0; /* clean up stack */
- }
- return;
-}
-
-void decrypt(char *buff)
-{
- int i, j, k, m;
- u32 a[8], b[8], *x, *y, *t;
-
- for (i = j = 0; i < Nb; i++, j += 4)
- {
- a[i] = pack((u8 *) &buff[j]);
- a[i] ^= rkey[i];
- }
- k = Nb;
- x = a;
- y = b;
-
- /* State alternates between a and b */
- for (i = 1; i < Nr; i++)
- { /* Nr is number of rounds. May be odd. */
-
- /* if Nb is fixed - unroll this next
- loop and hard-code in the values of ri[] */
-
- for (m = j = 0; j < Nb; j++, m += 3)
- { /* This is the time-critical bit */
- y[j] = rkey[k++] ^ rtable[(u8 ) x[j]] ^ ROTL8( rtable[( u8 )( x[ri[m]] >> 8 )] )
- ^ ROTL16( rtable[( u8 )( x[ri[m+1]] >> 16 )] ) ^ ROTL24( rtable[x[ri[m+2]] >> 24] );
- }
- t = x;
- x = y;
- y = t; /* swap pointers */
- }
-
- /* Last Round - unroll if possible */
- for (m = j = 0; j < Nb; j++, m += 3)
- {
- y[j] = rkey[k++] ^ (u32 ) rbsub[(u8 ) x[j]] ^ ROTL8( ( u32 )rbsub[( u8 )( x[ri[m]] >> 8 )] )
- ^ ROTL16( ( u32 )rbsub[( u8 )( x[ri[m+1]] >> 16 )] ) ^ ROTL24( ( u32 )rbsub[x[ri[m+2]] >> 24] );
- }
- for (i = j = 0; i < Nb; i++, j += 4)
- {
- unpack(y[i], (u8 *) &buff[j]);
- x[i] = y[i] = 0; /* clean up stack */
- }
- return;
-}
-
-void aes_set_key(u8 *key)
-{
- gentables();
- gkey(4, 4, (char*) key);
-}
-
-// CBC mode decryption
-void aes_decrypt(u8 *iv, u8 *inbuf, u8 *outbuf, unsigned long long len)
-{
- u8 block[16];
- unsigned int blockno = 0, i;
-
- //printf("aes_decrypt(%p, %p, %p, %lld)\n", iv, inbuf, outbuf, len);
-
- for (blockno = 0; blockno <= (len / sizeof(block)); blockno++)
- {
- unsigned int fraction;
- if (blockno == (len / sizeof(block))) // last block
- {
- fraction = len % sizeof(block);
- if (fraction == 0) break;
- memset(block, 0, sizeof(block));
- }
- else fraction = 16;
-
- // debug_printf("block %d: fraction = %d\n", blockno, fraction);
- memcpy(block, inbuf + blockno * sizeof(block), fraction);
- decrypt((char*) block);
- u8 *ctext_ptr;
- if (blockno == 0)
- ctext_ptr = iv;
- else ctext_ptr = inbuf + (blockno - 1) * sizeof(block);
-
- for (i = 0; i < fraction; i++)
- outbuf[blockno * sizeof(block) + i] = ctext_ptr[i] ^ block[i];
- // debug_printf("Block %d output: ", blockno);
- // hexdump(outbuf + blockno*sizeof(block), 16);
- }
-}
-
-// CBC mode encryption
-void aes_encrypt(u8 *iv, u8 *inbuf, u8 *outbuf, unsigned long long len)
-{
- u8 block[16];
- unsigned int blockno = 0, i;
-
- // debug_printf("aes_decrypt(%p, %p, %p, %lld)\n", iv, inbuf, outbuf, len);
-
- for (blockno = 0; blockno <= (len / sizeof(block)); blockno++)
- {
- unsigned int fraction;
- if (blockno == (len / sizeof(block))) // last block
- {
- fraction = len % sizeof(block);
- if (fraction == 0) break;
- memset(block, 0, sizeof(block));
- }
- else fraction = 16;
-
- // debug_printf("block %d: fraction = %d\n", blockno, fraction);
- memcpy(block, inbuf + blockno * sizeof(block), fraction);
-
- for (i = 0; i < fraction; i++)
- block[i] = inbuf[blockno * sizeof(block) + i] ^ iv[i];
-
- encrypt((char*) block);
- memcpy(iv, block, sizeof(block));
- memcpy(outbuf + blockno * sizeof(block), block, sizeof(block));
- // debug_printf("Block %d output: ", blockno);
- // hexdump(outbuf + blockno*sizeof(block), 16);
- }
-}
-
+/* Rijndael Block Cipher - rijndael.c
+
+ Written by Mike Scott 21st April 1999
+ mike@compapp.dcu.ie
+
+ Permission for free direct or derivative use is granted subject
+ to compliance with any conditions that the originators of the
+ algorithm place on its exploitation.
+
+ */
+
+#include
+#include
+
+#define u8 unsigned char /* 8 bits */
+#define u32 unsigned long /* 32 bits */
+#define u64 unsigned long long
+
+/* rotates x one bit to the left */
+
+#define ROTL(x) (((x)>>7)|((x)<<1))
+
+/* Rotates 32-bit word left by 1, 2 or 3 byte */
+
+#define ROTL8(x) (((x)<<8)|((x)>>24))
+#define ROTL16(x) (((x)<<16)|((x)>>16))
+#define ROTL24(x) (((x)<<24)|((x)>>8))
+
+/* Fixed Data */
+
+static u8 InCo[4] = { 0xB, 0xD, 0x9, 0xE }; /* Inverse Coefficients */
+
+static u8 fbsub[256];
+static u8 rbsub[256];
+static u8 ptab[256], ltab[256];
+static u32 ftable[256];
+static u32 rtable[256];
+static u32 rco[30];
+
+/* Parameter-dependent data */
+
+int Nk, Nb, Nr;
+u8 fi[24], ri[24];
+u32 fkey[120];
+u32 rkey[120];
+
+static u32 pack(u8 *b)
+{ /* pack bytes into a 32-bit Word */
+ return ((u32 ) b[3] << 24) | ((u32 ) b[2] << 16) | ((u32 ) b[1] << 8) | (u32 ) b[0];
+}
+
+static void unpack(u32 a, u8 *b)
+{ /* unpack bytes from a word */
+ b[0] = (u8 ) a;
+ b[1] = (u8 ) (a >> 8);
+ b[2] = (u8 ) (a >> 16);
+ b[3] = (u8 ) (a >> 24);
+}
+
+static u8 xtime(u8 a)
+{
+ u8 b;
+ if (a & 0x80)
+ b = 0x1B;
+ else b = 0;
+ a <<= 1;
+ a ^= b;
+ return a;
+}
+
+static u8 bmul(u8 x, u8 y)
+{ /* x.y= AntiLog(Log(x) + Log(y)) */
+ if (x && y)
+ return ptab[(ltab[x] + ltab[y]) % 255];
+ else return 0;
+}
+
+static u32 SubByte(u32 a)
+{
+ u8 b[4];
+ unpack(a, b);
+ b[0] = fbsub[b[0]];
+ b[1] = fbsub[b[1]];
+ b[2] = fbsub[b[2]];
+ b[3] = fbsub[b[3]];
+ return pack(b);
+}
+
+static u8 product(u32 x, u32 y)
+{ /* dot product of two 4-byte arrays */
+ u8 xb[4], yb[4];
+ unpack(x, xb);
+ unpack(y, yb);
+ return bmul(xb[0], yb[0]) ^ bmul(xb[1], yb[1]) ^ bmul(xb[2], yb[2]) ^ bmul(xb[3], yb[3]);
+}
+
+static u32 InvMixCol(u32 x)
+{ /* matrix Multiplication */
+ u32 y, m;
+ u8 b[4];
+
+ m = pack(InCo);
+ b[3] = product(m, x);
+ m = ROTL24( m );
+ b[2] = product(m, x);
+ m = ROTL24( m );
+ b[1] = product(m, x);
+ m = ROTL24( m );
+ b[0] = product(m, x);
+ y = pack(b);
+ return y;
+}
+
+u8 ByteSub(u8 x)
+{
+ u8 y = ptab[255 - ltab[x]]; /* multiplicative inverse */
+ x = y;
+ x = ROTL( x );
+ y ^= x;
+ x = ROTL( x );
+ y ^= x;
+ x = ROTL( x );
+ y ^= x;
+ x = ROTL( x );
+ y ^= x;
+ y ^= 0x63;
+ return y;
+}
+
+void gentables(void)
+{ /* generate tables */
+ int i;
+ u8 y, b[4];
+
+ /* use 3 as primitive root to generate power and log tables */
+
+ ltab[0] = 0;
+ ptab[0] = 1;
+ ltab[1] = 0;
+ ptab[1] = 3;
+ ltab[3] = 1;
+ for (i = 2; i < 256; i++)
+ {
+ ptab[i] = ptab[i - 1] ^ xtime(ptab[i - 1]);
+ ltab[ptab[i]] = i;
+ }
+
+ /* affine transformation:- each bit is xored with itself shifted one bit */
+
+ fbsub[0] = 0x63;
+ rbsub[0x63] = 0;
+ for (i = 1; i < 256; i++)
+ {
+ y = ByteSub((u8 ) i);
+ fbsub[i] = y;
+ rbsub[y] = i;
+ }
+
+ for (i = 0, y = 1; i < 30; i++)
+ {
+ rco[i] = y;
+ y = xtime(y);
+ }
+
+ /* calculate forward and reverse tables */
+ for (i = 0; i < 256; i++)
+ {
+ y = fbsub[i];
+ b[3] = y ^ xtime(y);
+ b[2] = y;
+ b[1] = y;
+ b[0] = xtime(y);
+ ftable[i] = pack(b);
+
+ y = rbsub[i];
+ b[3] = bmul(InCo[0], y);
+ b[2] = bmul(InCo[1], y);
+ b[1] = bmul(InCo[2], y);
+ b[0] = bmul(InCo[3], y);
+ rtable[i] = pack(b);
+ }
+}
+
+void gkey(int nb, int nk, char *key)
+{ /* blocksize=32*nb bits. Key=32*nk bits */
+ /* currently nb,bk = 4, 6 or 8 */
+ /* key comes as 4*Nk bytes */
+ /* Key Scheduler. Create expanded encryption key */
+ int i, j, k, m, N;
+ int C1, C2, C3;
+ u32 CipherKey[8];
+
+ Nb = nb;
+ Nk = nk;
+
+ /* Nr is number of rounds */
+ if (Nb >= Nk)
+ Nr = 6 + Nb;
+ else Nr = 6 + Nk;
+
+ C1 = 1;
+ if (Nb < 8)
+ {
+ C2 = 2;
+ C3 = 3;
+ }
+ else
+ {
+ C2 = 3;
+ C3 = 4;
+ }
+
+ /* pre-calculate forward and reverse increments */
+ for (m = j = 0; j < nb; j++, m += 3)
+ {
+ fi[m] = (j + C1) % nb;
+ fi[m + 1] = (j + C2) % nb;
+ fi[m + 2] = (j + C3) % nb;
+ ri[m] = (nb + j - C1) % nb;
+ ri[m + 1] = (nb + j - C2) % nb;
+ ri[m + 2] = (nb + j - C3) % nb;
+ }
+
+ N = Nb * (Nr + 1);
+
+ for (i = j = 0; i < Nk; i++, j += 4)
+ {
+ CipherKey[i] = pack((u8 *) &key[j]);
+ }
+ for (i = 0; i < Nk; i++)
+ fkey[i] = CipherKey[i];
+ for (j = Nk, k = 0; j < N; j += Nk, k++)
+ {
+ fkey[j] = fkey[j - Nk] ^ SubByte(ROTL24( fkey[j-1] )) ^ rco[k];
+ if (Nk <= 6)
+ {
+ for (i = 1; i < Nk && (i + j) < N; i++)
+ fkey[i + j] = fkey[i + j - Nk] ^ fkey[i + j - 1];
+ }
+ else
+ {
+ for (i = 1; i < 4 && (i + j) < N; i++)
+ fkey[i + j] = fkey[i + j - Nk] ^ fkey[i + j - 1];
+ if ((j + 4) < N) fkey[j + 4] = fkey[j + 4 - Nk] ^ SubByte(fkey[j + 3]);
+ for (i = 5; i < Nk && (i + j) < N; i++)
+ fkey[i + j] = fkey[i + j - Nk] ^ fkey[i + j - 1];
+ }
+
+ }
+
+ /* now for the expanded decrypt key in reverse order */
+
+ for (j = 0; j < Nb; j++)
+ rkey[j + N - Nb] = fkey[j];
+ for (i = Nb; i < N - Nb; i += Nb)
+ {
+ k = N - Nb - i;
+ for (j = 0; j < Nb; j++)
+ rkey[k + j] = InvMixCol(fkey[i + j]);
+ }
+ for (j = N - Nb; j < N; j++)
+ rkey[j - N + Nb] = fkey[j];
+}
+
+/* There is an obvious time/space trade-off possible here. *
+ * Instead of just one ftable[], I could have 4, the other *
+ * 3 pre-rotated to save the ROTL8, ROTL16 and ROTL24 overhead */
+
+void encrypt(char *buff)
+{
+ int i, j, k, m;
+ u32 a[8], b[8], *x, *y, *t;
+
+ for (i = j = 0; i < Nb; i++, j += 4)
+ {
+ a[i] = pack((u8 *) &buff[j]);
+ a[i] ^= fkey[i];
+ }
+ k = Nb;
+ x = a;
+ y = b;
+
+ /* State alternates between a and b */
+ for (i = 1; i < Nr; i++)
+ { /* Nr is number of rounds. May be odd. */
+
+ /* if Nb is fixed - unroll this next
+ loop and hard-code in the values of fi[] */
+
+ for (m = j = 0; j < Nb; j++, m += 3)
+ { /* deal with each 32-bit element of the State */
+ /* This is the time-critical bit */
+ y[j] = fkey[k++] ^ ftable[(u8 ) x[j]] ^ ROTL8( ftable[( u8 )( x[fi[m]] >> 8 )] )
+ ^ ROTL16( ftable[( u8 )( x[fi[m+1]] >> 16 )] ) ^ ROTL24( ftable[x[fi[m+2]] >> 24] );
+ }
+ t = x;
+ x = y;
+ y = t; /* swap pointers */
+ }
+
+ /* Last Round - unroll if possible */
+ for (m = j = 0; j < Nb; j++, m += 3)
+ {
+ y[j] = fkey[k++] ^ (u32 ) fbsub[(u8 ) x[j]] ^ ROTL8( ( u32 )fbsub[( u8 )( x[fi[m]] >> 8 )] )
+ ^ ROTL16( ( u32 )fbsub[( u8 )( x[fi[m+1]] >> 16 )] ) ^ ROTL24( ( u32 )fbsub[x[fi[m+2]] >> 24] );
+ }
+ for (i = j = 0; i < Nb; i++, j += 4)
+ {
+ unpack(y[i], (u8 *) &buff[j]);
+ x[i] = y[i] = 0; /* clean up stack */
+ }
+ return;
+}
+
+void decrypt(char *buff)
+{
+ int i, j, k, m;
+ u32 a[8], b[8], *x, *y, *t;
+
+ for (i = j = 0; i < Nb; i++, j += 4)
+ {
+ a[i] = pack((u8 *) &buff[j]);
+ a[i] ^= rkey[i];
+ }
+ k = Nb;
+ x = a;
+ y = b;
+
+ /* State alternates between a and b */
+ for (i = 1; i < Nr; i++)
+ { /* Nr is number of rounds. May be odd. */
+
+ /* if Nb is fixed - unroll this next
+ loop and hard-code in the values of ri[] */
+
+ for (m = j = 0; j < Nb; j++, m += 3)
+ { /* This is the time-critical bit */
+ y[j] = rkey[k++] ^ rtable[(u8 ) x[j]] ^ ROTL8( rtable[( u8 )( x[ri[m]] >> 8 )] )
+ ^ ROTL16( rtable[( u8 )( x[ri[m+1]] >> 16 )] ) ^ ROTL24( rtable[x[ri[m+2]] >> 24] );
+ }
+ t = x;
+ x = y;
+ y = t; /* swap pointers */
+ }
+
+ /* Last Round - unroll if possible */
+ for (m = j = 0; j < Nb; j++, m += 3)
+ {
+ y[j] = rkey[k++] ^ (u32 ) rbsub[(u8 ) x[j]] ^ ROTL8( ( u32 )rbsub[( u8 )( x[ri[m]] >> 8 )] )
+ ^ ROTL16( ( u32 )rbsub[( u8 )( x[ri[m+1]] >> 16 )] ) ^ ROTL24( ( u32 )rbsub[x[ri[m+2]] >> 24] );
+ }
+ for (i = j = 0; i < Nb; i++, j += 4)
+ {
+ unpack(y[i], (u8 *) &buff[j]);
+ x[i] = y[i] = 0; /* clean up stack */
+ }
+ return;
+}
+
+void aes_set_key(u8 *key)
+{
+ gentables();
+ gkey(4, 4, (char*) key);
+}
+
+// CBC mode decryption
+void aes_decrypt(u8 *iv, u8 *inbuf, u8 *outbuf, unsigned long long len)
+{
+ u8 block[16];
+ unsigned int blockno = 0, i;
+
+ //printf("aes_decrypt(%p, %p, %p, %lld)\n", iv, inbuf, outbuf, len);
+
+ for (blockno = 0; blockno <= (len / sizeof(block)); blockno++)
+ {
+ unsigned int fraction;
+ if (blockno == (len / sizeof(block))) // last block
+ {
+ fraction = len % sizeof(block);
+ if (fraction == 0) break;
+ memset(block, 0, sizeof(block));
+ }
+ else fraction = 16;
+
+ // debug_printf("block %d: fraction = %d\n", blockno, fraction);
+ memcpy(block, inbuf + blockno * sizeof(block), fraction);
+ decrypt((char*) block);
+ u8 *ctext_ptr;
+ if (blockno == 0)
+ ctext_ptr = iv;
+ else ctext_ptr = inbuf + (blockno - 1) * sizeof(block);
+
+ for (i = 0; i < fraction; i++)
+ outbuf[blockno * sizeof(block) + i] = ctext_ptr[i] ^ block[i];
+ // debug_printf("Block %d output: ", blockno);
+ // hexdump(outbuf + blockno*sizeof(block), 16);
+ }
+}
+
+// CBC mode encryption
+void aes_encrypt(u8 *iv, u8 *inbuf, u8 *outbuf, unsigned long long len)
+{
+ u8 block[16];
+ unsigned int blockno = 0, i;
+
+ // debug_printf("aes_decrypt(%p, %p, %p, %lld)\n", iv, inbuf, outbuf, len);
+
+ for (blockno = 0; blockno <= (len / sizeof(block)); blockno++)
+ {
+ unsigned int fraction;
+ if (blockno == (len / sizeof(block))) // last block
+ {
+ fraction = len % sizeof(block);
+ if (fraction == 0) break;
+ memset(block, 0, sizeof(block));
+ }
+ else fraction = 16;
+
+ // debug_printf("block %d: fraction = %d\n", blockno, fraction);
+ memcpy(block, inbuf + blockno * sizeof(block), fraction);
+
+ for (i = 0; i < fraction; i++)
+ block[i] = inbuf[blockno * sizeof(block) + i] ^ iv[i];
+
+ encrypt((char*) block);
+ memcpy(iv, block, sizeof(block));
+ memcpy(outbuf + blockno * sizeof(block), block, sizeof(block));
+ // debug_printf("Block %d output: ", blockno);
+ // hexdump(outbuf + blockno*sizeof(block), 16);
+ }
+}
+
diff --git a/source/libs/libwbfs/wiidisc.h b/source/libs/libwbfs/wiidisc.h
index 3cd6bcc0..c2bb0636 100644
--- a/source/libs/libwbfs/wiidisc.h
+++ b/source/libs/libwbfs/wiidisc.h
@@ -1,68 +1,68 @@
-#ifndef WIIDISC_H
-#define WIIDISC_H
-#include
-#include "libwbfs_os.h" // this file is provided by the project wanting to compile libwbfs and wiidisc
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-#if 0 //removes extra automatic indentation by editors
-}
-#endif
- // callback definition. Return 1 on fatal error (callback is supposed to make retries until no hopes..)
- // offset points 32bit words, count counts bytes
- typedef int (*read_wiidisc_callback_t)(void*fp, u32 offset, u32 count, void*iobuf);
-
- typedef enum
- {
- UPDATE_PARTITION_TYPE = 0, GAME_PARTITION_TYPE, OTHER_PARTITION_TYPE,
- // value in between selects partition types of that value
- ALL_PARTITIONS = 0xffffffff - 3,
- REMOVE_UPDATE_PARTITION, // keeps game + channel installers
- ONLY_GAME_PARTITION,
- } partition_selector_t;
-
- typedef struct wiidisc_s
- {
- read_wiidisc_callback_t read;
- void *fp;
- u8 *sector_usage_table;
-
- // everything points 32bit words.
- u32 disc_raw_offset;
- u32 partition_raw_offset;
- u32 partition_data_offset;
- u32 partition_data_size;
- u32 partition_block;
-
- u8 *tmp_buffer;
- u8 *tmp_buffer2;
- u8 disc_key[16];
- int dont_decrypt;
-
- partition_selector_t part_sel;
-
- char *extract_pathname;
- u8 *extracted_buffer;
- int extracted_size;
- } wiidisc_t;
-
- wiidisc_t *wd_open_disc(read_wiidisc_callback_t read, void*fp);
- void wd_close_disc(wiidisc_t *);
- // returns a buffer allocated with wbfs_ioalloc() or NULL if not found of alloc error
- u8 * wd_extract_file(wiidisc_t *d, partition_selector_t partition_type, char *pathname);
-
- void wd_build_disc_usage(wiidisc_t *d, partition_selector_t selector, u8* usage_table);
-
- // effectively remove not copied partition from the partition table.
- void wd_fix_partition_table(wiidisc_t *d, partition_selector_t selector, u8* partition_table);
- u8 * wd_get_fst(wiidisc_t *d, partition_selector_t partition_type);
-
-#if 0
-{
-#endif
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
+#ifndef WIIDISC_H
+#define WIIDISC_H
+#include
+#include "libwbfs_os.h" // this file is provided by the project wanting to compile libwbfs and wiidisc
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+#if 0 //removes extra automatic indentation by editors
+}
+#endif
+ // callback definition. Return 1 on fatal error (callback is supposed to make retries until no hopes..)
+ // offset points 32bit words, count counts bytes
+ typedef int (*read_wiidisc_callback_t)(void*fp, u32 offset, u32 count, void*iobuf);
+
+ typedef enum
+ {
+ UPDATE_PARTITION_TYPE = 0, GAME_PARTITION_TYPE, OTHER_PARTITION_TYPE,
+ // value in between selects partition types of that value
+ ALL_PARTITIONS = 0xffffffff - 3,
+ REMOVE_UPDATE_PARTITION, // keeps game + channel installers
+ ONLY_GAME_PARTITION,
+ } partition_selector_t;
+
+ typedef struct wiidisc_s
+ {
+ read_wiidisc_callback_t read;
+ void *fp;
+ u8 *sector_usage_table;
+
+ // everything points 32bit words.
+ u32 disc_raw_offset;
+ u32 partition_raw_offset;
+ u32 partition_data_offset;
+ u32 partition_data_size;
+ u32 partition_block;
+
+ u8 *tmp_buffer;
+ u8 *tmp_buffer2;
+ u8 disc_key[16];
+ int dont_decrypt;
+
+ partition_selector_t part_sel;
+
+ char *extract_pathname;
+ u8 *extracted_buffer;
+ int extracted_size;
+ } wiidisc_t;
+
+ wiidisc_t *wd_open_disc(read_wiidisc_callback_t read, void*fp);
+ void wd_close_disc(wiidisc_t *);
+ // returns a buffer allocated with wbfs_ioalloc() or NULL if not found of alloc error
+ u8 * wd_extract_file(wiidisc_t *d, partition_selector_t partition_type, char *pathname);
+
+ void wd_build_disc_usage(wiidisc_t *d, partition_selector_t selector, u8* usage_table);
+
+ // effectively remove not copied partition from the partition table.
+ void wd_fix_partition_table(wiidisc_t *d, partition_selector_t selector, u8* partition_table);
+ u8 * wd_get_fst(wiidisc_t *d, partition_selector_t partition_type);
+
+#if 0
+{
+#endif
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/source/libwiigui/gui.h b/source/libwiigui/gui.h
index 340d5bb2..a7ab4ec2 100644
--- a/source/libwiigui/gui.h
+++ b/source/libwiigui/gui.h
@@ -968,8 +968,6 @@ class GuiNumpad: public GuiWindow
GuiImageData * keyTextbox;
GuiImageData * keyMedium;
GuiImageData * keyMediumOver;
- GuiSound * keySoundOver;
- GuiSound * keySoundClick;
GuiTrigger * trigA;
GuiTrigger * trigB;
};
@@ -1026,8 +1024,6 @@ class GuiOptionBrowser: public GuiElement
GuiImageData * scrollbarBox;
GuiImageData * scrollbarBoxOver;
- GuiSound * btnSoundOver;
- GuiSound * btnSoundClick;
GuiTrigger * trigA;
GuiTrigger * trigB;
GuiTrigger * trigHeldA;
@@ -1088,8 +1084,6 @@ class GuiFileBrowser: public GuiElement
GuiImageData * arrowUp;
GuiImageData * scrollbarBox;
- GuiSound * btnSoundOver;
- GuiSound * btnSoundClick;
GuiTrigger * trigA;
GuiTrigger * trigHeldA;
};
diff --git a/source/libwiigui/gui_element.cpp b/source/libwiigui/gui_element.cpp
index f91337fb..8c31bc6b 100644
--- a/source/libwiigui/gui_element.cpp
+++ b/source/libwiigui/gui_element.cpp
@@ -1,820 +1,820 @@
-/****************************************************************************
- * libwiigui
- *
- * Tantric 2009
- *
- * gui_element.cpp
- *
- * GUI class definitions
- ***************************************************************************/
-
-#include "gui.h"
-
-/**
- * Constructor for the Object class.
- */
-//mutex_t GuiElement::mutex = LWP_MUTEX_NULL;
-mutex_t GuiElement::_lock_mutex = LWP_MUTEX_NULL;
-GuiElement::GuiElement()
-{
- xoffset = 0;
- yoffset = 0;
- zoffset = 0;
- xmin = 0;
- xmax = 0;
- ymin = 0;
- ymax = 0;
- width = 0;
- height = 0;
- alpha = 255;
- scale = 1;
- state = STATE_DEFAULT;
- stateChan = -1;
- trigger[0] = NULL;
- trigger[1] = NULL;
- trigger[2] = NULL;
- trigger[3] = NULL;
- trigger[4] = NULL;
- trigger[5] = NULL;
- parentElement = NULL;
- rumble = true;
- selectable = false;
- clickable = false;
- holdable = false;
- visible = true;
- focus = -1; // cannot be focused
- updateCB = NULL;
- yoffsetDyn = 0;
- xoffsetDyn = 0;
- yoffsetDynFloat = 0;
- alphaDyn = -1;
- scaleDyn = 1;
- effects = 0;
- effectAmount = 0;
- effectTarget = 0;
- effectsOver = 0;
- effectAmountOver = 0;
- effectTargetOver = 0;
- frequency = 0.0f;
- changervar = 0;
- degree = -90.0f;
- circleamount = 360.0f;
- Radius = 150;
- angleDyn = 0.0f;
- anglespeed = 0.0f;
-
- // default alignment - align to top left
- alignmentVert = ALIGN_TOP;
- alignmentHor = ALIGN_LEFT;
- // if(mutex == LWP_MUTEX_NULL) LWP_MutexInit(&mutex, true);
- if (_lock_mutex == LWP_MUTEX_NULL) LWP_MutexInit(&_lock_mutex, true);
- _lock_thread = LWP_THREAD_NULL;
- _lock_count = 0;
- _lock_queue = LWP_TQUEUE_NULL;
-
-}
-
-/**
- * Destructor for the GuiElement class.
- */
-GuiElement::~GuiElement()
-{
- // LWP_MutexDestroy(mutex);
-}
-
-void GuiElement::SetParent(GuiElement * e)
-{
- LOCK( this );
- parentElement = e;
-}
-
-GuiElement * GuiElement::GetParent()
-{
- return parentElement;
-}
-/**
- * Get the left position of the GuiElement.
- * @see SetLeft()
- * @return Left position in pixel.
- */
-int GuiElement::GetLeft()
-{
- int x = 0;
- int pWidth = 0;
- int pLeft = 0;
-
- if (parentElement)
- {
- pWidth = parentElement->GetWidth();
- pLeft = parentElement->GetLeft();
- }
-
- if (effects & (EFFECT_SLIDE_IN | EFFECT_SLIDE_OUT | EFFECT_GOROUND | EFFECT_ROCK_VERTICLE)) pLeft += xoffsetDyn;
-
- switch (alignmentHor)
- {
- case ALIGN_LEFT:
- x = pLeft;
- break;
- case ALIGN_CENTRE:
- x = pLeft + (pWidth / 2) - (width / 2);
- break;
- case ALIGN_RIGHT:
- x = pLeft + pWidth - width;
- break;
- }
- return x + xoffset;
-}
-
-/**
- * Get the top position of the GuiElement.
- * @see SetTop()
- * @return Top position in pixel.
- */
-int GuiElement::GetTop()
-{
- int y = 0;
- int pHeight = 0;
- int pTop = 0;
-
- if (parentElement)
- {
- pHeight = parentElement->GetHeight();
- pTop = parentElement->GetTop();
- }
-
- if (effects & (EFFECT_SLIDE_IN | EFFECT_SLIDE_OUT | EFFECT_GOROUND | EFFECT_ROCK_VERTICLE)) pTop += yoffsetDyn;
-
- switch (alignmentVert)
- {
- case ALIGN_TOP:
- y = pTop;
- break;
- case ALIGN_MIDDLE:
- y = pTop + (pHeight / 2) - (height / 2);
- break;
- case ALIGN_BOTTOM:
- y = pTop + pHeight - height;
- break;
- }
- return y + yoffset;
-}
-
-void GuiElement::SetMinX(int x)
-{
- LOCK( this );
- xmin = x;
-}
-
-int GuiElement::GetMinX()
-{
- return xmin;
-}
-
-void GuiElement::SetMaxX(int x)
-{
- LOCK( this );
- xmax = x;
-}
-
-int GuiElement::GetMaxX()
-{
- return xmax;
-}
-
-void GuiElement::SetMinY(int y)
-{
- LOCK( this );
- ymin = y;
-}
-
-int GuiElement::GetMinY()
-{
- return ymin;
-}
-
-void GuiElement::SetMaxY(int y)
-{
- LOCK( this );
- ymax = y;
-}
-
-int GuiElement::GetMaxY()
-{
- return ymax;
-}
-
-/**
- * Get the width of the GuiElement.
- * @see SetWidth()
- * @return Width of the GuiElement.
- */
-int GuiElement::GetWidth()
-{
- return width;
-}
-
-/**
- * Get the height of the GuiElement.
- * @see SetHeight()
- * @return Height of the GuiElement.
- */
-int GuiElement::GetHeight()
-{
- return height;
-}
-
-/**
- * Set the width and height of the GuiElement.
- * @param[in] Width Width in pixel.
- * @param[in] Height Height in pixel.
- * @see SetWidth()
- * @see SetHeight()
- */
-void GuiElement::SetSize(int w, int h)
-{
- LOCK( this );
-
- width = w;
- height = h;
-}
-
-/**
- * Get visible.
- * @see SetVisible()
- * @return true if visible, false otherwise.
- */
-bool GuiElement::IsVisible()
-{
- return visible;
-}
-
-/**
- * Set visible.
- * @param[in] Visible Set to true to show GuiElement.
- * @see IsVisible()
- */
-void GuiElement::SetVisible(bool v)
-{
- LOCK( this );
- visible = v;
-}
-
-void GuiElement::SetAlpha(int a)
-{
- LOCK( this );
- alpha = a;
-}
-
-int GuiElement::GetAlpha()
-{
- int a;
-
- if (alphaDyn >= 0)
- a = alphaDyn;
- else a = alpha;
-
- if (parentElement) a *= parentElement->GetAlpha() / 255.0;
-
- return a;
-}
-
-float GuiElement::GetAngleDyn()
-{
- float a = 0.0;
-
- if (angleDyn) a = angleDyn;
-
- if (parentElement && !angleDyn) a = parentElement->GetAngleDyn();
-
- return a;
-}
-
-void GuiElement::SetScale(float s)
-{
- LOCK( this );
- scale = s;
-}
-
-float GuiElement::GetScale()
-{
- float s = scale * scaleDyn;
-
- if (parentElement) s *= parentElement->GetScale();
-
- return s;
-}
-
-int GuiElement::GetState()
-{
- return state;
-}
-
-int GuiElement::GetStateChan()
-{
- return stateChan;
-}
-
-void GuiElement::SetState(int s, int c)
-{
- LOCK( this );
- state = s;
- stateChan = c;
-}
-
-void GuiElement::ResetState()
-{
- LOCK( this );
- if (state != STATE_DISABLED)
- {
- state = STATE_DEFAULT;
- stateChan = -1;
- }
-}
-
-void GuiElement::SetClickable(bool c)
-{
- LOCK( this );
- clickable = c;
-}
-
-void GuiElement::SetSelectable(bool s)
-{
- LOCK( this );
- selectable = s;
-}
-
-void GuiElement::SetHoldable(bool d)
-{
- LOCK( this );
- holdable = d;
-}
-
-bool GuiElement::IsSelectable()
-{
- if (state == STATE_DISABLED || state == STATE_CLICKED)
- return false;
- else return selectable;
-}
-
-bool GuiElement::IsClickable()
-{
- if (state == STATE_DISABLED || state == STATE_CLICKED || state == STATE_HELD)
- return false;
- else return clickable;
-}
-
-bool GuiElement::IsHoldable()
-{
- if (state == STATE_DISABLED)
- return false;
- else return holdable;
-}
-
-void GuiElement::SetFocus(int f)
-{
- LOCK( this );
- focus = f;
-}
-
-int GuiElement::IsFocused()
-{
- return focus;
-}
-
-void GuiElement::SetTrigger(GuiTrigger * t)
-{
- LOCK( this );
- if (!trigger[0])
- trigger[0] = t;
- else if (!trigger[1])
- trigger[1] = t;
- else if (!trigger[2])
- trigger[2] = t;
- else if (!trigger[3])
- trigger[3] = t;
- else if (!trigger[4])
- trigger[4] = t;
- else if (!trigger[5])
- trigger[5] = t;
- else // both were assigned, so we'll just overwrite the first one
- trigger[0] = t;
-}
-
-void GuiElement::SetTrigger(u8 i, GuiTrigger * t)
-{
- LOCK( this );
- trigger[i] = t;
-}
-
-void GuiElement::RemoveTrigger(u8 i)
-{
- LOCK( this );
- trigger[i] = NULL;
-}
-
-bool GuiElement::Rumble()
-{
- return rumble;
-}
-
-void GuiElement::SetRumble(bool r)
-{
- LOCK( this );
- rumble = r;
-}
-
-int GuiElement::GetEffect()
-{
- LOCK( this );
- return effects;
-}
-
-int GuiElement::GetEffectOnOver()
-{
- LOCK( this );
- return effectsOver;
-}
-
-float GuiElement::GetFrequency()
-{
- LOCK( this );
- return frequency;
-}
-
-void GuiElement::SetEffect(int eff, int speed, f32 circles, int r, f32 startdegree, f32 anglespeedset, int center_x,
- int center_y)
-{
-
- if (eff & EFFECT_GOROUND)
- {
- xoffsetDyn = 0; //!position of circle in x
- yoffsetDyn = 0; //!position of circle in y
- Radius = r; //!radius of the circle
- degree = startdegree; //!for example -90 (°) to start at top of circle
- circleamount = circles; //!circleamoutn in degrees for example 360 for 1 circle
- angleDyn = 0.0f; //!this is used by the code to calc the angle
- anglespeed = anglespeedset; //!This is anglespeed depending on circle speed 1 is same speed and 0.5 half speed
- temp_xoffset = center_x; //!position of center in x
- temp_yoffset = center_y; //!position of center in y
- }
- effects |= eff;
- effectAmount = speed; //!Circlespeed
-}
-
-void GuiElement::SetEffect(int eff, int amount, int target)
-{
- LOCK( this );
- if (eff & EFFECT_SLIDE_IN)
- {
- // these calculations overcompensate a little
- if (eff & EFFECT_SLIDE_TOP)
- yoffsetDyn = -screenheight;
- else if (eff & EFFECT_SLIDE_LEFT)
- xoffsetDyn = -screenwidth;
- else if (eff & EFFECT_SLIDE_BOTTOM)
- yoffsetDyn = screenheight;
- else if (eff & EFFECT_SLIDE_RIGHT) xoffsetDyn = screenwidth;
- }
-
- if (eff & EFFECT_FADE && amount > 0)
- {
- alphaDyn = 0;
- }
- else if (eff & EFFECT_FADE && amount < 0)
- {
- alphaDyn = alpha;
-
- }
- else if (eff & EFFECT_ROCK_VERTICLE)
- {
- changervar = 0;
- yoffsetDyn = 0;
- yoffsetDynFloat = 0.0;
- }
-
- effects |= eff;
- effectAmount = amount;
- effectTarget = target;
-}
-
-void GuiElement::SetEffectOnOver(int eff, int amount, int target)
-{
- LOCK( this );
- effectsOver |= eff;
- effectAmountOver = amount;
- effectTargetOver = target;
-}
-
-void GuiElement::SetEffectGrow()
-{
- SetEffectOnOver(EFFECT_SCALE, 4, 110);
-}
-
-void GuiElement::StopEffect()
-{
- xoffsetDyn = 0;
- yoffsetDyn = 0;
- effects = 0;
- effectsOver = 0;
- effectAmount = 0;
- effectAmountOver = 0;
- effectTarget = 0;
- effectTargetOver = 0;
- scaleDyn = 1;
- frequency = 0.0f;
- changervar = 0;
- //angleDyn = 0.0f;
- anglespeed = 0.0f;
-}
-
-void GuiElement::UpdateEffects()
-{
- LOCK( this );
-
- if (effects & (EFFECT_SLIDE_IN | EFFECT_SLIDE_OUT | EFFECT_GOROUND))
- {
- if (effects & EFFECT_SLIDE_IN)
- {
- if (effects & EFFECT_SLIDE_LEFT)
- {
- xoffsetDyn += effectAmount;
-
- if (xoffsetDyn >= 0)
- {
- xoffsetDyn = 0;
- effects = 0;
- }
- }
- else if (effects & EFFECT_SLIDE_RIGHT)
- {
- xoffsetDyn -= effectAmount;
-
- if (xoffsetDyn <= 0)
- {
- xoffsetDyn = 0;
- effects = 0;
- }
- }
- else if (effects & EFFECT_SLIDE_TOP)
- {
- yoffsetDyn += effectAmount;
-
- if (yoffsetDyn >= 0)
- {
- yoffsetDyn = 0;
- effects = 0;
- }
- }
- else if (effects & EFFECT_SLIDE_BOTTOM)
- {
- yoffsetDyn -= effectAmount;
-
- if (yoffsetDyn <= 0)
- {
- yoffsetDyn = 0;
- effects = 0;
- }
- }
- }
- else
- {
- if (effects & EFFECT_SLIDE_LEFT)
- {
- xoffsetDyn -= effectAmount;
-
- if (xoffsetDyn <= -screenwidth) effects = 0; // shut off effect
- }
- else if (effects & EFFECT_SLIDE_RIGHT)
- {
- xoffsetDyn += effectAmount;
-
- if (xoffsetDyn >= screenwidth) effects = 0; // shut off effect
- }
- else if (effects & EFFECT_SLIDE_TOP)
- {
- yoffsetDyn -= effectAmount;
-
- if (yoffsetDyn <= -screenheight) effects = 0; // shut off effect
- }
- else if (effects & EFFECT_SLIDE_BOTTOM)
- {
- yoffsetDyn += effectAmount;
-
- if (yoffsetDyn >= screenheight) effects = 0; // shut off effect
- }
- }
- }
-
- if (effects & EFFECT_GOROUND)
- {
- //!< check out gui.h for info
- xoffset = temp_xoffset;
- yoffset = temp_yoffset;
- if (fabs(frequency) < circleamount)
- {
- angleDyn = (frequency + degree + 90.0f) * anglespeed;
- xoffsetDyn = (int) lround(((f32) Radius) * cos((frequency + degree) * PI / 180.0f));
- yoffsetDyn = (int) lround(((f32) Radius) * sin((frequency + degree) * PI / 180.0f));
- frequency += ((f32) effectAmount) * 0.01f;
- }
- else
- {
- f32 temp_frequency = ((effectAmount < 0) ? -1.0f : 1.0f) * circleamount;
- angleDyn = (temp_frequency + degree + 90.0f) * anglespeed;
- xoffsetDyn = (int) lround(((f32) Radius) * cos((temp_frequency + degree) * PI / 180.0f));
- yoffsetDyn = (int) lround(((f32) Radius) * sin((temp_frequency + degree) * PI / 180.0f));
- xoffset += xoffsetDyn;
- yoffset += yoffsetDyn;
- effects ^= EFFECT_GOROUND;
- frequency = 0.0f;
- }
- }
-
- if (effects & EFFECT_ROCK_VERTICLE)
- {
- //move up to 10pixel above 0
- if (changervar == 0 && yoffsetDynFloat < 11.0)
- {
- yoffsetDynFloat += (effectAmount * 0.01);
- }
- else if (yoffsetDynFloat > 10.0)
- {
- changervar = 1;
- }
- //move down till 10pixel under 0
- if (changervar == 1 && yoffsetDynFloat > -11.0)
- {
- yoffsetDynFloat -= (effectAmount * 0.01);
- }
- else if (yoffsetDynFloat < -10.0)
- {
- changervar = 0;
- }
- yoffsetDyn = (int) (yoffsetDynFloat);
- }
-
- if (effects & EFFECT_FADE)
- {
- alphaDyn += effectAmount;
-
- if (effectAmount < 0 && alphaDyn <= 0)
- {
- alphaDyn = 0;
- effects = 0; // shut off effect
- }
- else if (effectAmount > 0 && alphaDyn >= alpha)
- {
- alphaDyn = alpha;
- effects = 0; // shut off effect
- }
- }
- if (effects & EFFECT_SCALE)
- {
- scaleDyn += effectAmount / 100.0;
-
- if ((effectAmount < 0 && scaleDyn <= effectTarget / 100.0) || (effectAmount > 0 && scaleDyn >= effectTarget
- / 100.0))
- {
- scaleDyn = effectTarget / 100.0;
- effects = 0; // shut off effect
- }
- }
- if (effects & EFFECT_PULSE)
- {
- int percent = 10; //go down from target by this
-
- if ((scaleDyn <= (effectTarget * 0.01)) && (!changervar))
- {
- scaleDyn += (effectAmount * 0.001);
- }
- else if (scaleDyn > (effectTarget * 0.01))
- {
- changervar = 1;
- }
- if ((scaleDyn >= ((effectTarget - percent) * 0.01)) && (changervar))
- {
- scaleDyn -= (effectAmount * 0.001);
- }
- else if (scaleDyn < ((effectTarget - percent) * 0.01))
- {
- changervar = 0;
- }
- }
-}
-
-void GuiElement::Update(GuiTrigger * t)
-{
- LOCK( this );
- if (updateCB) updateCB(this);
-}
-
-void GuiElement::SetUpdateCallback(UpdateCallback u)
-{
- LOCK( this );
- updateCB = u;
-}
-
-void GuiElement::SetPosition(int xoff, int yoff, int zoff)
-{
- LOCK( this );
- xoffset = xoff;
- yoffset = yoff;
- zoffset = zoff;
-}
-
-void GuiElement::SetAlignment(int hor, int vert)
-{
- LOCK( this );
- alignmentHor = hor;
- alignmentVert = vert;
-}
-
-int GuiElement::GetSelected()
-{
- return -1;
-}
-
-/**
- * Draw an element on screen.
- */
-void GuiElement::Draw()
-{
-}
-
-/**
- * Draw Tooltips on screen.
- */
-void GuiElement::DrawTooltip()
-{
-}
-
-/**
- * Check if a position is inside the GuiElement.
- * @param[in] x X position in pixel.
- * @param[in] y Y position in pixel.
- */
-bool GuiElement::IsInside(int x, int y)
-{
- if (x > this->GetLeft() && x < (this->GetLeft() + width) && y > this->GetTop() && y < (this->GetTop() + height)) return true;
- return false;
-}
-void GuiElement::Lock()
-{
- // LWP_MutexLock(mutex);
- for (;;) // loop while element is locked by self
- {
- LWP_MutexLock(_lock_mutex);
-
- if (_lock_thread == LWP_THREAD_NULL) // element is not locked
- {
- _lock_thread = LWP_GetSelf(); // mark as locked
- _lock_count = 1; // set count of lock to 1
- LWP_MutexUnlock(_lock_mutex);
- return;
- }
- else if (_lock_thread == LWP_GetSelf()) // thread is locked by my self
- {
- _lock_count++; // inc count of locks;
- LWP_MutexUnlock(_lock_mutex);
- return;
- }
- else // otherwise the element is locked by an other thread
- {
- if (_lock_queue == LWP_TQUEUE_NULL) // no queue - meens it is the first access to the locked element
- LWP_InitQueue(&_lock_queue); // init queue
- LWP_MutexUnlock(_lock_mutex);
- LWP_ThreadSleep(_lock_queue); // and sleep
- // try lock again;
- }
- }
-}
-void GuiElement::Unlock()
-{
- // LWP_MutexUnlock(mutex);
- LWP_MutexLock(_lock_mutex);
- // only the thread was locked this element, can call unlock
- if (_lock_thread == LWP_GetSelf()) // but we check it here – safe is safe
- {
- if (--_lock_count == 0) // dec count of locks and check if it last lock;
- {
- _lock_thread = LWP_THREAD_NULL; // mark as unlocked
- if (_lock_queue != LWP_TQUEUE_NULL) // has a queue
- {
- LWP_CloseQueue(_lock_queue); // close the queue and wake all waited threads
- _lock_queue = LWP_TQUEUE_NULL;
- }
- }
- }
- LWP_MutexUnlock(_lock_mutex);
-}
-
-SimpleLock::SimpleLock(GuiElement *e) :
- element(e)
-{
- element->Lock();
-}
-SimpleLock::~SimpleLock()
-{
- element->Unlock();
-}
+/****************************************************************************
+ * libwiigui
+ *
+ * Tantric 2009
+ *
+ * gui_element.cpp
+ *
+ * GUI class definitions
+ ***************************************************************************/
+
+#include "gui.h"
+
+/**
+ * Constructor for the Object class.
+ */
+//mutex_t GuiElement::mutex = LWP_MUTEX_NULL;
+mutex_t GuiElement::_lock_mutex = LWP_MUTEX_NULL;
+GuiElement::GuiElement()
+{
+ xoffset = 0;
+ yoffset = 0;
+ zoffset = 0;
+ xmin = 0;
+ xmax = 0;
+ ymin = 0;
+ ymax = 0;
+ width = 0;
+ height = 0;
+ alpha = 255;
+ scale = 1;
+ state = STATE_DEFAULT;
+ stateChan = -1;
+ trigger[0] = NULL;
+ trigger[1] = NULL;
+ trigger[2] = NULL;
+ trigger[3] = NULL;
+ trigger[4] = NULL;
+ trigger[5] = NULL;
+ parentElement = NULL;
+ rumble = true;
+ selectable = false;
+ clickable = false;
+ holdable = false;
+ visible = true;
+ focus = -1; // cannot be focused
+ updateCB = NULL;
+ yoffsetDyn = 0;
+ xoffsetDyn = 0;
+ yoffsetDynFloat = 0;
+ alphaDyn = -1;
+ scaleDyn = 1;
+ effects = 0;
+ effectAmount = 0;
+ effectTarget = 0;
+ effectsOver = 0;
+ effectAmountOver = 0;
+ effectTargetOver = 0;
+ frequency = 0.0f;
+ changervar = 0;
+ degree = -90.0f;
+ circleamount = 360.0f;
+ Radius = 150;
+ angleDyn = 0.0f;
+ anglespeed = 0.0f;
+
+ // default alignment - align to top left
+ alignmentVert = ALIGN_TOP;
+ alignmentHor = ALIGN_LEFT;
+ // if(mutex == LWP_MUTEX_NULL) LWP_MutexInit(&mutex, true);
+ if (_lock_mutex == LWP_MUTEX_NULL) LWP_MutexInit(&_lock_mutex, true);
+ _lock_thread = LWP_THREAD_NULL;
+ _lock_count = 0;
+ _lock_queue = LWP_TQUEUE_NULL;
+
+}
+
+/**
+ * Destructor for the GuiElement class.
+ */
+GuiElement::~GuiElement()
+{
+ // LWP_MutexDestroy(mutex);
+}
+
+void GuiElement::SetParent(GuiElement * e)
+{
+ LOCK( this );
+ parentElement = e;
+}
+
+GuiElement * GuiElement::GetParent()
+{
+ return parentElement;
+}
+/**
+ * Get the left position of the GuiElement.
+ * @see SetLeft()
+ * @return Left position in pixel.
+ */
+int GuiElement::GetLeft()
+{
+ int x = 0;
+ int pWidth = 0;
+ int pLeft = 0;
+
+ if (parentElement)
+ {
+ pWidth = parentElement->GetWidth();
+ pLeft = parentElement->GetLeft();
+ }
+
+ if (effects & (EFFECT_SLIDE_IN | EFFECT_SLIDE_OUT | EFFECT_GOROUND | EFFECT_ROCK_VERTICLE)) pLeft += xoffsetDyn;
+
+ switch (alignmentHor)
+ {
+ case ALIGN_LEFT:
+ x = pLeft;
+ break;
+ case ALIGN_CENTRE:
+ x = pLeft + (pWidth / 2) - (width / 2);
+ break;
+ case ALIGN_RIGHT:
+ x = pLeft + pWidth - width;
+ break;
+ }
+ return x + xoffset;
+}
+
+/**
+ * Get the top position of the GuiElement.
+ * @see SetTop()
+ * @return Top position in pixel.
+ */
+int GuiElement::GetTop()
+{
+ int y = 0;
+ int pHeight = 0;
+ int pTop = 0;
+
+ if (parentElement)
+ {
+ pHeight = parentElement->GetHeight();
+ pTop = parentElement->GetTop();
+ }
+
+ if (effects & (EFFECT_SLIDE_IN | EFFECT_SLIDE_OUT | EFFECT_GOROUND | EFFECT_ROCK_VERTICLE)) pTop += yoffsetDyn;
+
+ switch (alignmentVert)
+ {
+ case ALIGN_TOP:
+ y = pTop;
+ break;
+ case ALIGN_MIDDLE:
+ y = pTop + (pHeight / 2) - (height / 2);
+ break;
+ case ALIGN_BOTTOM:
+ y = pTop + pHeight - height;
+ break;
+ }
+ return y + yoffset;
+}
+
+void GuiElement::SetMinX(int x)
+{
+ LOCK( this );
+ xmin = x;
+}
+
+int GuiElement::GetMinX()
+{
+ return xmin;
+}
+
+void GuiElement::SetMaxX(int x)
+{
+ LOCK( this );
+ xmax = x;
+}
+
+int GuiElement::GetMaxX()
+{
+ return xmax;
+}
+
+void GuiElement::SetMinY(int y)
+{
+ LOCK( this );
+ ymin = y;
+}
+
+int GuiElement::GetMinY()
+{
+ return ymin;
+}
+
+void GuiElement::SetMaxY(int y)
+{
+ LOCK( this );
+ ymax = y;
+}
+
+int GuiElement::GetMaxY()
+{
+ return ymax;
+}
+
+/**
+ * Get the width of the GuiElement.
+ * @see SetWidth()
+ * @return Width of the GuiElement.
+ */
+int GuiElement::GetWidth()
+{
+ return width;
+}
+
+/**
+ * Get the height of the GuiElement.
+ * @see SetHeight()
+ * @return Height of the GuiElement.
+ */
+int GuiElement::GetHeight()
+{
+ return height;
+}
+
+/**
+ * Set the width and height of the GuiElement.
+ * @param[in] Width Width in pixel.
+ * @param[in] Height Height in pixel.
+ * @see SetWidth()
+ * @see SetHeight()
+ */
+void GuiElement::SetSize(int w, int h)
+{
+ LOCK( this );
+
+ width = w;
+ height = h;
+}
+
+/**
+ * Get visible.
+ * @see SetVisible()
+ * @return true if visible, false otherwise.
+ */
+bool GuiElement::IsVisible()
+{
+ return visible;
+}
+
+/**
+ * Set visible.
+ * @param[in] Visible Set to true to show GuiElement.
+ * @see IsVisible()
+ */
+void GuiElement::SetVisible(bool v)
+{
+ LOCK( this );
+ visible = v;
+}
+
+void GuiElement::SetAlpha(int a)
+{
+ LOCK( this );
+ alpha = a;
+}
+
+int GuiElement::GetAlpha()
+{
+ int a;
+
+ if (alphaDyn >= 0)
+ a = alphaDyn;
+ else a = alpha;
+
+ if (parentElement) a *= parentElement->GetAlpha() / 255.0;
+
+ return a;
+}
+
+float GuiElement::GetAngleDyn()
+{
+ float a = 0.0;
+
+ if (angleDyn) a = angleDyn;
+
+ if (parentElement && !angleDyn) a = parentElement->GetAngleDyn();
+
+ return a;
+}
+
+void GuiElement::SetScale(float s)
+{
+ LOCK( this );
+ scale = s;
+}
+
+float GuiElement::GetScale()
+{
+ float s = scale * scaleDyn;
+
+ if (parentElement) s *= parentElement->GetScale();
+
+ return s;
+}
+
+int GuiElement::GetState()
+{
+ return state;
+}
+
+int GuiElement::GetStateChan()
+{
+ return stateChan;
+}
+
+void GuiElement::SetState(int s, int c)
+{
+ LOCK( this );
+ state = s;
+ stateChan = c;
+}
+
+void GuiElement::ResetState()
+{
+ LOCK( this );
+ if (state != STATE_DISABLED)
+ {
+ state = STATE_DEFAULT;
+ stateChan = -1;
+ }
+}
+
+void GuiElement::SetClickable(bool c)
+{
+ LOCK( this );
+ clickable = c;
+}
+
+void GuiElement::SetSelectable(bool s)
+{
+ LOCK( this );
+ selectable = s;
+}
+
+void GuiElement::SetHoldable(bool d)
+{
+ LOCK( this );
+ holdable = d;
+}
+
+bool GuiElement::IsSelectable()
+{
+ if (state == STATE_DISABLED || state == STATE_CLICKED)
+ return false;
+ else return selectable;
+}
+
+bool GuiElement::IsClickable()
+{
+ if (state == STATE_DISABLED || state == STATE_CLICKED || state == STATE_HELD)
+ return false;
+ else return clickable;
+}
+
+bool GuiElement::IsHoldable()
+{
+ if (state == STATE_DISABLED)
+ return false;
+ else return holdable;
+}
+
+void GuiElement::SetFocus(int f)
+{
+ LOCK( this );
+ focus = f;
+}
+
+int GuiElement::IsFocused()
+{
+ return focus;
+}
+
+void GuiElement::SetTrigger(GuiTrigger * t)
+{
+ LOCK( this );
+ if (!trigger[0])
+ trigger[0] = t;
+ else if (!trigger[1])
+ trigger[1] = t;
+ else if (!trigger[2])
+ trigger[2] = t;
+ else if (!trigger[3])
+ trigger[3] = t;
+ else if (!trigger[4])
+ trigger[4] = t;
+ else if (!trigger[5])
+ trigger[5] = t;
+ else // both were assigned, so we'll just overwrite the first one
+ trigger[0] = t;
+}
+
+void GuiElement::SetTrigger(u8 i, GuiTrigger * t)
+{
+ LOCK( this );
+ trigger[i] = t;
+}
+
+void GuiElement::RemoveTrigger(u8 i)
+{
+ LOCK( this );
+ trigger[i] = NULL;
+}
+
+bool GuiElement::Rumble()
+{
+ return rumble;
+}
+
+void GuiElement::SetRumble(bool r)
+{
+ LOCK( this );
+ rumble = r;
+}
+
+int GuiElement::GetEffect()
+{
+ LOCK( this );
+ return effects;
+}
+
+int GuiElement::GetEffectOnOver()
+{
+ LOCK( this );
+ return effectsOver;
+}
+
+float GuiElement::GetFrequency()
+{
+ LOCK( this );
+ return frequency;
+}
+
+void GuiElement::SetEffect(int eff, int speed, f32 circles, int r, f32 startdegree, f32 anglespeedset, int center_x,
+ int center_y)
+{
+
+ if (eff & EFFECT_GOROUND)
+ {
+ xoffsetDyn = 0; //!position of circle in x
+ yoffsetDyn = 0; //!position of circle in y
+ Radius = r; //!radius of the circle
+ degree = startdegree; //!for example -90 (°) to start at top of circle
+ circleamount = circles; //!circleamoutn in degrees for example 360 for 1 circle
+ angleDyn = 0.0f; //!this is used by the code to calc the angle
+ anglespeed = anglespeedset; //!This is anglespeed depending on circle speed 1 is same speed and 0.5 half speed
+ temp_xoffset = center_x; //!position of center in x
+ temp_yoffset = center_y; //!position of center in y
+ }
+ effects |= eff;
+ effectAmount = speed; //!Circlespeed
+}
+
+void GuiElement::SetEffect(int eff, int amount, int target)
+{
+ LOCK( this );
+ if (eff & EFFECT_SLIDE_IN)
+ {
+ // these calculations overcompensate a little
+ if (eff & EFFECT_SLIDE_TOP)
+ yoffsetDyn = -screenheight;
+ else if (eff & EFFECT_SLIDE_LEFT)
+ xoffsetDyn = -screenwidth;
+ else if (eff & EFFECT_SLIDE_BOTTOM)
+ yoffsetDyn = screenheight;
+ else if (eff & EFFECT_SLIDE_RIGHT) xoffsetDyn = screenwidth;
+ }
+
+ if (eff & EFFECT_FADE && amount > 0)
+ {
+ alphaDyn = 0;
+ }
+ else if (eff & EFFECT_FADE && amount < 0)
+ {
+ alphaDyn = alpha;
+
+ }
+ else if (eff & EFFECT_ROCK_VERTICLE)
+ {
+ changervar = 0;
+ yoffsetDyn = 0;
+ yoffsetDynFloat = 0.0;
+ }
+
+ effects |= eff;
+ effectAmount = amount;
+ effectTarget = target;
+}
+
+void GuiElement::SetEffectOnOver(int eff, int amount, int target)
+{
+ LOCK( this );
+ effectsOver |= eff;
+ effectAmountOver = amount;
+ effectTargetOver = target;
+}
+
+void GuiElement::SetEffectGrow()
+{
+ SetEffectOnOver(EFFECT_SCALE, 4, 110);
+}
+
+void GuiElement::StopEffect()
+{
+ xoffsetDyn = 0;
+ yoffsetDyn = 0;
+ effects = 0;
+ effectsOver = 0;
+ effectAmount = 0;
+ effectAmountOver = 0;
+ effectTarget = 0;
+ effectTargetOver = 0;
+ scaleDyn = 1;
+ frequency = 0.0f;
+ changervar = 0;
+ //angleDyn = 0.0f;
+ anglespeed = 0.0f;
+}
+
+void GuiElement::UpdateEffects()
+{
+ LOCK( this );
+
+ if (effects & (EFFECT_SLIDE_IN | EFFECT_SLIDE_OUT | EFFECT_GOROUND))
+ {
+ if (effects & EFFECT_SLIDE_IN)
+ {
+ if (effects & EFFECT_SLIDE_LEFT)
+ {
+ xoffsetDyn += effectAmount;
+
+ if (xoffsetDyn >= 0)
+ {
+ xoffsetDyn = 0;
+ effects = 0;
+ }
+ }
+ else if (effects & EFFECT_SLIDE_RIGHT)
+ {
+ xoffsetDyn -= effectAmount;
+
+ if (xoffsetDyn <= 0)
+ {
+ xoffsetDyn = 0;
+ effects = 0;
+ }
+ }
+ else if (effects & EFFECT_SLIDE_TOP)
+ {
+ yoffsetDyn += effectAmount;
+
+ if (yoffsetDyn >= 0)
+ {
+ yoffsetDyn = 0;
+ effects = 0;
+ }
+ }
+ else if (effects & EFFECT_SLIDE_BOTTOM)
+ {
+ yoffsetDyn -= effectAmount;
+
+ if (yoffsetDyn <= 0)
+ {
+ yoffsetDyn = 0;
+ effects = 0;
+ }
+ }
+ }
+ else
+ {
+ if (effects & EFFECT_SLIDE_LEFT)
+ {
+ xoffsetDyn -= effectAmount;
+
+ if (xoffsetDyn <= -screenwidth) effects = 0; // shut off effect
+ }
+ else if (effects & EFFECT_SLIDE_RIGHT)
+ {
+ xoffsetDyn += effectAmount;
+
+ if (xoffsetDyn >= screenwidth) effects = 0; // shut off effect
+ }
+ else if (effects & EFFECT_SLIDE_TOP)
+ {
+ yoffsetDyn -= effectAmount;
+
+ if (yoffsetDyn <= -screenheight) effects = 0; // shut off effect
+ }
+ else if (effects & EFFECT_SLIDE_BOTTOM)
+ {
+ yoffsetDyn += effectAmount;
+
+ if (yoffsetDyn >= screenheight) effects = 0; // shut off effect
+ }
+ }
+ }
+
+ if (effects & EFFECT_GOROUND)
+ {
+ //!< check out gui.h for info
+ xoffset = temp_xoffset;
+ yoffset = temp_yoffset;
+ if (fabs(frequency) < circleamount)
+ {
+ angleDyn = (frequency + degree + 90.0f) * anglespeed;
+ xoffsetDyn = (int) lround(((f32) Radius) * cos((frequency + degree) * PI / 180.0f));
+ yoffsetDyn = (int) lround(((f32) Radius) * sin((frequency + degree) * PI / 180.0f));
+ frequency += ((f32) effectAmount) * 0.01f;
+ }
+ else
+ {
+ f32 temp_frequency = ((effectAmount < 0) ? -1.0f : 1.0f) * circleamount;
+ angleDyn = (temp_frequency + degree + 90.0f) * anglespeed;
+ xoffsetDyn = (int) lround(((f32) Radius) * cos((temp_frequency + degree) * PI / 180.0f));
+ yoffsetDyn = (int) lround(((f32) Radius) * sin((temp_frequency + degree) * PI / 180.0f));
+ xoffset += xoffsetDyn;
+ yoffset += yoffsetDyn;
+ effects ^= EFFECT_GOROUND;
+ frequency = 0.0f;
+ }
+ }
+
+ if (effects & EFFECT_ROCK_VERTICLE)
+ {
+ //move up to 10pixel above 0
+ if (changervar == 0 && yoffsetDynFloat < 11.0)
+ {
+ yoffsetDynFloat += (effectAmount * 0.01);
+ }
+ else if (yoffsetDynFloat > 10.0)
+ {
+ changervar = 1;
+ }
+ //move down till 10pixel under 0
+ if (changervar == 1 && yoffsetDynFloat > -11.0)
+ {
+ yoffsetDynFloat -= (effectAmount * 0.01);
+ }
+ else if (yoffsetDynFloat < -10.0)
+ {
+ changervar = 0;
+ }
+ yoffsetDyn = (int) (yoffsetDynFloat);
+ }
+
+ if (effects & EFFECT_FADE)
+ {
+ alphaDyn += effectAmount;
+
+ if (effectAmount < 0 && alphaDyn <= 0)
+ {
+ alphaDyn = 0;
+ effects = 0; // shut off effect
+ }
+ else if (effectAmount > 0 && alphaDyn >= alpha)
+ {
+ alphaDyn = alpha;
+ effects = 0; // shut off effect
+ }
+ }
+ if (effects & EFFECT_SCALE)
+ {
+ scaleDyn += effectAmount / 100.0;
+
+ if ((effectAmount < 0 && scaleDyn <= effectTarget / 100.0) || (effectAmount > 0 && scaleDyn >= effectTarget
+ / 100.0))
+ {
+ scaleDyn = effectTarget / 100.0;
+ effects = 0; // shut off effect
+ }
+ }
+ if (effects & EFFECT_PULSE)
+ {
+ int percent = 10; //go down from target by this
+
+ if ((scaleDyn <= (effectTarget * 0.01)) && (!changervar))
+ {
+ scaleDyn += (effectAmount * 0.001);
+ }
+ else if (scaleDyn > (effectTarget * 0.01))
+ {
+ changervar = 1;
+ }
+ if ((scaleDyn >= ((effectTarget - percent) * 0.01)) && (changervar))
+ {
+ scaleDyn -= (effectAmount * 0.001);
+ }
+ else if (scaleDyn < ((effectTarget - percent) * 0.01))
+ {
+ changervar = 0;
+ }
+ }
+}
+
+void GuiElement::Update(GuiTrigger * t)
+{
+ LOCK( this );
+ if (updateCB) updateCB(this);
+}
+
+void GuiElement::SetUpdateCallback(UpdateCallback u)
+{
+ LOCK( this );
+ updateCB = u;
+}
+
+void GuiElement::SetPosition(int xoff, int yoff, int zoff)
+{
+ LOCK( this );
+ xoffset = xoff;
+ yoffset = yoff;
+ zoffset = zoff;
+}
+
+void GuiElement::SetAlignment(int hor, int vert)
+{
+ LOCK( this );
+ alignmentHor = hor;
+ alignmentVert = vert;
+}
+
+int GuiElement::GetSelected()
+{
+ return -1;
+}
+
+/**
+ * Draw an element on screen.
+ */
+void GuiElement::Draw()
+{
+}
+
+/**
+ * Draw Tooltips on screen.
+ */
+void GuiElement::DrawTooltip()
+{
+}
+
+/**
+ * Check if a position is inside the GuiElement.
+ * @param[in] x X position in pixel.
+ * @param[in] y Y position in pixel.
+ */
+bool GuiElement::IsInside(int x, int y)
+{
+ if (x > this->GetLeft() && x < (this->GetLeft() + width) && y > this->GetTop() && y < (this->GetTop() + height)) return true;
+ return false;
+}
+void GuiElement::Lock()
+{
+ // LWP_MutexLock(mutex);
+ for (;;) // loop while element is locked by self
+ {
+ LWP_MutexLock(_lock_mutex);
+
+ if (_lock_thread == LWP_THREAD_NULL) // element is not locked
+ {
+ _lock_thread = LWP_GetSelf(); // mark as locked
+ _lock_count = 1; // set count of lock to 1
+ LWP_MutexUnlock(_lock_mutex);
+ return;
+ }
+ else if (_lock_thread == LWP_GetSelf()) // thread is locked by my self
+ {
+ _lock_count++; // inc count of locks;
+ LWP_MutexUnlock(_lock_mutex);
+ return;
+ }
+ else // otherwise the element is locked by an other thread
+ {
+ if (_lock_queue == LWP_TQUEUE_NULL) // no queue - meens it is the first access to the locked element
+ LWP_InitQueue(&_lock_queue); // init queue
+ LWP_MutexUnlock(_lock_mutex);
+ LWP_ThreadSleep(_lock_queue); // and sleep
+ // try lock again;
+ }
+ }
+}
+void GuiElement::Unlock()
+{
+ // LWP_MutexUnlock(mutex);
+ LWP_MutexLock(_lock_mutex);
+ // only the thread was locked this element, can call unlock
+ if (_lock_thread == LWP_GetSelf()) // but we check it here – safe is safe
+ {
+ if (--_lock_count == 0) // dec count of locks and check if it last lock;
+ {
+ _lock_thread = LWP_THREAD_NULL; // mark as unlocked
+ if (_lock_queue != LWP_TQUEUE_NULL) // has a queue
+ {
+ LWP_CloseQueue(_lock_queue); // close the queue and wake all waited threads
+ _lock_queue = LWP_TQUEUE_NULL;
+ }
+ }
+ }
+ LWP_MutexUnlock(_lock_mutex);
+}
+
+SimpleLock::SimpleLock(GuiElement *e) :
+ element(e)
+{
+ element->Lock();
+}
+SimpleLock::~SimpleLock()
+{
+ element->Unlock();
+}
diff --git a/source/libwiigui/gui_gamebrowser.cpp b/source/libwiigui/gui_gamebrowser.cpp
index f6320859..b8cb48cd 100644
--- a/source/libwiigui/gui_gamebrowser.cpp
+++ b/source/libwiigui/gui_gamebrowser.cpp
@@ -27,15 +27,15 @@ int txtscroll = 0;
/**
* Constructor for the GuiGameBrowser class.
*/
-GuiGameBrowser::GuiGameBrowser(int w, int h, int selected, int offset)
+GuiGameBrowser::GuiGameBrowser(int w, int h, int selectedGame)
{
width = w;
height = h;
pagesize = Theme.pagesize;
scrollbaron = (gameList.size() > pagesize) ? 1 : 0;
selectable = true;
- listOffset = MAX( 0, MIN( offset, ( gameList.size() - pagesize ) ) );
- selectedItem = selected - offset;
+ listOffset = selectedGame - (selectedGame % pagesize);
+ selectedItem = selectedGame - listOffset;
focus = 1; // allow focus
trigA = new GuiTrigger;
diff --git a/source/libwiigui/gui_gamebrowser.h b/source/libwiigui/gui_gamebrowser.h
index 3918f239..f685033a 100644
--- a/source/libwiigui/gui_gamebrowser.h
+++ b/source/libwiigui/gui_gamebrowser.h
@@ -7,7 +7,7 @@
class GuiGameBrowser: public GuiElement
{
public:
- GuiGameBrowser(int w, int h, int selected = 0, int offset = 0);
+ GuiGameBrowser(int w, int h, int selectedGame = 0);
~GuiGameBrowser();
int FindMenuItem(int c, int d);
int GetClickedOption();
diff --git a/source/libwiigui/gui_gamecarousel.cpp b/source/libwiigui/gui_gamecarousel.cpp
index 2c2db0cc..bd8e5ca8 100644
--- a/source/libwiigui/gui_gamecarousel.cpp
+++ b/source/libwiigui/gui_gamecarousel.cpp
@@ -45,13 +45,13 @@ static GuiImageData *GameCarouselLoadCoverImage(void * Arg)
/**
* Constructor for the GuiGameCarousel class.
*/
-GuiGameCarousel::GuiGameCarousel(int w, int h, const char *themePath, const u8 *imagebg, int imagebgsize, int selected, int offset) :
+GuiGameCarousel::GuiGameCarousel(int w, int h, const char *themePath, const u8 *imagebg, int imagebgsize, int selectedGame) :
noCover(nocover_png, nocover_png_size)
{
width = w;
height = h;
pagesize = (gameList.size() < 11) ? gameList.size() : 11;
- listOffset = 0;
+ listOffset = (selectedGame >= 0 && selectedGame < gameList.size()) ? selectedGame : 0;
selectable = true;
selectedItem = -1;
focus = 1; // allow focus
diff --git a/source/libwiigui/gui_gamecarousel.h b/source/libwiigui/gui_gamecarousel.h
index ae654ac5..8f8320e3 100644
--- a/source/libwiigui/gui_gamecarousel.h
+++ b/source/libwiigui/gui_gamecarousel.h
@@ -7,7 +7,7 @@ class GuiImageAsync;
class GuiGameCarousel: public GuiElement
{
public:
- GuiGameCarousel(int w, int h, const char *themePath, const u8 *imagebg, int imagebgsize, int selected = 0, int offset = 0);
+ GuiGameCarousel(int w, int h, const char *themePath, const u8 *imagebg, int imagebgsize, int selectedGame = 0);
~GuiGameCarousel();
int FindMenuItem(int c, int d);
int GetClickedOption();
diff --git a/source/libwiigui/gui_gamegrid.cpp b/source/libwiigui/gui_gamegrid.cpp
index c4c33f2c..b85dbeda 100644
--- a/source/libwiigui/gui_gamegrid.cpp
+++ b/source/libwiigui/gui_gamegrid.cpp
@@ -201,7 +201,7 @@ static GuiImageData *GameGridLoadCoverImage(void * Arg)
/**
* Constructor for the GuiGamegrid class.
*/
-GuiGameGrid::GuiGameGrid(int w, int h, const char *themePath, const u8 *imagebg, int selected, int offset) :
+GuiGameGrid::GuiGameGrid(int w, int h, const char *themePath, const u8 *imagebg, int selectedGame) :
noCover(nocoverFlat_png, nocoverFlat_png_size)
{
width = w;
diff --git a/source/libwiigui/gui_gamegrid.h b/source/libwiigui/gui_gamegrid.h
index 86a0cc9b..4279a0bc 100644
--- a/source/libwiigui/gui_gamegrid.h
+++ b/source/libwiigui/gui_gamegrid.h
@@ -7,7 +7,7 @@ class GuiImageAsync;
class GuiGameGrid: public GuiElement
{
public:
- GuiGameGrid(int w, int h, const char *themePath, const u8 *imagebg, int selected = 0, int offset = 0);
+ GuiGameGrid(int w, int h, const char *themePath, const u8 *imagebg, int selectedGame = 0);
~GuiGameGrid();
int FindMenuItem(int c, int d);
int GetClickedOption();
diff --git a/source/libwiigui/gui_numpad.cpp b/source/libwiigui/gui_numpad.cpp
index a6596376..5e770305 100644
--- a/source/libwiigui/gui_numpad.cpp
+++ b/source/libwiigui/gui_numpad.cpp
@@ -61,8 +61,7 @@ GuiNumpad::GuiNumpad(char * t, u32 max)
keyBackText = new GuiText("Back", 20, ( GXColor )
{ 0, 0, 0, 0xff});
- keyBack = new GuiButton(keyBackImg, keyBackOverImg, ALIGN_CENTRE, ALIGN_MIDDLE, 90, 80, trigA, keySoundOver,
- keySoundClick, 1);
+ keyBack = new GuiButton(keyBackImg, keyBackOverImg, ALIGN_CENTRE, ALIGN_MIDDLE, 90, 80, trigA, btnSoundOver, btnSoundClick, 1);
keyBack->SetLabel(keyBackText);
keyBack->SetTrigger(trigB);
this->Append(keyBack);
@@ -71,8 +70,7 @@ GuiNumpad::GuiNumpad(char * t, u32 max)
keyClearOverImg = new GuiImage(keyMediumOver);
keyClearText = new GuiText("Clear", 20, ( GXColor )
{ 0, 0, 0, 0xff});
- keyClear = new GuiButton(keyClearImg, keyClearOverImg, ALIGN_CENTRE, ALIGN_MIDDLE, -90, 80, trigA, keySoundOver,
- keySoundClick, 1);
+ keyClear = new GuiButton(keyClearImg, keyClearOverImg, ALIGN_CENTRE, ALIGN_MIDDLE, -90, 80, trigA, btnSoundOver, btnSoundClick, 1);
keyClear->SetLabel(keyClearText);
this->Append(keyClear);
@@ -92,7 +90,7 @@ GuiNumpad::GuiNumpad(char * t, u32 max)
keyTxt[i]->SetAlignment(ALIGN_CENTRE, ALIGN_BOTTOM);
keyTxt[i]->SetPosition(0, -10);
keyBtn[i] = new GuiButton(keyImg[i], keyImgOver[i], ALIGN_CENTRE, ALIGN_MIDDLE, -90 + 90 * col, -70 + 50
- * row, trigA, keySoundOver, keySoundClick, 1);
+ * row, trigA, btnSoundOver, btnSoundClick, 1);
keyBtn[i]->SetLabel(keyTxt[i]);
this->Append(keyBtn[i]);
diff --git a/source/libwiigui/gui_searchbar.h b/source/libwiigui/gui_searchbar.h
index 23bbb82e..32d953f8 100644
--- a/source/libwiigui/gui_searchbar.h
+++ b/source/libwiigui/gui_searchbar.h
@@ -1,3 +1,5 @@
+#ifndef GUI_SEARCHBAR_H_
+#define GUI_SEARCHBAR_H_
#include "gui.h"
class cSearchButton;
@@ -32,3 +34,5 @@ class GuiSearchBar: public GuiWindow
GuiTrigger trig;
};
+
+#endif
\ No newline at end of file
diff --git a/source/lstub.cpp b/source/lstub.cpp
index 1b65b417..5047e27f 100644
--- a/source/lstub.cpp
+++ b/source/lstub.cpp
@@ -1,100 +1,100 @@
-//functions for manipulating the HBC stub by giantpune
-
-#include
-#include
-#include
-#include
-
-#include "lstub.h"
-#include "filelist.h"
-#include "gecko.h"
-
-#include "wad/nandtitle.h"
-
-static char* determineStubTIDLocation()
-{
- u32 *stubID = (u32*) 0x80001818;
-
- //HBC stub 1.0.6 and lower, and stub.bin
- if (stubID[0] == 0x480004c1 && stubID[1] == 0x480004f5)
- return (char *) 0x800024C6;
-
- //HBC stub changed @ version 1.0.7. this file was last updated for HBC 1.0.8
- else if (stubID[0] == 0x48000859 && stubID[1] == 0x4800088d) return (char *) 0x8000286A;
-
- //hexdump( stubID, 0x20 );
- return NULL;
-
-}
-
-s32 Set_Stub(u64 reqID)
-{
- if (NandTitles.IndexOf(reqID) < 0) return WII_EINSTALL;
-
- char *stub = determineStubTIDLocation();
- if (!stub) return -68;
-
- stub[0] = TITLE_7( reqID );
- stub[1] = TITLE_6( reqID );
- stub[8] = TITLE_5( reqID );
- stub[9] = TITLE_4( reqID );
- stub[4] = TITLE_3( reqID );
- stub[5] = TITLE_2( reqID );
- stub[12] = TITLE_1( reqID );
- stub[13] = ((u8) (reqID));
-
- DCFlushRange(stub, 0x10);
-
- return 1;
-
-}
-
-s32 Set_Stub_Split(u32 type, const char* reqID)
-{
- char tmp[4];
- u32 lower;
- sprintf(tmp, "%c%c%c%c", reqID[0], reqID[1], reqID[2], reqID[3]);
- memcpy(&lower, tmp, 4);
- u64 reqID64 = TITLE_ID( type, lower );
- return Set_Stub(reqID64);
-
-}
-
-void loadStub()
-{
- char *stubLoc = (char *) 0x80001800;
- memcpy(stubLoc, stub_bin, stub_bin_size);
- DCFlushRange(stubLoc, stub_bin_size);
-}
-
-u64 getStubDest()
-{
- if (!hbcStubAvailable()) return 0;
-
- char ret[8];
- u64 retu = 0;
-
- char *stub = determineStubTIDLocation();
- if (!stub) return 0;
-
- ret[0] = stub[0];
- ret[1] = stub[1];
- ret[2] = stub[8];
- ret[3] = stub[9];
- ret[4] = stub[4];
- ret[5] = stub[5];
- ret[6] = stub[12];
- ret[7] = stub[13];
-
- memcpy(&retu, ret, 8);
-
- return retu;
-}
-
-u8 hbcStubAvailable()
-{
- char * sig = (char *) 0x80001804;
- return (sig[0] == 'S' && sig[1] == 'T' && sig[2] == 'U' && sig[3] == 'B' && sig[4] == 'H' && sig[5] == 'A'
- && sig[6] == 'X' && sig[7] == 'X') ? 1 : 0;
-}
-
+//functions for manipulating the HBC stub by giantpune
+
+#include
+#include
+#include
+#include
+
+#include "lstub.h"
+#include "filelist.h"
+#include "gecko.h"
+
+#include "wad/nandtitle.h"
+
+static char* determineStubTIDLocation()
+{
+ u32 *stubID = (u32*) 0x80001818;
+
+ //HBC stub 1.0.6 and lower, and stub.bin
+ if (stubID[0] == 0x480004c1 && stubID[1] == 0x480004f5)
+ return (char *) 0x800024C6;
+
+ //HBC stub changed @ version 1.0.7. this file was last updated for HBC 1.0.8
+ else if (stubID[0] == 0x48000859 && stubID[1] == 0x4800088d) return (char *) 0x8000286A;
+
+ //hexdump( stubID, 0x20 );
+ return NULL;
+
+}
+
+s32 Set_Stub(u64 reqID)
+{
+ if (NandTitles.IndexOf(reqID) < 0) return WII_EINSTALL;
+
+ char *stub = determineStubTIDLocation();
+ if (!stub) return -68;
+
+ stub[0] = TITLE_7( reqID );
+ stub[1] = TITLE_6( reqID );
+ stub[8] = TITLE_5( reqID );
+ stub[9] = TITLE_4( reqID );
+ stub[4] = TITLE_3( reqID );
+ stub[5] = TITLE_2( reqID );
+ stub[12] = TITLE_1( reqID );
+ stub[13] = ((u8) (reqID));
+
+ DCFlushRange(stub, 0x10);
+
+ return 1;
+
+}
+
+s32 Set_Stub_Split(u32 type, const char* reqID)
+{
+ char tmp[4];
+ u32 lower;
+ sprintf(tmp, "%c%c%c%c", reqID[0], reqID[1], reqID[2], reqID[3]);
+ memcpy(&lower, tmp, 4);
+ u64 reqID64 = TITLE_ID( type, lower );
+ return Set_Stub(reqID64);
+
+}
+
+void loadStub()
+{
+ char *stubLoc = (char *) 0x80001800;
+ memcpy(stubLoc, stub_bin, stub_bin_size);
+ DCFlushRange(stubLoc, stub_bin_size);
+}
+
+u64 getStubDest()
+{
+ if (!hbcStubAvailable()) return 0;
+
+ char ret[8];
+ u64 retu = 0;
+
+ char *stub = determineStubTIDLocation();
+ if (!stub) return 0;
+
+ ret[0] = stub[0];
+ ret[1] = stub[1];
+ ret[2] = stub[8];
+ ret[3] = stub[9];
+ ret[4] = stub[4];
+ ret[5] = stub[5];
+ ret[6] = stub[12];
+ ret[7] = stub[13];
+
+ memcpy(&retu, ret, 8);
+
+ return retu;
+}
+
+u8 hbcStubAvailable()
+{
+ char * sig = (char *) 0x80001804;
+ return (sig[0] == 'S' && sig[1] == 'T' && sig[2] == 'U' && sig[3] == 'B' && sig[4] == 'H' && sig[5] == 'A'
+ && sig[6] == 'X' && sig[7] == 'X') ? 1 : 0;
+}
+
diff --git a/source/memory/memory.h b/source/memory/memory.h
index f86f16cf..84250b91 100644
--- a/source/memory/memory.h
+++ b/source/memory/memory.h
@@ -1,36 +1,36 @@
-#ifndef __MEMORY_H_
-#define __MEMORY_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#define Disc_ID ((u32*) 0x80000000)
-#define Disc_Region ((u32*) 0x80000003)
-#define Disc_Magic ((u32*) 0x80000018)
-#define Sys_Magic ((u32*) 0x80000020)
-#define Version ((u32*) 0x80000024)
-#define Mem_Size ((u32*) 0x80000028)
-#define Board_Model ((u32*) 0x8000002C)
-#define Arena_L ((u32*) 0x80000030)
-#define Arena_H ((u32*) 0x80000034)
-#define FST ((u32*) 0x80000038)
-#define Max_FST ((u32*) 0x8000003C)
-#define Assembler ((u32*) 0x80000060)
-#define Video_Mode ((u32*) 0x800000CC)
-#define Dev_Debugger ((u32*) 0x800000EC)
-#define Simulated_Mem ((u32*) 0x800000F0)
-#define BI2 ((u32*) 0x800000F4)
-#define Bus_Speed ((u32*) 0x800000F8)
-#define CPU_Speed ((u32*) 0x800000FC)
-#define Online_Check ((u32*) 0x80003180)
-#define GameID_Address ((u32*) 0x80003184)
-
-#define allocate_memory(size) memalign(32, (size+31)&(~31))
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+#ifndef __MEMORY_H_
+#define __MEMORY_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define Disc_ID ((u32*) 0x80000000)
+#define Disc_Region ((u32*) 0x80000003)
+#define Disc_Magic ((u32*) 0x80000018)
+#define Sys_Magic ((u32*) 0x80000020)
+#define Version ((u32*) 0x80000024)
+#define Mem_Size ((u32*) 0x80000028)
+#define Board_Model ((u32*) 0x8000002C)
+#define Arena_L ((u32*) 0x80000030)
+#define Arena_H ((u32*) 0x80000034)
+#define FST ((u32*) 0x80000038)
+#define Max_FST ((u32*) 0x8000003C)
+#define Assembler ((u32*) 0x80000060)
+#define Video_Mode ((u32*) 0x800000CC)
+#define Dev_Debugger ((u32*) 0x800000EC)
+#define Simulated_Mem ((u32*) 0x800000F0)
+#define BI2 ((u32*) 0x800000F4)
+#define Bus_Speed ((u32*) 0x800000F8)
+#define CPU_Speed ((u32*) 0x800000FC)
+#define Online_Check ((u32*) 0x80003180)
+#define GameID_Address ((u32*) 0x80003184)
+
+#define allocate_memory(size) memalign(32, (size+31)&(~31))
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/source/menu/GameBrowseMenu.cpp b/source/menu/GameBrowseMenu.cpp
new file mode 100644
index 00000000..bf1fd71a
--- /dev/null
+++ b/source/menu/GameBrowseMenu.cpp
@@ -0,0 +1,1341 @@
+#include
+#include "GameBrowseMenu.hpp"
+#include "prompts/PromptWindows.h"
+#include "prompts/gameinfo.h"
+#include "prompts/DiscBrowser.h"
+#include "themes/CTheme.h"
+#include "language/gettext.h"
+#include "usbloader/wbfs.h"
+#include "usbloader/wdvd.h"
+#include "usbloader/GameList.h"
+#include "network/networkops.h"
+#include "FileOperations/fileops.h"
+#include "settings/Settings.h"
+#include "settings/CSettings.h"
+#include "settings/CGameStatistics.h"
+#include "settings/CGameSettings.h"
+#include "settings/GameTitles.h"
+#include "utils/StringTools.h"
+#include "GameBootProcess.h"
+#include "utils/rockout.h"
+#include "utils/tools.h"
+#include "fatmounter.h"
+#include "gecko.h"
+#include "menus.h"
+#include "wpad.h"
+#include "sys.h"
+
+extern int load_from_fs;
+extern u8 mountMethod;
+extern bool updateavailable;
+extern struct discHdr *dvdheader;
+extern int cntMissFiles;
+
+static int lastSelectedGame = 0;
+
+GameBrowseMenu::GameBrowseMenu()
+ : GuiWindow(screenwidth, screenheight)
+{
+ float freespace = 0.0, used = 0.0;
+ gameSelectedOld = -1;
+ show_searchwindow = false;
+ gameBrowser = NULL;
+ gameGrid = NULL;
+ gameCarousel = NULL;
+ searchBar = NULL;
+ gameCover = NULL;
+ gameCoverImg = NULL;
+ ScreensaverTimer = 0;
+ memset(theTime, 0, sizeof(theTime));
+ wString oldFilter(gameList.GetCurrentFilter());
+ gameList.FilterList(oldFilter.c_str());
+
+ if (mountMethod != 3 && WBFS_ShowFreeSpace())
+ WBFS_DiskSpace(&used, &freespace);
+
+ btnInstall = Resources::GetImageData("button_install.png");
+ btnInstallOver = Resources::GetImageData("button_install_over.png");
+ btnSettings = Resources::GetImageData("settings_button.png");
+ btnSettingsOver = Resources::GetImageData("settings_button_over.png");
+ btnpwroff = Resources::GetImageData("wiimote_poweroff.png");
+ btnpwroffOver = Resources::GetImageData("wiimote_poweroff_over.png");
+ btnhome = Resources::GetImageData("menu_button.png");
+ btnhomeOver = Resources::GetImageData("menu_button_over.png");
+ btnsdcardOver = Resources::GetImageData("sdcard_over.png");
+ btnsdcard = Resources::GetImageData("sdcard.png");
+
+ imgfavIcon = Resources::GetImageData("favIcon.png");
+ imgfavIcon_gray = Resources::GetImageData("favIcon_gray.png");
+ imgsearchIcon = Resources::GetImageData("searchIcon.png");
+ imgsearchIcon_gray = Resources::GetImageData("searchIcon_gray.png");
+ imgabcIcon = Resources::GetImageData("abcIcon.png");
+ imgrankIcon = Resources::GetImageData("rankIcon.png");
+ imgplayCountIcon = Resources::GetImageData("playCountIcon.png");
+ imgarrangeGrid = Resources::GetImageData("arrangeGrid.png");
+ imgarrangeGrid_gray = Resources::GetImageData("arrangeGrid_gray.png");
+ imgarrangeList = Resources::GetImageData("arrangeList.png");
+ imgarrangeList_gray = Resources::GetImageData("arrangeList_gray.png");
+ imgarrangeCarousel = Resources::GetImageData("arrangeCarousel.png");
+ imgarrangeCarousel_gray = Resources::GetImageData("arrangeCarousel_gray.png");
+ imgdvd = Resources::GetImageData("dvd.png");
+ imgdvd_gray = Resources::GetImageData("dvd_gray.png");
+ imgLock = Resources::GetImageData("lock.png");
+ imgLock_gray = Resources::GetImageData("lock_gray.png");
+ imgUnlock = Resources::GetImageData("lock_gray.png");
+ imgUnlock_gray = Resources::GetImageData("unlock_gray.png");
+
+ homebrewImgData = Resources::GetImageData("browser.png");
+ homebrewImgDataOver = Resources::GetImageData("browser_over.png");
+
+ trigA = new GuiTrigger;
+ trigA->SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
+ trigHome = new GuiTrigger;
+ trigHome->SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, PAD_BUTTON_START);
+ trig2 = new GuiTrigger;
+ trig2->SetButtonOnlyTrigger(-1, WPAD_BUTTON_2 | WPAD_CLASSIC_BUTTON_X, 0);
+ trig1 = new GuiTrigger;
+ trig1->SetButtonOnlyTrigger(-1, WPAD_BUTTON_1 | WPAD_CLASSIC_BUTTON_Y, 0);
+
+ char spaceinfo[30];
+ if (load_from_fs == PART_FS_FAT || mountMethod == 3)
+ {
+ memset(spaceinfo, 0, 30);
+ }
+ else
+ {
+ if (strcmp(Settings.db_language, "JA") == 0)
+ {
+ // needs to be "total...used" for Japanese
+ sprintf(spaceinfo, "%.2fGB %s %.2fGB %s", (freespace + used), tr( "of" ), freespace, tr( "free" ));
+ }
+ else
+ {
+ sprintf(spaceinfo, "%.2fGB %s %.2fGB %s", freespace, tr( "of" ), (freespace + used), tr( "free" ));
+ }
+ }
+ usedSpaceTxt = new GuiText(spaceinfo, 18, Theme.info);
+ usedSpaceTxt->SetAlignment(Theme.hddinfo_align, ALIGN_TOP);
+ usedSpaceTxt->SetPosition(Theme.hddinfo_x, Theme.hddinfo_y);
+
+ gamecntTxt = new GuiText((char *) NULL, 18, Theme.info);
+ gamecntBtn = new GuiButton(100, 18);
+ gamecntBtn->SetAlignment(Theme.gamecount_align, ALIGN_TOP);
+ gamecntBtn->SetPosition(Theme.gamecount_x, Theme.gamecount_y);
+ gamecntBtn->SetLabel(gamecntTxt);
+ gamecntBtn->SetEffectGrow();
+ gamecntBtn->SetTrigger(trigA);
+
+ installBtnTT = new GuiTooltip(tr( "Install a game" ));
+ if (Settings.wsprompt) installBtnTT->SetWidescreen(Settings.widescreen);
+ installBtnTT->SetAlpha(Theme.tooltipAlpha);
+ installBtnImg = new GuiImage(btnInstall);
+ installBtnImgOver = new GuiImage(btnInstallOver);
+ installBtnImg->SetWidescreen(Settings.widescreen);
+ installBtnImgOver->SetWidescreen(Settings.widescreen);
+
+ installBtn = new GuiButton(installBtnImg, installBtnImgOver, ALIGN_LEFT, ALIGN_TOP, Theme.install_x, Theme.install_y,
+ trigA, btnSoundOver, btnSoundClick2, 1, installBtnTT, 24, -30, 0, 5);
+
+ settingsBtnTT = new GuiTooltip(tr( "Settings" ));
+ if (Settings.wsprompt) settingsBtnTT->SetWidescreen(Settings.widescreen);
+ settingsBtnTT->SetAlpha(Theme.tooltipAlpha);
+ settingsBtnImg = new GuiImage(btnSettings);
+ settingsBtnImg->SetWidescreen(Settings.widescreen);
+ settingsBtnImgOver = new GuiImage(btnSettingsOver);
+ settingsBtnImgOver->SetWidescreen(Settings.widescreen);
+ settingsBtn = new GuiButton(settingsBtnImg, settingsBtnImgOver, 0, 3, Theme.setting_x, Theme.setting_y, trigA,
+ btnSoundOver, btnSoundClick2, 1, settingsBtnTT, 65, -30, 0, 5);
+
+ homeBtnTT = new GuiTooltip(tr( "Back to HBC or Wii Menu" ));
+ if (Settings.wsprompt) homeBtnTT->SetWidescreen(Settings.widescreen);
+ settingsBtnTT->SetAlpha(Theme.tooltipAlpha);
+ homeBtnImg = new GuiImage(btnhome);
+ homeBtnImg->SetWidescreen(Settings.widescreen);
+ homeBtnImgOver = new GuiImage(btnhomeOver);
+ homeBtnImgOver->SetWidescreen(Settings.widescreen);
+ homeBtn = new GuiButton(homeBtnImg, homeBtnImgOver, 0, 3, Theme.home_x, Theme.home_y, trigA, btnSoundOver, btnSoundClick2,
+ 1, homeBtnTT, 15, -30, 1, 5);
+ homeBtn->RemoveSoundClick();
+ homeBtn->SetTrigger(trigHome);
+
+ poweroffBtnTT = new GuiTooltip(tr( "Power off the Wii" ));
+ if (Settings.wsprompt) poweroffBtnTT->SetWidescreen(Settings.widescreen);
+ poweroffBtnTT->SetAlpha(Theme.tooltipAlpha);
+ poweroffBtnImg = new GuiImage(btnpwroff);
+ poweroffBtnImgOver = new GuiImage(btnpwroffOver);
+ poweroffBtnImg->SetWidescreen(Settings.widescreen);
+ poweroffBtnImgOver->SetWidescreen(Settings.widescreen);
+ poweroffBtn = new GuiButton(poweroffBtnImg, poweroffBtnImgOver, 0, 3, Theme.power_x, Theme.power_y, trigA,
+ btnSoundOver, btnSoundClick2, 1, poweroffBtnTT, -10, -30, 1, 5);
+
+ sdcardBtnTT = new GuiTooltip(tr( "Reload SD" ));
+ if (Settings.wsprompt) sdcardBtnTT->SetWidescreen(Settings.widescreen);
+ sdcardBtnTT->SetAlpha(Theme.tooltipAlpha);
+ sdcardImg = new GuiImage(btnsdcard);
+ sdcardImgOver = new GuiImage(btnsdcardOver);
+ sdcardImg->SetWidescreen(Settings.widescreen);
+ sdcardImgOver->SetWidescreen(Settings.widescreen);
+ sdcardBtn = new GuiButton(sdcardImg, sdcardImgOver, 0, 3, Theme.sdcard_x, Theme.sdcard_y, trigA, btnSoundOver,
+ btnSoundClick2, 1, sdcardBtnTT, 15, -30, 0, 5);
+
+ gameInfo = new GuiButton(0, 0);
+ gameInfo->SetTrigger(trig2);
+ gameInfo->SetSoundClick(btnSoundClick2);
+
+ favoriteBtnTT = new GuiTooltip(tr( "Display favorites only" ));
+ if (Settings.wsprompt) favoriteBtnTT->SetWidescreen(Settings.widescreen);
+ favoriteBtnTT->SetAlpha(Theme.tooltipAlpha);
+ favoriteBtnImg = new GuiImage(imgfavIcon);
+ favoriteBtnImg->SetWidescreen(Settings.widescreen);
+ favoriteBtnImg_g = new GuiImage(imgfavIcon_gray);
+ favoriteBtnImg_g->SetWidescreen(Settings.widescreen);
+ favoriteBtn = new GuiButton(favoriteBtnImg_g, favoriteBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_favorite_x,
+ Theme.gamelist_favorite_y, trigA, btnSoundOver, btnSoundClick2, 1, favoriteBtnTT, -15, 52, 0, 3);
+
+ searchBtnTT = new GuiTooltip(tr( "Set Search-Filter" ));
+ if (Settings.wsprompt) searchBtnTT->SetWidescreen(Settings.widescreen);
+ searchBtnTT->SetAlpha(Theme.tooltipAlpha);
+ searchBtnImg = new GuiImage(imgsearchIcon);
+ searchBtnImg->SetWidescreen(Settings.widescreen);
+ searchBtnImg_g = new GuiImage(imgsearchIcon_gray);
+ searchBtnImg_g->SetWidescreen(Settings.widescreen);
+ searchBtn = new GuiButton(searchBtnImg_g, searchBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_search_x,
+ Theme.gamelist_search_y, trigA, btnSoundOver, btnSoundClick2, 1, searchBtnTT, -15, 52, 0, 3);
+
+ sortBtnTT = new GuiTooltip(" ");
+ if (Settings.wsprompt) sortBtnTT->SetWidescreen(Settings.widescreen);
+ sortBtnTT->SetAlpha(Theme.tooltipAlpha);
+
+ sortBtnImg = new GuiImage(imgabcIcon);
+ sortBtnImg->SetWidescreen(Settings.widescreen);
+ sortBtn = new GuiButton(sortBtnImg, sortBtnImg, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_abc_x, Theme.gamelist_abc_y, trigA, btnSoundOver, btnSoundClick2, 1, sortBtnTT, -15, 52, 0, 3);
+
+ listBtnTT = new GuiTooltip(tr( "Display as a list" ));
+ if (Settings.wsprompt) listBtnTT->SetWidescreen(Settings.widescreen);
+ listBtnTT->SetAlpha(Theme.tooltipAlpha);
+ listBtnImg = new GuiImage(imgarrangeList);
+ listBtnImg->SetWidescreen(Settings.widescreen);
+ listBtnImg_g = new GuiImage(imgarrangeList_gray);
+ listBtnImg_g->SetWidescreen(Settings.widescreen);
+ listBtn = new GuiButton(listBtnImg_g, listBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_list_x,
+ Theme.gamelist_list_y, trigA, btnSoundOver, btnSoundClick2, 1, listBtnTT, 15, 52, 1, 3);
+
+ gridBtnTT = new GuiTooltip(tr( "Display as a grid" ));
+ if (Settings.wsprompt) gridBtnTT->SetWidescreen(Settings.widescreen);
+ gridBtnTT->SetAlpha(Theme.tooltipAlpha);
+ gridBtnImg = new GuiImage(imgarrangeGrid);
+ gridBtnImg->SetWidescreen(Settings.widescreen);
+ gridBtnImg_g = new GuiImage(imgarrangeGrid_gray);
+ gridBtnImg_g->SetWidescreen(Settings.widescreen);
+ gridBtn = new GuiButton(gridBtnImg_g, gridBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_grid_x,
+ Theme.gamelist_grid_y, trigA, btnSoundOver, btnSoundClick2, 1, gridBtnTT, 15, 52, 1, 3);
+
+ carouselBtnTT = new GuiTooltip(tr( "Display as a carousel" ));
+ if (Settings.wsprompt) carouselBtnTT->SetWidescreen(Settings.widescreen);
+ carouselBtnTT->SetAlpha(Theme.tooltipAlpha);
+ carouselBtnImg = new GuiImage(imgarrangeCarousel);
+ carouselBtnImg->SetWidescreen(Settings.widescreen);
+ carouselBtnImg_g = new GuiImage(imgarrangeCarousel_gray);
+ carouselBtnImg_g->SetWidescreen(Settings.widescreen);
+ carouselBtn = new GuiButton(carouselBtnImg_g, carouselBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_carousel_x,
+ Theme.gamelist_carousel_y, trigA, btnSoundOver, btnSoundClick2, 1, carouselBtnTT, 15, 52, 1, 3);
+
+ lockBtnTT = new GuiTooltip(NULL);
+ if (Settings.wsprompt) lockBtnTT->SetWidescreen(Settings.widescreen);
+ lockBtnTT->SetAlpha(Theme.tooltipAlpha);
+ lockBtnImg = new GuiImage(imgLock);
+ lockBtnImg->SetWidescreen(Settings.widescreen);
+ lockBtnImg_g = new GuiImage(imgLock_gray);
+ lockBtnImg_g->SetWidescreen(Settings.widescreen);
+ lockBtn = new GuiButton(lockBtnImg_g, lockBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_lock_x,
+ Theme.gamelist_lock_y, trigA, btnSoundOver, btnSoundClick2, 1, lockBtnTT, 15, 52, 1, 3);
+
+ unlockBtnImg = new GuiImage(imgUnlock);
+ unlockBtnImg->SetWidescreen(Settings.widescreen);
+ unlockBtnImg_g = new GuiImage(imgUnlock_gray);
+ unlockBtnImg_g->SetWidescreen(Settings.widescreen);
+
+ dvdBtnTT = new GuiTooltip(tr( "Mount DVD drive" ));
+ if (Settings.wsprompt) dvdBtnTT->SetWidescreen(Settings.widescreen);
+ dvdBtnTT->SetAlpha(Theme.tooltipAlpha);
+ dvdBtnImg = new GuiImage(imgdvd);
+ dvdBtnImg->SetWidescreen(Settings.widescreen);
+ dvdBtnImg_g = new GuiImage(dvdBtnImg);
+ dvdBtnImg_g->SetWidescreen(Settings.widescreen);
+ dvdBtn = new GuiButton(dvdBtnImg_g, dvdBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_dvd_x, Theme.gamelist_dvd_y,
+ trigA, btnSoundOver, btnSoundClick2, 1, dvdBtnTT, 15, 52, 1, 3);
+
+ homebrewBtnTT = new GuiTooltip(tr( "Homebrew Launcher" ));
+ if (Settings.wsprompt) homebrewBtnTT->SetWidescreen(Settings.widescreen);
+ homebrewBtnTT->SetAlpha(Theme.tooltipAlpha);
+ homebrewImg = new GuiImage(homebrewImgData);
+ homebrewImgOver = new GuiImage(homebrewImgDataOver);
+ homebrewImg->SetWidescreen(Settings.widescreen);
+ homebrewImgOver->SetWidescreen(Settings.widescreen);
+ homebrewBtn = new GuiButton(homebrewImg, homebrewImgOver, ALIGN_LEFT, ALIGN_TOP, Theme.homebrew_x, Theme.homebrew_y,
+ trigA, btnSoundOver, btnSoundClick2, 1, homebrewBtnTT, 15, -30, 1, 5);
+ //Downloading Covers
+ DownloadBtnTT = new GuiTooltip(tr( "Click to Download Covers" ));
+ if (Settings.wsprompt) DownloadBtnTT->SetWidescreen(Settings.widescreen);
+ DownloadBtnTT->SetAlpha(Theme.tooltipAlpha);
+ DownloadBtn = new GuiButton (0, 0);
+ DownloadBtn->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ DownloadBtn->SetPosition(Theme.covers_x, Theme.covers_y);
+
+ IDBtnTT = new GuiTooltip(tr( "Click to change game ID" ));
+ if (Settings.wsprompt) IDBtnTT->SetWidescreen(Settings.widescreen);
+ IDBtnTT->SetAlpha(Theme.tooltipAlpha);
+ idBtn = new GuiButton(60, 23);
+ idBtn->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ idBtn->SetPosition(Theme.id_x, Theme.id_y);
+
+ clockTimeBack = new GuiText("88:88", 40, (GXColor) {Theme.clock.r, Theme.clock.g, Theme.clock.b, Theme.clock.a / 6});
+ clockTimeBack->SetAlignment(Theme.clock_align, ALIGN_TOP);
+ clockTimeBack->SetPosition(Theme.clock_x, Theme.clock_y);
+ clockTimeBack->SetFont(clock_ttf, clock_ttf_size);
+
+ clockTime = new GuiText(theTime, 40, Theme.clock);
+ clockTime->SetAlignment(Theme.clock_align, ALIGN_TOP);
+ clockTime->SetPosition(Theme.clock_x, Theme.clock_y);
+ clockTime->SetFont(clock_ttf, clock_ttf_size);
+
+ ToolBar.push_back(favoriteBtn);
+ ToolBar.push_back(searchBtn);
+ ToolBar.push_back(sortBtn);
+ ToolBar.push_back(listBtn);
+ ToolBar.push_back(gridBtn);
+ ToolBar.push_back(carouselBtn);
+ ToolBar.push_back(lockBtn);
+ ToolBar.push_back(dvdBtn);
+ SetUpdateCallback(UpdateCallback);
+
+ ReloadBrowser();
+}
+
+GameBrowseMenu::~GameBrowseMenu()
+{
+ ResumeGui();
+
+ SetEffect(EFFECT_FADE, -20);
+ while(parentElement && this->GetEffect() > 0) usleep(100);
+
+ HaltGui();
+ if(parentElement)
+ ((GuiWindow *) parentElement)->Remove(this);
+
+ RemoveAll();
+
+ delete btnInstall;
+ delete btnInstallOver;
+ delete btnSettings;
+ delete btnSettingsOver;
+ delete btnpwroff;
+ delete btnpwroffOver;
+ delete btnhome;
+ delete btnhomeOver;
+ delete btnsdcardOver;
+ delete btnsdcard;
+ delete imgfavIcon;
+ delete imgfavIcon_gray;
+ delete imgsearchIcon;
+ delete imgsearchIcon_gray;
+ delete imgabcIcon;
+ delete imgrankIcon;
+ delete imgplayCountIcon;
+ delete imgarrangeGrid;
+ delete imgarrangeGrid_gray;
+ delete imgarrangeCarousel;
+ delete imgarrangeCarousel_gray;
+ delete imgarrangeList;
+ delete imgarrangeList_gray;
+ delete imgdvd;
+ delete imgdvd_gray;
+ delete imgLock;
+ delete imgLock_gray;
+ delete imgUnlock;
+ delete imgUnlock_gray;
+ delete homebrewImgData;
+ delete homebrewImgDataOver;
+ delete gameCover;
+
+ delete trigA;
+ delete trigHome;
+ delete trig1;
+ delete trig2;
+
+ delete installBtnImg;
+ delete installBtnImgOver;
+ delete settingsBtnImg;
+ delete settingsBtnImgOver;
+ delete homeBtnImg;
+ delete homeBtnImgOver;
+ delete poweroffBtnImg;
+ delete poweroffBtnImgOver;
+ delete sdcardImg;
+ delete sdcardImgOver;
+ delete favoriteBtnImg;
+ delete favoriteBtnImg_g;
+ delete searchBtnImg;
+ delete searchBtnImg_g;
+ delete sortBtnImg;
+ delete listBtnImg;
+ delete listBtnImg_g;
+ delete gridBtnImg;
+ delete gridBtnImg_g;
+ delete carouselBtnImg;
+ delete carouselBtnImg_g;
+ delete lockBtnImg;
+ delete lockBtnImg_g;
+ delete unlockBtnImg;
+ delete unlockBtnImg_g;
+ delete dvdBtnImg;
+ delete dvdBtnImg_g;
+ delete homebrewImg;
+ delete homebrewImgOver;
+ delete gameCoverImg;
+
+ delete usedSpaceTxt;
+ delete gamecntTxt;
+ delete clockTimeBack;
+ delete clockTime;
+
+ delete gamecntBtn;
+ delete installBtn;
+ delete settingsBtn;
+ delete homeBtn;
+ delete poweroffBtn;
+ delete sdcardBtn;
+ delete gameInfo;
+ delete favoriteBtn;
+ delete searchBtn;
+ delete sortBtn;
+ delete listBtn;
+ delete gridBtn;
+ delete carouselBtn;
+ delete lockBtn;
+ delete dvdBtn;
+ delete homebrewBtn;
+ delete DownloadBtn;
+ delete idBtn;
+
+ delete installBtnTT;
+ delete settingsBtnTT;
+ delete homeBtnTT;
+ delete poweroffBtnTT;
+ delete sdcardBtnTT;
+ delete favoriteBtnTT;
+ delete searchBtnTT;
+ delete sortBtnTT;
+ delete listBtnTT;
+ delete gridBtnTT;
+ delete carouselBtnTT;
+ delete lockBtnTT;
+ delete dvdBtnTT;
+ delete homebrewBtnTT;
+ delete DownloadBtnTT;
+ delete IDBtnTT;
+
+ lastSelectedGame = cut_bounds(GetSelectedGame(), 0, gameList.size()-1);
+
+ delete gameBrowser;
+ delete gameGrid;
+ delete gameCarousel;
+ mainWindow->Remove(searchBar);
+ delete searchBar;
+
+ ResumeGui();
+}
+
+void GameBrowseMenu::ReloadBrowser()
+{
+ ResumeGui();
+
+ SetEffect(EFFECT_FADE, -40);
+ while(parentElement && this->GetEffect() > 0) usleep(100);
+
+ HaltGui();
+ RemoveAll();
+ mainWindow->Remove(searchBar);
+
+ gamecntTxt->SetText(fmt("%s: %i", (mountMethod != 3 ? tr( "Games" ) : tr( "Channels" )), gameList.size()));
+
+ const char * sortTTText = NULL;
+ GuiImageData * sortImgData = NULL;
+
+ if(Settings.GameSort & SORT_RANKING)
+ {
+ sortTTText = tr( "Sort by rank" );
+ sortImgData = imgrankIcon;
+ }
+ else if(Settings.GameSort & SORT_PLAYCOUNT)
+ {
+ sortTTText = tr( "Sort order by most played");
+ sortImgData = imgplayCountIcon;
+ }
+ else
+ {
+ sortTTText = tr("Sort alphabetically");
+ sortImgData = imgabcIcon;
+ }
+
+ sortBtnTT->SetText(sortTTText);
+ sortBtnImg->SetImage(sortImgData);
+
+ if (Settings.GameSort & SORT_FAVORITE)
+ {
+ favoriteBtn->SetImage(favoriteBtnImg);
+ favoriteBtn->SetImageOver(favoriteBtnImg);
+ }
+ else
+ {
+ favoriteBtn->SetImage(favoriteBtnImg_g);
+ favoriteBtn->SetImageOver(favoriteBtnImg_g);
+ }
+
+ if (*gameList.GetCurrentFilter())
+ {
+ if (!show_searchwindow) searchBtn->SetEffect(EFFECT_PULSE, 10, 105);
+ searchBtn->SetImage(searchBtnImg);
+ searchBtn->SetImageOver(searchBtnImg);
+ }
+ else if(!show_searchwindow)
+ {
+ searchBtn->SetImage(searchBtnImg_g);
+ searchBtn->SetImageOver(searchBtnImg_g);
+ }
+
+ if (Settings.godmode == 1 && mountMethod != 3) //only make the button have trigger & tooltip if in godmode
+ {
+ DownloadBtn->SetSoundOver(btnSoundOver);
+ DownloadBtn->SetTrigger(0, trigA);
+ DownloadBtn->SetTrigger(1, trig1);
+ DownloadBtn->SetToolTip(DownloadBtnTT, 205, -30);
+ idBtn->SetSoundOver(btnSoundOver);
+ idBtn->SetTrigger(0, trigA);
+ idBtn->SetToolTip(IDBtnTT, 205, -30);
+ }
+ else
+ {
+ DownloadBtn->SetToolTip(NULL, 0, 0);
+ DownloadBtn->SetSoundOver(NULL);
+ DownloadBtn->SetTrigger(0, NULL);
+ DownloadBtn->SetTrigger(1, NULL);
+ idBtn->SetSoundOver(NULL);
+ idBtn->SetTrigger(0, NULL);
+ idBtn->SetToolTip(NULL, 0, 0);
+ }
+
+ if ((Settings.parentalcontrol == 0 && Settings.Parental.enabled == 1) && Settings.godmode)
+ {
+ lockBtn->SetImage(unlockBtnImg_g);
+ lockBtn->SetImageOver(unlockBtnImg_g);
+ lockBtnTT->SetText(tr( "Unlock Parental Control" ));
+ }
+ else
+ {
+ lockBtn->SetImage(lockBtnImg_g);
+ lockBtn->SetImageOver(lockBtnImg_g);
+ lockBtnTT->SetText(tr( "Parental Control disabled" ));
+ }
+
+ if(GetSelectedGame() >= 0)
+ lastSelectedGame = cut_bounds(GetSelectedGame(), 0, gameList.size()-1);
+ else
+ lastSelectedGame = cut_bounds(lastSelectedGame, 0, gameList.size()-1);
+
+ delete gameBrowser;
+ delete gameGrid;
+ delete gameCarousel;
+ delete searchBar;
+ gameBrowser = NULL;
+ gameGrid = NULL;
+ gameCarousel = NULL;
+ searchBar = NULL;
+
+ if (Settings.gameDisplay == LIST_MODE)
+ {
+ DownloadBtn->SetSize(160, 224);
+ listBtn->SetImage(listBtnImg);
+ listBtn->SetImageOver(listBtnImg);
+ gridBtn->SetImage(gridBtnImg_g);
+ gridBtn->SetImageOver(gridBtnImg_g);
+ carouselBtn->SetImage(carouselBtnImg_g);
+ carouselBtn->SetImageOver(carouselBtnImg_g);
+
+ favoriteBtn->SetPosition(Theme.gamelist_favorite_x, Theme.gamelist_favorite_y);
+ searchBtn->SetPosition(Theme.gamelist_search_x, Theme.gamelist_search_y);
+ sortBtn->SetPosition(Theme.gamelist_abc_x, Theme.gamelist_abc_y);
+ listBtn->SetPosition(Theme.gamelist_list_x, Theme.gamelist_list_y);
+ gridBtn->SetPosition(Theme.gamelist_grid_x, Theme.gamelist_grid_y);
+ carouselBtn->SetPosition(Theme.gamelist_carousel_x, Theme.gamelist_carousel_y);
+ lockBtn->SetPosition(Theme.gamelist_lock_x, Theme.gamelist_lock_y);
+ dvdBtn->SetPosition(Theme.gamelist_dvd_x, Theme.gamelist_dvd_y);
+
+ gameBrowser = new GuiGameBrowser(Theme.gamelist_w, Theme.gamelist_h, lastSelectedGame);
+ gameBrowser->SetPosition(Theme.gamelist_x, Theme.gamelist_y);
+ gameBrowser->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
+ }
+ else if (Settings.gameDisplay == GRID_MODE)
+ {
+ DownloadBtn->SetImage(NULL);
+ DownloadBtn->SetSize(0, 0);
+ gridBtn->SetImage(gridBtnImg);
+ gridBtn->SetImageOver(gridBtnImg);
+ listBtn->SetImage(listBtnImg_g);
+ listBtn->SetImageOver(listBtnImg_g);
+ carouselBtn->SetImage(carouselBtnImg_g);
+ carouselBtn->SetImageOver(carouselBtnImg_g);
+
+ favoriteBtn->SetPosition(Theme.gamegrid_favorite_x, Theme.gamegrid_favorite_y);
+ searchBtn->SetPosition(Theme.gamegrid_search_x, Theme.gamegrid_search_y);
+ sortBtn->SetPosition(Theme.gamegrid_abc_x, Theme.gamegrid_abc_y);
+ listBtn->SetPosition(Theme.gamegrid_list_x, Theme.gamegrid_list_y);
+ gridBtn->SetPosition(Theme.gamegrid_grid_x, Theme.gamegrid_grid_y);
+ carouselBtn->SetPosition(Theme.gamegrid_carousel_x, Theme.gamegrid_carousel_y);
+ lockBtn->SetPosition(Theme.gamegrid_lock_x, Theme.gamegrid_lock_y);
+ dvdBtn->SetPosition(Theme.gamegrid_dvd_x, Theme.gamegrid_dvd_y);
+
+ gameGrid = new GuiGameGrid(Theme.gamegrid_w, Theme.gamegrid_h, Settings.theme_path, bg_options_png, lastSelectedGame);
+ gameGrid->SetPosition(Theme.gamegrid_x, Theme.gamegrid_y);
+ gameGrid->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
+ }
+ else if (Settings.gameDisplay == CAROUSEL_MODE)
+ {
+ DownloadBtn->SetImage(NULL);
+ DownloadBtn->SetSize(0, 0);
+ carouselBtn->SetImage(carouselBtnImg);
+ carouselBtn->SetImageOver(carouselBtnImg);
+ listBtn->SetImage(listBtnImg_g);
+ listBtn->SetImageOver(listBtnImg_g);
+ gridBtn->SetImage(gridBtnImg_g);
+ gridBtn->SetImageOver(gridBtnImg_g);
+
+ favoriteBtn->SetPosition(Theme.gamecarousel_favorite_x, Theme.gamecarousel_favorite_y);
+ searchBtn->SetPosition(Theme.gamecarousel_search_x, Theme.gamecarousel_favorite_y);
+ sortBtn->SetPosition(Theme.gamecarousel_abc_x, Theme.gamecarousel_abc_y);
+ listBtn->SetPosition(Theme.gamecarousel_list_x, Theme.gamecarousel_list_y);
+ gridBtn->SetPosition(Theme.gamecarousel_grid_x, Theme.gamecarousel_grid_y);
+ carouselBtn->SetPosition(Theme.gamecarousel_carousel_x, Theme.gamecarousel_carousel_y);
+ lockBtn->SetPosition(Theme.gamecarousel_lock_x, Theme.gamecarousel_lock_y);
+ dvdBtn->SetPosition(Theme.gamecarousel_dvd_x, Theme.gamecarousel_dvd_y);
+
+ gameCarousel = new GuiGameCarousel(640, 400, Settings.theme_path, bg_options_png, lastSelectedGame);
+ gameCarousel->SetPosition(Theme.gamecarousel_x, Theme.gamecarousel_y);
+ gameCarousel->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
+ }
+
+
+ if (Theme.show_hddinfo == -1 || Theme.show_hddinfo == 1) //force show hdd info
+ Append(usedSpaceTxt);
+ if (Theme.show_gamecount == -1 || Theme.show_gamecount == 1) //force show game cnt info
+ Append(gamecntBtn);
+ Append(sdcardBtn);
+ Append(poweroffBtn);
+ Append(gameInfo);
+ if (Settings.godmode) Append(installBtn);
+ Append(homeBtn);
+ Append(settingsBtn);
+ Append(DownloadBtn);
+ Append(idBtn);
+ Append(homebrewBtn);
+
+ Append(favoriteBtn);
+ Append(searchBtn);
+ Append(sortBtn);
+ Append(listBtn);
+ Append(gridBtn);
+ Append(carouselBtn);
+ Append(lockBtn);
+ Append(dvdBtn);
+
+ if ((Settings.hddinfo == CLOCK_HR12) || (Settings.hddinfo == CLOCK_HR24))
+ {
+ Append(clockTimeBack);
+ Append(clockTime);
+ }
+
+ if (gameBrowser)
+ Append(gameBrowser);
+
+ else if (gameGrid)
+ Append(gameGrid);
+
+ else if (gameCarousel)
+ Append(gameCarousel);
+
+ if (show_searchwindow)
+ {
+ searchBar = new GuiSearchBar(gameList.GetAvailableSearchChars());
+ mainWindow->Append(searchBar);
+ }
+
+ SetEffect(EFFECT_FADE, 40);
+ ResumeGui();
+
+ while(parentElement && this->GetEffect() > 0) usleep(100);
+}
+
+int GameBrowseMenu::Show()
+{
+ int menu = MENU_NONE;
+
+ while(menu == MENU_NONE)
+ {
+ usleep(100);
+
+ if (shutdown)
+ Sys_Shutdown();
+ if (reset)
+ Sys_Reboot();
+
+ menu = MainLoop();
+ }
+
+ return menu;
+}
+
+
+int GameBrowseMenu::MainLoop()
+{
+ WDVD_GetCoverStatus(&DiscDriveCover);//for detecting if i disc has been inserted
+
+ //CLOCK
+ if (Settings.hddinfo == CLOCK_HR12 || Settings.hddinfo == CLOCK_HR24)
+ {
+ time_t rawtime = time(0);
+ if(rawtime != lastrawtime)
+ {
+ lastrawtime = rawtime;
+ struct tm * timeinfo = localtime(&rawtime);
+ if (Settings.hddinfo == CLOCK_HR12)
+ {
+ if (rawtime & 1)
+ strftime(theTime, sizeof(theTime), "%I:%M", timeinfo);
+ else
+ strftime(theTime, sizeof(theTime), "%I %M", timeinfo);
+ }
+ if (Settings.hddinfo == CLOCK_HR24)
+ {
+ if (rawtime & 1)
+ strftime(theTime, sizeof(theTime), "%H:%M", timeinfo);
+ else
+ strftime(theTime, sizeof(theTime), "%H %M", timeinfo);
+ }
+ clockTime->SetText(theTime);
+ }
+ }
+
+ if (updateavailable == true)
+ {
+ gprintf("\tUpdate Available\n");
+ SetState(STATE_DISABLED);
+ ProgressUpdateWindow();
+ updateavailable = false;
+ SetState(STATE_DEFAULT);
+ }
+
+ else if (poweroffBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\tpoweroffBtn clicked\n");
+ int choice = WindowPrompt(tr( "How to Shutdown?" ), 0, tr( "Full Shutdown" ), tr( "Shutdown to Idle" ), tr( "Cancel" ));
+ if (choice == 2)
+ Sys_ShutdownToIdle();
+ else if (choice == 1)
+ Sys_ShutdownToStandby();
+
+ poweroffBtn->ResetState();
+ }
+ else if (gamecntBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\tgameCntBtn clicked\n");
+ gamecntBtn->ResetState();
+ if(mountMethod == 3)
+ return MENU_NONE;
+
+ int choice = WindowPrompt(0, fmt("%s %sGameList ?", tr( "Save Game List to" ), Settings.update_path), "TXT", "CSV", tr( "Back" ));
+ if (choice)
+ {
+ if (save_gamelist(choice - 1))
+ WindowPrompt(0, tr( "Saved" ), tr( "OK" ));
+ else
+ WindowPrompt(tr( "Error" ), tr( "Could not save." ), tr( "OK" ));
+ }
+ }
+ else if (homeBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\thomeBtn clicked\n");
+ bgMusic->Pause();
+ int choice = WindowExitPrompt();
+ bgMusic->Resume();
+
+ if (choice == 3)
+ Sys_LoadMenu(); // Back to System Menu
+ else if (choice == 2)
+ Sys_BackToLoader();
+
+ homeBtn->ResetState();
+ }
+ else if (installBtn->GetState() == STATE_CLICKED)
+ {
+ int choice = WindowPrompt(tr( "Install a game" ), 0, tr( "Yes" ), tr( "No" ));
+ if (choice == 1)
+ return MENU_INSTALL;
+
+ installBtn->ResetState();
+ }
+ else if ((DiscDriveCover & 0x02) && (DiscDriveCover != DiscDriveCoverOld))
+ {
+ gprintf("\tNew Disc Detected\n");
+ int choice = WindowPrompt(tr( "New Disc Detected" ), 0, tr( "Install" ), tr( "Mount DVD drive" ), tr( "Cancel" ));
+ if (choice == 1)
+ return MENU_INSTALL;
+ else if (choice == 2)
+ dvdBtn->SetState(STATE_CLICKED);
+ }
+
+ else if (sdcardBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\tsdCardBtn Clicked\n");
+ HaltGui();
+ bgMusic->Pause();
+ SDCard_Init();
+ Settings.Load();
+ bgMusic->Resume();
+ ReloadBrowser();
+ ResumeGui();
+ sdcardBtn->ResetState();
+ }
+
+ else if (DownloadBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\tDownloadBtn Clicked\n");
+ CoverDownload();
+ ReloadBrowser();
+ DownloadBtn->ResetState();
+ }
+
+ else if (settingsBtn->GetState() == STATE_CLICKED)
+ {
+ return MENU_SETTINGS;
+ }
+
+ else if (favoriteBtn->GetState() == STATE_CLICKED)
+ {
+ favoriteBtn->ResetState();
+ gprintf("\tfavoriteBtn Clicked\n");
+
+ if(Settings.GameSort & SORT_FAVORITE)
+ Settings.GameSort &= ~SORT_FAVORITE;
+ else
+ Settings.GameSort |= SORT_FAVORITE;
+ Settings.Save();
+ wString oldFilter(gameList.GetCurrentFilter());
+ gameList.FilterList(oldFilter.c_str());
+ ReloadBrowser();
+ }
+
+ else if (searchBtn->GetState() == STATE_CLICKED && mountMethod != 3)
+ {
+ gprintf("\tsearchBtn Clicked\n");
+ show_searchwindow = !show_searchwindow;
+ wString oldFilter(gameList.GetCurrentFilter());
+ gameList.FilterList(oldFilter.c_str());
+ ReloadBrowser();
+ searchBtn->ResetState();
+ }
+
+ else if (searchBar && (searchChar = searchBar->GetClicked()))
+ {
+ if (searchChar > 27)
+ {
+ int len = gameList.GetCurrentFilter() ? wcslen(gameList.GetCurrentFilter()) : 0;
+ wchar_t newFilter[len + 2];
+ if (gameList.GetCurrentFilter()) wcscpy(newFilter, gameList.GetCurrentFilter());
+ newFilter[len] = searchChar;
+ newFilter[len + 1] = 0;
+
+ gameList.FilterList(newFilter);
+ }
+ else if (searchChar == 7) // Close
+ {
+ show_searchwindow = false;
+ searchBtn->StopEffect();
+ }
+ else if (searchChar == 8) // Backspace
+ {
+ int len = wcslen(gameList.GetCurrentFilter());
+ wchar_t newFilter[len + 1];
+ if (gameList.GetCurrentFilter()) wcscpy(newFilter, gameList.GetCurrentFilter());
+ newFilter[len > 0 ? len - 1 : 0] = 0;
+ gameList.FilterList(newFilter);
+ }
+ ReloadBrowser();
+ return MENU_NONE;
+ }
+
+ else if (sortBtn->GetState() == STATE_CLICKED)
+ {
+ sortBtn->ResetState();
+ gprintf("\tsortBtn clicked\n");
+ if(Settings.GameSort & SORT_ABC)
+ {
+ Settings.GameSort &= ~SORT_ABC;
+ Settings.GameSort |= SORT_RANKING;
+ }
+ else if(Settings.GameSort & SORT_RANKING)
+ {
+ Settings.GameSort &= ~SORT_RANKING;
+ Settings.GameSort |= SORT_PLAYCOUNT;
+ }
+ else if(Settings.GameSort & SORT_PLAYCOUNT)
+ {
+ Settings.GameSort &= ~SORT_PLAYCOUNT;
+ Settings.GameSort |= SORT_ABC;
+ }
+ Settings.Save();
+ wString oldFilter(gameList.GetCurrentFilter());
+ gameList.FilterList(oldFilter.c_str());
+ ReloadBrowser();
+ }
+
+ else if (listBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\tlistBtn Clicked\n");
+ if (Settings.gameDisplay != LIST_MODE)
+ {
+ Settings.gameDisplay = LIST_MODE;
+ Settings.Save();
+ ReloadBrowser();
+ }
+ listBtn->ResetState();
+ }
+
+ else if (gridBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\tgridBtn Clicked\n");
+ if (Settings.gameDisplay != GRID_MODE)
+ {
+ Settings.gameDisplay = GRID_MODE;
+ Settings.Save();
+ ReloadBrowser();
+ }
+ gridBtn->ResetState();
+ }
+
+ else if (carouselBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\tcarouselBtn Clicked\n");
+ if (Settings.gameDisplay != CAROUSEL_MODE)
+ {
+ Settings.gameDisplay = CAROUSEL_MODE;
+ Settings.Save();
+ ReloadBrowser();
+ }
+ carouselBtn->ResetState();
+ }
+
+ else if (homebrewBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\thomebrewBtn Clicked\n");
+ return MENU_HOMEBREWBROWSE;
+ }
+
+ else if (gameInfo->GetState() == STATE_CLICKED && mountMethod != 3)
+ {
+ gprintf("\tgameinfo Clicked\n");
+ int SelectedGame = GetSelectedGame();
+ gameInfo->ResetState();
+ if (SelectedGame >= 0 && SelectedGame < (s32) gameList.size())
+ {
+ rockout(SelectedGame);
+ struct discHdr *header = gameList[SelectedGame];
+ char IDfull[7];
+ snprintf(IDfull, sizeof(IDfull), "%s", (char *) header->id);
+ SetState(STATE_DISABLED);
+ int choice = showGameInfo(IDfull);
+ SetState(STATE_DEFAULT);
+ rockout(SelectedGame, 2);
+ if (choice == 2)
+ homeBtn->SetState(STATE_CLICKED);
+ }
+ }
+ else if (lockBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\tlockBtn clicked\n");
+ lockBtn->ResetState();
+ if (!(Settings.parentalcontrol == 0 && Settings.Parental.enabled == 1))
+ {
+ WindowPrompt(tr( "Parental Control" ), tr( "You don't have Parental Control enabled. If you wish to use Parental Control, enable it in the Wii Settings." ), tr( "OK" ));
+ return MENU_NONE;
+ }
+
+ if (Settings.godmode && WindowPrompt(tr( "Parental Control" ), tr( "Are you sure you want to enable Parent Control?" ), tr( "Yes" ), tr( "No" )) == 1)
+ {
+ Settings.godmode = 0;
+ wString oldFilter(gameList.GetCurrentFilter());
+ gameList.FilterList(oldFilter.c_str());
+ ReloadBrowser();
+ }
+ else
+ {
+ // Require the user to enter the PIN code
+ char pin[5];
+ memset(&pin, 0, 5);
+ int ret = OnScreenNumpad((char *) &pin, 5);
+
+ if (ret <= 0)
+ return MENU_NONE;
+
+ if (memcmp(pin, Settings.Parental.pin, 4) == 0)
+ {
+ Settings.godmode = 1;
+ wString oldFilter(gameList.GetCurrentFilter());
+ gameList.FilterList(oldFilter.c_str());
+ ReloadBrowser();
+ }
+ else
+ WindowPrompt(tr( "Parental Control" ), tr( "Invalid PIN code" ), tr( "OK" ));
+ }
+ }
+ else if (dvdBtn->GetState() == STATE_CLICKED)
+ {
+ gprintf("\tdvdBtn Clicked\n");
+ mountMethod = DiscMount(dvdheader);
+ dvdBtn->ResetState();
+
+ rockout(GetSelectedGame());
+ }
+
+ else if (Settings.gameDisplay == LIST_MODE && idBtn->GetState() == STATE_CLICKED && mountMethod != 3)
+ {
+ gprintf("\tidBtn Clicked\n");
+ struct discHdr * header = gameList[GetSelectedGame()];
+ //enter new game ID
+ char entered[7];
+ snprintf(entered, sizeof(entered), "%s", (char *) header->id);
+ int result = OnScreenKeyboard(entered, sizeof(entered), 0);
+ if (result == 1)
+ {
+ WBFS_ReIDGame(header->id, entered);
+ wString oldFilter(gameList.GetCurrentFilter());
+ gameList.ReadGameList();
+ gameList.FilterList(oldFilter.c_str());
+ ReloadBrowser();
+ }
+ idBtn->ResetState();
+ }
+
+ if (Settings.gameDisplay == LIST_MODE && GetSelectedGame() != gameSelectedOld)
+ {
+ gameSelectedOld = GetSelectedGame();
+ int gameSelected = gameSelectedOld;
+ if(gameSelected >= 0 && gameSelected < (s32) gameList.size())
+ {
+ struct discHdr *header = gameList[gameSelected];
+ LoadCover(header);
+ UpdateGameInfoText(header->id);
+ }
+ }
+
+ gameClicked = GetClickedGame();
+ if ((gameClicked >= 0 && gameClicked < (s32) gameList.size()) || mountMethod == 1 || mountMethod == 2)
+ {
+ OpenClickedGame();
+ }
+
+ if (!IsWpadConnected() && Settings.screensaver != 0)
+ {
+ if(ScreensaverTimer == 0)
+ ScreensaverTimer = time(0);
+ //30s delay to not start screensaver on startup
+ if(time(0)-ScreensaverTimer > 30)
+ WindowScreensaver();
+ }
+ else
+ ScreensaverTimer = 0;
+
+ DiscDriveCoverOld = DiscDriveCover;
+
+ return MENU_NONE;
+}
+
+int GameBrowseMenu::GetSelectedGame()
+{
+ if(gameBrowser)
+ return gameBrowser->GetSelectedOption();
+
+ else if(gameCarousel)
+ return gameCarousel->GetSelectedOption();
+
+ else if(gameGrid)
+ return gameGrid->GetSelectedOption();
+
+ return -1;
+}
+
+int GameBrowseMenu::GetClickedGame()
+{
+ if(gameBrowser)
+ return gameBrowser->GetClickedOption();
+
+ else if(gameCarousel)
+ return gameCarousel->GetClickedOption();
+
+ else if(gameGrid)
+ return gameGrid->GetClickedOption();
+
+ return -1;
+}
+
+void GameBrowseMenu::UpdateGameInfoText(const u8 * gameId)
+{
+ char gameregion[10];
+ char IDfull[7];
+ memset(IDfull, 0, sizeof(IDfull));
+ snprintf(IDfull, sizeof(IDfull), (char *) gameId);
+
+ switch (IDfull[3])
+ {
+ case 'E':
+ sprintf(gameregion, "NTSC U");
+ break;
+ case 'J':
+ sprintf(gameregion, "NTSC J");
+ break;
+ case 'W':
+ sprintf(gameregion, "NTSC T");
+ break;
+ default:
+ case 'K':
+ sprintf(gameregion, "NTSC K");
+ break;
+ case 'P':
+ case 'D':
+ case 'F':
+ case 'I':
+ case 'S':
+ case 'H':
+ case 'U':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ sprintf(gameregion, " PAL ");
+ break;
+ }
+
+ HaltGui();
+ if ((Settings.sinfo == GAMEINFO_ID) || (Settings.sinfo == GAMEINFO_BOTH))
+ {
+ Remove(GameIDTxt);
+ delete GameIDTxt;
+ GameIDTxt = new GuiText(IDfull, 22, Theme.info);
+ GameIDTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ idBtn->SetEffect(EFFECT_FADE, 20);
+ idBtn->SetLabel(GameIDTxt);
+ Append(idBtn);
+ }
+ //don't try to show region for channels because all the custom channels wont follow the rules
+ if (((Settings.sinfo == GAMEINFO_REGION) || (Settings.sinfo == GAMEINFO_BOTH)) && mountMethod != 3)
+ {
+ Remove(GameRegionTxt);
+ delete GameRegionTxt;
+ GameRegionTxt = new GuiText(gameregion, 22, Theme.info);
+ GameRegionTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
+ GameRegionTxt->SetPosition(Theme.region_x, Theme.region_y);
+ GameRegionTxt->SetEffect(EFFECT_FADE, 20);
+ Append(GameRegionTxt);
+ }
+ ResumeGui();
+}
+
+int GameBrowseMenu::OpenClickedGame()
+{
+ int gameSelected = GetSelectedGame();
+ if(gameSelected < 0 || gameSelected >= gameList.size())
+ return -1;
+
+ if (searchBar)
+ {
+ HaltGui();
+ mainWindow->Remove(searchBar);
+ ResumeGui();
+ }
+
+ float size = 0.0;
+ rockout(gameSelected);
+
+ struct discHdr *header = (mountMethod == 1 || mountMethod == 2 ? dvdheader : gameList[gameSelected]);
+ if (!mountMethod)//only get this stuff if we are booting a game from USB
+ WBFS_GameSize(header->id, &size);
+
+ char IDfull[7];
+ snprintf(IDfull, sizeof(IDfull), "%s", (char *) header->id);
+
+ u8 alternatedol = OFF;
+ u8 ocarinaChoice = Settings.ocarina;
+
+ GameCFG* game_cfg = GameSettings.GetGameCFG(header->id);
+ if (game_cfg)
+ {
+ alternatedol = game_cfg->loadalternatedol;
+ ocarinaChoice = game_cfg->ocarina;
+ }
+
+ bool returnHere = true;// prompt to start game
+ int choice = -1;
+
+ while (returnHere)
+ {
+ returnHere = false;
+
+ if (Settings.wiilight == ON)
+ wiilight(1);
+
+ if (Settings.quickboot) //quickboot game
+ choice = 1;
+ else
+ {
+ SetState(STATE_DISABLED);
+ choice = GameWindowPrompt(gameSelected);
+ SetState(STATE_DEFAULT);
+ }
+
+ if (choice == 1)
+ {
+ if (alternatedol == 2)
+ CheckAlternativeDOL(IDfull);
+
+ if (ocarinaChoice != OFF)
+ CheckOcarina(IDfull);
+
+ wiilight(0);
+ GameStatistics.SetPlayCount(header->id, GameStatistics.GetPlayCount(header->id)+1);
+ GameStatistics.Save();
+
+ //Just calling that shuts down everything and starts game
+ BootGame(IDfull);
+ }
+ else if (choice == 2)
+ {
+ wiilight(0);
+
+ header = (mountMethod == 1 || mountMethod == 2 ? dvdheader : gameList[gameSelected]);
+ SetState(STATE_DISABLED);
+ int settret = MenuGameSettings(header);
+ SetState(STATE_DEFAULT);
+ if (settret != MENU_DISCLIST)
+ returnHere = true;
+ else
+ ReloadBrowser();
+
+ rockout(2, GetSelectedGame());
+ }
+ else if(choice == 3)
+ returnHere = true;
+ }
+
+ if (searchBar)
+ {
+ HaltGui();
+ mainWindow->Append(searchBar);
+ ResumeGui();
+ }
+
+ return 0;
+}
+
+void GameBrowseMenu::LoadCover(struct discHdr *header)
+{
+ DownloadBtn->SetImage(NULL);
+ if(gameCover)
+ delete gameCover;
+
+ gameCover = LoadCoverImage(header);
+
+ if (gameCoverImg)
+ delete gameCoverImg;
+
+ gameCoverImg = new GuiImage(gameCover);
+ gameCoverImg->SetWidescreen(Settings.widescreen);
+
+ DownloadBtn->SetImage(gameCoverImg);// put the new image on the download button
+}
+
+void GameBrowseMenu::CheckOcarina(const char * IDfull)
+{
+ char filepath[200];
+ snprintf(filepath, sizeof(filepath), "%s%s.gct", Settings.Cheatcodespath, IDfull);
+ if (CheckFile(filepath) == false)
+ {
+ gprintf("\ttried to load missing gct.\n");
+ sprintf(filepath, "%s %s", filepath, tr( "does not exist! Loading game without cheats." ));
+ WindowPrompt(tr( "Error" ), filepath, NULL, NULL, NULL, NULL, 170);
+ }
+}
+
+void GameBrowseMenu::CheckAlternativeDOL(const char * IDfull)
+{
+ char filepath[200];
+ snprintf(filepath, sizeof(filepath), "%s%s.dol", Settings.dolpath, IDfull);
+ if (CheckFile(filepath) == false)
+ {
+ sprintf(filepath, "%s %s", filepath, tr( "does not exist!" ));
+ WindowPrompt(tr( "Error" ), filepath, tr( "OK" ));
+ }
+}
+
+void GameBrowseMenu::CoverDownload()
+{
+ int choice = WindowPrompt(tr( "Cover Download" ), 0, tr( "Normal Covers" ), tr( "3D Covers" ),
+ tr( "Disc Images" ), tr( "Back" )); // ask for download choice
+ if (choice == 0)
+ return;
+
+ int choice2 = choice;
+ bool missing;
+ missing = SearchMissingImages(choice2);
+ if (IsNetworkInit() == false && missing == true)
+ {
+ WindowPrompt(tr( "Network init error" ), 0, tr( "OK" ));
+ return;
+ }
+
+ if (cntMissFiles > 0)
+ {
+ char tempCnt[40];
+ sprintf(tempCnt, "%i %s", cntMissFiles, tr( "Missing files" ));
+ if (choice != 3)
+ choice = WindowPrompt(tr( "Download Boxart image?" ), tempCnt, tr( "Yes" ), tr( "No" ));
+ else if (choice == 3)
+ choice = WindowPrompt(tr( "Download Discart image?" ), tempCnt, tr( "Yes" ), tr( "No" ));
+ if (choice == 1)
+ {
+ int ret = ProgressDownloadWindow(choice2);
+ if (ret == 0)
+ {
+ WindowPrompt(tr( "Download finished" ), 0, tr( "OK" ));
+ }
+ else
+ {
+ sprintf(tempCnt, "%i %s", ret, tr( "files not found on the server!" ));
+ WindowPrompt(tr( "Download finished" ), tempCnt, tr( "OK" ));
+ }
+ }
+ }
+}
+
+void GameBrowseMenu::UpdateCallback(void * e)
+{
+ //! Draw the selected Icon allways on top
+ GameBrowseMenu * w = (GameBrowseMenu *) e;
+
+ for(u32 i = 0; i < w->ToolBar.size(); ++i)
+ {
+ if(w->ToolBar[i]->GetState() == STATE_SELECTED)
+ {
+ w->Remove(w->ToolBar[i]);
+ w->Append(w->ToolBar[i]);
+ break;
+ }
+ }
+}
diff --git a/source/menu/GameBrowseMenu.hpp b/source/menu/GameBrowseMenu.hpp
new file mode 100644
index 00000000..2d513465
--- /dev/null
+++ b/source/menu/GameBrowseMenu.hpp
@@ -0,0 +1,155 @@
+#ifndef GAMEBROWSEMENU_HPP_
+#define GAMEBROWSEMENU_HPP_
+
+#include "libwiigui/gui.h"
+#include "libwiigui/gui_gamebrowser.h"
+#include "libwiigui/gui_gamegrid.h"
+#include "libwiigui/gui_gamecarousel.h"
+#include "libwiigui/gui_searchbar.h"
+
+class GameBrowseMenu : public GuiWindow
+{
+ public:
+ GameBrowseMenu();
+ ~GameBrowseMenu();
+ int Show();
+ protected:
+ int MainLoop();
+ void ReloadBrowser();
+ int OpenClickedGame();
+ int GetSelectedGame();
+ int GetClickedGame();
+ void UpdateGameInfoText(const u8 * gameId);
+ void LoadCover(struct discHdr *header);
+ void CheckAlternativeDOL(const char * IDfull);
+ void CheckOcarina(const char * IDfull);
+ void CoverDownload();
+ static void UpdateCallback(void * e);
+
+ GuiImageData * btnInstall;
+ GuiImageData * btnInstallOver;
+ GuiImageData * btnSettings;
+ GuiImageData * btnSettingsOver;
+ GuiImageData * btnpwroff;
+ GuiImageData * btnpwroffOver;
+ GuiImageData * btnhome;
+ GuiImageData * btnhomeOver;
+ GuiImageData * btnsdcardOver;
+ GuiImageData * btnsdcard;
+ GuiImageData * imgfavIcon;
+ GuiImageData * imgfavIcon_gray;
+ GuiImageData * imgsearchIcon;
+ GuiImageData * imgsearchIcon_gray;
+ GuiImageData * imgabcIcon;
+ GuiImageData * imgrankIcon;
+ GuiImageData * imgplayCountIcon;
+ GuiImageData * imgarrangeGrid;
+ GuiImageData * imgarrangeGrid_gray;
+ GuiImageData * imgarrangeCarousel;
+ GuiImageData * imgarrangeCarousel_gray;
+ GuiImageData * imgarrangeList;
+ GuiImageData * imgarrangeList_gray;
+ GuiImageData * imgdvd;
+ GuiImageData * imgdvd_gray;
+ GuiImageData * imgLock;
+ GuiImageData * imgLock_gray;
+ GuiImageData * imgUnlock;
+ GuiImageData * imgUnlock_gray;
+ GuiImageData * homebrewImgData;
+ GuiImageData * homebrewImgDataOver;
+ GuiImageData * gameCover;
+
+ GuiTrigger * trigA;
+ GuiTrigger * trigHome;
+ GuiTrigger * trig1;
+ GuiTrigger * trig2;
+
+ GuiImage * installBtnImg;
+ GuiImage * installBtnImgOver;
+ GuiImage * settingsBtnImg;
+ GuiImage * settingsBtnImgOver;
+ GuiImage * homeBtnImg;
+ GuiImage * homeBtnImgOver;
+ GuiImage * poweroffBtnImg;
+ GuiImage * poweroffBtnImgOver;
+ GuiImage * sdcardImg;
+ GuiImage * sdcardImgOver;
+ GuiImage * favoriteBtnImg;
+ GuiImage * favoriteBtnImg_g;
+ GuiImage * searchBtnImg;
+ GuiImage * searchBtnImg_g;
+ GuiImage * sortBtnImg;
+ GuiImage * listBtnImg;
+ GuiImage * listBtnImg_g;
+ GuiImage * gridBtnImg;
+ GuiImage * gridBtnImg_g;
+ GuiImage * carouselBtnImg;
+ GuiImage * carouselBtnImg_g;
+ GuiImage * lockBtnImg;
+ GuiImage * lockBtnImg_g;
+ GuiImage * unlockBtnImg;
+ GuiImage * unlockBtnImg_g;
+ GuiImage * dvdBtnImg;
+ GuiImage * dvdBtnImg_g;
+ GuiImage * homebrewImg;
+ GuiImage * homebrewImgOver;
+ GuiImage * gameCoverImg;
+
+ GuiText * usedSpaceTxt;
+ GuiText * gamecntTxt;
+ GuiText * clockTimeBack;
+ GuiText * clockTime;
+
+ GuiButton * gamecntBtn;
+ GuiButton * installBtn;
+ GuiButton * settingsBtn;
+ GuiButton * homeBtn;
+ GuiButton * poweroffBtn;
+ GuiButton * sdcardBtn;
+ GuiButton * gameInfo;
+ GuiButton * favoriteBtn;
+ GuiButton * searchBtn;
+ GuiButton * sortBtn;
+ GuiButton * listBtn;
+ GuiButton * gridBtn;
+ GuiButton * carouselBtn;
+ GuiButton * lockBtn;
+ GuiButton * dvdBtn;
+ GuiButton * homebrewBtn;
+ GuiButton * DownloadBtn;
+ GuiButton * idBtn;
+
+ GuiTooltip * installBtnTT;
+ GuiTooltip * settingsBtnTT;
+ GuiTooltip * homeBtnTT;
+ GuiTooltip * poweroffBtnTT;
+ GuiTooltip * sdcardBtnTT;
+ GuiTooltip * favoriteBtnTT;
+ GuiTooltip * searchBtnTT;
+ GuiTooltip * sortBtnTT;
+ GuiTooltip * listBtnTT;
+ GuiTooltip * gridBtnTT;
+ GuiTooltip * carouselBtnTT;
+ GuiTooltip * lockBtnTT;
+ GuiTooltip * dvdBtnTT;
+ GuiTooltip * homebrewBtnTT;
+ GuiTooltip * DownloadBtnTT;
+ GuiTooltip * IDBtnTT;
+
+ GuiGameBrowser * gameBrowser;
+ GuiGameGrid * gameGrid;
+ GuiGameCarousel * gameCarousel;
+ GuiSearchBar * searchBar;
+ char theTime[50];
+ u32 DiscDriveCover;
+ u32 DiscDriveCoverOld;
+ int gameSelectedOld;
+ int gameClicked;
+ time_t lastrawtime;
+ time_t ScreensaverTimer;
+ bool show_searchwindow;
+ wchar_t searchChar;
+ std::vector ToolBar;
+};
+
+#endif
diff --git a/source/menu/menu_disclist.cpp b/source/menu/menu_disclist.cpp
index 3453401c..4060b7a6 100644
--- a/source/menu/menu_disclist.cpp
+++ b/source/menu/menu_disclist.cpp
@@ -1,1642 +1,19 @@
+#include "GameBrowseMenu.hpp"
#include "menus.h"
-#include "fatmounter.h"
-#include "usbloader/wdvd.h"
-#include "usbloader/GameList.h"
-#include "usbloader/wbfs.h"
-#include "patches/fst.h"
-#include "network/networkops.h"
-#include "prompts/gameinfo.h"
-#include "prompts/DiscBrowser.h"
-#include "prompts/TitleBrowser.h"
-#include "settings/Settings.h"
-#include "settings/CGameSettings.h"
-#include "settings/CGameStatistics.h"
-#include "settings/GameTitles.h"
-#include "themes/CTheme.h"
-#include "GameBootProcess.h"
-#include "wpad.h"
-#include "sys.h"
-
-#include "libwiigui/gui_gamebrowser.h"
-#include "libwiigui/gui_gamegrid.h"
-#include "libwiigui/gui_gamecarousel.h"
-#include "libwiigui/gui_searchbar.h"
-
-extern u8 * gameScreenTex;
-extern struct discHdr *dvdheader;
-extern u8 mountMethod;
-extern int load_from_fs;
-extern s32 gameSelected;
-extern GuiText * GameIDTxt;
-extern GuiText * GameRegionTxt;
-extern const u8 data1;
-extern FreeTypeGX *fontClock;
-extern bool updateavailable;
-extern int cntMissFiles;
-extern GuiImageData * cover;
-extern GuiImage * coverImg;
-extern GuiImageData * pointer[4];
-extern bool altdoldefault;
-extern GuiImage * bgImg;
-
-GuiButton *Toolbar[9];
-int idiotFlag = -1;
-char idiotChar[50];
-
-void DiscListWinUpdateCallback(void * e);
-void rockout(int f = 0);
-
-static u32 startat = 0;
/****************************************************************************
* MenuDiscList
***************************************************************************/
int MenuDiscList()
{
- gprintf("MenuDiscList()\n");
- gameList.FilterList();
- int offset = MIN( ( int )startat, gameList.size() - 1 );
- startat = offset;
- int datagB = 0;
- int dataed = -1;
- int selectImg1 = 0;
- char ID[4];
- char IDfull[7];
- u32 covert = 0;
- if (!dvdheader) dvdheader = new struct discHdr;
- u8 mountMethodOLD = 0;
+ int retMenu = MENU_NONE;
- WDVD_GetCoverStatus(&covert);
- u32 covertOld = covert;
+ GameBrowseMenu * Menu = new GameBrowseMenu();
+ mainWindow->Append(Menu);
- f32 freespace, used, size = 0.0;
- wchar_t searchChar;
- //SCREENSAVER
- int check = 0; //to skip the first cycle when wiimote isn't completely connected
+ retMenu = Menu->Show();
- datagB = 0;
- int menu = MENU_NONE;
+ delete Menu;
- u32 nolist;
- int choice = 0, selectedold = 100;
- s32 ret;
-
- //CLOCK
- struct tm * timeinfo;
- char theTime[80] = "";
- time_t lastrawtime = 0;
-
- if (mountMethod != 3 && WBFS_ShowFreeSpace())
- {
- WBFS_DiskSpace(&used, &freespace);
- }
-
- if (!gameList.size()) //if there is no list of games to display
- {
- nolist = 1;
- }
-
- GuiImageData btnInstall(Resources::GetFile("button_install.png"), Resources::GetFileSize("button_install.png"));
- GuiImageData btnInstallOver(Resources::GetFile("button_install_over.png"), Resources::GetFileSize("button_install_over.png"));
-
- GuiImageData btnSettings(Resources::GetFile("settings_button.png"), Resources::GetFileSize("settings_button.png"));
- GuiImageData btnSettingsOver(Resources::GetFile("settings_button_over.png"), Resources::GetFileSize("settings_button_over.png"));
-
- GuiImageData btnpwroff(Resources::GetFile("wiimote_poweroff.png"), Resources::GetFileSize("wiimote_poweroff.png"));
- GuiImageData btnpwroffOver(Resources::GetFile("wiimote_poweroff_over.png"), Resources::GetFileSize("wiimote_poweroff_over.png"));
- GuiImageData btnhome(Resources::GetFile("menu_button.png"), Resources::GetFileSize("menu_button.png"));
- GuiImageData btnhomeOver(Resources::GetFile("menu_button_over.png"), Resources::GetFileSize("menu_button_over.png"));
- GuiImageData btnsdcardOver(Resources::GetFile("sdcard_over.png"), Resources::GetFileSize("sdcard_over.png"));
- GuiImageData btnsdcard(Resources::GetFile("sdcard.png"), Resources::GetFileSize("sdcard.png"));
-
- GuiImageData imgfavIcon(Resources::GetFile("favIcon.png"), Resources::GetFileSize("favIcon.png"));
- GuiImageData imgfavIcon_gray(Resources::GetFile("favIcon_gray.png"), Resources::GetFileSize("favIcon_gray.png"));
- GuiImageData imgsearchIcon(Resources::GetFile("searchIcon.png"), Resources::GetFileSize("searchIcon.png"));
- GuiImageData imgsearchIcon_gray(Resources::GetFile("searchIcon_gray.png"), Resources::GetFileSize("searchIcon_gray.png"));
- GuiImageData imgabcIcon(Resources::GetFile("abcIcon.png"), Resources::GetFileSize("abcIcon.png"));
- GuiImageData imgrankIcon(Resources::GetFile("rankIcon.png"), Resources::GetFileSize("rankIcon.png"));
- GuiImageData imgplayCountIcon(Resources::GetFile("playCountIcon.png"), Resources::GetFileSize("playCountIcon.png"));
- GuiImageData imgarrangeGrid(Resources::GetFile("arrangeGrid.png"), Resources::GetFileSize("arrangeGrid.png"));
- GuiImageData imgarrangeGrid_gray(Resources::GetFile("arrangeGrid_gray.png"), Resources::GetFileSize("arrangeGrid_gray.png"));
- GuiImageData imgarrangeList(Resources::GetFile("arrangeList.png"), Resources::GetFileSize("arrangeList.png"));
- GuiImageData imgarrangeList_gray(Resources::GetFile("arrangeList_gray.png"), Resources::GetFileSize("arrangeList_gray.png"));
- GuiImageData imgarrangeCarousel(Resources::GetFile("arrangeCarousel.png"), Resources::GetFileSize("arrangeCarousel.png"));
- GuiImageData imgarrangeCarousel_gray(Resources::GetFile("arrangeCarousel_gray.png"), Resources::GetFileSize("arrangeCarousel_gray.png"));
-
- GuiImageData imgLock(Resources::GetFile("lock.png"), Resources::GetFileSize("lock.png"));
- GuiImageData imgLock_gray(Resources::GetFile("lock_gray.png"), Resources::GetFileSize("lock_gray.png"));
- GuiImageData imgUnlock(Resources::GetFile("lock_gray.png"), Resources::GetFileSize("lock_gray.png"));
- GuiImageData imgUnlock_gray(Resources::GetFile("unlock_gray.png"), Resources::GetFileSize("unlock_gray.png"));
-
- GuiImageData imgdvd(Resources::GetFile("dvd.png"), Resources::GetFileSize("dvd.png"));
- GuiImageData imgdvd_gray(Resources::GetFile("dvd_gray.png"), Resources::GetFileSize("dvd_gray.png"));
-
- GuiImageData homebrewImgData(Resources::GetFile("browser.png"), Resources::GetFileSize("browser.png"));
- GuiImageData homebrewImgDataOver(Resources::GetFile("browser_over.png"), Resources::GetFileSize("browser_over.png"));
-
- GuiTrigger trigA;
- trigA.SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A);
- GuiTrigger trigHome;
- trigHome.SetButtonOnlyTrigger(-1, WPAD_BUTTON_HOME | WPAD_CLASSIC_BUTTON_HOME, PAD_BUTTON_START);
- GuiTrigger trig2;
- trig2.SetButtonOnlyTrigger(-1, WPAD_BUTTON_2 | WPAD_CLASSIC_BUTTON_X, 0);
- GuiTrigger trig1;
- trig1.SetButtonOnlyTrigger(-1, WPAD_BUTTON_1 | WPAD_CLASSIC_BUTTON_Y, 0);
- GuiTrigger trigZ;
- trigZ.SetButtonOnlyTrigger(-1, WPAD_NUNCHUK_BUTTON_Z | WPAD_CLASSIC_BUTTON_ZL, PAD_TRIGGER_Z);
-
- GuiButton screenShotBtn(0, 0);
- screenShotBtn.SetPosition(0, 0);
- screenShotBtn.SetTrigger(&trigZ);
-
- char spaceinfo[30];
- if (load_from_fs == PART_FS_FAT)
- {
- memset(spaceinfo, 0, 30);
- }
- else
- {
- if (!strcmp(Settings.db_language, "JA"))
- {
- // needs to be "total...used" for Japanese
- sprintf(spaceinfo, (mountMethod != 3 ? "%.2fGB %s %.2fGB %s" : " "), (freespace + used), tr( "of" ),
- freespace, tr( "free" ));
- }
- else
- {
- sprintf(spaceinfo, (mountMethod != 3 ? "%.2fGB %s %.2fGB %s" : " "), freespace, tr( "of" ), (freespace
- + used), tr( "free" ));
- }
- }
- GuiText usedSpaceTxt(spaceinfo, 18, Theme.info);
- usedSpaceTxt.SetAlignment(Theme.hddinfo_align, ALIGN_TOP);
- usedSpaceTxt.SetPosition(Theme.hddinfo_x, Theme.hddinfo_y);
-
- char GamesCnt[15];
- sprintf(GamesCnt, "%s: %i", (mountMethod != 3 ? tr( "Games" ) : tr( "Channels" )), gameList.size());
- GuiText gamecntTxt(GamesCnt, 18, Theme.info);
-
- GuiButton gamecntBtn(100, 18);
- gamecntBtn.SetAlignment(Theme.gamecount_align, ALIGN_TOP);
- gamecntBtn.SetPosition(Theme.gamecount_x, Theme.gamecount_y);
- gamecntBtn.SetLabel(&gamecntTxt);
- gamecntBtn.SetEffectGrow();
- gamecntBtn.SetTrigger(&trigA);
-
- GuiTooltip installBtnTT(tr( "Install a game" ));
- if (Settings.wsprompt) installBtnTT.SetWidescreen(Settings.widescreen);
- installBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage installBtnImg(&btnInstall);
- GuiImage installBtnImgOver(&btnInstallOver);
- installBtnImg.SetWidescreen(Settings.widescreen);
- installBtnImgOver.SetWidescreen(Settings.widescreen);
-
- GuiButton installBtn(&installBtnImg, &installBtnImgOver, ALIGN_LEFT, ALIGN_TOP, Theme.install_x, Theme.install_y,
- &trigA, btnSoundOver, btnSoundClick2, 1, &installBtnTT, 24, -30, 0, 5);
-
- GuiTooltip settingsBtnTT(tr( "Settings" ));
- if (Settings.wsprompt) settingsBtnTT.SetWidescreen(Settings.widescreen);
- settingsBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage settingsBtnImg(&btnSettings);
- settingsBtnImg.SetWidescreen(Settings.widescreen);
- GuiImage settingsBtnImgOver(&btnSettingsOver);
- settingsBtnImgOver.SetWidescreen(Settings.widescreen);
- GuiButton settingsBtn(&settingsBtnImg, &settingsBtnImgOver, 0, 3, Theme.setting_x, Theme.setting_y, &trigA,
- btnSoundOver, btnSoundClick2, 1, &settingsBtnTT, 65, -30, 0, 5);
-
- GuiTooltip homeBtnTT(tr( "Back to HBC or Wii Menu" ));
- if (Settings.wsprompt) homeBtnTT.SetWidescreen(Settings.widescreen);
- settingsBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage homeBtnImg(&btnhome);
- homeBtnImg.SetWidescreen(Settings.widescreen);
- GuiImage homeBtnImgOver(&btnhomeOver);
- homeBtnImgOver.SetWidescreen(Settings.widescreen);
- GuiButton homeBtn(&homeBtnImg, &homeBtnImgOver, 0, 3, Theme.home_x, Theme.home_y, &trigA, btnSoundOver, btnSoundClick2,
- 1, &homeBtnTT, 15, -30, 1, 5);
- homeBtn.RemoveSoundClick();
- homeBtn.SetTrigger(&trigHome);
-
- GuiTooltip poweroffBtnTT(tr( "Power off the Wii" ));
- if (Settings.wsprompt) poweroffBtnTT.SetWidescreen(Settings.widescreen);
- poweroffBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage poweroffBtnImg(&btnpwroff);
- GuiImage poweroffBtnImgOver(&btnpwroffOver);
- poweroffBtnImg.SetWidescreen(Settings.widescreen);
- poweroffBtnImgOver.SetWidescreen(Settings.widescreen);
- GuiButton poweroffBtn(&poweroffBtnImg, &poweroffBtnImgOver, 0, 3, Theme.power_x, Theme.power_y, &trigA,
- btnSoundOver, btnSoundClick2, 1, &poweroffBtnTT, -10, -30, 1, 5);
-
- GuiTooltip sdcardBtnTT(tr( "Reload SD" ));
- if (Settings.wsprompt) sdcardBtnTT.SetWidescreen(Settings.widescreen);
- sdcardBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage sdcardImg(&btnsdcard);
- GuiImage sdcardImgOver(&btnsdcardOver);
- sdcardImg.SetWidescreen(Settings.widescreen);
- sdcardImgOver.SetWidescreen(Settings.widescreen);
- GuiButton sdcardBtn(&sdcardImg, &sdcardImgOver, 0, 3, Theme.sdcard_x, Theme.sdcard_y, &trigA, btnSoundOver,
- btnSoundClick2, 1, &sdcardBtnTT, 15, -30, 0, 5);
-
- GuiButton gameInfo(0, 0);
- gameInfo.SetTrigger(&trig2);
- gameInfo.SetSoundClick(btnSoundClick2);
-
- GuiTooltip favoriteBtnTT(tr( "Display favorites only" ));
- if (Settings.wsprompt) favoriteBtnTT.SetWidescreen(Settings.widescreen);
- favoriteBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage favoriteBtnImg(&imgfavIcon);
- favoriteBtnImg.SetWidescreen(Settings.widescreen);
- GuiImage favoriteBtnImg_g(&imgfavIcon_gray);
- favoriteBtnImg_g.SetWidescreen(Settings.widescreen);
- GuiButton favoriteBtn(&favoriteBtnImg_g, &favoriteBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_favorite_x,
- Theme.gamelist_favorite_y, &trigA, btnSoundOver, btnSoundClick2, 1, &favoriteBtnTT, -15, 52, 0, 3);
- favoriteBtn.SetAlpha(180);
-
- GuiTooltip searchBtnTT(tr( "Set Search-Filter" ));
- if (Settings.wsprompt) searchBtnTT.SetWidescreen(Settings.widescreen);
- searchBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage searchBtnImg(&imgsearchIcon);
- searchBtnImg.SetWidescreen(Settings.widescreen);
- GuiImage searchBtnImg_g(&imgsearchIcon_gray);
- searchBtnImg_g.SetWidescreen(Settings.widescreen);
- GuiButton searchBtn(&searchBtnImg_g, &searchBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_search_x,
- Theme.gamelist_search_y, &trigA, btnSoundOver, btnSoundClick2, 1, &searchBtnTT, -15, 52, 0, 3);
- searchBtn.SetAlpha(180);
-
- const char * sortTTText = NULL;
- GuiImageData * sortImgData = NULL;
-
- if(Settings.GameSort & SORT_RANKING)
- {
- sortTTText = tr( "Sort by rank" );
- sortImgData = &imgrankIcon;
- }
- else if(Settings.GameSort & SORT_PLAYCOUNT)
- {
- sortTTText = tr( "Sort order by most played");
- sortImgData = &imgplayCountIcon;
- }
- else
- {
- sortTTText = tr("Sort alphabetically");
- sortImgData = &imgabcIcon;
- }
-
- GuiTooltip sortBtnTT(sortTTText);
- if (Settings.wsprompt) sortBtnTT.SetWidescreen(Settings.widescreen);
- sortBtnTT.SetAlpha(Theme.tooltipAlpha);
-
- GuiImage sortBtnImg(sortImgData);
- sortBtnImg.SetWidescreen(Settings.widescreen);
- GuiButton sortBtn(&sortBtnImg, &sortBtnImg, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_abc_x, Theme.gamelist_abc_y, &trigA, btnSoundOver, btnSoundClick2, 1, &sortBtnTT, -15, 52, 0, 3);
-
- GuiTooltip listBtnTT(tr( "Display as a list" ));
- if (Settings.wsprompt) listBtnTT.SetWidescreen(Settings.widescreen);
- listBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage listBtnImg(&imgarrangeList);
- listBtnImg.SetWidescreen(Settings.widescreen);
- GuiImage listBtnImg_g(&imgarrangeList_gray);
- listBtnImg_g.SetWidescreen(Settings.widescreen);
- GuiButton listBtn(&listBtnImg_g, &listBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_list_x,
- Theme.gamelist_list_y, &trigA, btnSoundOver, btnSoundClick2, 1, &listBtnTT, 15, 52, 1, 3);
- listBtn.SetAlpha(180);
-
- GuiTooltip gridBtnTT(tr( "Display as a grid" ));
- if (Settings.wsprompt) gridBtnTT.SetWidescreen(Settings.widescreen);
- gridBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage gridBtnImg(&imgarrangeGrid);
- gridBtnImg.SetWidescreen(Settings.widescreen);
- GuiImage gridBtnImg_g(&imgarrangeGrid_gray);
- gridBtnImg_g.SetWidescreen(Settings.widescreen);
- GuiButton gridBtn(&gridBtnImg_g, &gridBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_grid_x,
- Theme.gamelist_grid_y, &trigA, btnSoundOver, btnSoundClick2, 1, &gridBtnTT, 15, 52, 1, 3);
- gridBtn.SetAlpha(180);
-
- GuiTooltip carouselBtnTT(tr( "Display as a carousel" ));
- if (Settings.wsprompt) carouselBtnTT.SetWidescreen(Settings.widescreen);
- carouselBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage carouselBtnImg(&imgarrangeCarousel);
- carouselBtnImg.SetWidescreen(Settings.widescreen);
- GuiImage carouselBtnImg_g(&imgarrangeCarousel_gray);
- carouselBtnImg_g.SetWidescreen(Settings.widescreen);
- GuiButton carouselBtn(&carouselBtnImg_g, &carouselBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_carousel_x,
- Theme.gamelist_carousel_y, &trigA, btnSoundOver, btnSoundClick2, 1, &carouselBtnTT, 15, 52, 1, 3);
- carouselBtn.SetAlpha(180);
-
- bool canUnlock = (Settings.parentalcontrol == 0 && Settings.Parental.enabled == 1);
-
- GuiTooltip lockBtnTT(canUnlock ? tr( "Unlock Parental Control" ) : tr( "Parental Control disabled" ));
- if (Settings.wsprompt) lockBtnTT.SetWidescreen(Settings.widescreen);
- lockBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage lockBtnImg(&imgLock);
- lockBtnImg.SetWidescreen(Settings.widescreen);
- GuiImage lockBtnImg_g(&imgLock_gray);
- lockBtnImg_g.SetWidescreen(Settings.widescreen);
- GuiButton lockBtn(&lockBtnImg_g, &lockBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_lock_x,
- Theme.gamelist_lock_y, &trigA, btnSoundOver, btnSoundClick2, 1, &lockBtnTT, 15, 52, 1, 3);
- lockBtn.SetAlpha(180);
-
- GuiTooltip unlockBtnTT(tr( "Enable Parental Control" ));
- if (Settings.wsprompt) unlockBtnTT.SetWidescreen(Settings.widescreen);
- unlockBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage unlockBtnImg(&imgUnlock);
- unlockBtnImg.SetWidescreen(Settings.widescreen);
- GuiImage unlockBtnImg_g(&imgUnlock_gray);
- unlockBtnImg_g.SetWidescreen(Settings.widescreen);
-
- if (canUnlock && Settings.godmode)
- {
- lockBtn.SetImage(&unlockBtnImg_g);
- lockBtn.SetImageOver(&unlockBtnImg_g);
- lockBtn.SetToolTip(&unlockBtnTT, 15, 52, 1, 3);
- }
-
- GuiTooltip dvdBtnTT(tr( "Mount DVD drive" ));
- if (Settings.wsprompt) dvdBtnTT.SetWidescreen(Settings.widescreen);
- dvdBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage dvdBtnImg(&imgdvd);
- dvdBtnImg.SetWidescreen(Settings.widescreen);
- GuiImage dvdBtnImg_g(dvdBtnImg);
- dvdBtnImg_g.SetWidescreen(Settings.widescreen);
- GuiButton dvdBtn(&dvdBtnImg_g, &dvdBtnImg_g, ALIGN_LEFT, ALIGN_TOP, Theme.gamelist_dvd_x, Theme.gamelist_dvd_y,
- &trigA, btnSoundOver, btnSoundClick2, 1, &dvdBtnTT, 15, 52, 1, 3);
- dvdBtn.SetAlpha(180);
-
- GuiTooltip homebrewBtnTT(tr( "Homebrew Launcher" ));
- if (Settings.wsprompt) homebrewBtnTT.SetWidescreen(Settings.widescreen);
- homebrewBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiImage homebrewImg(&homebrewImgData);
- GuiImage homebrewImgOver(&homebrewImgDataOver);
- homebrewImg.SetWidescreen(Settings.widescreen);
- homebrewImgOver.SetWidescreen(Settings.widescreen);
- GuiButton homebrewBtn(&homebrewImg, &homebrewImgOver, ALIGN_LEFT, ALIGN_TOP, Theme.homebrew_x, Theme.homebrew_y,
- &trigA, btnSoundOver, btnSoundClick2, 1, &homebrewBtnTT, 15, -30, 1, 5);
-
- if (Settings.GameSort & SORT_FAVORITE)
- {
- favoriteBtn.SetImage(&favoriteBtnImg);
- favoriteBtn.SetImageOver(&favoriteBtnImg);
- favoriteBtn.SetAlpha(255);
- }
- static bool show_searchwindow = false;
- if (*gameList.GetCurrentFilter())
- {
- if (show_searchwindow && gameList.size() == 1) show_searchwindow = false;
- if (!show_searchwindow) searchBtn.SetEffect(EFFECT_PULSE, 10, 105);
- searchBtn.SetImage(&searchBtnImg);
- searchBtn.SetImageOver(&searchBtnImg);
- searchBtn.SetAlpha(255);
- }
- if (Settings.gameDisplay == LIST_MODE)
- {
- listBtn.SetImage(&listBtnImg);
- listBtn.SetImageOver(&listBtnImg);
- listBtn.SetAlpha(255);
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- gridBtn.SetImage(&gridBtnImg);
- gridBtn.SetImageOver(&gridBtnImg);
- gridBtn.SetAlpha(255);
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- carouselBtn.SetImage(&carouselBtnImg);
- carouselBtn.SetImageOver(&carouselBtnImg);
- carouselBtn.SetAlpha(255);
- }
-
- if (Settings.gameDisplay == LIST_MODE)
- {
- favoriteBtn.SetPosition(Theme.gamelist_favorite_x, Theme.gamelist_favorite_y);
- searchBtn.SetPosition(Theme.gamelist_search_x, Theme.gamelist_search_y);
- sortBtn.SetPosition(Theme.gamelist_abc_x, Theme.gamelist_abc_y);
- listBtn.SetPosition(Theme.gamelist_list_x, Theme.gamelist_list_y);
- gridBtn.SetPosition(Theme.gamelist_grid_x, Theme.gamelist_grid_y);
- carouselBtn.SetPosition(Theme.gamelist_carousel_x, Theme.gamelist_carousel_y);
- lockBtn.SetPosition(Theme.gamelist_lock_x, Theme.gamelist_lock_y);
- dvdBtn.SetPosition(Theme.gamelist_dvd_x, Theme.gamelist_dvd_y);
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- favoriteBtn.SetPosition(Theme.gamegrid_favorite_x, Theme.gamegrid_favorite_y);
- searchBtn.SetPosition(Theme.gamegrid_search_x, Theme.gamegrid_search_y);
- sortBtn.SetPosition(Theme.gamegrid_abc_x, Theme.gamegrid_abc_y);
- listBtn.SetPosition(Theme.gamegrid_list_x, Theme.gamegrid_list_y);
- gridBtn.SetPosition(Theme.gamegrid_grid_x, Theme.gamegrid_grid_y);
- carouselBtn.SetPosition(Theme.gamegrid_carousel_x, Theme.gamegrid_carousel_y);
- lockBtn.SetPosition(Theme.gamegrid_lock_x, Theme.gamegrid_lock_y);
- dvdBtn.SetPosition(Theme.gamegrid_dvd_x, Theme.gamegrid_dvd_y);
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- favoriteBtn.SetPosition(Theme.gamecarousel_favorite_x, Theme.gamecarousel_favorite_y);
- searchBtn.SetPosition(Theme.gamecarousel_search_x, Theme.gamecarousel_favorite_y);
- sortBtn.SetPosition(Theme.gamecarousel_abc_x, Theme.gamecarousel_abc_y);
- listBtn.SetPosition(Theme.gamecarousel_list_x, Theme.gamecarousel_list_y);
- gridBtn.SetPosition(Theme.gamecarousel_grid_x, Theme.gamecarousel_grid_y);
- carouselBtn.SetPosition(Theme.gamecarousel_carousel_x, Theme.gamecarousel_carousel_y);
- lockBtn.SetPosition(Theme.gamecarousel_lock_x, Theme.gamecarousel_lock_y);
- dvdBtn.SetPosition(Theme.gamecarousel_dvd_x, Theme.gamecarousel_dvd_y);
- }
-
- //Downloading Covers
- GuiTooltip DownloadBtnTT(tr( "Click to Download Covers" ));
- if (Settings.wsprompt) DownloadBtnTT.SetWidescreen(Settings.widescreen);
- DownloadBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiButton DownloadBtn(0, 0);
- DownloadBtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- DownloadBtn.SetPosition(Theme.covers_x, Theme.covers_y);
-
- GuiTooltip IDBtnTT(tr( "Click to change game ID" ));
- if (Settings.wsprompt) IDBtnTT.SetWidescreen(Settings.widescreen);
- IDBtnTT.SetAlpha(Theme.tooltipAlpha);
- GuiButton idBtn(0, 0);
- idBtn.SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- idBtn.SetPosition(Theme.id_x, Theme.id_y);
-
- if (Settings.godmode == 1 && mountMethod != 3) //only make the button have trigger & tooltip if in godmode
- {
- DownloadBtn.SetSoundOver(btnSoundOver);
- DownloadBtn.SetTrigger(&trigA);
- DownloadBtn.SetTrigger(&trig1);
- DownloadBtn.SetToolTip(&DownloadBtnTT, 205, -30);
-
- idBtn.SetSoundOver(btnSoundOver);
- idBtn.SetTrigger(&trigA);
- idBtn.SetToolTip(&IDBtnTT, 205, -30);
-
- }
- else
- {
- DownloadBtn.SetRumble(false);
- idBtn.SetRumble(false);
- }
-
- GuiGameBrowser * gameBrowser = NULL;
- GuiGameGrid * gameGrid = NULL;
- GuiGameCarousel * gameCarousel = NULL;
- if (Settings.gameDisplay == LIST_MODE)
- {
- gameBrowser = new GuiGameBrowser(Theme.gamelist_w, Theme.gamelist_h, startat, offset);
- gameBrowser->SetPosition(Theme.gamelist_x, Theme.gamelist_y);
- gameBrowser->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- gameGrid = new GuiGameGrid(Theme.gamegrid_w, Theme.gamegrid_h, Settings.theme_path, bg_options_png, 0, 0);
- gameGrid->SetPosition(Theme.gamegrid_x, Theme.gamegrid_y);
- gameGrid->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- //GuiGameCarousel gameCarousel(Theme.gamecarousel_w, Theme.gamecarousel_h, gameList, gameList.size(), Settings.theme_path, bg_options_png, startat, offset);
- gameCarousel = new GuiGameCarousel(640, 400, Settings.theme_path, bg_options_png, startat, offset);
- gameCarousel->SetPosition(Theme.gamecarousel_x, Theme.gamecarousel_y);
- gameCarousel->SetAlignment(ALIGN_LEFT, ALIGN_CENTRE);
- }
-
- GuiText clockTimeBack("88:88", 40, (GXColor) {Theme.clock.r, Theme.clock.g, Theme.clock.b, Theme.clock.a / 6});
- clockTimeBack.SetAlignment(Theme.clock_align, ALIGN_TOP);
- clockTimeBack.SetPosition(Theme.clock_x, Theme.clock_y);
- clockTimeBack.SetFont(clock_ttf, clock_ttf_size);
- GuiText clockTime(theTime, 40, Theme.clock);
- clockTime.SetAlignment(Theme.clock_align, ALIGN_TOP);
- clockTime.SetPosition(Theme.clock_x, Theme.clock_y);
- clockTime.SetFont(clock_ttf, clock_ttf_size);
-
- HaltGui();
- GuiWindow w(screenwidth, screenheight);
-
- if (Theme.show_hddinfo == -1 || Theme.show_hddinfo == 1) //force show hdd info
- {
- w.Append(&usedSpaceTxt);
- }
- if (Theme.show_gamecount == -1 || Theme.show_gamecount == 1) //force show game cnt info
- {
- w.Append(&gamecntBtn);
- }
- w.Append(&sdcardBtn);
- w.Append(&poweroffBtn);
- w.Append(&gameInfo);
- if (Settings.godmode) w.Append(&installBtn);
- w.Append(&homeBtn);
- w.Append(&settingsBtn);
- w.Append(&DownloadBtn);
- w.Append(&idBtn);
- w.Append(&screenShotBtn);
-
- // Begin Toolbar
- w.Append(&favoriteBtn);
- Toolbar[0] = &favoriteBtn;
- w.Append(&searchBtn);
- Toolbar[1] = &searchBtn;
- w.Append(&sortBtn);
- Toolbar[2] = &sortBtn;
- w.Append(&listBtn);
- Toolbar[3] = &listBtn;
- w.Append(&gridBtn);
- Toolbar[4] = &gridBtn;
- w.Append(&carouselBtn);
- Toolbar[5] = &carouselBtn;
- w.Append(&lockBtn);
- Toolbar[6] = &lockBtn;
- w.Append(&dvdBtn);
- Toolbar[7] = &dvdBtn;
- w.SetUpdateCallback(DiscListWinUpdateCallback);
- // End Toolbar
-
- if (Settings.godmode == 1) w.Append(&homebrewBtn);
-
- if ((Settings.hddinfo == CLOCK_HR12) || (Settings.hddinfo == CLOCK_HR24))
- {
- w.Append(&clockTimeBack);
- w.Append(&clockTime);
- }
-
- if (Settings.gameDisplay == LIST_MODE)
- {
- mainWindow->Append(gameBrowser);
- }
- if (Settings.gameDisplay == GRID_MODE)
- {
- mainWindow->Append(gameGrid);
- }
- if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- mainWindow->Append(gameCarousel);
- }
- mainWindow->Append(&w);
-
- GuiSearchBar *searchBar = NULL;
- if (show_searchwindow)
- {
- searchBar = new GuiSearchBar(gameList.GetAvailableSearchChars());
- if (searchBar) mainWindow->Append(searchBar);
- }
-
- ResumeGui();
-
- // ShowMemInfo();
-
- while (menu == MENU_NONE)
- {
-
- if (idiotFlag == 1)
- {
- gprintf("\tIdiot flag\n");
- char idiotBuffer[200];
- snprintf(idiotBuffer, sizeof(idiotBuffer), "%s (%s). %s", tr( "You have attempted to load a bad image" ),
- idiotChar, tr( "Most likely it has dimensions that are not evenly divisible by 4." ));
-
- int deleteImg = WindowPrompt(0, idiotBuffer, tr( "OK" ), tr( "Delete" ));
- if (deleteImg == 0)
- {
- snprintf(idiotBuffer, sizeof(idiotBuffer), "%s %s.", tr( "You are about to delete " ), idiotChar);
- deleteImg = WindowPrompt(tr( "Confirm" ), idiotBuffer, tr( "Delete" ), tr( "Cancel" ));
- if (deleteImg == 1)
- {
- remove(idiotChar);
- }
- }
- idiotFlag = -1;
- }
-
- WDVD_GetCoverStatus(&covert);//for detecting if i disc has been inserted
-
- //CLOCK
- time_t rawtime = time(0);
- if (((Settings.hddinfo == CLOCK_HR12) || (Settings.hddinfo == CLOCK_HR24)) && rawtime != lastrawtime)
- {
- lastrawtime = rawtime;
- timeinfo = localtime(&rawtime);
- if (dataed < 1)
- {
- if (Settings.hddinfo == CLOCK_HR12)
- {
- if (rawtime & 1)
- strftime(theTime, sizeof(theTime), "%I:%M", timeinfo);
- else strftime(theTime, sizeof(theTime), "%I %M", timeinfo);
- }
- if (Settings.hddinfo == CLOCK_HR24)
- {
- if (rawtime & 1)
- strftime(theTime, sizeof(theTime), "%H:%M", timeinfo);
- else strftime(theTime, sizeof(theTime), "%H %M", timeinfo);
- }
- clockTime.SetText(theTime);
-
- }
- else if (dataed > 0)
- {
-
- clockTime.SetTextf("%i", (dataed - 1));
- }
-
- }
-
- // respond to button presses
- if (shutdown == 1)
- {
- gprintf("\n\tshutdown");
- Sys_Shutdown();
- }
- if (reset == 1) Sys_Reboot();
-
- if (updateavailable == true)
- {
- gprintf("\tUpdate Available\n");
- HaltGui();
- GuiWindow ww(640, 480);
- w.SetState(STATE_DISABLED);
- mainWindow->Append(&ww);
- ResumeGui();
- ProgressUpdateWindow();
- updateavailable = false;
- mainWindow->Remove(&ww);
- w.SetState(STATE_DEFAULT);
- menu = MENU_DISCLIST;
- }
-
- if (poweroffBtn.GetState() == STATE_CLICKED)
- {
-
- gprintf("\tpoweroffBtn clicked\n");
- choice = WindowPrompt(tr( "How to Shutdown?" ), 0, tr( "Full Shutdown" ), tr( "Shutdown to Idle" ),
- tr( "Cancel" ));
- if (choice == 2)
- {
- Sys_ShutdownToIdel();
- }
- else if (choice == 1)
- {
- Sys_ShutdownToStandby();
- }
- else
- {
- poweroffBtn.ResetState();
- if (Settings.gameDisplay == LIST_MODE)
- {
- gameBrowser->SetFocus(1);
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- gameGrid->SetFocus(1);
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- gameCarousel->SetFocus(1);
- }
- }
-
- }
- else if (gamecntBtn.GetState() == STATE_CLICKED && mountMethod != 3)
- {
- gprintf("\tgameCntBtn clicked\n");
- gamecntBtn.ResetState();
- char linebuf[150];
- snprintf(linebuf, sizeof(linebuf), "%s %sGameList ?", tr( "Save Game List to" ), Settings.update_path);
- choice = WindowPrompt(0, linebuf, "TXT", "CSV", tr( "Back" ));
- if (choice)
- {
- if (save_gamelist(choice - 1))
- WindowPrompt(0, tr( "Saved" ), tr( "OK" ));
- else WindowPrompt(tr( "Error" ), tr( "Could not save." ), tr( "OK" ));
- }
- menu = MENU_DISCLIST;
- break;
-
- }
- else if (screenShotBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\tscreenShotBtn clicked\n");
- screenShotBtn.ResetState();
- ScreenShot();
- }
- else if (homeBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\thomeBtn clicked\n");
- bgMusic->Pause();
- choice = WindowExitPrompt();
- bgMusic->Resume();
-
- if (choice == 3)
- {
- Sys_LoadMenu(); // Back to System Menu
- }
- else if (choice == 2)
- {
- Sys_BackToLoader();
- }
- else
- {
- homeBtn.ResetState();
- if (Settings.gameDisplay == LIST_MODE)
- {
- gameBrowser->SetFocus(1);
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- gameGrid->SetFocus(1);
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- gameCarousel->SetFocus(1);
- }
- }
-
- }
- else if (installBtn.GetState() == STATE_CLICKED)
- {
- choice = WindowPrompt(tr( "Install a game" ), 0, tr( "Yes" ), tr( "No" ));
- if (choice == 1)
- {
- menu = MENU_INSTALL;
- break;
- }
- else
- {
- installBtn.ResetState();
- if (Settings.gameDisplay == LIST_MODE)
- {
- gameBrowser->SetFocus(1);
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- gameGrid->SetFocus(1);
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- gameCarousel->SetFocus(1);
- }
- }
- }
- else if ((covert & 0x2) && (covert != covertOld))
- {
- gprintf("\tNew Disc Detected\n");
- choice
- = WindowPrompt(tr( "New Disc Detected" ), 0, tr( "Install" ), tr( "Mount DVD drive" ),
- tr( "Cancel" ));
- if (choice == 1)
- {
- menu = MENU_INSTALL;
- break;
- }
- else if (choice == 2)
- {
- dvdBtn.SetState(STATE_CLICKED);
- }
- else
- {
- if (Settings.gameDisplay == LIST_MODE)
- {
- gameBrowser->SetFocus(1);
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- gameGrid->SetFocus(1);
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- gameCarousel->SetFocus(1);
- }
- }
- }
-
- else if (sdcardBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\tsdCardBtn Clicked\n");
- SDCard_deInit();
- SDCard_Init();
- if (Settings.gameDisplay == LIST_MODE)
- {
- startat = gameBrowser->GetSelectedOption();
- offset = gameBrowser->GetOffset();
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- startat = gameGrid->GetSelectedOption();
- offset = gameGrid->GetOffset();
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- startat = gameCarousel->GetSelectedOption();
- offset = gameCarousel->GetOffset();
- }
- if (isInserted(Settings.BootDevice))
- {
- HaltGui(); // to fix endless rumble when clicking on the SD icon when rumble is disabled because rumble is set to on in Global_Default()
- Settings.Load();
- ResumeGui();
- }
- sdcardBtn.ResetState();
- menu = MENU_DISCLIST;
- break;
- }
-
- else if (DownloadBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\tDownloadBtn Clicked\n");
- if (isInserted(Settings.BootDevice))
- {
- choice = WindowPrompt(tr( "Cover Download" ), 0, tr( "Normal Covers" ), tr( "3D Covers" ),
- tr( "Disc Images" ), tr( "Back" )); // ask for download choice
- if (choice != 0)
- {
- int choice2 = choice;
- bool missing;
- missing = SearchMissingImages(choice2);
- if (IsNetworkInit() == false && missing == true)
- {
- WindowPrompt(tr( "Network init error" ), 0, tr( "OK" ));
- }
- else
- {
- if (GetMissingFiles() != NULL && cntMissFiles > 0)
- {
- char tempCnt[40];
- sprintf(tempCnt, "%i %s", cntMissFiles, tr( "Missing files" ));
- if (choice != 3)
- choice = WindowPrompt(tr( "Download Boxart image?" ), tempCnt, tr( "Yes" ), tr( "No" ));
- else if (choice == 3) choice = WindowPrompt(tr( "Download Discart image?" ), tempCnt,
- tr( "Yes" ), tr( "No" ));
- if (choice == 1)
- {
- ret = ProgressDownloadWindow(choice2);
- if (ret == 0)
- {
- WindowPrompt(tr( "Download finished" ), 0, tr( "OK" ));
- }
- else
- {
- sprintf(tempCnt, "%i %s", ret, tr( "files not found on the server!" ));
- WindowPrompt(tr( "Download finished" ), tempCnt, tr( "OK" ));
- }
- }
- }
- }
- }
- }
- else
- {
- WindowPrompt(tr( "No SD-Card inserted!" ), tr( "Insert an SD-Card to download images." ), tr( "OK" ));
- }
- menu = MENU_DISCLIST;
- DownloadBtn.ResetState();
- if (Settings.gameDisplay == LIST_MODE)
- {
- gameBrowser->SetFocus(1);
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- gameGrid->SetFocus(1);
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- gameCarousel->SetFocus(1);
- }
- }//end download
-
- else if (settingsBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\tsettingsBtn Clicked\n");
- if (Settings.gameDisplay == LIST_MODE)
- {
- startat = gameBrowser->GetSelectedOption();
- offset = gameBrowser->GetOffset();
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- startat = gameGrid->GetSelectedOption();
- offset = gameGrid->GetOffset();
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- startat = gameCarousel->GetSelectedOption();
- offset = gameCarousel->GetOffset();
- }
- menu = MENU_SETTINGS;
- break;
-
- }
-
- else if (favoriteBtn.GetState() == STATE_CLICKED)
- {
- favoriteBtn.ResetState();
- gprintf("\tfavoriteBtn Clicked\n");
-
- if(Settings.GameSort & SORT_FAVORITE)
- Settings.GameSort &= ~SORT_FAVORITE;
- else
- Settings.GameSort |= SORT_FAVORITE;
- Settings.Save();
- menu = MENU_DISCLIST;
- break;
- }
-
- else if (searchBtn.GetState() == STATE_CLICKED && mountMethod != 3)
- {
-
- gprintf("\tsearchBtn Clicked\n");
- show_searchwindow = !show_searchwindow;
- HaltGui();
- if (searchBar)
- {
- mainWindow->Remove(searchBar);
- delete searchBar;
- searchBar = NULL;
- }
- if (show_searchwindow)
- {
- if (*gameList.GetCurrentFilter())
- {
- searchBtn.StopEffect();
- searchBtn.SetEffectGrow();
- }
- searchBar = new GuiSearchBar(gameList.GetAvailableSearchChars());
- if (searchBar) mainWindow->Append(searchBar);
- }
- else
- {
- if (*gameList.GetCurrentFilter()) searchBtn.SetEffect(EFFECT_PULSE, 10, 105);
- }
- searchBtn.ResetState();
- ResumeGui();
- }
-
- else if (searchBar && (searchChar = searchBar->GetClicked()))
- {
- if (searchChar > 27)
- {
- int len = gameList.GetCurrentFilter() ? wcslen(gameList.GetCurrentFilter()) : 0;
- wchar_t newFilter[len + 2];
- if (gameList.GetCurrentFilter()) wcscpy(newFilter, gameList.GetCurrentFilter());
- newFilter[len] = searchChar;
- newFilter[len + 1] = 0;
-
- gameList.FilterList(newFilter);
- menu = MENU_DISCLIST;
- break;
- }
- else if (searchChar == 7) // Close
- {
- show_searchwindow = false;
- HaltGui();
- if (searchBar)
- {
- mainWindow->Remove(searchBar);
- delete searchBar;
- searchBar = NULL;
- }
- if (*gameList.GetCurrentFilter())
- {
- searchBtn.SetEffect(EFFECT_PULSE, 10, 105);
- searchBtn.SetImage(&searchBtnImg);
- searchBtn.SetImageOver(&searchBtnImg);
- searchBtn.SetAlpha(255);
- }
- else
- {
- searchBtn.StopEffect();
- searchBtn.SetEffectGrow();
- searchBtn.SetImage(&searchBtnImg_g);
- searchBtn.SetImageOver(&searchBtnImg_g);
- searchBtn.SetAlpha(180);
- }
-
- ResumeGui();
- }
- else if (searchChar == 8) // Backspace
- {
- int len = wcslen(gameList.GetCurrentFilter());
- wchar_t newFilter[len + 1];
- if (gameList.GetCurrentFilter()) wcscpy(newFilter, gameList.GetCurrentFilter());
- newFilter[len > 0 ? len - 1 : 0] = 0;
- gameList.FilterList(newFilter);
- menu = MENU_DISCLIST;
- break;
- }
-
- }
-
- else if (sortBtn.GetState() == STATE_CLICKED)
- {
- sortBtn.ResetState();
- gprintf("\tsortBtn clicked\n");
- if(Settings.GameSort & SORT_ABC)
- {
- Settings.GameSort &= ~SORT_ABC;
- Settings.GameSort |= SORT_RANKING;
- }
- else if(Settings.GameSort & SORT_RANKING)
- {
- Settings.GameSort &= ~SORT_RANKING;
- Settings.GameSort |= SORT_PLAYCOUNT;
- }
- else if(Settings.GameSort & SORT_PLAYCOUNT)
- {
- Settings.GameSort &= ~SORT_PLAYCOUNT;
- Settings.GameSort |= SORT_ABC;
- }
- Settings.Save();
- menu = MENU_DISCLIST;
- break;
- }
-
- else if (listBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\tlistBtn Clicked\n");
- if (Settings.gameDisplay != LIST_MODE)
- {
- Settings.gameDisplay = LIST_MODE;
- menu = MENU_DISCLIST;
- if (isInserted(Settings.BootDevice))
- {
- Settings.Save();
- }
- listBtn.ResetState();
- break;
- }
- else
- {
- listBtn.ResetState();
- }
- }
-
- else if (gridBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\tgridBtn Clicked\n");
- if (Settings.gameDisplay != GRID_MODE)
- {
-
- Settings.gameDisplay = GRID_MODE;
- menu = MENU_DISCLIST;
- if (isInserted(Settings.BootDevice))
- {
- Settings.Save();
- }
- gridBtn.ResetState();
- break;
- }
- else
- {
- gridBtn.ResetState();
- }
- }
-
- else if (carouselBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\tcarouselBtn Clicked\n");
- if (Settings.gameDisplay != CAROUSEL_MODE)
- {
- Settings.gameDisplay = CAROUSEL_MODE;
- menu = MENU_DISCLIST;
- if (isInserted(Settings.BootDevice))
- {
- Settings.Save();
- }
- carouselBtn.ResetState();
- break;
- }
- else
- {
- carouselBtn.ResetState();
- }
- }
-
- else if (homebrewBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\thomebrewBtn Clicked\n");
- menu = MENU_HOMEBREWBROWSE;
- break;
- }
-
- else if (gameInfo.GetState() == STATE_CLICKED && mountMethod != 3)
- {
- gprintf("\tgameinfo Clicked\n");
- gameInfo.ResetState();
- if (selectImg1 >= 0 && selectImg1 < (s32) gameList.size())
- {
- gameSelected = selectImg1;
- rockout();
- struct discHdr *header = gameList[selectImg1];
- snprintf(IDfull, sizeof(IDfull), "%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],
- header->id[3], header->id[4], header->id[5]);
- choice = showGameInfo(IDfull);
- rockout(2);
- if (choice == 2) homeBtn.SetState(STATE_CLICKED);
- if (choice == 3)
- {
- menu = MENU_DISCLIST;
- break;
- }
- }
- }
- else if (lockBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\tlockBtn clicked\n");
- lockBtn.ResetState();
- if (!canUnlock)
- {
- WindowPrompt(
- tr( "Parental Control" ),
- tr( "You don't have Parental Control enabled. If you wish to use Parental Control, enable it in the Wii Settings." ),
- tr( "OK" ));
- }
- else
- {
- if (Settings.godmode)
- {
- if (WindowPrompt(tr( "Parental Control" ), tr( "Are you sure you want to enable Parent Control?" ),
- tr( "Yes" ), tr( "No" )) == 1)
- {
- Settings.godmode = 0;
- lockBtn.SetImage(&lockBtnImg_g);
- lockBtn.SetImageOver(&lockBtnImg_g);
- lockBtn.SetToolTip(&lockBtnTT, 15, 52, 1, 3);
-
- // Retrieve the gamelist again
- menu = MENU_DISCLIST;
- break;
- }
- }
- else
- {
- // Require the user to enter the PIN code
- char pin[5];
- memset(&pin, 0, 5);
- int ret = OnScreenNumpad((char *) &pin, 5);
-
- if (ret == 1)
- {
- if (memcmp(pin, Settings.Parental.pin, 4) == 0)
- {
- Settings.godmode = 1;
- lockBtn.SetImage(&unlockBtnImg_g);
- lockBtn.SetImageOver(&unlockBtnImg_g);
- lockBtn.SetToolTip(&unlockBtnTT, 15, 52, 1, 3);
-
- // Retrieve the gamelist again
- menu = MENU_DISCLIST;
- break;
- }
- else
- {
- WindowPrompt(tr( "Parental Control" ), tr( "Invalid PIN code" ), tr( "OK" ));
- }
- }
- }
- }
- }
- else if (dvdBtn.GetState() == STATE_CLICKED)
- {
- gprintf("\tdvdBtn Clicked\n");
- mountMethodOLD = (mountMethod == 3 ? mountMethod : 0);
-
- mountMethod = DiscMount(dvdheader);
- dvdBtn.ResetState();
-
- rockout();
- //break;
- }
- if (Settings.gameDisplay == GRID_MODE)
- {
- int selectimg;
- DownloadBtn.SetSize(0, 0);
- selectimg = gameGrid->GetSelectedOption();
- gameSelected = gameGrid->GetClickedOption();
- selectImg1 = selectimg;
- }
-
- if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- int selectimg;
- DownloadBtn.SetSize(0, 0);
- selectimg = gameCarousel->GetSelectedOption();
- gameSelected = gameCarousel->GetClickedOption();
- selectImg1 = selectimg;
- }
- if (Settings.gameDisplay == LIST_MODE)
- {
- //Get selected game under cursor
- int selectimg;
- DownloadBtn.SetSize(160, 224);
- idBtn.SetSize(100, 40);
-
- selectimg = gameBrowser->GetSelectedOption();
- gameSelected = gameBrowser->GetClickedOption();
- selectImg1 = selectimg;
-
- if (gameSelected > 0) //if click occured
- selectimg = gameSelected;
-
- char gameregion[7];
- if ((selectimg >= 0) && (selectimg < (s32) gameList.size()))
- {
- if (selectimg != selectedold)
- {
- selectedold = selectimg;//update displayed cover, game ID, and region if the selected game changes
- struct discHdr *header = gameList[selectimg];
- snprintf(ID, sizeof(ID), "%c%c%c", header->id[0], header->id[1], header->id[2]);
- snprintf(IDfull, sizeof(IDfull), "%s%c%c%c", ID, header->id[3], header->id[4], header->id[5]);
- w.Remove(&DownloadBtn);
-
- if (GameIDTxt)
- {
- w.Remove(&idBtn);
- delete GameIDTxt;
- GameIDTxt = NULL;
- }
- if (GameRegionTxt)
- {
- w.Remove(GameRegionTxt);
- delete GameRegionTxt;
- GameRegionTxt = NULL;
- }
-
- switch (header->id[3])
- {
- case 'E':
- sprintf(gameregion, "NTSC U");
- break;
- case 'J':
- sprintf(gameregion, "NTSC J");
- break;
- case 'W':
- sprintf(gameregion, "NTSC T");
- break;
- default:
- case 'K':
- sprintf(gameregion, "NTSC K");
- break;
- case 'P':
- case 'D':
- case 'F':
- case 'I':
- case 'S':
- case 'H':
- case 'U':
- case 'X':
- case 'Y':
- case 'Z':
- sprintf(gameregion, " PAL ");
- break;
- }
-
- //load game cover
- if (cover)
- {
- delete cover;
- cover = NULL;
- }
-
- cover = LoadCoverImage(header);
-
- if (coverImg)
- {
- delete coverImg;
- coverImg = NULL;
- }
- coverImg = new GuiImage(cover);
- coverImg->SetWidescreen(Settings.widescreen);
-
- DownloadBtn.SetImage(coverImg);// put the new image on the download button
- w.Append(&DownloadBtn);
-
- if ((Settings.sinfo == GAMEINFO_ID) || (Settings.sinfo == GAMEINFO_BOTH))
- {
- GameIDTxt = new GuiText(IDfull, 22, Theme.info);
- GameIDTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- //GameIDTxt->SetPosition(Theme.id_x,Theme.id_y);
- idBtn.SetEffect(EFFECT_FADE, 20);
- idBtn.SetLabel(GameIDTxt);
- w.Append(&idBtn);
- }
- //don't try to show region for channels because all the custom channels wont follow the rules
- if (((Settings.sinfo == GAMEINFO_REGION) || (Settings.sinfo == GAMEINFO_BOTH)) && mountMethod != 3)
- {
- GameRegionTxt = new GuiText(gameregion, 22, Theme.info);
- GameRegionTxt->SetAlignment(ALIGN_LEFT, ALIGN_TOP);
- GameRegionTxt->SetPosition(Theme.region_x, Theme.region_y);
- GameRegionTxt->SetEffect(EFFECT_FADE, 20);
- w.Append(GameRegionTxt);
- }
- }
- }
-
- if (idBtn.GetState() == STATE_CLICKED && mountMethod != 3)
- {
- gprintf("\tidBtn Clicked\n");
- struct discHdr * header = gameList[gameBrowser->GetSelectedOption()];
- //enter new game ID
- char entered[10];
- snprintf(entered, sizeof(entered), "%s", IDfull);
- //entered[9] = '\0';
- int result = OnScreenKeyboard(entered, 7, 0);
- if (result == 1)
- {
- WBFS_ReIDGame(header->id, entered);
- //__Menu_GetEntries();
- menu = MENU_DISCLIST;
- }
-
- idBtn.ResetState();
- }
- startat = gameBrowser->GetOffset(), offset = startat;
- }
-
- if (((gameSelected >= 0) && (gameSelected < (s32) gameList.size())) || mountMethod == 1 || mountMethod == 2)
- {
- if (searchBar)
- {
- HaltGui();
- mainWindow->Remove(searchBar);
- ResumeGui();
- }
- rockout();
- struct discHdr *header = (mountMethod == 1 || mountMethod == 2 ? dvdheader : gameList[gameSelected]);
- // struct discHdr *header = dvdheader:gameList[gameSelected]);
- if (!mountMethod)//only get this stuff it we are booting a game from USB
- {
- WBFS_GameSize(header->id, &size);
- }
-
- //check if alt Dol and gct file is present
- FILE *exeFile = NULL;
- char nipple[100];
- header = (mountMethod == 1 || mountMethod == 2 ? dvdheader : gameList[gameSelected]); //reset header
- snprintf(IDfull, sizeof(IDfull), "%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],
- header->id[3], header->id[4], header->id[5]);
- GameCFG* game_cfg = GameSettings.GetGameCFG(header->id);
- u8 alternatedol;
- u8 ocarinaChoice;
-
- if (game_cfg)
- {
- alternatedol = game_cfg->loadalternatedol;
- ocarinaChoice = game_cfg->ocarina;
- }
- else
- {
- alternatedol = OFF;
- ocarinaChoice = Settings.ocarina;
- }
-
- if (Settings.quickboot == ON) //quickboot game
- {
- if (alternatedol == 2)
- {
- /* Open dol File and check exist */
- sprintf(nipple, "%s%s.dol", Settings.dolpath, IDfull);
- exeFile = fopen(nipple, "rb");
- if (exeFile == NULL)
- {
- sprintf(nipple, "%s %s", nipple, tr( "does not exist!" ));
- WindowPrompt(tr( "Error" ), nipple, tr( "OK" ));
- menu = MENU_DISCLIST;
- wiilight(0);
- break;
- }
- else
- {
- fclose(exeFile);
- }
- }
- if (ocarinaChoice != OFF)
- {
- /* Open gct File and check exist */
- sprintf(nipple, "%s%s.gct", Settings.Cheatcodespath, IDfull);
- exeFile = fopen(nipple, "rb");
- if (exeFile == NULL)
- {
- gprintf("\ttried to load missing gct.\n");
- sprintf(nipple, "%s %s", nipple, tr( "does not exist! Loading game without cheats." ));
- WindowPrompt(tr( "Error" ), nipple, NULL, NULL, NULL, NULL, 170);
- }
- else
- {
- fclose(exeFile);
- }
-
- }
-
- wiilight(0);
- if (isInserted(Settings.BootDevice))
- {
- //////////save game play count////////////////
- GameStatistics.SetPlayCount(header->id, GameStatistics.GetPlayCount(header->id)+1);
- GameStatistics.Save();
-
- gprintf("\tplaycount for %c%c%c%c%c%c raised to %i\n", header->id[0], header->id[1], header->id[2],
- header->id[3], header->id[4], header->id[5], GameStatistics.GetPlayCount(header->id));
-
- }
- //Just calling that shuts down everything and starts game
- BootGame((const char *) header->id);
- }
- bool returnHere = true;// prompt to start game
- while (returnHere)
- {
- returnHere = false;
- if (Settings.wiilight != WIILIGHT_INSTALL) wiilight(1);
- choice = GameWindowPrompt();
- // header = gameList[gameSelected]; //reset header
-
- if (choice == 1)
- {
- if (alternatedol == 2)
- {
- /* Open dol File and check exist */
- sprintf(nipple, "%s%s.dol", Settings.dolpath, IDfull);
- exeFile = fopen(nipple, "rb");
- if (exeFile == NULL)
- {
- gprintf("\n\tTried to load alt dol that isn't there");
- sprintf(nipple, "%s %s", nipple, tr( "does not exist! You messed something up." ));
- WindowPrompt(tr( "Error" ), nipple, tr( "OK" ));
- menu = MENU_DISCLIST;
- wiilight(0);
- break;
- }
- else
- {
- fclose(exeFile);
- }
- }
- if (ocarinaChoice != OFF)
- {
- /* Open gct File and check exist */
- sprintf(nipple, "%s%s.gct", Settings.Cheatcodespath, IDfull);
- exeFile = fopen(nipple, "rb");
- if (exeFile == NULL)
- {
- gprintf("\ttried to load gct file that isn't there\n");
- sprintf(nipple, "%s %s", nipple, tr( "does not exist! Loading game without cheats." ));
- WindowPrompt(tr( "Error" ), nipple, NULL, NULL, NULL, NULL, 170);
- }
- else
- {
- fclose(exeFile);
- }
-
- }
- wiilight(0);
- returnHere = false;
- //Just calling that shuts down everything and starts game
- BootGame((const char *) gameList[gameSelected]->id);
- }
- else if (choice == 2)
- {
- wiilight(0);
- HaltGui();
- if (Settings.gameDisplay == LIST_MODE)
- mainWindow->Remove(gameBrowser);
- else if (Settings.gameDisplay == GRID_MODE)
- mainWindow->Remove(gameGrid);
- else if (Settings.gameDisplay == CAROUSEL_MODE) mainWindow->Remove(gameCarousel);
- mainWindow->Remove(&w);
- ResumeGui();
-
- //re-evaluate header now in case they changed games while on the game prompt
- header = (mountMethod == 1 || mountMethod == 2 ? dvdheader : gameList[gameSelected]);
- int settret = MenuGameSettings(header);
- /* unneeded for now, kept in case database gets a separate language setting
- //menu = MENU_DISCLIST; // refresh titles (needed if the language setting has changed)
- */
- HaltGui();
- if (Settings.gameDisplay == LIST_MODE)
- mainWindow->Append(gameBrowser);
- else if (Settings.gameDisplay == GRID_MODE)
- mainWindow->Append(gameGrid);
- else if (Settings.gameDisplay == CAROUSEL_MODE) mainWindow->Append(gameCarousel);
- mainWindow->Append(&w);
- ResumeGui();
- if (settret == MENU_DISCLIST) //if deleted
- {
- menu = MENU_DISCLIST;
- break;
- }
- returnHere = true;
- rockout(2);
- }
-
- else if (choice == 3 && !mountMethod) //WBFS renaming
- {
- wiilight(0);
- //re-evaluate header now in case they changed games while on the game prompt
- header = gameList[gameSelected];
-
- //enter new game title
- char entered[60];
- snprintf(entered, sizeof(entered), "%s", GameTitles.GetTitle(header));
- entered[59] = '\0';
- int result = OnScreenKeyboard(entered, 60, 0);
- if (result == 1)
- {
- WBFS_RenameGame(header->id, entered);
- gameList.ReadGameList();
- gameList.FilterList();
- menu = MENU_DISCLIST;
- }
- }
- else if (choice == 0)
- {
- rockout(2);
- if (mountMethod == 1 || mountMethod == 2) mountMethod = mountMethodOLD;
- if (Settings.gameDisplay == LIST_MODE)
- {
- gameBrowser->SetFocus(1);
- }
- else if (Settings.gameDisplay == GRID_MODE)
- {
- gameGrid->SetFocus(1);
- }
- else if (Settings.gameDisplay == CAROUSEL_MODE)
- {
- gameCarousel->SetFocus(1);
- }
- }
-
- }
- if (searchBar)
- {
- HaltGui();
- mainWindow->Append(searchBar);
- ResumeGui();
- }
- }
- // to skip the first call of windowScreensaver at startup when wiimote is not connected
- if (IsWpadConnected())
- {
- check = 1;
- }
-
- // screensaver is called when wiimote shuts down, depending on the wiimotet idletime
- if (!IsWpadConnected() && check != 0 && Settings.screensaver != 0)
- {
- check++;
- int screensaverIsOn = 0;
- if (check == 11500) //to allow time for the wii to turn off and not show the screensaver
- {
- screensaverIsOn = WindowScreensaver();
- }
- if (screensaverIsOn == 1) check = 0;
- }
- covertOld = covert;
- }
-
- HaltGui();
- mainWindow->RemoveAll();
- mainWindow->Append(bgImg);
- delete searchBar;
- searchBar = NULL;
- delete gameBrowser;
- gameBrowser = NULL;
- delete gameGrid;
- gameGrid = NULL;
- delete gameCarousel;
- gameCarousel = NULL;
- ResumeGui();
- return menu;
-}
-
-void DiscListWinUpdateCallback(void * e)
-{
- GuiWindow *w = (GuiWindow *) e;
- for (int i = 0; i < 8; ++i)
- {
- if (Toolbar[i]->GetState() == STATE_SELECTED)
- {
- w->Remove(Toolbar[i]);
- w->Append(Toolbar[i]); // draw the selected Icon allways on top
- break;
- }
- }
-}
-
-void rockout(int f)
-{
- HaltGui();
-
- if (gameSelected >= 0 && gameSelected < gameList.size() && (strcasestr(GameTitles.GetTitle(gameList[gameSelected]), "guitar")
- || strcasestr(GameTitles.GetTitle(gameList[gameSelected]), "band") || strcasestr(GameTitles.GetTitle(gameList[gameSelected]),
- "rock")))
- {
- for (int i = 0; i < 4; i++)
- delete pointer[i];
- pointer[0] = Resources::GetImageData("rplayer1_point.png");
- pointer[1] = Resources::GetImageData("rplayer2_point.png");
- pointer[2] = Resources::GetImageData("rplayer3_point.png");
- pointer[3] = Resources::GetImageData("rplayer4_point.png");
- }
- else
- {
-
- for (int i = 0; i < 4; i++)
- delete pointer[i];
- pointer[0] = Resources::GetImageData("player1_point.png");
- pointer[1] = Resources::GetImageData("player2_point.png");
- pointer[2] = Resources::GetImageData("player3_point.png");
- pointer[3] = Resources::GetImageData("player4_point.png");
- }
- ResumeGui();
+ return retMenu;
}
diff --git a/source/mload/modules/ehcmodule_5.c b/source/mload/modules/ehcmodule_5.c
index 206e0eeb..03f9c66e 100644
--- a/source/mload/modules/ehcmodule_5.c
+++ b/source/mload/modules/ehcmodule_5.c
@@ -1,1585 +1,1585 @@
-#define size_ehcmodule_5 25287
-
-unsigned char ehcmodule_5[25287] __attribute__((aligned (32)))={
- 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x02, 0x01, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x13, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x34, 0x00, 0x20, 0x00, 0x05, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xf0, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xa0,
- 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0xf0, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xd4, 0x00, 0xf0, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x08, 0x13, 0x70, 0x00, 0x00,
- 0x13, 0x70, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x94, 0x00, 0x00, 0x5a, 0x94, 0x00, 0xf0, 0x00, 0x05,
- 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x5b, 0x9c, 0x13, 0x70, 0x60, 0x00,
- 0x13, 0x70, 0x60, 0x00, 0x00, 0x00, 0x07, 0x2b, 0x00, 0x02, 0x95, 0xa8, 0x00, 0xf0, 0x00, 0x06,
- 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06,
- 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x13, 0x70, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x30, 0x00,
- 0x00, 0x00, 0x00, 0x7f, 0x13, 0x72, 0xf3, 0xa8, 0xe3, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0x10, 0x00,
- 0xe5, 0x9f, 0x31, 0x00, 0xe1, 0x2f, 0xff, 0x13, 0xe5, 0x9f, 0xc0, 0xfc, 0xe5, 0x9c, 0xc0, 0x00,
- 0xe1, 0xa0, 0x00, 0x00, 0xe7, 0x9c, 0xc1, 0x0b, 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1c,
- 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0xb0, 0x3f, 0xea, 0xff, 0xff, 0xf5,
- 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0xb0, 0x40, 0xea, 0xff, 0xff, 0xf1,
- 0xe3, 0xa0, 0x00, 0x00, 0xee, 0x07, 0x0f, 0x15, 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0xa0, 0x00, 0x00,
- 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xe3, 0x18, 0x00, 0x10, 0x0a, 0x00, 0x00, 0x12,
- 0xe3, 0xc8, 0x80, 0x10, 0xe3, 0xa0, 0x20, 0x10, 0xe5, 0x87, 0x20, 0x00, 0xe1, 0xa0, 0x00, 0x00,
- 0xe1, 0xa0, 0x20, 0x0d, 0xe1, 0xa0, 0x00, 0x00, 0xe5, 0x9f, 0xd0, 0x90, 0xe1, 0xa0, 0x00, 0x00,
- 0xe9, 0x2d, 0x5f, 0xfe, 0xe1, 0xa0, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x0f, 0xe8, 0xbd, 0x5f, 0xfe,
- 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0xd0, 0x02, 0xe3, 0x10, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x02,
- 0xe1, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0x00, 0x04, 0xeb, 0x00, 0x00, 0x05, 0xe3, 0x18, 0x00, 0x01,
- 0x0a, 0x00, 0x00, 0x01, 0xe5, 0x9f, 0xf0, 0x58, 0xe1, 0xa0, 0x00, 0x00, 0xe5, 0x9f, 0xf0, 0x54,
- 0xe1, 0xa0, 0x00, 0x00, 0xe5, 0x9f, 0xf0, 0x50, 0xe1, 0xa0, 0x00, 0x00, 0xe5, 0x9f, 0x20, 0x4c,
- 0xe1, 0x2f, 0xff, 0x12, 0xe1, 0xa0, 0x00, 0x00, 0xee, 0x13, 0x0f, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xee, 0x03, 0x0f, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0x45, 0x48, 0x43, 0x5f, 0x43, 0x46, 0x47, 0x00,
- 0x12, 0x34, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x13, 0x70, 0x0e, 0x2d, 0x13, 0x72, 0xc0, 0x00,
- 0x13, 0x72, 0xf5, 0xa8, 0xff, 0xff, 0x1e, 0x80, 0xff, 0xff, 0x1e, 0x9c, 0xff, 0xff, 0x1d, 0x44,
- 0x13, 0x70, 0x0c, 0x59, 0xe1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x11,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xf5, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x07,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x07, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xff,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0xb5, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x0d,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0xd2, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x2d,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x29, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x2f,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xeb, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xd3,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x1f, 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0xa1,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xe7, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x1f,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xe7, 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0xc5,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xef, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xd1,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xed, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xef,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0xb7, 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0x89,
- 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xd1, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xad,
- 0xb5, 0x00, 0x28, 0x02, 0xd0, 0x11, 0x28, 0x02, 0xd8, 0x04, 0x28, 0x00, 0xd0, 0x08, 0x28, 0x01,
- 0xd1, 0x04, 0xe0, 0x08, 0x28, 0x10, 0xd0, 0x0d, 0x28, 0x11, 0xd0, 0x0d, 0x48, 0x08, 0xe0, 0x0c,
- 0x4b, 0x08, 0x68, 0x18, 0xe0, 0x09, 0x48, 0x08, 0xe0, 0x07, 0x4a, 0x08, 0x23, 0x01, 0x60, 0x13,
- 0x20, 0x00, 0xe0, 0x02, 0x48, 0x06, 0xe0, 0x00, 0x48, 0x06, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
- 0xff, 0xff, 0xfd, 0x66, 0x13, 0x70, 0x60, 0x28, 0x13, 0x70, 0x4a, 0xd5, 0x13, 0x70, 0x67, 0x40,
- 0x13, 0x70, 0x43, 0xb1, 0x13, 0x70, 0x42, 0xe5, 0xb5, 0x30, 0xb0, 0x81, 0x1c, 0x0c, 0xf7, 0xff,
- 0xff, 0x8f, 0x1c, 0x05, 0x28, 0x00, 0xd1, 0x27, 0x2c, 0x00, 0xd0, 0x25, 0x68, 0x24, 0x2c, 0x00,
- 0xd0, 0x22, 0x78, 0x22, 0x78, 0x63, 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x78, 0xa2, 0x02, 0x12,
- 0x43, 0x1a, 0x78, 0xe3, 0x43, 0x13, 0x2b, 0x06, 0xd1, 0x16, 0x7b, 0x23, 0x7b, 0x62, 0x06, 0x1b,
- 0x04, 0x12, 0x43, 0x1a, 0x7b, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x7b, 0xe2, 0x43, 0x1a, 0x2a, 0x7a,
- 0xd0, 0x02, 0x2a, 0x88, 0xd1, 0x08, 0xe0, 0x02, 0x48, 0x06, 0x21, 0x15, 0xe0, 0x01, 0x48, 0x05,
- 0x21, 0x14, 0x1c, 0x22, 0xf0, 0x04, 0xfc, 0x82, 0xb0, 0x01, 0x1c, 0x28, 0xbc, 0x30, 0xbc, 0x02,
- 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x02, 0xe1, 0xb5, 0x70, 0x1c, 0x0c, 0x1c, 0x05, 0xf7, 0xff,
- 0xff, 0x87, 0x1c, 0x06, 0x20, 0x01, 0x42, 0x40, 0xf7, 0xff, 0xff, 0x6e, 0x0e, 0x2b, 0x73, 0x23,
- 0x0c, 0x2b, 0x73, 0x63, 0x0a, 0x2b, 0x73, 0xa3, 0x7c, 0x62, 0x7c, 0x23, 0x04, 0x12, 0x06, 0x1b,
- 0x43, 0x1a, 0x7c, 0xa3, 0x73, 0xe5, 0x02, 0x1b, 0x43, 0x13, 0x7c, 0xe2, 0x06, 0x2d, 0x43, 0x1a,
- 0x1c, 0x20, 0x60, 0x15, 0x30, 0x0c, 0x21, 0x04, 0xf7, 0xff, 0xff, 0x46, 0x7c, 0x23, 0x7c, 0x62,
- 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7c, 0xa3, 0x7c, 0xe0, 0x02, 0x1b, 0x43, 0x13, 0x43, 0x18,
- 0x21, 0x04, 0xf7, 0xff, 0xff, 0x39, 0x1c, 0x30, 0xf7, 0xff, 0xff, 0x46, 0x20, 0x00, 0xbc, 0x70,
- 0xbc, 0x02, 0x47, 0x08, 0xb5, 0xf0, 0xb0, 0x8f, 0x90, 0x08, 0x91, 0x07, 0x1c, 0x08, 0x1c, 0x11,
- 0x92, 0x06, 0x92, 0x09, 0xf7, 0xff, 0xff, 0x30, 0x4c, 0x7f, 0x68, 0x23, 0x2b, 0x00, 0xd1, 0x00,
- 0xe0, 0xec, 0xa8, 0x0d, 0xf0, 0x01, 0xf9, 0x0e, 0x4b, 0x7c, 0x60, 0x18, 0x28, 0x00, 0xd0, 0x04,
- 0x23, 0x80, 0x9a, 0x0d, 0x01, 0x1b, 0x42, 0x9a, 0xd0, 0x04, 0x4a, 0x79, 0x23, 0x01, 0x42, 0x5b,
- 0x60, 0x13, 0xe0, 0xdb, 0x4d, 0x77, 0x68, 0x2a, 0x2a, 0x00, 0xdb, 0x63, 0x4b, 0x76, 0x42, 0x9a,
- 0xd0, 0x60, 0x4a, 0x73, 0x68, 0x13, 0x1c, 0x58, 0xd1, 0x5c, 0x1c, 0x2e, 0x4a, 0x6e, 0x49, 0x71,
- 0x68, 0x13, 0x68, 0x08, 0x33, 0x1f, 0x21, 0x1f, 0x1c, 0x1c, 0x43, 0x8c, 0x1c, 0x07, 0x21, 0x10,
- 0x1c, 0x22, 0x37, 0x10, 0xf0, 0x03, 0xff, 0xf8, 0x28, 0x00, 0xd1, 0x00, 0xe0, 0xbe, 0x78, 0x23,
- 0x2b, 0x43, 0xd1, 0x0a, 0x78, 0x63, 0x2b, 0x49, 0xd1, 0x07, 0x78, 0xa3, 0x2b, 0x53, 0xd1, 0x04,
- 0x78, 0xe3, 0x2b, 0x4f, 0xd1, 0x01, 0x4b, 0x64, 0xe0, 0x07, 0x68, 0x33, 0x2b, 0x00, 0xd0, 0x02,
- 0x23, 0x00, 0x60, 0x33, 0xe7, 0xda, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x2b, 0x79, 0x62, 0x79, 0xa3,
- 0x02, 0x12, 0x04, 0x1b, 0x18, 0xd2, 0x79, 0x23, 0x4e, 0x5c, 0x18, 0xd2, 0x79, 0xe3, 0x4d, 0x5c,
- 0x06, 0x1b, 0x18, 0xd2, 0x0a, 0xd2, 0x60, 0x32, 0x22, 0x80, 0x01, 0x12, 0x1c, 0x28, 0x21, 0x00,
- 0xf0, 0x05, 0xfa, 0x68, 0x4b, 0x53, 0x68, 0x1a, 0x4b, 0x53, 0x42, 0x9a, 0xd1, 0x1a, 0x68, 0x36,
- 0x20, 0x00, 0x46, 0xb4, 0x4e, 0x53, 0x22, 0x07, 0x40, 0x02, 0xd1, 0x02, 0x10, 0xc3, 0x00, 0x9b,
- 0x51, 0x9f, 0x18, 0x23, 0x7a, 0x1b, 0x2b, 0x00, 0xd0, 0x07, 0x21, 0x01, 0x10, 0xc3, 0x40, 0x91,
- 0x1c, 0x0a, 0x5c, 0xe9, 0x44, 0x67, 0x43, 0x0a, 0x54, 0xea, 0x23, 0x80, 0x30, 0x01, 0x01, 0xdb,
- 0x42, 0x98, 0xd1, 0xe8, 0x4b, 0x40, 0x22, 0x1f, 0x68, 0x1b, 0x33, 0x1f, 0x43, 0x93, 0x93, 0x0b,
- 0x9a, 0x07, 0x23, 0x80, 0x02, 0x1b, 0x92, 0x0a, 0x93, 0x05, 0xe0, 0x63, 0x98, 0x08, 0x4a, 0x3c,
- 0x0a, 0x43, 0x1c, 0x1d, 0x21, 0x0f, 0x68, 0x13, 0x43, 0x8d, 0x42, 0x9d, 0xd0, 0x3a, 0x4b, 0x39,
- 0x60, 0x15, 0x68, 0x1a, 0x4b, 0x38, 0x42, 0x9a, 0xd1, 0x1e, 0x4b, 0x38, 0x1c, 0x28, 0x68, 0x1c,
- 0x27, 0x07, 0x1c, 0x21, 0xf0, 0x05, 0xf8, 0xe8, 0x4a, 0x36, 0x08, 0xc6, 0x00, 0xb3, 0x58, 0x99,
- 0x4b, 0x33, 0x40, 0x07, 0x20, 0x01, 0x22, 0x00, 0x93, 0x01, 0x46, 0x84, 0xe0, 0x07, 0x98, 0x01,
- 0x5d, 0x83, 0x46, 0x60, 0x41, 0x13, 0x42, 0x03, 0xd0, 0x00, 0x19, 0x09, 0x32, 0x01, 0x42, 0xba,
- 0xd3, 0xf5, 0x1e, 0x63, 0x40, 0x2b, 0x18, 0xcd, 0x4b, 0x24, 0x68, 0x1b, 0x1b, 0x5c, 0x2c, 0x10,
- 0xdc, 0x3a, 0x2c, 0x10, 0xd0, 0x07, 0x22, 0x80, 0x98, 0x0b, 0x21, 0x00, 0x02, 0x12, 0xf0, 0x05,
- 0xfa, 0x01, 0x2c, 0x00, 0xdd, 0x06, 0x1c, 0x28, 0x1c, 0x21, 0x9a, 0x0b, 0xf0, 0x03, 0xff, 0x5c,
- 0x28, 0x00, 0xd0, 0x23, 0x99, 0x08, 0x4b, 0x20, 0x9a, 0x05, 0x40, 0x0b, 0x00, 0x9b, 0x98, 0x06,
- 0x1a, 0xd1, 0x42, 0x81, 0xd8, 0x01, 0x1c, 0x0c, 0xe0, 0x00, 0x9c, 0x06, 0x9a, 0x0b, 0x98, 0x0a,
- 0x18, 0xd1, 0x1c, 0x22, 0xf0, 0x05, 0xf9, 0xa2, 0x98, 0x0a, 0x1c, 0x21, 0xf7, 0xff, 0xfe, 0x4c,
- 0x9b, 0x0a, 0x98, 0x06, 0x19, 0x1b, 0x99, 0x08, 0x93, 0x0a, 0x10, 0xa3, 0x1b, 0x00, 0x18, 0xc9,
- 0x90, 0x06, 0x91, 0x08, 0x9a, 0x06, 0x2a, 0x00, 0xd1, 0x98, 0xe0, 0x07, 0x20, 0x80, 0x02, 0x00,
- 0xb0, 0x0f, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x24, 0x10, 0xe7, 0xcc, 0x98, 0x07, 0x99, 0x09,
- 0xf7, 0xff, 0xfe, 0x12, 0x20, 0x00, 0xe7, 0xf3, 0x13, 0x70, 0x67, 0xd0, 0x13, 0x70, 0x67, 0x4c,
- 0x13, 0x70, 0x60, 0x10, 0x13, 0x70, 0x60, 0x14, 0x7f, 0xff, 0xff, 0xff, 0x13, 0x70, 0x67, 0x50,
- 0x13, 0x70, 0x78, 0x00, 0x13, 0x70, 0x80, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xb5, 0xf0, 0x4b, 0xc9,
- 0xb0, 0x93, 0x68, 0x18, 0x21, 0x80, 0xf7, 0xff, 0xfe, 0x23, 0x21, 0x20, 0xf7, 0xff, 0xfe, 0x24,
- 0x90, 0x0a, 0xf0, 0x00, 0xfc, 0x0d, 0xf7, 0xff, 0xfd, 0xff, 0x21, 0x78, 0xf7, 0xff, 0xfd, 0xd0,
- 0x99, 0x0a, 0x48, 0xc1, 0xf7, 0xff, 0xfe, 0x20, 0x48, 0xc0, 0x9a, 0x0a, 0x23, 0x00, 0x1c, 0x01,
- 0xf7, 0xff, 0xfd, 0xd2, 0x49, 0xbe, 0x90, 0x08, 0x20, 0xcd, 0xf0, 0x04, 0xfb, 0x71, 0x22, 0x00,
- 0x92, 0x09, 0x92, 0x0b, 0x92, 0x0c, 0x92, 0x0d, 0x4b, 0xba, 0x4a, 0xbb, 0x26, 0x01, 0x93, 0x05,
- 0x92, 0x04, 0xe0, 0x00, 0x26, 0x00, 0x98, 0x0a, 0xa9, 0x11, 0x22, 0x00, 0xf7, 0xff, 0xfd, 0xd8,
- 0x90, 0x10, 0x9b, 0x10, 0x2b, 0x00, 0xd1, 0xf6, 0x2e, 0x00, 0xd0, 0x02, 0x98, 0x08, 0xf7, 0xff,
- 0xfd, 0xab, 0x9a, 0x05, 0x9c, 0x11, 0x23, 0x00, 0x60, 0x13, 0x2c, 0x00, 0xd1, 0x54, 0x4b, 0xaf,
- 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x05, 0x4b, 0xae, 0x68, 0x1a, 0x2a, 0x00, 0xd1, 0x01, 0x4b, 0xaa,
- 0x60, 0x1a, 0x9b, 0x09, 0x2b, 0x00, 0xd0, 0xdd, 0x4b, 0xa7, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0xd9,
- 0x4b, 0xa7, 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0xd5, 0x4b, 0xa6, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x09,
- 0xf0, 0x03, 0xfd, 0x96, 0x28, 0x00, 0xd0, 0x05, 0xf0, 0x03, 0xfd, 0x92, 0x28, 0x00, 0xd0, 0x01,
- 0xf0, 0x03, 0xfd, 0x8e, 0x4b, 0x9f, 0x68, 0x1e, 0x2e, 0x00, 0xd1, 0x23, 0x4f, 0x9e, 0x4a, 0x9f,
- 0x68, 0x3b, 0x3b, 0x01, 0x42, 0x93, 0xd8, 0x1d, 0x4c, 0x96, 0x4d, 0x9d, 0x23, 0x01, 0x60, 0x23,
- 0x68, 0x28, 0x4a, 0x9c, 0x21, 0x01, 0xf0, 0x03, 0xfe, 0x9f, 0x60, 0x26, 0x28, 0x00, 0xd0, 0x09,
- 0x23, 0x80, 0x68, 0x3a, 0x00, 0x9b, 0x42, 0x9a, 0xd1, 0x04, 0x68, 0x2b, 0x22, 0x80, 0x02, 0x12,
- 0x18, 0x9b, 0x60, 0x2b, 0x49, 0x92, 0x4b, 0x94, 0x68, 0x0a, 0x68, 0x1b, 0x42, 0x9a, 0xd3, 0x01,
- 0x23, 0x00, 0x60, 0x0b, 0x4b, 0x8a, 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0x9b, 0x98, 0x08, 0x49, 0x83,
- 0xf7, 0xff, 0xfd, 0x8e, 0x26, 0x01, 0xe7, 0x96, 0x78, 0x23, 0x78, 0x62, 0x06, 0x1b, 0x04, 0x12,
- 0x43, 0x1a, 0x78, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x78, 0xe2, 0x1c, 0x16, 0x43, 0x1e, 0x2e, 0x02,
- 0xd0, 0x59, 0x2e, 0x02, 0xd8, 0x02, 0x2e, 0x01, 0xd1, 0x04, 0xe0, 0x07, 0x2e, 0x06, 0xd0, 0x03,
- 0x2e, 0x07, 0xd0, 0x67, 0x25, 0x01, 0xe0, 0x30, 0x25, 0x01, 0xe2, 0x4f, 0x7b, 0x23, 0x7b, 0x62,
- 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7b, 0xa3, 0x49, 0x6f, 0x02, 0x1b, 0x43, 0x13, 0x7b, 0xe2,
- 0x1c, 0x15, 0x43, 0x1d, 0x1c, 0x28, 0xf0, 0x05, 0xf9, 0x4d, 0x28, 0x00, 0xd1, 0x16, 0x7d, 0x23,
- 0x7d, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7d, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x7d, 0xe2,
- 0x1c, 0x15, 0x43, 0x1d, 0x9b, 0x0c, 0x2b, 0x00, 0xd0, 0x00, 0xe2, 0x2d, 0x4b, 0x68, 0x68, 0x1b,
- 0x2b, 0x00, 0xd0, 0x00, 0xe2, 0x28, 0xf0, 0x04, 0xf8, 0x2b, 0xe2, 0x25, 0x49, 0x6b, 0x1c, 0x28,
- 0xf0, 0x05, 0xf9, 0x30, 0x28, 0x00, 0xd0, 0x02, 0x25, 0x06, 0x42, 0x6d, 0xe2, 0x1e, 0x7d, 0x23,
- 0x7d, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7d, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x7d, 0xe2,
- 0x1c, 0x15, 0x43, 0x1d, 0x4b, 0x5a, 0x60, 0x1e, 0x4b, 0x57, 0x60, 0x18, 0x48, 0x60, 0xf0, 0x00,
- 0xfa, 0x6d, 0x4b, 0x60, 0x68, 0x1b, 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0xf0, 0x00, 0xfd, 0xe2,
- 0x23, 0x00, 0x93, 0x09, 0xe2, 0x02, 0x7a, 0x23, 0x7a, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a,
- 0x7a, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x7a, 0xe2, 0x1c, 0x10, 0x9a, 0x0b, 0x43, 0x18, 0x42, 0x82,
- 0xd1, 0x02, 0x23, 0x00, 0x93, 0x0b, 0xe0, 0x03, 0xf0, 0x00, 0xfd, 0xee, 0xf0, 0x00, 0xfd, 0xe2,
- 0x25, 0x00, 0xe1, 0xeb, 0x7e, 0x23, 0x7e, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7e, 0xa3,
- 0x02, 0x1b, 0x43, 0x13, 0x7e, 0xe2, 0x1c, 0x16, 0x43, 0x1e, 0x7c, 0x62, 0x7c, 0x23, 0x04, 0x12,
- 0x06, 0x1b, 0x43, 0x1a, 0x7c, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x7c, 0xe2, 0x43, 0x1a, 0x92, 0x06,
- 0x7d, 0x23, 0x7d, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7d, 0xa3, 0x02, 0x1b, 0x43, 0x13,
- 0x7d, 0xe2, 0x1c, 0x15, 0x43, 0x1d, 0x7b, 0x23, 0x2b, 0x00, 0xd1, 0x02, 0x9a, 0x0b, 0x2a, 0x00,
- 0xd0, 0x01, 0x27, 0x00, 0xe0, 0x0c, 0x7a, 0x23, 0x7a, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a,
- 0x7a, 0xa3, 0x7a, 0xe0, 0x02, 0x1b, 0x43, 0x13, 0x43, 0x18, 0xf0, 0x00, 0xfd, 0xb5, 0x1c, 0x07,
- 0x9b, 0x06, 0x1c, 0x30, 0x18, 0xed, 0x00, 0xe9, 0x95, 0x07, 0x1c, 0x34, 0xf7, 0xff, 0xfc, 0xac,
- 0x25, 0x00, 0xe0, 0x05, 0x68, 0x20, 0x68, 0x61, 0xf7, 0xff, 0xfc, 0xa6, 0x35, 0x01, 0x34, 0x08,
- 0x9a, 0x07, 0x42, 0x95, 0xdb, 0xf6, 0x4c, 0x22, 0x68, 0x20, 0x28, 0x00, 0xd0, 0x00, 0xe1, 0x87,
- 0x99, 0x11, 0x7b, 0x0b, 0x7b, 0x4a, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7b, 0x8b, 0x02, 0x1b,
- 0x43, 0x13, 0x7b, 0xca, 0x43, 0x1a, 0x4b, 0x24, 0x42, 0x9a, 0xd1, 0x00, 0xe0, 0xf6, 0x42, 0x9a,
- 0xd8, 0x46, 0x2a, 0x06, 0xd8, 0x0b, 0x2a, 0x05, 0xd3, 0x00, 0xe0, 0xd0, 0x2a, 0x01, 0xd1, 0x00,
- 0xe0, 0x92, 0x2a, 0x00, 0xd0, 0x6c, 0x2a, 0x02, 0xd0, 0x00, 0xe1, 0x01, 0xe0, 0xc7, 0x2a, 0x1b,
- 0xd8, 0x06, 0x2a, 0x1a, 0xd3, 0x00, 0xe0, 0x9f, 0x2a, 0x0c, 0xd0, 0x00, 0xe0, 0xf8, 0xe0, 0x8f,
- 0x4b, 0x16, 0x42, 0x9a, 0xd1, 0x00, 0xe0, 0x9a, 0x33, 0x01, 0x42, 0x9a, 0xd0, 0x00, 0xe0, 0xef,
- 0xe0, 0xc7, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x28, 0x13, 0x70, 0x60, 0x50, 0x00, 0x98, 0x96, 0x80,
- 0x13, 0x70, 0x02, 0x19, 0x13, 0x70, 0x67, 0xc0, 0x13, 0x70, 0x60, 0x0c, 0x13, 0x70, 0x67, 0x48,
- 0x13, 0x70, 0x67, 0x40, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x72, 0xc3, 0xa0, 0x00, 0x00, 0x0f, 0xfe,
- 0x13, 0x70, 0x67, 0x54, 0x13, 0x70, 0x68, 0x00, 0x13, 0x72, 0xc3, 0xa4, 0x13, 0x70, 0x60, 0x5c,
- 0x13, 0x70, 0x12, 0x99, 0x13, 0x70, 0x60, 0x34, 0x55, 0x4d, 0x53, 0x03, 0x55, 0x4d, 0x53, 0x01,
- 0x4b, 0xac, 0x42, 0x9a, 0xd1, 0x00, 0xe0, 0x86, 0x42, 0x9a, 0xd8, 0x12, 0x3b, 0x7b, 0x42, 0x9a,
- 0xd1, 0x00, 0xe0, 0xb4, 0x42, 0x9a, 0xd8, 0x04, 0x3b, 0x02, 0x42, 0x9a, 0xd0, 0x00, 0xe0, 0xb7,
- 0xe0, 0xa5, 0x4b, 0xa5, 0x42, 0x9a, 0xd0, 0x72, 0x33, 0x70, 0x42, 0x9a, 0xd0, 0x00, 0xe0, 0xaf,
- 0xe0, 0xaa, 0x4b, 0xa2, 0x42, 0x9a, 0xd1, 0x00, 0xe1, 0x06, 0x42, 0x9a, 0xd8, 0x07, 0x4b, 0xa0,
- 0x42, 0x9a, 0xd0, 0x6e, 0x4b, 0x9f, 0x42, 0x9a, 0xd0, 0x00, 0xe0, 0xa1, 0xe0, 0xa2, 0x4b, 0x9e,
- 0x42, 0x9a, 0xd1, 0x00, 0xe0, 0xed, 0x33, 0x01, 0x42, 0x9a, 0xd0, 0x00, 0xe0, 0x98, 0xe0, 0xde,
- 0x2f, 0x00, 0xd1, 0x00, 0xe0, 0xfe, 0x69, 0x33, 0x88, 0x18, 0x69, 0xb3, 0x88, 0x1c, 0x6a, 0x33,
- 0x88, 0x1d, 0x68, 0x33, 0x78, 0x19, 0x68, 0xb3, 0x78, 0x1a, 0x02, 0x03, 0x0a, 0x00, 0x43, 0x03,
- 0x02, 0x20, 0x0a, 0x24, 0x43, 0x20, 0x04, 0x00, 0x0c, 0x00, 0x90, 0x00, 0x02, 0x28, 0x0a, 0x2d,
- 0x43, 0x28, 0x04, 0x00, 0x0c, 0x00, 0x90, 0x01, 0x6b, 0x30, 0x04, 0x1b, 0x90, 0x02, 0x0c, 0x1b,
- 0x1c, 0x38, 0xf0, 0x01, 0xfe, 0x95, 0xe0, 0x60, 0x2f, 0x00, 0xd1, 0x00, 0xe0, 0xda, 0x68, 0x33,
- 0x1c, 0x38, 0x78, 0x19, 0x68, 0xb3, 0x88, 0x1a, 0x69, 0x33, 0xf0, 0x01, 0xfd, 0x87, 0xe0, 0x54,
- 0x2f, 0x00, 0xd0, 0x00, 0xe0, 0xce, 0x68, 0x33, 0x69, 0x32, 0x78, 0x18, 0x68, 0xb3, 0x78, 0x19,
- 0x69, 0xb3, 0xf0, 0x00, 0xfc, 0xed, 0xe0, 0x48, 0x25, 0x01, 0x24, 0x00, 0xe0, 0xc5, 0xf0, 0x03,
- 0xfd, 0xef, 0x1c, 0x05, 0x28, 0x00, 0xda, 0x01, 0x23, 0x00, 0xe0, 0x02, 0x4a, 0x77, 0x23, 0x01,
- 0x60, 0x13, 0x99, 0x11, 0x93, 0x09, 0x7a, 0x0b, 0x7a, 0x4a, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a,
- 0x7a, 0x8b, 0x02, 0x1b, 0x43, 0x13, 0x7a, 0xca, 0x43, 0x1a, 0x92, 0x0b, 0xe0, 0xac, 0x4b, 0x6f,
- 0x22, 0x00, 0x60, 0x18, 0xe0, 0x6a, 0x68, 0x32, 0x4b, 0x6d, 0x68, 0x12, 0x60, 0x1a, 0x25, 0x00,
- 0xe0, 0xa2, 0x23, 0x01, 0x60, 0x23, 0x4b, 0x69, 0x60, 0x18, 0x48, 0x6a, 0xf0, 0x00, 0xf9, 0x0e,
- 0x4b, 0x69, 0x68, 0x1b, 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0xf0, 0x00, 0xfc, 0x83, 0x23, 0x00,
- 0x93, 0x09, 0x4c, 0x66, 0x1c, 0x20, 0xf0, 0x00, 0xfd, 0xa5, 0x4b, 0x65, 0x1c, 0x05, 0x60, 0x18,
- 0x68, 0x32, 0x2a, 0x00, 0xd1, 0x00, 0xe0, 0x87, 0x68, 0x23, 0xe0, 0x68, 0x68, 0x33, 0x69, 0x32,
- 0x68, 0x18, 0x68, 0xb3, 0x68, 0x19, 0xf0, 0x03, 0xfc, 0xa7, 0x1c, 0x05, 0xe0, 0x7c, 0x68, 0x33,
- 0x69, 0x32, 0x68, 0x18, 0x68, 0xb3, 0x68, 0x19, 0xf0, 0x03, 0xfc, 0x38, 0xe7, 0xf5, 0x4b, 0x59,
- 0x68, 0x1a, 0x42, 0x51, 0x41, 0x4a, 0xe7, 0xc9, 0x68, 0x32, 0x4b, 0x50, 0x68, 0x12, 0x60, 0x1a,
- 0x25, 0x01, 0xe0, 0x69, 0x7a, 0x0b, 0x7a, 0x4a, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7a, 0x8b,
- 0x02, 0x1b, 0x43, 0x13, 0x7a, 0xca, 0x21, 0x00, 0x43, 0x1a, 0x92, 0x0b, 0x91, 0x0f, 0x68, 0x34,
- 0x78, 0x23, 0x2b, 0x5f, 0xd1, 0x1c, 0x78, 0x63, 0x2b, 0x44, 0xd1, 0x19, 0x78, 0xa3, 0x2b, 0x56,
- 0xd1, 0x16, 0x78, 0xe3, 0x2b, 0x44, 0xd1, 0x13, 0x4b, 0x40, 0x4c, 0x47, 0x22, 0x01, 0x60, 0x1a,
- 0x60, 0x21, 0x68, 0xf3, 0x2b, 0x04, 0xd1, 0x06, 0x68, 0xb1, 0xa8, 0x0f, 0x22, 0x04, 0xf0, 0x04,
- 0xfe, 0xc5, 0x9b, 0x0f, 0x60, 0x23, 0xf0, 0x04, 0xf8, 0x1f, 0x22, 0x01, 0x92, 0x09, 0xe7, 0x96,
- 0x68, 0xf3, 0x2b, 0x04, 0xd1, 0x04, 0x68, 0xb1, 0xa8, 0x0f, 0x22, 0x04, 0xf0, 0x04, 0xfe, 0xb6,
- 0x99, 0x0f, 0x1c, 0x20, 0xf0, 0x03, 0xff, 0x8c, 0x90, 0x0d, 0x28, 0x00, 0xd1, 0x02, 0x23, 0x01,
- 0x93, 0x09, 0xe0, 0x25, 0x4a, 0x2d, 0x23, 0x01, 0x60, 0x13, 0x93, 0x09, 0xe7, 0x7f, 0xf0, 0x03,
- 0xfd, 0x01, 0x1c, 0x05, 0x28, 0x00, 0xd1, 0x1f, 0x23, 0x01, 0x4a, 0x30, 0x42, 0x5b, 0x60, 0x13,
- 0xe0, 0x1a, 0x4a, 0x26, 0x23, 0x01, 0x60, 0x13, 0x68, 0x33, 0x69, 0x31, 0x68, 0x18, 0x68, 0xb3,
- 0x68, 0x1a, 0xf7, 0xff, 0xfc, 0x07, 0xe7, 0x90, 0x9a, 0x0d, 0x2a, 0x00, 0xd0, 0x08, 0x68, 0x33,
- 0x69, 0x32, 0x68, 0x19, 0x68, 0xb3, 0x98, 0x0d, 0x68, 0x1b, 0xf0, 0x04, 0xf8, 0xb5, 0xe7, 0x5e,
- 0x25, 0x01, 0xe0, 0x00, 0x25, 0x06, 0x42, 0x6d, 0x24, 0x01, 0x9a, 0x06, 0x00, 0xd3, 0x18, 0xf6,
- 0x1c, 0x17, 0xe0, 0x05, 0x68, 0x30, 0x68, 0x71, 0xf7, 0xff, 0xfb, 0x26, 0x37, 0x01, 0x36, 0x08,
- 0x9b, 0x07, 0x42, 0x9f, 0xdb, 0xf6, 0xe0, 0x02, 0x22, 0x01, 0x92, 0x0c, 0x24, 0x01, 0x9a, 0x04,
- 0x68, 0x13, 0x2b, 0x00, 0xd1, 0x01, 0x26, 0x00, 0xe0, 0x04, 0x98, 0x08, 0x49, 0x14, 0xf7, 0xff,
- 0xfb, 0x17, 0x26, 0x01, 0x2c, 0x00, 0xd1, 0x00, 0xe5, 0x1d, 0x98, 0x11, 0x1c, 0x29, 0xf7, 0xff,
- 0xfa, 0xff, 0xe5, 0x18, 0x55, 0x4d, 0x53, 0x81, 0x55, 0x4d, 0x53, 0x10, 0x57, 0x46, 0x53, 0x02,
- 0x55, 0x4d, 0x53, 0x82, 0x57, 0x46, 0x53, 0x01, 0x57, 0x46, 0x53, 0x03, 0x13, 0x70, 0x60, 0x0c,
- 0x13, 0x70, 0x67, 0x48, 0x13, 0x70, 0x12, 0x99, 0x13, 0x70, 0x60, 0x34, 0x13, 0x72, 0xc3, 0xa0,
- 0x13, 0x72, 0xc3, 0xa4, 0x13, 0x70, 0x67, 0x44, 0x13, 0x70, 0x60, 0x14, 0x13, 0x70, 0x60, 0x10,
- 0x00, 0x98, 0x96, 0x80, 0xb5, 0x00, 0x4b, 0x04, 0xb0, 0x81, 0x1c, 0x01, 0x68, 0x18, 0xf7, 0xff,
- 0xfa, 0xbb, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x60, 0x28, 0xb5, 0x00, 0x4b, 0x0d,
- 0x1c, 0x01, 0xb0, 0x81, 0x68, 0x18, 0x22, 0x20, 0xf7, 0xff, 0xfa, 0xea, 0x28, 0x00, 0xd1, 0x0d,
- 0x48, 0x09, 0xf7, 0xff, 0xfa, 0xb9, 0xf0, 0x03, 0xff, 0xcd, 0x20, 0xc8, 0xf0, 0x00, 0xfa, 0x7c,
- 0xf0, 0x03, 0xff, 0xbc, 0x20, 0xc8, 0xf0, 0x00, 0xfa, 0x77, 0xe7, 0xf4, 0xb0, 0x01, 0xbc, 0x02,
- 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x28, 0x13, 0x70, 0x60, 0x6c, 0x4b, 0x02, 0x4a, 0x03,
- 0x60, 0x18, 0x23, 0x00, 0x60, 0x13, 0x47, 0x70, 0x13, 0x70, 0x67, 0x60, 0x13, 0x70, 0x67, 0x58,
- 0xb5, 0xf0, 0x4f, 0x1d, 0x21, 0x10, 0x68, 0x3b, 0x4d, 0x1c, 0x43, 0x8b, 0x60, 0x3b, 0x68, 0x2b,
- 0x4e, 0x1b, 0x68, 0x9a, 0x68, 0x33, 0xb0, 0x81, 0x68, 0x54, 0x2b, 0x00, 0xd0, 0x11, 0x1c, 0x20,
- 0xf0, 0x00, 0xf8, 0x36, 0x28, 0x00, 0xdc, 0x13, 0x23, 0x00, 0x60, 0x33, 0x4b, 0x15, 0x60, 0x18,
- 0x20, 0x04, 0xf7, 0xff, 0xfa, 0x75, 0x68, 0x2b, 0x68, 0x9a, 0x23, 0x37, 0x40, 0x23, 0x60, 0x53,
- 0xe0, 0x14, 0x4b, 0x11, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x04, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x20,
- 0x68, 0x2b, 0x68, 0x9a, 0x23, 0x37, 0x40, 0x23, 0x60, 0x53, 0x68, 0x3b, 0x22, 0x10, 0x43, 0x13,
- 0x4a, 0x0a, 0x60, 0x3b, 0x68, 0x13, 0x21, 0x10, 0x43, 0x0b, 0x60, 0x13, 0xb0, 0x01, 0x20, 0x00,
- 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x0d, 0x80, 0x00, 0x3c, 0x13, 0x70, 0x60, 0x34,
- 0x13, 0x70, 0x67, 0x58, 0x13, 0x70, 0x67, 0x5c, 0x13, 0x70, 0x67, 0x60, 0x0d, 0x80, 0x00, 0x38,
- 0x47, 0x18, 0x46, 0xc0, 0xb5, 0x70, 0x4d, 0x15, 0x4b, 0x15, 0x26, 0x02, 0x42, 0x76, 0x1c, 0x29,
- 0x68, 0x18, 0x22, 0x00, 0x60, 0x2e, 0xf7, 0xff, 0xfa, 0x4b, 0x4b, 0x12, 0x22, 0x00, 0x68, 0x1b,
- 0x4c, 0x11, 0x68, 0x9b, 0x60, 0x9a, 0x4b, 0x11, 0x68, 0x20, 0x60, 0x1a, 0xf7, 0xff, 0xfa, 0x1c,
- 0x68, 0x20, 0xf7, 0xff, 0xfa, 0x1d, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x23, 0x68, 0x2b, 0x2b, 0x00,
- 0xd1, 0x03, 0x4b, 0x0b, 0x68, 0x1b, 0x60, 0x2b, 0xe0, 0x00, 0x60, 0x2e, 0x20, 0x04, 0xf7, 0xff,
- 0xfa, 0x27, 0x4b, 0x02, 0x68, 0x18, 0xbc, 0x70, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x67, 0x64,
- 0x13, 0x70, 0x60, 0x18, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x60, 0x1c, 0x13, 0x70, 0x67, 0x58,
- 0x13, 0x70, 0x67, 0x5c, 0xb5, 0x10, 0x4b, 0x0f, 0x1c, 0x04, 0x68, 0x1a, 0x1c, 0x08, 0x23, 0x01,
- 0x49, 0x0d, 0xf7, 0xff, 0xf9, 0xf9, 0x4b, 0x0d, 0x21, 0x10, 0x60, 0x18, 0x48, 0x0c, 0xf0, 0x03,
- 0xff, 0x47, 0x21, 0x10, 0x48, 0x0b, 0xf0, 0x03, 0xff, 0x37, 0x4b, 0x0b, 0x20, 0x04, 0x60, 0x1c,
- 0x4b, 0x0a, 0x68, 0x1b, 0x68, 0x9a, 0x23, 0x37, 0x60, 0x93, 0xf7, 0xff, 0xf9, 0xf9, 0xbc, 0x10,
- 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x60, 0x18, 0x05, 0xf5, 0xe1, 0x00, 0x13, 0x70, 0x60, 0x1c,
- 0x0d, 0x80, 0x00, 0x38, 0x0d, 0x80, 0x00, 0x3c, 0x13, 0x70, 0x67, 0x58, 0x13, 0x70, 0x60, 0x34,
- 0xb5, 0x30, 0x4d, 0x11, 0x4a, 0x11, 0x68, 0x2b, 0xb0, 0x81, 0x40, 0x13, 0x60, 0x2b, 0x20, 0x80,
- 0xf0, 0x03, 0xfd, 0xc0, 0x21, 0x20, 0xf7, 0xff, 0xfa, 0x07, 0x4c, 0x0d, 0x60, 0x20, 0x20, 0x04,
- 0xf7, 0xff, 0xf9, 0xee, 0x68, 0x21, 0x22, 0x00, 0x20, 0x04, 0xf7, 0xff, 0xfa, 0x11, 0x68, 0x2a,
- 0x23, 0x80, 0x02, 0x1b, 0x43, 0x1a, 0x60, 0x2a, 0x20, 0x04, 0xf7, 0xff, 0xf9, 0xc9, 0xb0, 0x01,
- 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x0d, 0x04, 0x00, 0xcc, 0xff, 0xff, 0x7f, 0xff,
- 0x13, 0x70, 0x60, 0x18, 0xb5, 0x00, 0x4b, 0x06, 0x02, 0xc0, 0x68, 0x1a, 0x1c, 0x19, 0x68, 0x0b,
- 0x1a, 0x9b, 0xd5, 0x00, 0x68, 0x0a, 0x42, 0x83, 0xd9, 0xf9, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0,
- 0x0d, 0x80, 0x00, 0x10, 0xb5, 0x00, 0x4b, 0x19, 0x4a, 0x19, 0x78, 0x1b, 0xb0, 0x81, 0x1e, 0x59,
- 0x41, 0x8b, 0x60, 0x13, 0xf0, 0x03, 0xff, 0x1c, 0x1c, 0x03, 0x48, 0x16, 0x21, 0x04, 0x60, 0x03,
- 0xf7, 0xff, 0xf9, 0xba, 0xf0, 0x03, 0xff, 0x08, 0x22, 0x00, 0x1c, 0x01, 0x48, 0x12, 0xf0, 0x03,
- 0xfe, 0xbd, 0x21, 0xa0, 0x02, 0x49, 0x48, 0x11, 0xf7, 0xff, 0xf9, 0x6e, 0x4b, 0x10, 0x21, 0x80,
- 0x60, 0x18, 0xf7, 0xff, 0xf9, 0xb5, 0x21, 0x20, 0xf7, 0xff, 0xf9, 0xb6, 0x4b, 0x0d, 0x60, 0x18,
- 0xf0, 0x00, 0xfd, 0x7c, 0x28, 0x00, 0xda, 0x02, 0x20, 0x01, 0x42, 0x40, 0xe0, 0x02, 0xf7, 0xff,
- 0xfb, 0x7d, 0x20, 0x00, 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x01, 0x0c,
- 0x13, 0x70, 0x67, 0x78, 0x13, 0x72, 0xc0, 0x00, 0x13, 0x70, 0x0f, 0x21, 0x13, 0x71, 0x80, 0x00,
- 0x13, 0x70, 0x60, 0x28, 0x13, 0x70, 0x60, 0x20, 0xb5, 0x70, 0x1c, 0x0c, 0x1c, 0x05, 0xf7, 0xff,
- 0xf9, 0x9f, 0x1c, 0x06, 0x20, 0x01, 0x42, 0x40, 0xf7, 0xff, 0xf9, 0x86, 0x68, 0x22, 0x4b, 0x11,
- 0x42, 0x9a, 0xd1, 0x18, 0x4b, 0x10, 0x49, 0x11, 0x22, 0x01, 0x43, 0x13, 0x60, 0x4b, 0x22, 0x08,
- 0x1c, 0x20, 0xf0, 0x04, 0xfc, 0xc3, 0x1c, 0x20, 0x21, 0x08, 0xf7, 0xff, 0xf9, 0x65, 0x1b, 0x63,
- 0x4a, 0x0b, 0x08, 0x9b, 0x3b, 0x02, 0x40, 0x13, 0x4a, 0x0a, 0x1c, 0x28, 0x43, 0x13, 0x60, 0x2b,
- 0x21, 0x04, 0xf7, 0xff, 0xf9, 0x59, 0x1c, 0x30, 0xf7, 0xff, 0xf9, 0x66, 0xbc, 0x70, 0xbc, 0x01,
- 0x47, 0x00, 0x46, 0xc0, 0xe6, 0x00, 0x01, 0x70, 0x13, 0x70, 0x02, 0x71, 0x13, 0x70, 0x60, 0x2c,
- 0x00, 0xff, 0xff, 0xff, 0xea, 0x00, 0x00, 0x00, 0xb5, 0x30, 0x1c, 0x04, 0xb0, 0x81, 0xf7, 0xff,
- 0xf9, 0x1f, 0x2c, 0x26, 0xd0, 0x42, 0x2c, 0x26, 0xd8, 0x05, 0x2c, 0x24, 0xd0, 0x09, 0x2c, 0x25,
- 0xd0, 0x00, 0xe0, 0x97, 0xe0, 0x0e, 0x2c, 0x39, 0xd0, 0x64, 0x2c, 0x3c, 0xd0, 0x00, 0xe0, 0x91,
- 0xe0, 0x62, 0x49, 0x4b, 0x4b, 0x4b, 0x48, 0x4c, 0x60, 0x4b, 0x22, 0x08, 0xf0, 0x04, 0xfc, 0x86,
- 0x48, 0x49, 0xe0, 0x84, 0x49, 0x49, 0x48, 0x4a, 0xf7, 0xff, 0xff, 0xa6, 0x4c, 0x44, 0x48, 0x49,
- 0x4b, 0x49, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff,
- 0xf9, 0x1b, 0x48, 0x46, 0x4b, 0x46, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22,
- 0x21, 0x08, 0xf7, 0xff, 0xf9, 0x11, 0x48, 0x43, 0x4b, 0x43, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03,
- 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff, 0xf9, 0x07, 0x4b, 0x36, 0x48, 0x3f, 0x60, 0x63,
- 0x1c, 0x21, 0x22, 0x08, 0xf0, 0x04, 0xfc, 0x5a, 0x48, 0x3c, 0xe0, 0x58, 0x49, 0x3c, 0x48, 0x3d,
- 0xf7, 0xff, 0xff, 0x7a, 0x4c, 0x2e, 0x48, 0x33, 0x4b, 0x3b, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03,
- 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff, 0xf8, 0xef, 0x48, 0x30, 0x4b, 0x37, 0x1c, 0x22,
- 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff, 0xf8, 0xe5, 0x48, 0x2d,
- 0x4b, 0x33, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff,
- 0xf8, 0xdb, 0x4b, 0x20, 0x48, 0x2f, 0x60, 0x63, 0x1c, 0x21, 0x22, 0x08, 0xf0, 0x04, 0xfc, 0x2e,
- 0x48, 0x2c, 0xe0, 0x2c, 0x48, 0x2c, 0xe0, 0x00, 0x48, 0x2c, 0x49, 0x2d, 0xf7, 0xff, 0xff, 0x4c,
- 0x4c, 0x17, 0x48, 0x1c, 0x4b, 0x2b, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22,
- 0x21, 0x08, 0xf7, 0xff, 0xf8, 0xc1, 0x48, 0x19, 0x4b, 0x27, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03,
- 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff, 0xf8, 0xb7, 0x48, 0x16, 0x4b, 0x23, 0x1c, 0x22,
- 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff, 0xf8, 0xad, 0x4b, 0x09,
- 0x48, 0x1f, 0x60, 0x63, 0x1c, 0x21, 0x22, 0x08, 0xf0, 0x04, 0xfc, 0x00, 0x48, 0x1c, 0x21, 0x08,
- 0xf7, 0xff, 0xf8, 0xa2, 0xb0, 0x01, 0x20, 0x00, 0xbc, 0x30, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
- 0x13, 0x70, 0x60, 0x2c, 0x13, 0x70, 0x00, 0x60, 0xff, 0xff, 0x1e, 0x78, 0x20, 0x20, 0x40, 0x8c,
- 0x20, 0x20, 0x5d, 0xe8, 0x13, 0x70, 0x00, 0xbc, 0xff, 0xff, 0x1f, 0x70, 0x13, 0x70, 0x00, 0xc4,
- 0xff, 0xff, 0x1f, 0x8c, 0x13, 0x70, 0x00, 0xcc, 0xff, 0xff, 0x1e, 0x34, 0xff, 0xff, 0x1f, 0x68,
- 0x20, 0x20, 0x3e, 0x6c, 0x20, 0x20, 0x5b, 0x14, 0xff, 0xff, 0x1e, 0xb0, 0xff, 0xff, 0x1e, 0xcc,
- 0xff, 0xff, 0x1d, 0x74, 0xff, 0xff, 0x1e, 0xa8, 0x20, 0x20, 0x5e, 0x84, 0x20, 0x20, 0x5d, 0x94,
- 0x20, 0x20, 0x3f, 0x60, 0xff, 0xff, 0x21, 0x30, 0xff, 0xff, 0x21, 0x4c, 0xff, 0xff, 0x1f, 0xf4,
- 0xff, 0xff, 0x21, 0x28, 0xb5, 0x30, 0x4d, 0x0c, 0xb0, 0x81, 0x23, 0x00, 0x68, 0x2a, 0x49, 0x0b,
- 0xf7, 0xff, 0xf8, 0x3a, 0x4c, 0x0a, 0x49, 0x0b, 0x22, 0x00, 0x60, 0x20, 0x68, 0x28, 0xf7, 0xff,
- 0xf8, 0x4f, 0x68, 0x20, 0xf7, 0xff, 0xf8, 0x28, 0x68, 0x20, 0xf7, 0xff, 0xf8, 0x29, 0xb0, 0x01,
- 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x20, 0x00, 0x98, 0x96, 0x80,
- 0x13, 0x70, 0x60, 0x24, 0x13, 0x70, 0x67, 0x68, 0xb5, 0x00, 0x1c, 0x03, 0x01, 0x40, 0x1a, 0xc0,
- 0x00, 0x80, 0x18, 0xc0, 0xb0, 0x81, 0x00, 0xc0, 0xf7, 0xff, 0xff, 0xd4, 0xb0, 0x01, 0xbc, 0x01,
- 0x47, 0x00, 0x46, 0xc0, 0xb5, 0xf0, 0xb0, 0x83, 0x93, 0x00, 0x46, 0x94, 0x06, 0x0b, 0x0e, 0x0a,
- 0x26, 0xff, 0x43, 0x1a, 0x02, 0x36, 0x1c, 0x0b, 0x40, 0x33, 0x02, 0x1b, 0x25, 0xff, 0x43, 0x1a,
- 0x04, 0x2d, 0x1c, 0x0b, 0x40, 0x2b, 0x0a, 0x1b, 0x43, 0x1a, 0x90, 0x01, 0x60, 0xc2, 0x9a, 0x01,
- 0x23, 0x00, 0x62, 0x13, 0x4b, 0x2a, 0x1c, 0x0a, 0x40, 0x1a, 0x23, 0x80, 0x01, 0x5b, 0x1a, 0x98,
- 0x45, 0x84, 0xd2, 0x01, 0x46, 0x64, 0xe0, 0x2f, 0x23, 0x80, 0x01, 0x5b, 0x18, 0xca, 0x4b, 0x25,
- 0x1c, 0x11, 0x1c, 0x04, 0x1c, 0x2e, 0x40, 0x19, 0x98, 0x01, 0x27, 0x01, 0x25, 0x00, 0xe0, 0x18,
- 0x06, 0x0b, 0x0e, 0x0a, 0x43, 0x1a, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x0b, 0x02, 0x1b, 0x43, 0x1a,
- 0x1c, 0x0b, 0x40, 0x33, 0x0a, 0x1b, 0x43, 0x1a, 0x61, 0x02, 0x22, 0x80, 0x01, 0x52, 0x18, 0xa4,
- 0x62, 0x45, 0x45, 0x64, 0xd3, 0x00, 0x46, 0x64, 0x23, 0x80, 0x01, 0x5b, 0x18, 0xc9, 0x37, 0x01,
- 0x30, 0x04, 0x45, 0x64, 0xd2, 0x01, 0x2f, 0x04, 0xdd, 0xe2, 0x45, 0x64, 0xd0, 0x04, 0x1c, 0x20,
- 0x99, 0x08, 0xf0, 0x04, 0xfa, 0xd9, 0x1a, 0x64, 0x9b, 0x00, 0x04, 0x22, 0x43, 0x1a, 0x06, 0x13,
- 0x0e, 0x11, 0x43, 0x19, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x13, 0x02, 0x1b, 0x43, 0x19, 0x23, 0xff,
- 0x04, 0x1b, 0x40, 0x1a, 0x0a, 0x12, 0x43, 0x11, 0x23, 0x80, 0x9a, 0x01, 0x04, 0x5b, 0xb0, 0x03,
- 0x1c, 0x20, 0x60, 0x91, 0x64, 0x14, 0x60, 0x13, 0x60, 0x53, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
- 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0x00, 0xb5, 0xf0, 0x26, 0xff, 0x25, 0xff, 0x22, 0x03,
- 0x02, 0x36, 0x04, 0x2d, 0x46, 0x94, 0x4f, 0x18, 0xe0, 0x1e, 0x68, 0x82, 0x06, 0x13, 0x0e, 0x11,
- 0x43, 0x19, 0x1c, 0x13, 0x40, 0x33, 0x02, 0x1b, 0x43, 0x19, 0x40, 0x2a, 0x0a, 0x12, 0x1c, 0x0c,
- 0x43, 0x14, 0x0a, 0x23, 0x46, 0x62, 0x40, 0x13, 0x2b, 0x02, 0xd0, 0x07, 0x6b, 0xc1, 0x6c, 0x03,
- 0x69, 0x4a, 0x18, 0xd2, 0x0c, 0x23, 0x40, 0x3b, 0x1a, 0xd2, 0x61, 0x4a, 0x6c, 0x03, 0x2b, 0x00,
- 0xd0, 0x01, 0x06, 0x63, 0xd4, 0x03, 0x6b, 0x80, 0x28, 0x00, 0xd1, 0xde, 0xe0, 0x04, 0x6b, 0xc2,
- 0x23, 0x01, 0x42, 0x5b, 0x61, 0x53, 0x1c, 0x18, 0x4b, 0x04, 0x68, 0x1a, 0x23, 0x00, 0x64, 0x13,
- 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0x13, 0x70, 0x60, 0x34,
- 0xb5, 0x00, 0x07, 0x43, 0xd5, 0x15, 0x4b, 0x0c, 0x4a, 0x0c, 0x68, 0x1b, 0x68, 0x99, 0x6c, 0x4b,
- 0x40, 0x13, 0x2b, 0x03, 0xd1, 0x02, 0x23, 0x80, 0x01, 0x9b, 0x64, 0x4b, 0x4b, 0x06, 0x4a, 0x07,
- 0x68, 0x1b, 0x68, 0x99, 0x6c, 0x8b, 0x40, 0x13, 0x2b, 0x03, 0xd1, 0x02, 0x23, 0x80, 0x01, 0x9b,
- 0x64, 0x8b, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x20, 0x03,
- 0xb5, 0xf0, 0x07, 0x43, 0xd5, 0x21, 0x24, 0x80, 0x4e, 0x11, 0x4d, 0x12, 0x4f, 0x12, 0x20, 0x00,
- 0x01, 0xa4, 0x68, 0x33, 0x00, 0x82, 0x68, 0x9b, 0x33, 0x44, 0x18, 0x99, 0x68, 0x2b, 0x68, 0x0a,
- 0x42, 0x98, 0xd1, 0x0a, 0x07, 0xd3, 0xd4, 0x0d, 0x4a, 0x0c, 0x23, 0x02, 0x49, 0x0c, 0x60, 0x13,
- 0x68, 0x0b, 0x22, 0x20, 0x43, 0x93, 0x60, 0x0b, 0xe0, 0x04, 0x1c, 0x13, 0x40, 0x3b, 0x2b, 0x03,
- 0xd1, 0x00, 0x60, 0x0c, 0x30, 0x01, 0x28, 0x04, 0xd1, 0xe3, 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00,
- 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x78, 0x00, 0x00, 0x20, 0x03, 0x13, 0x70, 0x67, 0x6c,
- 0x0d, 0x80, 0x00, 0xc0, 0xb5, 0x00, 0x4b, 0x0a, 0x22, 0x80, 0x68, 0x1b, 0x01, 0x92, 0x68, 0x99,
- 0x6c, 0x4b, 0x42, 0x13, 0xd1, 0x00, 0x64, 0x4a, 0x4b, 0x05, 0x22, 0x80, 0x68, 0x1b, 0x01, 0x92,
- 0x68, 0x99, 0x6c, 0x8b, 0x42, 0x13, 0xd1, 0x00, 0x64, 0x8a, 0x20, 0x00, 0xbc, 0x02, 0x47, 0x08,
- 0x13, 0x70, 0x60, 0x34, 0xb5, 0x00, 0x28, 0x00, 0xd0, 0x02, 0x23, 0x01, 0x42, 0x5b, 0x62, 0x03,
- 0x20, 0x00, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x4b, 0x06, 0x49, 0x07, 0x78, 0x1a, 0x68, 0x08,
- 0x1e, 0x53, 0x41, 0x9a, 0x4b, 0x05, 0x60, 0x1a, 0x00, 0x93, 0x18, 0x9b, 0x00, 0xdb, 0x33, 0x58,
- 0x18, 0xc0, 0x47, 0x70, 0x13, 0x70, 0x01, 0x0c, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x78,
- 0xb5, 0x10, 0x1c, 0x18, 0x4b, 0x12, 0x1c, 0x14, 0x78, 0x1a, 0x1e, 0x53, 0x41, 0x9a, 0x4b, 0x11,
- 0x60, 0x1a, 0x4b, 0x11, 0x68, 0x19, 0x00, 0x93, 0x18, 0x9b, 0x00, 0xdb, 0x18, 0xc9, 0x6f, 0x0b,
- 0x2b, 0x00, 0xd0, 0x10, 0x23, 0x00, 0x80, 0x03, 0x80, 0x43, 0x31, 0x60, 0x88, 0x0b, 0x04, 0x1b,
- 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x80, 0x82, 0x88, 0x4b, 0x04, 0x1b, 0x0a, 0x1a, 0x0e, 0x1b,
- 0x43, 0x1a, 0x80, 0xc2, 0x23, 0x01, 0x20, 0x00, 0x70, 0x23, 0xbc, 0x10, 0xbc, 0x02, 0x47, 0x08,
- 0x13, 0x70, 0x01, 0x0c, 0x13, 0x70, 0x67, 0x78, 0x13, 0x70, 0x60, 0x34, 0xb5, 0xf0, 0xb0, 0x81,
- 0x1c, 0x07, 0x28, 0x00, 0xd1, 0x04, 0x4a, 0x20, 0x23, 0x30, 0x70, 0x13, 0x70, 0x50, 0xe0, 0x36,
- 0x4d, 0x1e, 0x1c, 0x06, 0x1c, 0x30, 0x21, 0x0a, 0xf0, 0x04, 0xf9, 0xb6, 0x1c, 0x30, 0x1c, 0x0c,
- 0x21, 0x0a, 0xf0, 0x04, 0xf9, 0x67, 0x17, 0xe3, 0x18, 0xe4, 0x40, 0x5c, 0x34, 0x30, 0x4b, 0x18,
- 0x70, 0x2c, 0x3d, 0x01, 0x1c, 0x06, 0x42, 0x9d, 0xd1, 0xec, 0x1c, 0x2a, 0x3a, 0x0f, 0x23, 0x00,
- 0x76, 0x93, 0x2f, 0x00, 0xdb, 0x01, 0x20, 0x00, 0xe0, 0x02, 0x23, 0x2d, 0x70, 0x13, 0x20, 0x01,
- 0x22, 0x10, 0x49, 0x0d, 0xe0, 0x00, 0x32, 0x01, 0x5c, 0x8b, 0x2b, 0x30, 0xd0, 0xfb, 0x2b, 0x00,
- 0xd1, 0x00, 0x3a, 0x01, 0x4b, 0x08, 0x18, 0x99, 0x18, 0x1b, 0xe0, 0x02, 0x70, 0x1a, 0x30, 0x01,
- 0x33, 0x01, 0x78, 0x0a, 0x31, 0x01, 0x2a, 0x00, 0xd1, 0xf8, 0x4b, 0x03, 0x54, 0x1a, 0xb0, 0x01,
- 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x72, 0xc1, 0xe0, 0x13, 0x72, 0xc1, 0xf9,
- 0x13, 0x72, 0xc1, 0xef, 0xb5, 0xf0, 0xb0, 0x81, 0x1c, 0x06, 0x28, 0x00, 0xd1, 0x04, 0x4a, 0x1a,
- 0x23, 0x30, 0x70, 0x13, 0x70, 0x50, 0xe0, 0x2a, 0x4d, 0x18, 0x1c, 0x2f, 0x3f, 0x0a, 0x1c, 0x30,
- 0x21, 0x0a, 0xf0, 0x04, 0xf9, 0x17, 0x1c, 0x30, 0x1c, 0x0c, 0x21, 0x0a, 0xf0, 0x04, 0xf8, 0xd4,
- 0x34, 0x30, 0x70, 0x2c, 0x3d, 0x01, 0x1c, 0x06, 0x42, 0xbd, 0xd1, 0xf0, 0x1c, 0x2a, 0x23, 0x00,
- 0x3a, 0x0f, 0x76, 0x93, 0x23, 0x10, 0xe0, 0x00, 0x33, 0x01, 0x5c, 0xd1, 0x29, 0x30, 0xd0, 0xfb,
- 0x29, 0x00, 0xd1, 0x00, 0x3b, 0x01, 0x48, 0x08, 0x22, 0x00, 0x18, 0xc1, 0x1c, 0x04, 0xe0, 0x01,
- 0x54, 0xa3, 0x32, 0x01, 0x78, 0x0b, 0x31, 0x01, 0x2b, 0x00, 0xd1, 0xf9, 0x54, 0x83, 0xb0, 0x01,
- 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x72, 0xc1, 0xe0, 0x13, 0x72, 0xc1, 0xf9,
- 0xb5, 0x10, 0x28, 0x00, 0xd1, 0x04, 0x4a, 0x19, 0x23, 0x30, 0x70, 0x13, 0x70, 0x50, 0xe0, 0x2a,
- 0x4a, 0x17, 0x24, 0x0f, 0x1c, 0x11, 0x39, 0x08, 0x1c, 0x03, 0x40, 0x23, 0x09, 0x00, 0x2b, 0x09,
- 0xdd, 0x00, 0x33, 0x07, 0x33, 0x30, 0x70, 0x13, 0x3a, 0x01, 0x42, 0x8a, 0xd1, 0xf4, 0x3a, 0x0f,
- 0x23, 0x00, 0x76, 0x13, 0x23, 0x30, 0x70, 0x13, 0x23, 0x78, 0x70, 0x53, 0x23, 0x10, 0xe0, 0x00,
- 0x33, 0x01, 0x5c, 0xd1, 0x29, 0x30, 0xd0, 0xfb, 0x29, 0x00, 0xd1, 0x00, 0x3b, 0x01, 0x48, 0x07,
- 0x22, 0x02, 0x18, 0xc1, 0x1c, 0x04, 0xe0, 0x01, 0x54, 0xa3, 0x32, 0x01, 0x78, 0x0b, 0x31, 0x01,
- 0x2b, 0x00, 0xd1, 0xf9, 0x54, 0x83, 0xbc, 0x10, 0xbc, 0x01, 0x47, 0x00, 0x13, 0x72, 0xc1, 0xe0,
- 0x13, 0x72, 0xc1, 0xf7, 0xb5, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x23, 0x00, 0x60, 0x03, 0x4b, 0x0c,
- 0x78, 0x1b, 0x2b, 0x01, 0xd1, 0x11, 0x4b, 0x0b, 0x78, 0x1a, 0x2a, 0x10, 0xd0, 0x0d, 0x28, 0x00,
- 0xd0, 0x04, 0x4b, 0x09, 0x32, 0x04, 0x00, 0x92, 0x58, 0xd3, 0x60, 0x03, 0x4b, 0x05, 0x4a, 0x06,
- 0x78, 0x1b, 0x33, 0x14, 0x00, 0x9b, 0x58, 0x98, 0xe0, 0x00, 0x20, 0x00, 0xbc, 0x02, 0x47, 0x08,
- 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x60, 0x3c, 0x13, 0x72, 0xc2, 0x00, 0xb5, 0xf0, 0x4a, 0x67,
- 0xb0, 0x8b, 0x68, 0x13, 0x2b, 0x00, 0xd1, 0x06, 0x4b, 0x65, 0x68, 0x19, 0x69, 0x8b, 0x60, 0x13,
- 0x6a, 0x0b, 0x4a, 0x64, 0x60, 0x13, 0x4b, 0x63, 0x4f, 0x61, 0x68, 0x1d, 0x26, 0x00, 0x1c, 0x34,
- 0x68, 0x3b, 0x34, 0x08, 0x00, 0xa4, 0x50, 0xe5, 0x68, 0x3b, 0x21, 0x00, 0x58, 0xe0, 0x22, 0x60,
- 0xf0, 0x04, 0xf9, 0x70, 0x68, 0x3b, 0x21, 0x60, 0x58, 0xe0, 0xf0, 0x03, 0xf9, 0xd3, 0x1c, 0x2b,
- 0x33, 0x7f, 0x1c, 0x1d, 0x21, 0x1f, 0x36, 0x01, 0x43, 0x8d, 0x2e, 0x08, 0xd1, 0xe7, 0x24, 0x00,
- 0x26, 0x1f, 0x1c, 0x28, 0x21, 0x00, 0x22, 0x60, 0xf0, 0x04, 0xf9, 0x5c, 0x1c, 0x28, 0x21, 0x60,
- 0xf0, 0x03, 0xf9, 0xc0, 0x1c, 0x2b, 0x33, 0x7f, 0x1c, 0x1d, 0x34, 0x01, 0x43, 0xb5, 0x2c, 0x08,
- 0xd1, 0xef, 0x4b, 0x4d, 0x4a, 0x4d, 0x60, 0x1d, 0x4b, 0x48, 0x92, 0x06, 0x21, 0x80, 0x22, 0xff,
- 0x68, 0x1f, 0x05, 0xc9, 0x23, 0x00, 0x02, 0x12, 0x93, 0x08, 0x91, 0x02, 0x92, 0x01, 0x9b, 0x06,
- 0x21, 0x00, 0x60, 0x1f, 0x22, 0x60, 0x1c, 0x38, 0xf0, 0x04, 0xf9, 0x3c, 0x1c, 0x38, 0xf0, 0x03,
- 0xf9, 0x5b, 0x64, 0x78, 0x99, 0x06, 0x9b, 0x08, 0x68, 0x0a, 0x2b, 0x00, 0xd0, 0x01, 0x23, 0x80,
- 0x04, 0x1b, 0x60, 0x53, 0x99, 0x06, 0x23, 0x00, 0x68, 0x0a, 0x60, 0x93, 0x68, 0x0b, 0x9a, 0x02,
- 0x21, 0x1f, 0x61, 0x9a, 0x1c, 0x3b, 0x33, 0x7f, 0x9a, 0x06, 0x1c, 0x1f, 0x43, 0x8f, 0x68, 0x12,
- 0x1c, 0x38, 0x92, 0x07, 0xf0, 0x03, 0xf9, 0x40, 0x1c, 0x06, 0x1c, 0x38, 0xf0, 0x03, 0xf9, 0x3c,
- 0x1c, 0x04, 0x1c, 0x38, 0xf0, 0x03, 0xf9, 0x38, 0x1c, 0x05, 0x1c, 0x38, 0xf0, 0x03, 0xf9, 0x34,
- 0x99, 0x01, 0x23, 0xff, 0x22, 0xff, 0x04, 0x12, 0x02, 0x1b, 0x93, 0x05, 0x40, 0x0c, 0x40, 0x15,
- 0x23, 0xe0, 0x40, 0x1e, 0x21, 0x02, 0x02, 0x24, 0x0a, 0x2d, 0x0e, 0x00, 0x43, 0x0e, 0x43, 0x2c,
- 0x92, 0x04, 0x43, 0x04, 0x9a, 0x07, 0x06, 0x36, 0x43, 0x34, 0x60, 0x14, 0x9b, 0x06, 0x68, 0x1a,
- 0x23, 0x80, 0x04, 0x5b, 0x61, 0x13, 0x99, 0x06, 0x68, 0x0a, 0x61, 0x53, 0xc9, 0x01, 0x91, 0x06,
- 0x21, 0x60, 0xf0, 0x03, 0xf9, 0x57, 0x9a, 0x08, 0x32, 0x01, 0x92, 0x08, 0x2a, 0x06, 0xd1, 0xa6,
- 0x4b, 0x1a, 0x4f, 0x16, 0x93, 0x03, 0x69, 0x59, 0x68, 0x38, 0x91, 0x09, 0xf0, 0x03, 0xf9, 0x04,
- 0x1c, 0x06, 0x68, 0x38, 0xf0, 0x03, 0xf9, 0x00, 0x1c, 0x04, 0x68, 0x38, 0xf0, 0x03, 0xf8, 0xfc,
- 0x1c, 0x05, 0x68, 0x38, 0xf0, 0x03, 0xf8, 0xf8, 0x9a, 0x05, 0x9b, 0x04, 0x40, 0x14, 0x40, 0x1d,
- 0x21, 0xe0, 0x0a, 0x2d, 0x22, 0x02, 0x40, 0x0e, 0x02, 0x24, 0x43, 0x2c, 0x43, 0x16, 0x0e, 0x00,
- 0x9b, 0x09, 0x06, 0x36, 0x43, 0x04, 0x43, 0x34, 0x60, 0x1c, 0x99, 0x03, 0x69, 0x48, 0x21, 0x60,
- 0xf0, 0x03, 0xf9, 0x28, 0xb0, 0x0b, 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x67, 0xcc,
- 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0xc8, 0x13, 0x70, 0x67, 0xc4, 0x13, 0x72, 0xc0, 0x20,
- 0xb5, 0x30, 0xb0, 0x81, 0x1c, 0x04, 0xf0, 0x03, 0xf8, 0xcf, 0x21, 0x00, 0x1c, 0x05, 0x22, 0x60,
- 0x1c, 0x20, 0xf0, 0x04, 0xf8, 0xa7, 0x23, 0x40, 0x60, 0xa3, 0x23, 0x80, 0x04, 0x5b, 0xb0, 0x01,
- 0x63, 0x65, 0x60, 0x23, 0x60, 0x63, 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0xb5, 0xf0, 0x4b, 0x1a,
- 0xb0, 0x83, 0x68, 0x1d, 0x23, 0x00, 0x93, 0x01, 0x23, 0xff, 0x02, 0x1b, 0x27, 0xff, 0x26, 0x80,
- 0x93, 0x00, 0x04, 0x3f, 0x04, 0x76, 0x1c, 0x28, 0xf7, 0xff, 0xff, 0xda, 0x9b, 0x01, 0x2b, 0x03,
- 0xd0, 0x19, 0x1c, 0x2c, 0x23, 0x1f, 0x34, 0x7f, 0x43, 0x9c, 0x6b, 0x62, 0x1c, 0x28, 0x06, 0x13,
- 0x0e, 0x11, 0x43, 0x19, 0x9b, 0x00, 0x60, 0x6e, 0x40, 0x13, 0x02, 0x1b, 0x40, 0x3a, 0x43, 0x19,
- 0x0a, 0x12, 0x43, 0x11, 0x60, 0x29, 0x21, 0x60, 0xf0, 0x03, 0xf8, 0xdc, 0x9b, 0x01, 0x1c, 0x25,
- 0x33, 0x01, 0x93, 0x01, 0xe7, 0xdf, 0x1c, 0x28, 0x21, 0x60, 0xf0, 0x03, 0xf8, 0xd3, 0xb0, 0x03,
- 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x67, 0xc4, 0xb5, 0xf0, 0xb0, 0x83,
- 0xf7, 0xff, 0xfe, 0xd4, 0xf7, 0xff, 0xff, 0xc2, 0x4d, 0x4b, 0x49, 0x4c, 0x68, 0x2a, 0x68, 0x0b,
- 0x4f, 0x4b, 0x61, 0x93, 0x68, 0x2a, 0x68, 0x4b, 0x4e, 0x4a, 0x61, 0xd3, 0x68, 0x8b, 0x4a, 0x4a,
- 0x60, 0x3b, 0x92, 0x01, 0x68, 0xcb, 0x60, 0x13, 0x69, 0x0b, 0x21, 0x60, 0x60, 0x33, 0x68, 0x2b,
- 0x69, 0x98, 0xf0, 0x03, 0xf8, 0x97, 0x68, 0x2a, 0x69, 0x93, 0x64, 0xda, 0x68, 0x2b, 0x22, 0x00,
- 0x69, 0x9b, 0x64, 0x9a, 0x68, 0x2b, 0x69, 0x9c, 0x1c, 0x20, 0xf0, 0x03, 0xf8, 0x5d, 0x64, 0x60,
- 0x68, 0x33, 0x6c, 0x59, 0x68, 0x2b, 0x1c, 0x0a, 0x69, 0x98, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x1a,
- 0x23, 0xff, 0x04, 0x1b, 0x40, 0x0b, 0x0a, 0x1b, 0x02, 0x12, 0x43, 0x1a, 0x0e, 0x0b, 0x43, 0x1a,
- 0x23, 0xe0, 0x40, 0x19, 0x23, 0x02, 0x43, 0x19, 0x06, 0x09, 0x43, 0x0a, 0x60, 0x02, 0x68, 0x2b,
- 0x21, 0x60, 0x69, 0x9a, 0x23, 0x80, 0x04, 0x1b, 0x60, 0x53, 0x68, 0x2b, 0x22, 0x00, 0x69, 0x9b,
- 0x60, 0x9a, 0x68, 0x2b, 0x69, 0x9a, 0x23, 0x80, 0x05, 0xdb, 0x61, 0x93, 0x68, 0x2b, 0x69, 0x9a,
- 0x23, 0x80, 0x04, 0x5b, 0x61, 0x13, 0x68, 0x2a, 0x69, 0x92, 0x61, 0x53, 0x68, 0x2b, 0x69, 0x98,
- 0xf0, 0x03, 0xf8, 0x70, 0x68, 0x2b, 0x21, 0x60, 0x69, 0xd8, 0xf0, 0x03, 0xf8, 0x53, 0x68, 0x2a,
- 0x69, 0xd3, 0x64, 0xda, 0x68, 0x2b, 0x22, 0x00, 0x69, 0xdb, 0x64, 0x9a, 0x68, 0x2b, 0x69, 0xdc,
- 0x1c, 0x20, 0xf0, 0x03, 0xf8, 0x19, 0x64, 0x60, 0x68, 0x38, 0x21, 0x60, 0xf0, 0x03, 0xf8, 0x42,
- 0x68, 0x3a, 0x68, 0x2b, 0x64, 0xd3, 0x68, 0x3b, 0x22, 0x00, 0x64, 0x9a, 0x68, 0x3c, 0x1c, 0x20,
- 0xf0, 0x03, 0xf8, 0x0a, 0x64, 0x60, 0x68, 0x38, 0x21, 0x60, 0xf0, 0x03, 0xf8, 0x4b, 0x9b, 0x01,
- 0x21, 0x60, 0x68, 0x18, 0xf0, 0x03, 0xf8, 0x2e, 0x9b, 0x01, 0x68, 0x1a, 0x68, 0x2b, 0x64, 0xd3,
- 0x9a, 0x01, 0x68, 0x13, 0x22, 0x00, 0x64, 0x9a, 0x9b, 0x01, 0x68, 0x1c, 0x1c, 0x20, 0xf0, 0x02,
- 0xff, 0xf3, 0x64, 0x60, 0x9a, 0x01, 0x21, 0x60, 0x68, 0x10, 0xf0, 0x03, 0xf8, 0x33, 0xb0, 0x03,
- 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x34, 0x13, 0x72, 0xc0, 0x20,
- 0x13, 0x70, 0x67, 0x7c, 0x13, 0x70, 0x67, 0x84, 0x13, 0x70, 0x67, 0x80, 0xb5, 0xf0, 0x4c, 0x23,
- 0x4b, 0x23, 0xb0, 0x81, 0x60, 0x23, 0xf0, 0x03, 0xf8, 0x35, 0x28, 0x00, 0xda, 0x02, 0x20, 0x01,
- 0x42, 0x40, 0xe0, 0x37, 0xf0, 0x03, 0xf9, 0x80, 0x60, 0x20, 0x68, 0x82, 0x4b, 0x1d, 0x21, 0x01,
- 0x60, 0x13, 0x68, 0x20, 0x68, 0x82, 0x68, 0x13, 0x42, 0x0b, 0xd1, 0xfc, 0x21, 0xfc, 0xf0, 0x03,
- 0xf8, 0x09, 0x27, 0x80, 0x26, 0x80, 0x4c, 0x15, 0x25, 0x00, 0x04, 0x7f, 0x01, 0x76, 0x68, 0x23,
- 0x21, 0x04, 0x6c, 0xdb, 0x51, 0x5f, 0x68, 0x23, 0x6c, 0xdb, 0x59, 0x58, 0x35, 0x04, 0xf0, 0x02,
- 0xff, 0xf9, 0x42, 0xb5, 0xd1, 0xf3, 0xf7, 0xff, 0xff, 0x29, 0x68, 0x23, 0x22, 0x01, 0x33, 0x54,
- 0x70, 0x1a, 0x68, 0x23, 0x20, 0x00, 0x68, 0x9a, 0x69, 0x9b, 0x6c, 0x5b, 0x61, 0x93, 0x68, 0x23,
- 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0x68, 0x23, 0x68, 0x9a, 0x4b, 0x07, 0x60, 0x13, 0x68, 0x23,
- 0x68, 0x9b, 0x68, 0x1b, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x34,
- 0x13, 0x72, 0xc2, 0xa4, 0x00, 0x01, 0x00, 0x20, 0x00, 0x01, 0x00, 0x21, 0xb5, 0x10, 0x4b, 0x0c,
- 0x68, 0x18, 0x6c, 0x01, 0x29, 0x07, 0xdd, 0x01, 0x24, 0x00, 0xe0, 0x0d, 0x4b, 0x09, 0x68, 0x1b,
- 0x00, 0xdb, 0x18, 0x5b, 0x00, 0x5a, 0x18, 0xd2, 0x6a, 0x03, 0x01, 0x52, 0x18, 0x9c, 0x1c, 0x4b,
- 0x64, 0x03, 0x1c, 0x20, 0xf7, 0xff, 0xfe, 0xa4, 0x1c, 0x20, 0xbc, 0x10, 0xbc, 0x02, 0x47, 0x08,
- 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x70, 0xb5, 0xf0, 0xb0, 0x8d, 0x1c, 0x05, 0xf7, 0xff,
- 0xff, 0xdd, 0x90, 0x08, 0x28, 0x00, 0xd1, 0x00, 0xe0, 0xad, 0x63, 0xc5, 0x23, 0x00, 0x61, 0x6b,
- 0x7e, 0x6b, 0x69, 0x2a, 0x93, 0x07, 0x7e, 0x2b, 0x92, 0x0a, 0x2b, 0x00, 0xd0, 0x02, 0x9c, 0x08,
- 0x26, 0x80, 0xe0, 0x26, 0x23, 0x08, 0x93, 0x00, 0x23, 0xa0, 0x68, 0x69, 0x22, 0x08, 0x00, 0x9b,
- 0x98, 0x08, 0xf7, 0xff, 0xfb, 0x57, 0xf7, 0xff, 0xff, 0xc1, 0x1c, 0x04, 0x28, 0x00, 0xd1, 0x00,
- 0xe0, 0x91, 0x6b, 0x42, 0x63, 0xc5, 0x06, 0x13, 0x0e, 0x11, 0x43, 0x19, 0x23, 0xff, 0x02, 0x1b,
- 0x40, 0x13, 0x02, 0x1b, 0x43, 0x19, 0x23, 0xff, 0x04, 0x1b, 0x40, 0x1a, 0x0a, 0x12, 0x43, 0x11,
- 0x9a, 0x08, 0x60, 0x11, 0x63, 0x90, 0x9b, 0x0a, 0x2b, 0x00, 0xd1, 0x01, 0x4e, 0x40, 0xe0, 0x00,
- 0x4e, 0x40, 0x68, 0xea, 0x9b, 0x07, 0x92, 0x09, 0x2b, 0x00, 0xd0, 0x02, 0x23, 0x80, 0x00, 0x5b,
- 0x43, 0x1e, 0x69, 0xea, 0x4b, 0x3c, 0x27, 0xff, 0x40, 0x13, 0x93, 0x0b, 0x3b, 0x01, 0x22, 0x80,
- 0x93, 0x04, 0x23, 0xff, 0x04, 0x52, 0x02, 0x1b, 0x92, 0x05, 0x93, 0x03, 0x04, 0x3f, 0x9a, 0x0b,
- 0x1c, 0x33, 0x92, 0x00, 0x1c, 0x20, 0x9a, 0x0a, 0x99, 0x09, 0xf7, 0xff, 0xfb, 0x1b, 0x9b, 0x0a,
- 0x9a, 0x09, 0x1a, 0x1b, 0x93, 0x0a, 0x9b, 0x07, 0x18, 0x12, 0x92, 0x09, 0x2b, 0x00, 0xd0, 0x01,
- 0x9a, 0x05, 0x60, 0x62, 0x9a, 0x04, 0x18, 0x13, 0x9a, 0x0b, 0x42, 0x13, 0xd1, 0x01, 0x4b, 0x2b,
- 0x18, 0xf6, 0x9a, 0x0a, 0x2a, 0x00, 0xdd, 0x13, 0xf7, 0xff, 0xff, 0x70, 0x28, 0x00, 0xd0, 0x42,
- 0x6b, 0x42, 0x63, 0xc5, 0x06, 0x13, 0x0e, 0x11, 0x43, 0x19, 0x9b, 0x03, 0x63, 0xa0, 0x40, 0x13,
- 0x02, 0x1b, 0x40, 0x3a, 0x43, 0x19, 0x0a, 0x12, 0x43, 0x11, 0x60, 0x21, 0x1c, 0x04, 0xe7, 0xce,
- 0x23, 0x80, 0x04, 0x5b, 0x60, 0x63, 0x69, 0x2b, 0x1c, 0x27, 0x2b, 0x00, 0xd0, 0x24, 0x7e, 0x2b,
- 0x93, 0x06, 0x2b, 0x00, 0xd1, 0x20, 0xf7, 0xff, 0xff, 0x51, 0x1c, 0x04, 0x28, 0x00, 0xd0, 0x22,
- 0x6b, 0x42, 0x63, 0xc5, 0x06, 0x13, 0x0e, 0x11, 0x43, 0x19, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x13,
- 0x02, 0x1b, 0x43, 0x19, 0x23, 0xff, 0x04, 0x1b, 0x40, 0x1a, 0x0a, 0x12, 0x23, 0x80, 0x43, 0x11,
- 0x00, 0x5b, 0x4a, 0x0e, 0x60, 0x39, 0x63, 0xb8, 0x40, 0x73, 0x43, 0x13, 0x9a, 0x06, 0x21, 0x00,
- 0x92, 0x00, 0x22, 0x00, 0xf7, 0xff, 0xfa, 0xc6, 0x68, 0xa3, 0x22, 0x80, 0x04, 0x12, 0x43, 0x13,
- 0x60, 0xa3, 0x98, 0x08, 0xe0, 0x00, 0x20, 0x00, 0xb0, 0x0d, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
- 0x80, 0x00, 0x01, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x00,
- 0xb5, 0xf0, 0x7c, 0x83, 0x7c, 0xc2, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7d, 0x03, 0xb0, 0x85,
- 0x02, 0x1b, 0x43, 0x13, 0x7d, 0x42, 0x1c, 0x06, 0x43, 0x1a, 0xd0, 0x67, 0x22, 0x00, 0x92, 0x01,
- 0xe0, 0x53, 0x06, 0x0b, 0x04, 0x12, 0x43, 0x1a, 0x02, 0x23, 0x43, 0x13, 0x9a, 0x03, 0x43, 0x03,
- 0x18, 0x9d, 0x7a, 0x6b, 0x7a, 0xaa, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7a, 0xeb, 0x02, 0x1b,
- 0x43, 0x13, 0x7b, 0x2a, 0x43, 0x1a, 0xd0, 0x3b, 0x23, 0x00, 0x93, 0x02, 0x27, 0x00, 0xe0, 0x26,
- 0x06, 0x0b, 0x04, 0x12, 0x43, 0x1a, 0x02, 0x23, 0x43, 0x13, 0x43, 0x03, 0x19, 0xdc, 0x7b, 0xa3,
- 0x7b, 0xe2, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7c, 0x23, 0x02, 0x1b, 0x43, 0x13, 0x7c, 0x62,
- 0x1c, 0x10, 0x43, 0x18, 0xd0, 0x01, 0xf0, 0x02, 0xfe, 0x71, 0x7a, 0x63, 0x7a, 0xa2, 0x06, 0x1b,
- 0x04, 0x12, 0x43, 0x1a, 0x7a, 0xe3, 0x02, 0x1b, 0x43, 0x13, 0x7b, 0x22, 0x1c, 0x10, 0x43, 0x18,
- 0xd0, 0x01, 0xf0, 0x02, 0xfe, 0x63, 0x9a, 0x02, 0x37, 0x12, 0x32, 0x01, 0x92, 0x02, 0x79, 0x2b,
- 0x7a, 0x69, 0x46, 0x9c, 0x9b, 0x02, 0x7a, 0xaa, 0x7a, 0xec, 0x7b, 0x28, 0x45, 0x63, 0xdb, 0xcf,
- 0x06, 0x0b, 0x04, 0x12, 0x43, 0x1a, 0x02, 0x23, 0x43, 0x13, 0x43, 0x18, 0xf0, 0x02, 0xfe, 0x4e,
- 0x9d, 0x01, 0x9a, 0x03, 0x35, 0x01, 0x95, 0x01, 0x32, 0x0d, 0x7c, 0x73, 0x9d, 0x01, 0x92, 0x03,
- 0x7c, 0xb1, 0x7c, 0xf2, 0x7d, 0x34, 0x7d, 0x70, 0x42, 0x9d, 0xdb, 0xa2, 0x06, 0x0b, 0x04, 0x12,
- 0x43, 0x1a, 0x02, 0x23, 0x43, 0x13, 0x43, 0x18, 0xf0, 0x02, 0xfe, 0x38, 0xb0, 0x05, 0xbc, 0xf0,
- 0xbc, 0x01, 0x47, 0x00, 0xb4, 0x0f, 0xb5, 0xf0, 0xb0, 0x83, 0x46, 0x6a, 0x23, 0x80, 0xad, 0x08,
- 0x32, 0x06, 0x01, 0x9b, 0xcd, 0x10, 0x80, 0x13, 0x4e, 0x1d, 0xe0, 0x30, 0x1c, 0x67, 0x2b, 0x25,
- 0xd0, 0x07, 0x46, 0x6a, 0x46, 0x68, 0x71, 0x93, 0x30, 0x06, 0x1c, 0x3c, 0xf7, 0xfe, 0xfa, 0x4c,
- 0xe0, 0x25, 0x78, 0x63, 0x2b, 0x73, 0xd0, 0x1c, 0x2b, 0x73, 0xd8, 0x04, 0x2b, 0x64, 0xd0, 0x07,
- 0x2b, 0x69, 0xd1, 0x1b, 0xe0, 0x04, 0x2b, 0x75, 0xd0, 0x07, 0x2b, 0x78, 0xd1, 0x16, 0xe0, 0x0a,
- 0x68, 0x28, 0x1d, 0x2c, 0xf7, 0xff, 0xfb, 0x72, 0xe0, 0x09, 0x68, 0x28, 0xf7, 0xff, 0xfb, 0xba,
- 0x1d, 0x2c, 0x1c, 0x30, 0xe0, 0x07, 0x68, 0x28, 0x1d, 0x2c, 0xf7, 0xff, 0xfb, 0xf1, 0x48, 0x08,
- 0xe0, 0x01, 0x68, 0x28, 0x1d, 0x2c, 0xf7, 0xfe, 0xfa, 0x27, 0x1c, 0x25, 0x1c, 0x7c, 0x78, 0x23,
- 0x2b, 0x00, 0xd1, 0xcb, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0xb0, 0x04, 0x47, 0x18, 0x46, 0xc0,
- 0x13, 0x72, 0xc1, 0xe0, 0xb5, 0xf0, 0x4b, 0x32, 0xb0, 0x8f, 0x68, 0x1b, 0x1c, 0x01, 0x68, 0x9a,
- 0x4b, 0x30, 0x68, 0x54, 0x68, 0x1b, 0x32, 0x44, 0x00, 0x9b, 0x18, 0xd2, 0x68, 0x12, 0x48, 0x2e,
- 0x92, 0x0d, 0xf7, 0xff, 0xff, 0xa7, 0x04, 0x20, 0xd4, 0x02, 0x49, 0x2c, 0x91, 0x0a, 0xe0, 0x01,
- 0x4b, 0x2b, 0x93, 0x0a, 0x04, 0x60, 0xd4, 0x02, 0x49, 0x28, 0x91, 0x0b, 0xe0, 0x01, 0x4b, 0x29,
- 0x93, 0x0b, 0x04, 0xa0, 0xd4, 0x02, 0x49, 0x25, 0x91, 0x0c, 0xe0, 0x01, 0x4b, 0x26, 0x93, 0x0c,
- 0x04, 0xe0, 0xd4, 0x02, 0x49, 0x21, 0x46, 0x8c, 0xe0, 0x01, 0x4b, 0x24, 0x46, 0x9c, 0x06, 0xa0,
- 0xd4, 0x01, 0x4f, 0x1e, 0xe0, 0x00, 0x4f, 0x22, 0x06, 0xe1, 0xd4, 0x01, 0x4e, 0x1b, 0xe0, 0x00,
- 0x4e, 0x20, 0x07, 0x23, 0xd4, 0x01, 0x4d, 0x19, 0xe0, 0x00, 0x4d, 0x1f, 0x07, 0x60, 0xd4, 0x01,
- 0x4a, 0x16, 0xe0, 0x00, 0x4a, 0x1d, 0x07, 0xa1, 0xd4, 0x01, 0x4b, 0x14, 0xe0, 0x00, 0x4b, 0x1c,
- 0x07, 0xe0, 0xd4, 0x01, 0x49, 0x11, 0xe0, 0x00, 0x49, 0x1a, 0x48, 0x1b, 0x92, 0x05, 0x90, 0x09,
- 0x98, 0x0c, 0x9a, 0x0a, 0x90, 0x00, 0x46, 0x60, 0x90, 0x01, 0x93, 0x06, 0x91, 0x07, 0x9b, 0x0b,
- 0x98, 0x09, 0x1c, 0x21, 0x97, 0x02, 0x96, 0x03, 0x95, 0x04, 0xf7, 0xff, 0xff, 0x5b, 0x99, 0x0d,
- 0x48, 0x12, 0xf7, 0xff, 0xff, 0x57, 0xb0, 0x0f, 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0,
- 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x78, 0x13, 0x70, 0x60, 0x85, 0x13, 0x70, 0x66, 0x42,
- 0x13, 0x70, 0x60, 0x9b, 0x13, 0x70, 0x60, 0xa2, 0x13, 0x70, 0x60, 0xac, 0x13, 0x70, 0x60, 0xb2,
- 0x13, 0x70, 0x60, 0xb8, 0x13, 0x70, 0x60, 0xbd, 0x13, 0x70, 0x60, 0xc4, 0x13, 0x70, 0x60, 0xc9,
- 0x13, 0x70, 0x60, 0xce, 0x13, 0x70, 0x60, 0xd3, 0x13, 0x70, 0x60, 0xd8, 0x13, 0x70, 0x60, 0xfd,
- 0xb5, 0x30, 0x4b, 0x0b, 0xb0, 0x81, 0x68, 0x1a, 0x25, 0x20, 0x68, 0x92, 0x1c, 0x1c, 0x68, 0x12,
- 0x68, 0x23, 0x43, 0x2a, 0x68, 0x9b, 0x20, 0x0a, 0x60, 0x1a, 0xf7, 0xff, 0xf9, 0x2b, 0x68, 0x23,
- 0x68, 0x9b, 0x68, 0x1a, 0x42, 0x2a, 0xd0, 0xf3, 0xb0, 0x01, 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00,
- 0x13, 0x70, 0x60, 0x34, 0xb5, 0x30, 0x4b, 0x0b, 0xb0, 0x81, 0x68, 0x1a, 0x25, 0x20, 0x68, 0x92,
- 0x1c, 0x1c, 0x68, 0x12, 0x68, 0x23, 0x43, 0xaa, 0x68, 0x9b, 0x20, 0x0a, 0x60, 0x1a, 0xf7, 0xff,
- 0xf9, 0x11, 0x68, 0x23, 0x68, 0x9b, 0x68, 0x1a, 0x42, 0x2a, 0xd1, 0xf3, 0xb0, 0x01, 0xbc, 0x30,
- 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x60, 0x34, 0xb5, 0xf0, 0xb0, 0x81, 0x1c, 0x0e, 0x28, 0x00,
- 0xd1, 0x18, 0x4e, 0x18, 0x4d, 0x18, 0x4f, 0x19, 0x24, 0x00, 0x68, 0x33, 0x68, 0x9b, 0x69, 0x9a,
- 0x69, 0x2b, 0x6c, 0x5b, 0x42, 0x9a, 0xd3, 0x06, 0x69, 0x6b, 0x6c, 0x5b, 0x42, 0x9a, 0xd8, 0x02,
- 0xf7, 0xff, 0xff, 0xd0, 0xe0, 0x18, 0x20, 0x0a, 0x34, 0x01, 0xf7, 0xff, 0xf8, 0xeb, 0x42, 0xbc,
- 0xd1, 0xeb, 0xe0, 0x11, 0x28, 0x01, 0xd1, 0x0f, 0x24, 0x00, 0x4d, 0x0a, 0x4f, 0x0b, 0xe0, 0x05,
- 0x20, 0x0a, 0x34, 0x01, 0xf7, 0xff, 0xf8, 0xde, 0x42, 0xbc, 0xd0, 0x05, 0x68, 0x2b, 0x68, 0x9b,
- 0x69, 0x9a, 0x6c, 0x73, 0x42, 0x9a, 0xd0, 0xf3, 0xb0, 0x01, 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x02,
- 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x34, 0x13, 0x72, 0xc0, 0x20, 0x00, 0x00, 0x13, 0x88,
- 0xb5, 0xf0, 0xb0, 0x83, 0x1c, 0x1f, 0x4b, 0x0f, 0x92, 0x00, 0x91, 0x01, 0x9a, 0x08, 0x68, 0x1c,
- 0x00, 0x55, 0x1c, 0x1e, 0x20, 0x0a, 0xf7, 0xff, 0xf8, 0xbd, 0x9a, 0x01, 0x68, 0x13, 0x9a, 0x00,
- 0x40, 0x13, 0x42, 0xbb, 0xd1, 0x01, 0x20, 0x00, 0xe0, 0x07, 0x68, 0x33, 0x1b, 0x1b, 0xd5, 0x00,
- 0x68, 0x34, 0x42, 0xab, 0xd3, 0xee, 0x20, 0x02, 0x42, 0x40, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x02,
- 0x47, 0x08, 0x46, 0xc0, 0x0d, 0x80, 0x00, 0x10, 0xb5, 0x10, 0x4b, 0x13, 0x30, 0x10, 0x68, 0x1b,
- 0x00, 0x80, 0x68, 0x9b, 0x18, 0x1c, 0x68, 0x62, 0x23, 0x80, 0x01, 0x9b, 0x42, 0x1a, 0xd1, 0x00,
- 0x40, 0x5a, 0x23, 0x2e, 0x43, 0x9a, 0x60, 0x62, 0x20, 0x05, 0xf7, 0xfe, 0xff, 0x2b, 0x23, 0x80,
- 0x68, 0x62, 0x01, 0x9b, 0x42, 0x1a, 0xd0, 0x00, 0x40, 0x5a, 0x23, 0x2e, 0x43, 0x9a, 0x60, 0x62,
- 0x20, 0x05, 0xf7, 0xfe, 0xff, 0x1f, 0x4b, 0x05, 0x20, 0x05, 0x60, 0x63, 0xf7, 0xfe, 0xff, 0x1a,
- 0xbc, 0x10, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x18, 0x01,
- 0xb5, 0xf0, 0x4b, 0x29, 0xb0, 0x85, 0x68, 0x1a, 0x1c, 0x03, 0x68, 0x92, 0x33, 0x10, 0x00, 0x9b,
- 0x18, 0xd2, 0x92, 0x03, 0x1c, 0x15, 0x4b, 0x25, 0x68, 0x52, 0x35, 0x04, 0x40, 0x13, 0x2b, 0x01,
- 0xd0, 0x06, 0x04, 0x91, 0xd5, 0x01, 0xf7, 0xff, 0xff, 0xbf, 0x24, 0x01, 0x42, 0x64, 0xe0, 0x36,
- 0x26, 0x88, 0x27, 0x00, 0x01, 0x76, 0x21, 0x04, 0x1c, 0x13, 0x43, 0x8b, 0x43, 0x33, 0x60, 0x2b,
- 0x20, 0x3c, 0xf7, 0xff, 0xf8, 0x79, 0x68, 0x2b, 0x4a, 0x19, 0x20, 0x32, 0x40, 0x13, 0x60, 0x2b,
- 0xf7, 0xff, 0xf8, 0x72, 0x4b, 0x17, 0x22, 0x80, 0x93, 0x00, 0x1c, 0x28, 0x1c, 0x29, 0x00, 0x52,
- 0x23, 0x00, 0xf7, 0xff, 0xff, 0x7d, 0x1c, 0x04, 0x28, 0x00, 0xd0, 0x03, 0x9b, 0x03, 0x4c, 0x12,
- 0x68, 0x5a, 0xe0, 0x14, 0x68, 0x2a, 0x21, 0x04, 0x42, 0x0a, 0xd1, 0x02, 0x37, 0x01, 0x2f, 0x04,
- 0xd1, 0xd9, 0x07, 0x53, 0xd4, 0x0b, 0x23, 0x80, 0x01, 0x9b, 0x43, 0x13, 0x99, 0x03, 0x22, 0x2a,
- 0x43, 0x93, 0x60, 0x4b, 0x20, 0x0a, 0xf7, 0xff, 0xf8, 0x4f, 0x9b, 0x03, 0x68, 0x5a, 0xb0, 0x05,
- 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x20, 0x01,
- 0xff, 0xff, 0xfe, 0xd5, 0x00, 0x00, 0x13, 0x88, 0xff, 0xff, 0xf8, 0x30, 0xb5, 0xf0, 0xb0, 0x85,
- 0x90, 0x01, 0x1c, 0x0f, 0x20, 0x00, 0x21, 0x00, 0xf7, 0xff, 0xff, 0x0e, 0x7e, 0x3a, 0x2a, 0x00,
- 0xd1, 0x06, 0x4b, 0xc2, 0x21, 0x08, 0x60, 0x1a, 0x68, 0x38, 0xf0, 0x02, 0xfc, 0x8b, 0x60, 0x78,
- 0x69, 0x39, 0x29, 0x00, 0xd0, 0x09, 0x7e, 0x7b, 0x68, 0xb8, 0x2b, 0x00, 0xd0, 0x02, 0xf0, 0x02,
- 0xfc, 0x81, 0xe0, 0x01, 0xf0, 0x02, 0xfc, 0x76, 0x60, 0xf8, 0x7e, 0x3b, 0x2b, 0x00, 0xd1, 0x03,
- 0x4b, 0xb7, 0x68, 0x1b, 0x69, 0xdb, 0xe0, 0x06, 0x7e, 0x7b, 0x2b, 0x00, 0xd0, 0x01, 0x4b, 0xb5,
- 0xe0, 0x00, 0x4b, 0xb5, 0x68, 0x1b, 0x93, 0x02, 0x4c, 0xb4, 0x4b, 0xb5, 0x98, 0x02, 0x99, 0x02,
- 0x60, 0x18, 0x22, 0x60, 0x1c, 0x20, 0xf0, 0x02, 0xfd, 0x87, 0x21, 0x00, 0x22, 0x30, 0x98, 0x02,
- 0xf0, 0x03, 0xfb, 0xe8, 0x4b, 0xaa, 0x49, 0xaf, 0x68, 0x1a, 0x23, 0x00, 0x64, 0x13, 0x68, 0x0b,
- 0x22, 0x01, 0x40, 0x53, 0x60, 0x0b, 0x1c, 0x38, 0xf7, 0xff, 0xfc, 0x8e, 0x4b, 0xaa, 0x64, 0xa0,
- 0x60, 0x18, 0x1c, 0x06, 0x98, 0x01, 0x22, 0x80, 0x69, 0x83, 0x7e, 0x39, 0x01, 0x92, 0x43, 0x1a,
- 0x23, 0x0f, 0x40, 0x0b, 0x02, 0x1b, 0x1c, 0x10, 0x69, 0xfc, 0x43, 0x18, 0x29, 0x00, 0xd1, 0x03,
- 0x4b, 0xa2, 0x1c, 0x01, 0x43, 0x19, 0xe0, 0x08, 0x4b, 0xa1, 0x1c, 0x22, 0x40, 0x1a, 0x23, 0x80,
- 0x04, 0x12, 0x05, 0xdb, 0x43, 0x1a, 0x1c, 0x11, 0x43, 0x01, 0x06, 0x0b, 0x0e, 0x0a, 0x24, 0xff,
- 0x02, 0x24, 0x43, 0x1a, 0x1c, 0x0b, 0x40, 0x23, 0x02, 0x1b, 0x20, 0xff, 0x04, 0x00, 0x43, 0x1a,
- 0x1c, 0x0b, 0x40, 0x03, 0x4d, 0x91, 0x0a, 0x1b, 0x43, 0x1a, 0x23, 0x40, 0x60, 0xab, 0x4b, 0x95,
- 0x60, 0x6a, 0x68, 0x1b, 0x6c, 0x5a, 0x1c, 0x11, 0x1c, 0x13, 0x40, 0x21, 0x40, 0x03, 0x0a, 0x1b,
- 0x02, 0x09, 0x43, 0x19, 0x0e, 0x13, 0x43, 0x19, 0x23, 0xe0, 0x40, 0x1a, 0x23, 0x02, 0x43, 0x1a,
- 0x06, 0x12, 0x43, 0x11, 0x60, 0x29, 0x6b, 0x72, 0x06, 0x13, 0x0e, 0x11, 0x43, 0x19, 0x1c, 0x13,
- 0x40, 0x23, 0x02, 0x1b, 0x40, 0x02, 0x43, 0x19, 0x0a, 0x12, 0x23, 0x80, 0x43, 0x11, 0x04, 0x5b,
- 0x61, 0x29, 0x61, 0x6b, 0x7e, 0x3a, 0x2a, 0x00, 0xd0, 0x17, 0x9b, 0x01, 0x6a, 0x58, 0x06, 0x13,
- 0x2b, 0x00, 0xdb, 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x10, 0x23, 0x0f, 0x40, 0x13, 0x18, 0xcb,
- 0x40, 0xd8, 0x1c, 0x03, 0x49, 0x75, 0x07, 0xd8, 0xd5, 0x03, 0x69, 0x8b, 0x22, 0x80, 0x43, 0x13,
- 0xe0, 0x02, 0x69, 0x8b, 0x22, 0x80, 0x43, 0x93, 0x61, 0x8b, 0x4b, 0x70, 0x49, 0x76, 0x69, 0x9a,
- 0x6c, 0x9e, 0x40, 0x0a, 0x61, 0x9a, 0xe0, 0x04, 0x1c, 0x30, 0x21, 0x60, 0xf0, 0x02, 0xfb, 0xca,
- 0x6b, 0xb6, 0x2e, 0x00, 0xd1, 0xf8, 0x4d, 0x69, 0x98, 0x02, 0x1c, 0x29, 0x22, 0x60, 0xf0, 0x02,
- 0xfd, 0x03, 0x4a, 0x6e, 0x23, 0x01, 0x92, 0x00, 0x60, 0x13, 0x4b, 0x6d, 0x48, 0x6d, 0x68, 0x19,
- 0xf7, 0xfe, 0xfd, 0x88, 0x4c, 0x5e, 0x21, 0x20, 0x68, 0x23, 0x69, 0x98, 0xf0, 0x02, 0xfb, 0x9a,
- 0x68, 0x23, 0x6c, 0x69, 0x69, 0x98, 0x23, 0xff, 0x02, 0x1b, 0x1c, 0x0a, 0x40, 0x1a, 0x23, 0xff,
- 0x04, 0x1b, 0x40, 0x0b, 0x0a, 0x1b, 0x02, 0x12, 0x43, 0x1a, 0x0e, 0x0b, 0x43, 0x1a, 0x23, 0xe0,
- 0x40, 0x19, 0x23, 0x02, 0x43, 0x19, 0x06, 0x09, 0x43, 0x0a, 0x60, 0x02, 0x68, 0x23, 0x21, 0x20,
- 0x69, 0x98, 0xf0, 0x02, 0xfb, 0x97, 0xf7, 0xff, 0xfd, 0xeb, 0xf7, 0xfe, 0xfd, 0x2b, 0x9b, 0x00,
- 0x90, 0x03, 0x60, 0x1e, 0x28, 0x00, 0xd1, 0x03, 0x4b, 0x48, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x0f,
- 0x4b, 0x47, 0x68, 0x1b, 0x68, 0x9a, 0x4b, 0x54, 0x32, 0x44, 0x68, 0x1b, 0x00, 0x9b, 0x18, 0xd2,
- 0x68, 0x13, 0x22, 0x05, 0x40, 0x13, 0x2b, 0x05, 0xd0, 0x02, 0x4a, 0x40, 0x23, 0x01, 0x60, 0x13,
- 0x98, 0x03, 0x42, 0x46, 0x41, 0x46, 0x2e, 0x00, 0xd1, 0x01, 0x30, 0x05, 0xd1, 0x4f, 0xf7, 0xff,
- 0xfd, 0xe1, 0x4c, 0x3b, 0x21, 0x20, 0x68, 0x23, 0x69, 0x98, 0xf7, 0xfd, 0xff, 0x4d, 0x68, 0x23,
- 0x21, 0x20, 0x69, 0x98, 0xf0, 0x02, 0xfb, 0x1e, 0x4b, 0x3e, 0x68, 0x1b, 0x6c, 0x59, 0x68, 0x23,
- 0x1c, 0x0a, 0x69, 0x98, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x1a, 0x23, 0xff, 0x04, 0x1b, 0x40, 0x0b,
- 0x0a, 0x1b, 0x02, 0x12, 0x43, 0x1a, 0x0e, 0x0b, 0x43, 0x1a, 0x23, 0xe0, 0x40, 0x19, 0x23, 0x02,
- 0x43, 0x19, 0x06, 0x09, 0x43, 0x0a, 0x60, 0x02, 0x68, 0x23, 0x21, 0x20, 0x69, 0x98, 0xf7, 0xfd,
- 0xff, 0x4b, 0xf7, 0xff, 0xfd, 0x9d, 0x7e, 0x3a, 0x2a, 0x00, 0xd1, 0x00, 0xe0, 0x9f, 0x9b, 0x01,
- 0x1c, 0x14, 0x6a, 0x5d, 0x23, 0x0f, 0x40, 0x1c, 0x06, 0x13, 0x2b, 0x00, 0xdb, 0x01, 0x20, 0x00,
- 0xe0, 0x00, 0x20, 0x10, 0x4b, 0x2d, 0x68, 0x19, 0x06, 0x13, 0x2b, 0x00, 0xdb, 0x01, 0x22, 0x00,
- 0xe0, 0x00, 0x22, 0x10, 0x09, 0xcb, 0x21, 0x01, 0x40, 0x0b, 0x19, 0x12, 0x40, 0x93, 0x19, 0x02,
- 0x40, 0x91, 0x1c, 0x2a, 0x43, 0x8a, 0x98, 0x01, 0x43, 0x13, 0x62, 0x43, 0xe0, 0x7f, 0xf7, 0xff,
- 0xfd, 0x91, 0x4b, 0x16, 0x6c, 0x9c, 0xe0, 0x04, 0x6b, 0x60, 0x21, 0x60, 0xf0, 0x02, 0xfb, 0x02,
- 0x6b, 0xa4, 0x2c, 0x00, 0xd1, 0xf8, 0x22, 0x20, 0x48, 0x10, 0x99, 0x02, 0xf0, 0x02, 0xfc, 0x44,
- 0x7e, 0x3a, 0x2a, 0x00, 0xd0, 0x41, 0x9b, 0x01, 0x1c, 0x14, 0x6a, 0x5d, 0x23, 0x0f, 0x40, 0x1c,
- 0x06, 0x13, 0x2b, 0x00, 0xdb, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x10, 0x4b, 0x07, 0x69, 0x99,
- 0x06, 0x13, 0x2b, 0x00, 0xdb, 0x24, 0x22, 0x00, 0xe0, 0x23, 0x46, 0xc0, 0x13, 0x70, 0x67, 0x6c,
- 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x7c, 0x13, 0x70, 0x67, 0x80, 0x13, 0x72, 0xc1, 0x80,
- 0x13, 0x70, 0x67, 0x8c, 0x13, 0x70, 0x67, 0x70, 0x13, 0x70, 0x67, 0x88, 0x40, 0x40, 0x40, 0x00,
- 0x00, 0x00, 0x07, 0xff, 0x13, 0x70, 0x67, 0x84, 0x01, 0x00, 0x00, 0x80, 0x13, 0x70, 0x67, 0x74,
- 0x13, 0x70, 0x60, 0x38, 0x13, 0x70, 0x48, 0x25, 0x13, 0x70, 0x67, 0x78, 0x13, 0x70, 0x67, 0x90,
- 0x22, 0x10, 0x09, 0xcb, 0x21, 0x01, 0x40, 0x0b, 0x19, 0x12, 0x40, 0x93, 0x19, 0x02, 0x40, 0x91,
- 0x1c, 0x2a, 0x43, 0x8a, 0x98, 0x01, 0x43, 0x13, 0x62, 0x43, 0x4c, 0x25, 0x21, 0x20, 0x68, 0x23,
- 0x69, 0x98, 0xf7, 0xfd, 0xfe, 0xa9, 0x68, 0x23, 0x21, 0x20, 0x69, 0x98, 0xf0, 0x02, 0xfa, 0x7a,
- 0x4b, 0x20, 0x68, 0x1b, 0x6c, 0x59, 0x68, 0x23, 0x1c, 0x0a, 0x69, 0x98, 0x23, 0xff, 0x02, 0x1b,
- 0x40, 0x1a, 0x23, 0xff, 0x04, 0x1b, 0x40, 0x0b, 0x0a, 0x1b, 0x02, 0x12, 0x43, 0x1a, 0x0e, 0x0b,
- 0x43, 0x1a, 0x23, 0xe0, 0x40, 0x19, 0x23, 0x02, 0x43, 0x19, 0x06, 0x09, 0x43, 0x0a, 0x60, 0x02,
- 0x68, 0x23, 0x21, 0x20, 0x69, 0x98, 0xf7, 0xfd, 0xfe, 0xa7, 0xf7, 0xff, 0xfc, 0xf9, 0x49, 0x12,
- 0x20, 0x01, 0xf7, 0xff, 0xfd, 0x29, 0x69, 0x39, 0x29, 0x00, 0xd0, 0x08, 0x7e, 0x7b, 0x68, 0xf8,
- 0x2b, 0x00, 0xd0, 0x02, 0xf0, 0x02, 0xfa, 0x8e, 0xe0, 0x01, 0xf0, 0x02, 0xfa, 0x83, 0x7e, 0x3b,
- 0x2b, 0x00, 0xd1, 0x03, 0x68, 0x78, 0x21, 0x08, 0xf0, 0x02, 0xfa, 0x84, 0x2e, 0x00, 0xd0, 0x01,
- 0x69, 0x7f, 0x97, 0x03, 0x98, 0x03, 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
- 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x84, 0x13, 0x72, 0xc1, 0x80, 0xb5, 0x30, 0xb0, 0x89,
- 0x46, 0x6d, 0x76, 0x29, 0x09, 0xc9, 0x76, 0x69, 0x21, 0x80, 0x00, 0x89, 0x91, 0x07, 0x24, 0x00,
- 0x46, 0x69, 0x94, 0x00, 0x92, 0x04, 0x93, 0x02, 0xf7, 0xff, 0xfd, 0xe0, 0xb0, 0x09, 0xbc, 0x30,
- 0xbc, 0x02, 0x47, 0x08, 0xb5, 0xf0, 0xb0, 0x83, 0x1c, 0x04, 0x91, 0x01, 0x92, 0x00, 0x34, 0xa0,
- 0x1c, 0x07, 0x21, 0xff, 0x22, 0x0d, 0x68, 0x20, 0xf0, 0x03, 0xf9, 0xf4, 0x1c, 0x3b, 0x33, 0x90,
- 0x68, 0x18, 0x7b, 0x39, 0x68, 0x23, 0x22, 0x0d, 0xf7, 0xff, 0xff, 0xd8, 0x28, 0x00, 0xdb, 0x4e,
- 0x28, 0x0d, 0xd0, 0x01, 0x48, 0x28, 0xe0, 0x4a, 0x68, 0x23, 0x24, 0xff, 0x68, 0x19, 0x68, 0x5e,
- 0x68, 0x9d, 0x7b, 0x1b, 0x0e, 0x0a, 0x46, 0x9c, 0x06, 0x0b, 0x43, 0x1a, 0x02, 0x24, 0x1c, 0x0b,
- 0x20, 0xff, 0x40, 0x23, 0x04, 0x00, 0x02, 0x1b, 0x40, 0x01, 0x43, 0x1a, 0x0a, 0x09, 0x4b, 0x1f,
- 0x43, 0x0a, 0x42, 0x9a, 0xd0, 0x01, 0x48, 0x1e, 0xe0, 0x31, 0x9a, 0x00, 0x2a, 0x00, 0xd0, 0x0c,
- 0x06, 0x2b, 0x0e, 0x2a, 0x43, 0x1a, 0x1c, 0x2b, 0x40, 0x23, 0x02, 0x1b, 0x43, 0x1a, 0x1c, 0x2b,
- 0x40, 0x03, 0x0a, 0x1b, 0x43, 0x1a, 0x9b, 0x00, 0x60, 0x1a, 0x9a, 0x01, 0x2a, 0x00, 0xd0, 0x01,
- 0x46, 0x63, 0x70, 0x13, 0x06, 0x33, 0x0e, 0x32, 0x43, 0x1a, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x33,
- 0x02, 0x1b, 0x43, 0x1a, 0x23, 0xff, 0x04, 0x1b, 0x40, 0x33, 0x1c, 0x38, 0x0a, 0x1b, 0x1c, 0x11,
- 0x30, 0x98, 0x43, 0x19, 0x68, 0x03, 0x42, 0x99, 0xd0, 0x01, 0x48, 0x0a, 0xe0, 0x07, 0x4a, 0x0a,
- 0x1c, 0x8b, 0x40, 0x13, 0x4a, 0x09, 0x40, 0x0a, 0x43, 0x13, 0x60, 0x03, 0x20, 0x00, 0xb0, 0x03,
- 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0xff, 0xff, 0xd8, 0xed, 0x53, 0x42, 0x53, 0x55,
- 0xff, 0xff, 0xd8, 0xec, 0xff, 0xff, 0xd8, 0xeb, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
- 0xb5, 0xf0, 0xb0, 0x85, 0x93, 0x02, 0x46, 0x6b, 0x33, 0x2f, 0x78, 0x1b, 0x1c, 0x05, 0x93, 0x01,
- 0x3b, 0x01, 0x06, 0x1b, 0x0e, 0x1b, 0x91, 0x03, 0x1c, 0x17, 0x2b, 0x0f, 0xd8, 0x5e, 0x1c, 0x06,
- 0x36, 0xa0, 0x68, 0x30, 0x28, 0x00, 0xd0, 0x59, 0x21, 0x00, 0x22, 0x1f, 0xf0, 0x03, 0xf9, 0x72,
- 0x68, 0x32, 0x4b, 0x2d, 0x24, 0xff, 0x60, 0x13, 0x1c, 0x2b, 0x33, 0x98, 0x68, 0x1a, 0x68, 0x31,
- 0x06, 0x13, 0x46, 0x8c, 0x0e, 0x11, 0x43, 0x19, 0x02, 0x24, 0x1c, 0x13, 0x20, 0xff, 0x04, 0x00,
- 0x40, 0x23, 0x02, 0x1b, 0x40, 0x02, 0x43, 0x19, 0x0a, 0x12, 0x43, 0x11, 0x46, 0x62, 0x60, 0x51,
- 0x06, 0x3b, 0x0e, 0x3a, 0x43, 0x1a, 0x1c, 0x3b, 0x40, 0x23, 0x02, 0x1b, 0x43, 0x1a, 0x1c, 0x3b,
- 0x40, 0x03, 0x68, 0x31, 0x0a, 0x1b, 0x43, 0x1a, 0x60, 0x8a, 0x22, 0x0b, 0x46, 0x69, 0x5c, 0x51,
- 0x68, 0x33, 0x46, 0x6a, 0x73, 0x19, 0x21, 0x0f, 0x68, 0x33, 0x5c, 0x8a, 0x73, 0x5a, 0x1c, 0x2b,
- 0x33, 0x9c, 0x78, 0x1b, 0x68, 0x31, 0x2b, 0x00, 0xd0, 0x01, 0x23, 0x0c, 0xe0, 0x05, 0x9b, 0x01,
- 0x2b, 0x06, 0xd8, 0x01, 0x23, 0x06, 0xe0, 0x00, 0x23, 0x10, 0x1c, 0x2c, 0x73, 0x8b, 0x34, 0xa0,
- 0x68, 0x20, 0x99, 0x0a, 0x9a, 0x01, 0x30, 0x0f, 0xf0, 0x03, 0xf8, 0xe8, 0x1c, 0x2b, 0x33, 0x90,
- 0x68, 0x18, 0x7b, 0x69, 0x68, 0x23, 0x22, 0x1f, 0xf7, 0xff, 0xff, 0x10, 0x28, 0x1f, 0xd1, 0x01,
- 0x20, 0x00, 0xe0, 0x05, 0x28, 0x00, 0xdb, 0x03, 0x48, 0x04, 0xe0, 0x01, 0x20, 0x03, 0x42, 0x40,
- 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x55, 0x53, 0x42, 0x43, 0xff, 0xff, 0xd8, 0xee,
- 0xb5, 0xf0, 0xb0, 0x8b, 0x90, 0x01, 0x46, 0x68, 0x30, 0x42, 0x88, 0x04, 0x30, 0x04, 0x88, 0x05,
- 0x48, 0x27, 0x9f, 0x12, 0x68, 0x00, 0x04, 0x24, 0x30, 0xf8, 0x68, 0x00, 0x04, 0x2d, 0x70, 0x42,
- 0x02, 0x1a, 0x0a, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x13, 0x70, 0xc3, 0x0a, 0x23, 0x0e, 0x24,
- 0x43, 0x23, 0x0e, 0x12, 0x04, 0x1b, 0x70, 0x82, 0x0c, 0x2e, 0x0c, 0x1a, 0x0e, 0x1b, 0x71, 0x03,
- 0x0e, 0x2d, 0x02, 0x33, 0x43, 0x2b, 0x04, 0x1b, 0x71, 0x42, 0x0e, 0x1a, 0x0c, 0x1b, 0x71, 0xc3,
- 0xac, 0x02, 0x23, 0x00, 0x70, 0x01, 0x71, 0x82, 0x76, 0x23, 0x23, 0x40, 0x61, 0xe3, 0x4b, 0x15,
- 0x09, 0xc9, 0x90, 0x02, 0x76, 0x61, 0x61, 0x26, 0x42, 0x9f, 0xd9, 0x15, 0x1c, 0x30, 0xf0, 0x02,
- 0xf9, 0x09, 0x1c, 0x32, 0x1c, 0x39, 0x60, 0xa0, 0xf0, 0x03, 0xf8, 0x90, 0x1c, 0x21, 0x98, 0x01,
- 0xf7, 0xff, 0xfc, 0xac, 0x68, 0xa1, 0x1c, 0x05, 0x1c, 0x32, 0x1c, 0x38, 0xf0, 0x03, 0xf8, 0x86,
- 0x68, 0xa0, 0xf0, 0x02, 0xf8, 0xeb, 0xe0, 0x05, 0x60, 0xa7, 0x98, 0x01, 0x1c, 0x21, 0xf7, 0xff,
- 0xfc, 0x9d, 0x1c, 0x05, 0xb0, 0x0b, 0x1c, 0x28, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
- 0x13, 0x70, 0x60, 0x34, 0x13, 0x88, 0x00, 0x00, 0xb5, 0x00, 0xb0, 0x85, 0x91, 0x00, 0x23, 0x00,
- 0x21, 0x02, 0x22, 0x01, 0x93, 0x01, 0x93, 0x02, 0xf7, 0xff, 0xff, 0x9a, 0xb0, 0x05, 0xbc, 0x02,
- 0x47, 0x08, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x85, 0x2a, 0x00, 0xd1, 0x02, 0x20, 0x03, 0x42, 0x40,
- 0xe0, 0x08, 0x1c, 0x13, 0x22, 0x00, 0x91, 0x00, 0x92, 0x01, 0x92, 0x02, 0x21, 0x01, 0x22, 0x0b,
- 0xf7, 0xff, 0xff, 0x86, 0xb0, 0x05, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x85,
- 0x22, 0x00, 0x92, 0x00, 0x92, 0x01, 0x92, 0x02, 0x1c, 0x0b, 0x22, 0x09, 0x21, 0x00, 0xf7, 0xff,
- 0xff, 0x77, 0xb0, 0x05, 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x70, 0xb0, 0x84, 0x1c, 0x04, 0x20, 0x01,
- 0x1c, 0x0e, 0xf0, 0x02, 0xf8, 0xaf, 0x1c, 0x05, 0x28, 0x00, 0xd1, 0x02, 0x24, 0x04, 0x42, 0x64,
- 0xe0, 0x12, 0x23, 0x00, 0x93, 0x00, 0x23, 0x01, 0x93, 0x01, 0x90, 0x02, 0x21, 0x80, 0x1c, 0x20,
- 0x22, 0x08, 0x23, 0x00, 0xf7, 0xff, 0xff, 0x5c, 0x1c, 0x04, 0x28, 0x00, 0xdb, 0x01, 0x78, 0x2b,
- 0x70, 0x33, 0x1c, 0x28, 0xf0, 0x02, 0xf8, 0x8a, 0xb0, 0x04, 0x1c, 0x20, 0xbc, 0x70, 0xbc, 0x02,
- 0x47, 0x08, 0x46, 0xc0, 0xb5, 0xf0, 0x4b, 0x4c, 0x4a, 0x4c, 0x78, 0x19, 0xb0, 0x87, 0x1c, 0x06,
- 0x68, 0x17, 0x29, 0x00, 0xd0, 0x01, 0x4b, 0x4a, 0xe0, 0x00, 0x4b, 0x4a, 0x60, 0x13, 0x4b, 0x4a,
- 0x68, 0x1b, 0x68, 0x9a, 0x1c, 0x33, 0x33, 0x90, 0x68, 0x1b, 0x32, 0x44, 0x69, 0xdb, 0x00, 0x9b,
- 0x18, 0xd2, 0x68, 0x13, 0x22, 0x01, 0x42, 0x13, 0xd1, 0x06, 0x4b, 0x44, 0x24, 0x01, 0x60, 0x1a,
- 0x4b, 0x3e, 0x42, 0x64, 0x60, 0x1f, 0xe0, 0x72, 0x4a, 0x3c, 0x29, 0x00, 0xd0, 0x01, 0x4b, 0x3c,
- 0xe0, 0x00, 0x4b, 0x3c, 0x60, 0x13, 0x4b, 0x3e, 0x1c, 0x35, 0x78, 0x1b, 0x35, 0x90, 0x2b, 0x00,
- 0xd0, 0x12, 0x88, 0xf3, 0x68, 0x28, 0x22, 0xff, 0x93, 0x00, 0x21, 0x21, 0x23, 0x00, 0x93, 0x01,
- 0x93, 0x02, 0xf7, 0xff, 0xff, 0x15, 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x36, 0xf7, 0xff, 0xfa, 0x12,
- 0x20, 0x3c, 0xf7, 0xfe, 0xfc, 0x39, 0xe0, 0x07, 0x21, 0x00, 0x68, 0x28, 0xf7, 0xff, 0xff, 0x64,
- 0x20, 0x05, 0xf7, 0xfe, 0xfc, 0x31, 0x24, 0x00, 0x4b, 0x27, 0x4a, 0x28, 0x78, 0x1b, 0x2b, 0x00,
- 0xd0, 0x01, 0x4b, 0x27, 0xe0, 0x00, 0x4b, 0x27, 0x1c, 0x35, 0x60, 0x13, 0x35, 0x90, 0x2c, 0x00,
- 0xda, 0x0a, 0x20, 0x32, 0xf7, 0xfe, 0xfc, 0x20, 0x68, 0x28, 0x21, 0x00, 0xf7, 0xff, 0xff, 0x4c,
- 0x20, 0x05, 0xf7, 0xfe, 0xfc, 0x19, 0xe0, 0x2d, 0x7b, 0x31, 0x68, 0x28, 0xf7, 0xff, 0xff, 0x44,
- 0x1c, 0x04, 0x20, 0x05, 0xf7, 0xfe, 0xfc, 0x10, 0x48, 0x1f, 0x1c, 0x21, 0xf7, 0xff, 0xf9, 0xe2,
- 0x2c, 0x00, 0xdb, 0x1f, 0x7b, 0x71, 0x68, 0x28, 0xf7, 0xff, 0xff, 0x36, 0x1c, 0x04, 0x20, 0x05,
- 0xf7, 0xfe, 0xfc, 0x02, 0x48, 0x19, 0x1c, 0x21, 0xf7, 0xff, 0xf9, 0xd4, 0x2c, 0x00, 0xdb, 0x11,
- 0x20, 0x0a, 0xf7, 0xfe, 0xfb, 0xf9, 0x46, 0x69, 0x31, 0x17, 0x68, 0x28, 0xf7, 0xff, 0xff, 0x54,
- 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x12, 0xf7, 0xff, 0xf9, 0xc5, 0x2c, 0x00, 0xdb, 0x02, 0x4b, 0x07,
- 0x60, 0x1f, 0xe0, 0x04, 0x4b, 0x05, 0x4a, 0x09, 0x60, 0x1f, 0x23, 0x01, 0x60, 0x13, 0xb0, 0x07,
- 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x01, 0x0f, 0x13, 0x70, 0x60, 0x38,
- 0x00, 0x0f, 0x42, 0x40, 0x00, 0x03, 0x0d, 0x40, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x6c,
- 0x13, 0x70, 0x01, 0x0d, 0x13, 0x70, 0x61, 0x12, 0x13, 0x70, 0x61, 0x33, 0x13, 0x70, 0x61, 0x5a,
- 0x13, 0x70, 0x61, 0x82, 0xb5, 0x00, 0xb0, 0x81, 0x21, 0x00, 0xf7, 0xff, 0xff, 0x4b, 0xb0, 0x01,
- 0xbc, 0x02, 0x47, 0x08, 0xb5, 0xf0, 0xb0, 0x8d, 0x1c, 0x1e, 0x46, 0x6b, 0x33, 0x5f, 0x92, 0x07,
- 0x78, 0x1a, 0x3b, 0x10, 0x78, 0x1b, 0x06, 0x12, 0x93, 0x06, 0x46, 0x6b, 0x33, 0x53, 0x78, 0x1b,
- 0x16, 0x12, 0x93, 0x05, 0x46, 0x6b, 0x92, 0x04, 0x33, 0x2f, 0x22, 0x00, 0x91, 0x08, 0x70, 0x1a,
- 0x4b, 0x99, 0x92, 0x0a, 0x60, 0x1a, 0x4a, 0x99, 0x4b, 0x99, 0x24, 0x00, 0x1c, 0x05, 0x94, 0x09,
- 0x92, 0x03, 0x93, 0x02, 0x1c, 0xa3, 0x2b, 0x01, 0xd8, 0x00, 0xe1, 0x08, 0x2c, 0x00, 0xd0, 0x22,
- 0x1c, 0x28, 0x21, 0x00, 0xf7, 0xff, 0xff, 0x1e, 0x1c, 0x04, 0x28, 0x00, 0xdb, 0x01, 0x20, 0x05,
- 0xe0, 0x00, 0x20, 0x3c, 0xf7, 0xfe, 0xfb, 0x90, 0x4b, 0x8e, 0x68, 0x1b, 0x68, 0x9a, 0x4b, 0x8e,
- 0x32, 0x44, 0x68, 0x1b, 0x00, 0x9b, 0x18, 0xd2, 0x68, 0x12, 0x2c, 0x00, 0xda, 0x09, 0x9a, 0x09,
- 0x32, 0x01, 0x92, 0x09, 0x2a, 0x02, 0xdd, 0x00, 0xe0, 0xeb, 0x20, 0x0a, 0xf7, 0xfe, 0xfb, 0x7c,
- 0xe0, 0xdf, 0x23, 0x00, 0x93, 0x09, 0x9b, 0x04, 0x9a, 0x05, 0x3b, 0x01, 0x06, 0x1b, 0x16, 0x1b,
- 0x93, 0x04, 0x2a, 0x00, 0xd0, 0x31, 0x9b, 0x03, 0x9a, 0x02, 0x68, 0x1f, 0x78, 0x13, 0x2b, 0x00,
- 0xd0, 0x01, 0x4b, 0x7e, 0xe0, 0x00, 0x4b, 0x7e, 0x9a, 0x03, 0x1c, 0x28, 0x60, 0x13, 0x9b, 0x12,
- 0x9a, 0x06, 0x93, 0x00, 0x92, 0x01, 0x23, 0x00, 0x99, 0x08, 0x1c, 0x32, 0xf7, 0xff, 0xfd, 0xb8,
- 0x4b, 0x72, 0x1c, 0x04, 0x60, 0x1f, 0x1c, 0x83, 0x2b, 0x01, 0xd8, 0x00, 0xe0, 0xbf, 0x28, 0x00,
- 0xda, 0x0d, 0xe0, 0xb8, 0x1c, 0x2b, 0x33, 0x90, 0x68, 0x18, 0x7b, 0x69, 0x9b, 0x07, 0x1c, 0x32,
- 0xf7, 0xff, 0xfd, 0x1c, 0x1c, 0x83, 0x1c, 0x04, 0x2b, 0x01, 0xd8, 0x43, 0xe0, 0x02, 0x2e, 0x00,
- 0xd1, 0xf0, 0xe0, 0x49, 0x28, 0x00, 0xda, 0x47, 0xe0, 0xa3, 0x9b, 0x03, 0x9a, 0x02, 0x68, 0x1f,
- 0x78, 0x13, 0x2b, 0x00, 0xd0, 0x01, 0x4b, 0x65, 0xe0, 0x00, 0x4b, 0x65, 0x9a, 0x03, 0x1c, 0x28,
- 0x60, 0x13, 0x9b, 0x12, 0x9a, 0x06, 0x93, 0x00, 0x92, 0x01, 0x23, 0x80, 0x99, 0x08, 0x1c, 0x32,
- 0xf7, 0xff, 0xfd, 0x86, 0x4b, 0x59, 0x1c, 0x04, 0x60, 0x1f, 0x28, 0x00, 0xda, 0x06, 0x48, 0x5d,
- 0x1c, 0x21, 0xf7, 0xff, 0xf8, 0xf7, 0x48, 0x5c, 0xf7, 0xff, 0xf9, 0x3c, 0x1c, 0xa3, 0x2b, 0x01,
- 0xd8, 0x00, 0xe0, 0x84, 0x2c, 0x00, 0xda, 0x1a, 0xe0, 0x7d, 0x1c, 0x2b, 0x33, 0x90, 0x68, 0x18,
- 0x7b, 0x29, 0x1c, 0x32, 0x9b, 0x07, 0xf7, 0xff, 0xfc, 0xe1, 0x1c, 0x04, 0x28, 0x00, 0xda, 0x06,
- 0x48, 0x52, 0x1c, 0x21, 0xf7, 0xff, 0xf8, 0xde, 0x48, 0x51, 0xf7, 0xff, 0xf9, 0x23, 0x1c, 0xa3,
- 0x2b, 0x01, 0xd9, 0x07, 0x2c, 0x00, 0xdb, 0x62, 0x42, 0xb4, 0xd0, 0x05, 0xe0, 0x5f, 0x2e, 0x00,
- 0xd1, 0xe3, 0xe0, 0x01, 0x2c, 0x00, 0xdb, 0x5e, 0x4b, 0x41, 0x4a, 0x40, 0x78, 0x1b, 0x68, 0x17,
- 0x2b, 0x00, 0xd0, 0x01, 0x4b, 0x41, 0xe0, 0x00, 0x4b, 0x41, 0x46, 0x69, 0x60, 0x13, 0x1c, 0x28,
- 0x31, 0x2f, 0xaa, 0x0a, 0xf7, 0xff, 0xfc, 0xce, 0x1c, 0x04, 0x28, 0x00, 0xda, 0x28, 0x48, 0x41,
- 0x1c, 0x21, 0xf7, 0xff, 0xf8, 0xb7, 0x48, 0x40, 0xf7, 0xff, 0xf8, 0xfc, 0x1c, 0x63, 0xd1, 0x02,
- 0x4b, 0x32, 0x60, 0x1f, 0xe0, 0x45, 0x1c, 0x2c, 0x34, 0x90, 0x68, 0x20, 0x7b, 0x29, 0xf7, 0xff,
- 0xfe, 0x03, 0x7b, 0x2a, 0x68, 0x24, 0x06, 0x13, 0x6a, 0x60, 0x2b, 0x00, 0xdb, 0x01, 0x21, 0x00,
- 0xe0, 0x00, 0x21, 0x10, 0x23, 0x0f, 0x40, 0x1a, 0x18, 0x8a, 0x23, 0x01, 0x40, 0x93, 0x43, 0x98,
- 0x46, 0x69, 0x62, 0x60, 0x31, 0x2f, 0x1c, 0x28, 0xaa, 0x0a, 0xf7, 0xff, 0xfc, 0xa3, 0x1c, 0x04,
- 0x4b, 0x22, 0x60, 0x1f, 0x1c, 0xa3, 0x2b, 0x01, 0xd9, 0x21, 0x9b, 0x0a, 0x2b, 0x00, 0xd0, 0x07,
- 0x4b, 0x2a, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x03, 0x46, 0x6b, 0x22, 0x01, 0x33, 0x2f, 0x70, 0x1a,
- 0x2c, 0x00, 0xdb, 0x10, 0x4b, 0x25, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x06, 0x46, 0x6b, 0x33, 0x2f,
- 0x78, 0x1b, 0x2b, 0x00, 0xd0, 0x01, 0x4c, 0x22, 0xe0, 0x05, 0x24, 0x00, 0xe0, 0x0e, 0x4c, 0x21,
- 0xe0, 0x01, 0x2c, 0x00, 0xda, 0x0a, 0x9a, 0x04, 0x2a, 0x00, 0xdd, 0x00, 0xe6, 0xf2, 0x2c, 0x00,
- 0xda, 0x04, 0x4a, 0x0d, 0x23, 0x01, 0x60, 0x13, 0x2c, 0x00, 0xdb, 0x02, 0x4a, 0x0a, 0x23, 0x00,
- 0x60, 0x13, 0x9b, 0x15, 0x2b, 0x00, 0xd0, 0x04, 0x46, 0x6b, 0x33, 0x2f, 0x78, 0x1b, 0x9a, 0x15,
- 0x70, 0x13, 0x9b, 0x16, 0x2b, 0x00, 0xd0, 0x02, 0x9b, 0x0a, 0x9a, 0x16, 0x60, 0x13, 0xb0, 0x0d,
- 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x70, 0x60, 0x38,
- 0x13, 0x70, 0x01, 0x0f, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x78, 0x00, 0x0f, 0x42, 0x40,
- 0x00, 0x03, 0x0d, 0x40, 0x13, 0x70, 0x61, 0xb1, 0x13, 0x70, 0x61, 0xc4, 0x13, 0x70, 0x61, 0xce,
- 0x13, 0x70, 0x61, 0xe6, 0x13, 0x70, 0x61, 0xfa, 0x13, 0x70, 0x62, 0x09, 0x13, 0x70, 0x67, 0xa4,
- 0xff, 0xff, 0xd8, 0xea, 0xff, 0xff, 0xd8, 0xe9, 0xb5, 0xf0, 0xb0, 0x8b, 0x1c, 0x0f, 0x21, 0x27,
- 0x1c, 0x1d, 0x1c, 0x06, 0x23, 0x00, 0x44, 0x69, 0x46, 0x68, 0x30, 0x1d, 0x70, 0x0b, 0x23, 0x2a,
- 0x70, 0x03, 0x21, 0x08, 0x01, 0x7b, 0x43, 0x0b, 0x70, 0x43, 0x0e, 0x13, 0x70, 0x83, 0x0c, 0x13,
- 0x70, 0xc3, 0x0a, 0x13, 0x71, 0x03, 0x21, 0x00, 0x0a, 0x2b, 0x71, 0x42, 0x71, 0x81, 0x71, 0xc3,
- 0x72, 0x05, 0x72, 0x41, 0x7b, 0xb3, 0x42, 0xbb, 0xd9, 0x24, 0x1d, 0x3b, 0x00, 0x9a, 0x59, 0x93,
- 0x2b, 0x00, 0xd0, 0x1f, 0x4c, 0x12, 0x21, 0x01, 0x60, 0x21, 0x59, 0x93, 0x22, 0x0a, 0x92, 0x01,
- 0x22, 0x27, 0x44, 0x6a, 0x91, 0x02, 0x92, 0x03, 0x21, 0x00, 0x22, 0x06, 0x90, 0x00, 0x91, 0x04,
- 0x92, 0x05, 0x43, 0x6b, 0x9a, 0x10, 0x1c, 0x30, 0x1c, 0x39, 0xf7, 0xff, 0xfe, 0x5b, 0x22, 0x00,
- 0x60, 0x22, 0x28, 0x00, 0xdd, 0x08, 0x21, 0x27, 0x44, 0x69, 0x78, 0x0b, 0x2b, 0x00, 0xd0, 0x03,
- 0x48, 0x04, 0xe0, 0x01, 0x20, 0x03, 0x42, 0x40, 0xb0, 0x0b, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
- 0x13, 0x70, 0x67, 0xa4, 0xff, 0xff, 0xd8, 0xea, 0xb5, 0xf0, 0x1c, 0x1c, 0x1c, 0x1f, 0x1c, 0x0b,
- 0xb0, 0x87, 0x33, 0x04, 0x90, 0x05, 0x00, 0x9b, 0x91, 0x04, 0x92, 0x03, 0x58, 0x19, 0x20, 0x80,
- 0x1c, 0x0b, 0x43, 0x63, 0x02, 0x40, 0x42, 0x83, 0xd9, 0x02, 0xf0, 0x02, 0xfc, 0x9d, 0x1c, 0x07,
- 0x9b, 0x04, 0x20, 0x01, 0x33, 0x04, 0x00, 0x9b, 0x42, 0x40, 0x93, 0x02, 0xe0, 0x1c, 0x1c, 0x25,
- 0x42, 0xbc, 0xd9, 0x00, 0x1c, 0x3d, 0x04, 0x2b, 0x99, 0x0c, 0x0c, 0x1e, 0x91, 0x00, 0x98, 0x05,
- 0x99, 0x04, 0x9a, 0x03, 0x1c, 0x33, 0xf7, 0xff, 0xff, 0x87, 0x28, 0x00, 0xdb, 0x0e, 0x9a, 0x03,
- 0x1b, 0xa3, 0x19, 0x52, 0x92, 0x03, 0x99, 0x02, 0x9a, 0x05, 0x04, 0x1b, 0x0c, 0x1c, 0x58, 0x8b,
- 0x99, 0x0c, 0x43, 0x6b, 0x18, 0xc9, 0x91, 0x0c, 0x2c, 0x00, 0xd1, 0xe0, 0xb0, 0x07, 0xbc, 0xf0,
- 0xbc, 0x02, 0x47, 0x08, 0xb5, 0xf0, 0xb0, 0x8b, 0x1c, 0x05, 0x1c, 0x18, 0x23, 0x27, 0x27, 0x00,
- 0x1c, 0x0e, 0x44, 0x6b, 0x46, 0x69, 0x31, 0x1d, 0x70, 0x1f, 0x23, 0x28, 0x70, 0x0b, 0x01, 0x73,
- 0x70, 0x4b, 0x0e, 0x13, 0x70, 0x8b, 0x0c, 0x13, 0x70, 0xcb, 0x0a, 0x13, 0x71, 0x0b, 0x0a, 0x03,
- 0x71, 0x4a, 0x71, 0x8f, 0x71, 0xcb, 0x72, 0x08, 0x72, 0x4f, 0x7b, 0xab, 0x42, 0xb3, 0xd9, 0x22,
- 0x1d, 0x33, 0x00, 0x9a, 0x59, 0x53, 0x2b, 0x00, 0xd0, 0x1d, 0x4c, 0x12, 0x23, 0x01, 0x60, 0x23,
- 0x59, 0x53, 0x22, 0x0a, 0x92, 0x01, 0x22, 0x27, 0x44, 0x6a, 0x92, 0x03, 0x22, 0x06, 0x43, 0x43,
- 0x91, 0x00, 0x92, 0x05, 0x1c, 0x28, 0x1c, 0x31, 0x9a, 0x10, 0x97, 0x02, 0x97, 0x04, 0xf7, 0xff,
- 0xfd, 0xd1, 0x60, 0x27, 0x28, 0x00, 0xdd, 0x08, 0x22, 0x27, 0x44, 0x6a, 0x78, 0x13, 0x2b, 0x00,
- 0xd0, 0x03, 0x48, 0x05, 0xe0, 0x01, 0x20, 0x03, 0x42, 0x40, 0xb0, 0x0b, 0xbc, 0xf0, 0xbc, 0x02,
- 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x67, 0xa4, 0xff, 0xff, 0xd8, 0xea, 0xb5, 0xf0, 0x1c, 0x1c,
- 0x1c, 0x1f, 0x1c, 0x0b, 0xb0, 0x87, 0x33, 0x04, 0x90, 0x05, 0x00, 0x9b, 0x91, 0x04, 0x92, 0x03,
- 0x58, 0x19, 0x20, 0x80, 0x1c, 0x0b, 0x43, 0x63, 0x02, 0x40, 0x42, 0x83, 0xd9, 0x02, 0xf0, 0x02,
- 0xfc, 0x13, 0x1c, 0x07, 0x9b, 0x04, 0x20, 0x01, 0x33, 0x04, 0x00, 0x9b, 0x42, 0x40, 0x93, 0x02,
- 0xe0, 0x1c, 0x1c, 0x25, 0x42, 0xbc, 0xd9, 0x00, 0x1c, 0x3d, 0x04, 0x2b, 0x99, 0x0c, 0x0c, 0x1e,
- 0x91, 0x00, 0x98, 0x05, 0x99, 0x04, 0x9a, 0x03, 0x1c, 0x33, 0xf7, 0xff, 0xff, 0x8b, 0x28, 0x00,
- 0xdb, 0x0e, 0x9a, 0x03, 0x1b, 0xa3, 0x19, 0x52, 0x92, 0x03, 0x99, 0x02, 0x9a, 0x05, 0x04, 0x1b,
- 0x0c, 0x1c, 0x58, 0x8b, 0x99, 0x0c, 0x43, 0x6b, 0x18, 0xc9, 0x91, 0x0c, 0x2c, 0x00, 0xd1, 0xe0,
- 0xb0, 0x07, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x70, 0x1c, 0x1d, 0x1c, 0x03, 0x33, 0xa0,
- 0x1c, 0x16, 0x68, 0x1b, 0x22, 0x80, 0x01, 0x12, 0x18, 0x9c, 0xb0, 0x88, 0x2c, 0x00, 0xd1, 0x02,
- 0x20, 0x04, 0x42, 0x40, 0xe0, 0x27, 0x46, 0x6a, 0x32, 0x1e, 0x01, 0x4b, 0x70, 0x53, 0x23, 0x25,
- 0x70, 0x13, 0x23, 0x02, 0x93, 0x01, 0x23, 0x00, 0x93, 0x02, 0x93, 0x03, 0x93, 0x04, 0x23, 0x0a,
- 0x92, 0x00, 0x93, 0x05, 0x1c, 0x22, 0x23, 0x08, 0xf7, 0xff, 0xfd, 0x5c, 0x28, 0x00, 0xdb, 0x12,
- 0xa8, 0x06, 0x1c, 0x21, 0x22, 0x04, 0xf0, 0x02, 0xfc, 0xb9, 0x2d, 0x00, 0xd0, 0x01, 0x9b, 0x06,
- 0x60, 0x2b, 0x1d, 0x21, 0xa8, 0x06, 0x22, 0x04, 0xf0, 0x02, 0xfc, 0xb0, 0x2e, 0x00, 0xd0, 0x01,
- 0x9b, 0x06, 0x60, 0x33, 0x20, 0x00, 0xb0, 0x08, 0xbc, 0x70, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
- 0xb5, 0xf0, 0xb0, 0x8b, 0x1c, 0x0f, 0x46, 0x69, 0x31, 0x22, 0x23, 0x12, 0x90, 0x07, 0x70, 0x0b,
- 0x01, 0x7b, 0x22, 0x00, 0x70, 0x4b, 0x23, 0x24, 0x70, 0x8a, 0x70, 0xca, 0x71, 0x4a, 0x71, 0x0b,
- 0x9b, 0x07, 0x22, 0x80, 0x33, 0xa0, 0x68, 0x1b, 0x01, 0x12, 0x18, 0x9c, 0x2c, 0x00, 0xd1, 0x02,
- 0x21, 0x04, 0x42, 0x49, 0xe0, 0x2c, 0x25, 0x00, 0x21, 0x00, 0x22, 0x24, 0x1c, 0x20, 0xf0, 0x02,
- 0xfc, 0xc9, 0x23, 0x22, 0x44, 0x6b, 0x93, 0x00, 0x22, 0x06, 0x23, 0x0a, 0x26, 0x00, 0x92, 0x01,
- 0x93, 0x05, 0x1c, 0x39, 0x98, 0x07, 0x1c, 0x22, 0x23, 0x24, 0x96, 0x02, 0x96, 0x03, 0x96, 0x04,
- 0xf7, 0xff, 0xfd, 0x10, 0x1c, 0x01, 0x28, 0x00, 0xdb, 0x08, 0x78, 0x22, 0x23, 0x1f, 0x1c, 0x10,
- 0x40, 0x18, 0x28, 0x05, 0xd0, 0x06, 0x28, 0x07, 0xd1, 0x08, 0xe0, 0x03, 0x35, 0x01, 0x2d, 0x02,
- 0xd0, 0x06, 0xe7, 0xd9, 0x4a, 0x05, 0x23, 0x01, 0x60, 0x13, 0xe0, 0x01, 0x4b, 0x03, 0x60, 0x1e,
- 0xb0, 0x0b, 0x1c, 0x08, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x67, 0x94,
- 0xb5, 0xf0, 0xb0, 0x8f, 0x1c, 0x03, 0x90, 0x07, 0x91, 0x06, 0x33, 0xa0, 0x68, 0x1b, 0x21, 0x80,
- 0x46, 0x6f, 0x46, 0x6c, 0x01, 0x09, 0x37, 0x37, 0x25, 0x00, 0x34, 0x27, 0x18, 0x5e, 0x70, 0x3d,
- 0x1c, 0x20, 0x21, 0x00, 0x22, 0x10, 0xf0, 0x02, 0xfc, 0x85, 0x2e, 0x00, 0xd1, 0x02, 0x25, 0x04,
- 0x42, 0x6d, 0xe0, 0x5a, 0x23, 0x06, 0x70, 0x25, 0x93, 0x01, 0x23, 0x01, 0x93, 0x02, 0x23, 0x0a,
- 0x93, 0x05, 0x99, 0x06, 0x22, 0x00, 0x98, 0x07, 0x23, 0x00, 0x95, 0x04, 0x94, 0x00, 0x97, 0x03,
- 0xf7, 0xff, 0xfc, 0xc8, 0x1c, 0x05, 0x1c, 0x29, 0x48, 0x26, 0xf7, 0xfe, 0xfe, 0x5b, 0x1c, 0x6a,
- 0xd0, 0x43, 0x78, 0x3b, 0x2b, 0x00, 0xd1, 0x01, 0x2d, 0x00, 0xda, 0x3e, 0x46, 0x6a, 0x32, 0x27,
- 0x23, 0x03, 0x70, 0x13, 0x99, 0x06, 0x1c, 0x30, 0x01, 0x4b, 0x70, 0x53, 0x23, 0x12, 0x71, 0x13,
- 0x23, 0x00, 0x71, 0x53, 0x21, 0x00, 0x22, 0x12, 0xf0, 0x02, 0xfc, 0x54, 0x4a, 0x1a, 0x35, 0x02,
- 0xd1, 0x01, 0x4b, 0x1a, 0xe0, 0x00, 0x4b, 0x1a, 0x60, 0x13, 0x46, 0x6b, 0x33, 0x27, 0x93, 0x00,
- 0x23, 0x06, 0x93, 0x01, 0x23, 0x00, 0x93, 0x02, 0x93, 0x03, 0x93, 0x04, 0x23, 0x0a, 0x93, 0x05,
- 0x99, 0x06, 0x98, 0x07, 0x1c, 0x32, 0x23, 0x12, 0xf7, 0xff, 0xfc, 0x94, 0x1c, 0x05, 0x1c, 0x29,
- 0x48, 0x10, 0xf7, 0xfe, 0xfe, 0x27, 0x2d, 0x00, 0xdb, 0x0f, 0x78, 0xb1, 0x23, 0x0f, 0x46, 0x6c,
- 0x40, 0x19, 0x34, 0x37, 0x48, 0x0c, 0x70, 0x21, 0xf7, 0xfe, 0xfe, 0x1c, 0x78, 0x23, 0x3b, 0x02,
- 0x06, 0x1b, 0x0e, 0x1b, 0x2b, 0x02, 0xd8, 0x00, 0x4d, 0x08, 0xb0, 0x0f, 0x1c, 0x28, 0xbc, 0xf0,
- 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x62, 0x14, 0x13, 0x70, 0x60, 0x38, 0x00, 0x26, 0x25, 0xa0,
- 0x00, 0x98, 0x96, 0x80, 0x13, 0x70, 0x62, 0x35, 0x13, 0x70, 0x62, 0x54, 0xff, 0xff, 0xd8, 0xef,
- 0xb5, 0xf0, 0x7b, 0x83, 0x1c, 0x0f, 0xb0, 0x81, 0x1c, 0x06, 0x42, 0xbb, 0xd8, 0x02, 0x24, 0x03,
- 0x42, 0x64, 0xe0, 0x3a, 0x4d, 0x1f, 0x4b, 0x20, 0x48, 0x20, 0x60, 0x2b, 0x21, 0x00, 0xf7, 0xfe,
- 0xfd, 0xf1, 0x4b, 0x1f, 0x1c, 0x30, 0x60, 0x2b, 0x1c, 0x39, 0xf7, 0xff, 0xff, 0x61, 0x1c, 0x04,
- 0x28, 0x00, 0xdb, 0x27, 0x4b, 0x18, 0x1c, 0x39, 0x60, 0x2b, 0x1c, 0x30, 0xf7, 0xff, 0xff, 0x08,
- 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x17, 0xf7, 0xfe, 0xfd, 0xdd, 0x2c, 0x00, 0xdb, 0x1a, 0x1c, 0x33,
- 0x33, 0xa0, 0x68, 0x1a, 0x23, 0x80, 0x01, 0x1b, 0x5c, 0xd1, 0x23, 0x1f, 0x40, 0x19, 0x48, 0x12,
- 0xf7, 0xfe, 0xfd, 0xd0, 0x1c, 0x3b, 0x1d, 0x3a, 0x33, 0x14, 0x00, 0x92, 0x00, 0x9b, 0x1c, 0x39,
- 0x18, 0xb2, 0x18, 0xf3, 0x1c, 0x30, 0xf7, 0xff, 0xfe, 0xaf, 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x0b,
- 0xf7, 0xfe, 0xfd, 0xc0, 0x4a, 0x03, 0x4b, 0x04, 0x60, 0x13, 0xb0, 0x01, 0x1c, 0x20, 0xbc, 0xf0,
- 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x38, 0x00, 0x0f, 0x42, 0x40, 0x13, 0x70, 0x62, 0x76,
- 0x01, 0x31, 0x2d, 0x00, 0x13, 0x70, 0x62, 0x91, 0x13, 0x70, 0x62, 0xa5, 0x13, 0x70, 0x62, 0xba,
- 0xb5, 0x10, 0xb0, 0x84, 0x1c, 0x14, 0x46, 0x6a, 0x32, 0x1b, 0x78, 0x12, 0x02, 0x24, 0x43, 0x1c,
- 0x23, 0x00, 0x93, 0x00, 0x92, 0x01, 0x91, 0x02, 0x22, 0x06, 0x21, 0x80, 0x1c, 0x23, 0xf7, 0xff,
- 0xfa, 0x97, 0xb0, 0x04, 0xbc, 0x10, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0xb5, 0xf0, 0xb0, 0x8f,
- 0x90, 0x03, 0x20, 0x16, 0x1c, 0x0f, 0xf0, 0x01, 0xfb, 0xcd, 0x90, 0x05, 0x28, 0x00, 0xd1, 0x00,
- 0xe1, 0x7e, 0x23, 0x12, 0x93, 0x00, 0x98, 0x03, 0x99, 0x05, 0x22, 0x01, 0x23, 0x00, 0xf7, 0xff,
- 0xff, 0xd7, 0x1c, 0x04, 0x28, 0x00, 0xda, 0x00, 0xe1, 0x65, 0x99, 0x05, 0x22, 0x12, 0x1c, 0x38,
- 0xf0, 0x02, 0xfb, 0x44, 0x98, 0x05, 0xf0, 0x01, 0xfb, 0xa9, 0x78, 0xba, 0x78, 0xfb, 0x02, 0x12,
- 0x43, 0x13, 0x04, 0x1b, 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x13, 0x0e, 0x12,
- 0x70, 0xba, 0x7a, 0x3a, 0x70, 0xfb, 0x7a, 0x7b, 0x02, 0x12, 0x43, 0x13, 0x04, 0x1b, 0x0a, 0x1a,
- 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x13, 0x0e, 0x12, 0x72, 0x3a, 0x7a, 0xba, 0x72, 0x7b,
- 0x7a, 0xfb, 0x02, 0x12, 0x43, 0x13, 0x04, 0x1b, 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12,
- 0x0c, 0x13, 0x0e, 0x12, 0x72, 0xba, 0x7b, 0x3a, 0x72, 0xfb, 0x7b, 0x7b, 0x02, 0x12, 0x43, 0x13,
- 0x04, 0x1b, 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x13, 0x73, 0x7b, 0x7c, 0x7b,
- 0x0e, 0x12, 0x00, 0x58, 0x18, 0xc0, 0x00, 0x80, 0x18, 0xc0, 0x73, 0x3a, 0xf0, 0x01, 0xfb, 0x7a,
- 0x0e, 0x03, 0x74, 0xbb, 0x0c, 0x03, 0x74, 0xfb, 0x0a, 0x03, 0x75, 0x3b, 0x75, 0x78, 0x28, 0x00,
- 0xd1, 0x00, 0xe1, 0x28, 0x7c, 0x7b, 0x21, 0x00, 0x00, 0x5a, 0x18, 0xd2, 0x00, 0x92, 0x18, 0xd2,
- 0xf0, 0x02, 0xfb, 0x38, 0x22, 0x00, 0x92, 0x08, 0x92, 0x0d, 0xe1, 0x01, 0x20, 0x09, 0xf0, 0x01,
- 0xfb, 0x61, 0x1c, 0x04, 0x28, 0x00, 0xd1, 0x00, 0xe1, 0x12, 0x9a, 0x08, 0x1c, 0x21, 0x06, 0x13,
- 0x0e, 0x1b, 0x93, 0x04, 0x23, 0x09, 0x93, 0x00, 0x22, 0x02, 0x9b, 0x04, 0x98, 0x03, 0xf7, 0xff,
- 0xff, 0x67, 0x7c, 0xba, 0x7c, 0xfb, 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x7d, 0x3a, 0x1c, 0x21,
- 0x02, 0x12, 0x43, 0x1a, 0x7d, 0x7b, 0x43, 0x13, 0x9a, 0x0d, 0x18, 0x9e, 0x1c, 0x30, 0x22, 0x09,
- 0xf0, 0x02, 0xfa, 0xcc, 0x1c, 0x20, 0xf0, 0x01, 0xfb, 0x31, 0x78, 0xb2, 0x78, 0xf3, 0x02, 0x12,
- 0x43, 0x13, 0x04, 0x1b, 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x15, 0x0e, 0x12,
- 0x70, 0xb2, 0x70, 0xf5, 0x1c, 0x28, 0xf0, 0x01, 0xfb, 0x2d, 0x90, 0x05, 0x28, 0x00, 0xd1, 0x00,
- 0xe0, 0xde, 0x78, 0xf3, 0x98, 0x03, 0x93, 0x00, 0x99, 0x05, 0x22, 0x02, 0x9b, 0x04, 0xf7, 0xff,
- 0xff, 0x37, 0x1c, 0x04, 0x28, 0x00, 0xda, 0x00, 0xe0, 0xc5, 0x79, 0x33, 0x78, 0x34, 0x00, 0xd8,
- 0x18, 0xc0, 0x00, 0x40, 0xf0, 0x01, 0xfb, 0x16, 0x0e, 0x03, 0x72, 0x73, 0x0c, 0x03, 0x72, 0xb3,
- 0x0a, 0x03, 0x72, 0xf3, 0x73, 0x30, 0x28, 0x00, 0xd1, 0x00, 0xe0, 0xc4, 0x9b, 0x05, 0x1b, 0x2d,
- 0x19, 0x1b, 0x93, 0x06, 0x95, 0x07, 0x79, 0x33, 0x21, 0x00, 0x00, 0xda, 0x18, 0xd2, 0x00, 0x52,
- 0xf0, 0x02, 0xfa, 0xd0, 0x22, 0x00, 0x92, 0x09, 0xe0, 0x89, 0x7a, 0x72, 0x7a, 0xb3, 0x06, 0x12,
- 0x04, 0x1b, 0x43, 0x13, 0x7a, 0xf2, 0x99, 0x06, 0x02, 0x12, 0x43, 0x1a, 0x7b, 0x33, 0x43, 0x13,
- 0x9a, 0x0c, 0x18, 0x9d, 0x1c, 0x28, 0x22, 0x09, 0xf0, 0x02, 0xfa, 0x78, 0x79, 0x2b, 0x78, 0x2c,
- 0x00, 0xd8, 0x1a, 0xc0, 0xf0, 0x01, 0xfa, 0xe6, 0x0e, 0x03, 0x73, 0xab, 0x0c, 0x03, 0x73, 0xeb,
- 0x0a, 0x03, 0x74, 0x2b, 0x74, 0x68, 0x28, 0x00, 0xd1, 0x00, 0xe0, 0x94, 0x9b, 0x06, 0x9a, 0x07,
- 0x19, 0x1b, 0x1b, 0x12, 0x92, 0x07, 0x93, 0x06, 0x79, 0x2b, 0x21, 0x00, 0x00, 0xda, 0x1a, 0xd2,
- 0xf0, 0x02, 0xfa, 0xa0, 0x9a, 0x07, 0x98, 0x06, 0xe0, 0x08, 0x78, 0x43, 0x3b, 0x04, 0x06, 0x1b,
- 0x0e, 0x1b, 0x2b, 0x01, 0xd9, 0x04, 0x78, 0x03, 0x1a, 0xd2, 0x18, 0xc0, 0x2a, 0x00, 0xd1, 0xf4,
- 0x9b, 0x06, 0x1a, 0xc4, 0x73, 0x6c, 0x2c, 0x00, 0xd0, 0x15, 0x1c, 0x20, 0xf0, 0x01, 0xfa, 0xba,
- 0x0e, 0x03, 0x72, 0x6b, 0x0c, 0x03, 0x72, 0xab, 0x0a, 0x03, 0x72, 0xeb, 0x73, 0x28, 0x28, 0x00,
- 0xd0, 0x69, 0x1c, 0x22, 0x99, 0x06, 0xf0, 0x02, 0xfa, 0x39, 0x9a, 0x06, 0x9b, 0x07, 0x19, 0x12,
- 0x1b, 0x1b, 0x92, 0x06, 0x93, 0x07, 0x22, 0x00, 0x92, 0x0a, 0xe0, 0x26, 0x7b, 0xab, 0x7b, 0xea,
- 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7c, 0x2b, 0x7c, 0x6c, 0x02, 0x1b, 0x43, 0x13, 0x43, 0x1c,
- 0x9b, 0x0b, 0x22, 0x07, 0x18, 0xe4, 0x1c, 0x20, 0x99, 0x06, 0xf0, 0x02, 0xfa, 0x1f, 0x78, 0x23,
- 0x9a, 0x06, 0x18, 0xd2, 0x92, 0x06, 0x79, 0x22, 0x79, 0x63, 0x02, 0x12, 0x43, 0x13, 0x04, 0x1b,
- 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x13, 0x0e, 0x12, 0x71, 0x22, 0x71, 0x63,
- 0x9b, 0x0a, 0x9a, 0x0b, 0x33, 0x01, 0x93, 0x0a, 0x32, 0x07, 0x92, 0x0b, 0x79, 0x2b, 0x9a, 0x0a,
- 0x42, 0x9a, 0xd3, 0xd3, 0x9b, 0x09, 0x9a, 0x0c, 0x33, 0x01, 0x93, 0x09, 0x32, 0x12, 0x92, 0x0c,
- 0x79, 0x33, 0x9a, 0x09, 0x42, 0x9a, 0xd2, 0x00, 0xe7, 0x6f, 0x98, 0x05, 0xf0, 0x01, 0xfa, 0x5e,
- 0x9b, 0x08, 0x9a, 0x0d, 0x33, 0x01, 0x93, 0x08, 0x32, 0x0d, 0x23, 0x00, 0x92, 0x0d, 0x93, 0x05,
- 0x7c, 0x7b, 0x9a, 0x08, 0x42, 0x9a, 0xd2, 0x00, 0xe6, 0xf8, 0x9b, 0x05, 0x2b, 0x00, 0xd1, 0x01,
- 0x24, 0x00, 0xe0, 0x08, 0x24, 0x00, 0x98, 0x05, 0xf0, 0x01, 0xfa, 0x48, 0x2c, 0x00, 0xd0, 0x02,
- 0x1c, 0x38, 0xf7, 0xfe, 0xfb, 0x95, 0xb0, 0x0f, 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
- 0x24, 0x04, 0x42, 0x64, 0xe7, 0xf4, 0x24, 0x04, 0x42, 0x64, 0xe7, 0xec, 0xb5, 0xf0, 0xb0, 0x8f,
- 0x46, 0x6b, 0x1c, 0x06, 0x4a, 0xc7, 0x20, 0x00, 0x33, 0x37, 0x70, 0x18, 0x23, 0x10, 0x70, 0x13,
- 0x4b, 0xc5, 0x1c, 0x32, 0x32, 0x98, 0x60, 0x13, 0x46, 0x6d, 0x1c, 0x33, 0x35, 0x21, 0x33, 0x90,
- 0x60, 0x19, 0x74, 0xa8, 0x74, 0xe8, 0x75, 0x28, 0x75, 0x68, 0x1c, 0x08, 0x1c, 0x29, 0xf7, 0xff,
- 0xfe, 0x55, 0x1c, 0x04, 0x1c, 0x21, 0x48, 0xbd, 0xf7, 0xfe, 0xfb, 0xe4, 0x48, 0xbc, 0xf7, 0xfe,
- 0xfc, 0x29, 0x2c, 0x00, 0xda, 0x00, 0xe1, 0xf0, 0x4b, 0xba, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x32,
- 0x4c, 0xb9, 0x79, 0x2b, 0x79, 0xa2, 0x42, 0x9a, 0xd1, 0x23, 0x79, 0xe2, 0x79, 0x6b, 0x42, 0x9a,
- 0xd1, 0x1f, 0x7a, 0x21, 0x7a, 0x2a, 0x7a, 0x60, 0x7a, 0x6b, 0x02, 0x09, 0x02, 0x12, 0x43, 0x08,
- 0x43, 0x13, 0x42, 0x98, 0xd1, 0x15, 0x7a, 0xa1, 0x7a, 0xaa, 0x7a, 0xe0, 0x7a, 0xeb, 0x02, 0x09,
- 0x02, 0x12, 0x43, 0x08, 0x43, 0x13, 0x42, 0x98, 0xd1, 0x0b, 0x7b, 0x22, 0x7b, 0xab, 0x42, 0x9a,
- 0xd1, 0x07, 0x7b, 0x62, 0x7b, 0xeb, 0x42, 0x9a, 0xd1, 0x03, 0x7b, 0xa2, 0x7c, 0x2b, 0x42, 0x9a,
- 0xd0, 0x09, 0x46, 0x68, 0x30, 0x21, 0xf7, 0xfe, 0xfb, 0x33, 0x24, 0x01, 0x48, 0xa3, 0xf7, 0xfe,
- 0xfb, 0xa9, 0x42, 0x64, 0xe1, 0xc8, 0x46, 0x68, 0x30, 0x21, 0x79, 0x03, 0x49, 0x9e, 0x71, 0x8b,
- 0x79, 0x43, 0x71, 0xcb, 0x7a, 0x02, 0x7a, 0x43, 0x02, 0x12, 0x43, 0x13, 0x04, 0x1b, 0x0c, 0x1a,
- 0x0e, 0x1b, 0x72, 0x0b, 0x72, 0x4a, 0x7a, 0x82, 0x7a, 0xc3, 0x02, 0x12, 0x43, 0x13, 0x04, 0x1b,
- 0x0e, 0x1a, 0x0c, 0x1b, 0x72, 0x8a, 0x72, 0xcb, 0x7b, 0x83, 0x4a, 0x95, 0x73, 0x0b, 0x7b, 0xc3,
- 0x73, 0x4b, 0x7c, 0x03, 0x73, 0x8b, 0x23, 0x80, 0x42, 0x5b, 0x60, 0x13, 0x4a, 0x91, 0x21, 0x00,
- 0x91, 0x03, 0x91, 0x07, 0x92, 0x01, 0xe0, 0xfc, 0x23, 0x33, 0x44, 0x6b, 0xa9, 0x0d, 0x78, 0x1a,
- 0x78, 0x0b, 0x21, 0x35, 0x06, 0x12, 0x44, 0x69, 0x04, 0x1b, 0x43, 0x13, 0x78, 0x0a, 0x21, 0x36,
- 0x44, 0x69, 0x02, 0x12, 0x43, 0x1a, 0x78, 0x0b, 0x48, 0x87, 0x43, 0x13, 0x9a, 0x07, 0x99, 0x03,
- 0x18, 0x9b, 0x93, 0x05, 0x7a, 0x1a, 0x00, 0x52, 0xf7, 0xfe, 0xfb, 0x64, 0x49, 0x83, 0x23, 0x00,
- 0x93, 0x04, 0x93, 0x06, 0x91, 0x02, 0xe0, 0xd0, 0x9b, 0x05, 0x99, 0x05, 0x7a, 0x5a, 0x7a, 0x9b,
- 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x7a, 0xca, 0x02, 0x12, 0x43, 0x1a, 0x7b, 0x0b, 0x43, 0x13,
- 0x9a, 0x06, 0x18, 0x9c, 0x79, 0x63, 0x2b, 0x08, 0xd1, 0x7f, 0x79, 0xa3, 0x2b, 0x06, 0xd0, 0x09,
- 0x2b, 0x01, 0xd0, 0x07, 0x2b, 0x02, 0xd0, 0x05, 0x2b, 0x03, 0xd0, 0x03, 0x2b, 0x04, 0xd0, 0x01,
- 0x2b, 0x05, 0xd1, 0x72, 0x79, 0xe3, 0x2b, 0x50, 0xd1, 0x6f, 0x79, 0x23, 0x2b, 0x01, 0xd9, 0x6c,
- 0x1c, 0x32, 0x23, 0x01, 0x32, 0x9c, 0x70, 0x13, 0x48, 0x6d, 0x79, 0xa1, 0x22, 0x01, 0xf7, 0xfe,
- 0xfb, 0x31, 0x23, 0x00, 0x73, 0x73, 0x73, 0x33, 0x27, 0x00, 0x25, 0x00, 0xe0, 0x2c, 0x7b, 0xa2,
- 0x7b, 0xe3, 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x7c, 0x22, 0x02, 0x12, 0x43, 0x1a, 0x7c, 0x63,
- 0x43, 0x13, 0x19, 0x59, 0x78, 0xcb, 0x2b, 0x02, 0xd1, 0x1c, 0x78, 0x8a, 0x06, 0x13, 0x2b, 0x00,
- 0xda, 0x0b, 0x7b, 0x33, 0x2b, 0x00, 0xd1, 0x08, 0x2a, 0x00, 0xd0, 0x06, 0x73, 0x32, 0x79, 0x0b,
- 0x79, 0x49, 0x02, 0x1b, 0x43, 0x19, 0x98, 0x02, 0xe0, 0x0a, 0x7b, 0x73, 0x2b, 0x00, 0xd1, 0x09,
- 0x2a, 0x00, 0xd0, 0x07, 0x73, 0x72, 0x79, 0x0b, 0x79, 0x49, 0x02, 0x1b, 0x98, 0x01, 0x43, 0x19,
- 0xf7, 0xfe, 0xfb, 0x00, 0x37, 0x01, 0x35, 0x07, 0x79, 0x23, 0x42, 0x9f, 0xd3, 0xcf, 0x7b, 0x31,
- 0x29, 0x00, 0xd0, 0x64, 0x7b, 0x72, 0x2a, 0x00, 0xd0, 0x61, 0x48, 0x4e, 0xf7, 0xfe, 0xfa, 0xf2,
- 0x4a, 0x45, 0x7b, 0x33, 0x99, 0x05, 0x74, 0x13, 0x7b, 0x73, 0x46, 0x68, 0x74, 0x53, 0x79, 0x4b,
- 0x30, 0x21, 0x70, 0x33, 0x78, 0xa3, 0x46, 0x6d, 0x60, 0x73, 0x73, 0xd3, 0x78, 0xe3, 0x35, 0x37,
- 0x60, 0xb3, 0xf7, 0xfe, 0xfa, 0x65, 0x4b, 0x44, 0x4c, 0x3d, 0x48, 0x44, 0x60, 0x23, 0x78, 0x31,
- 0x68, 0xb2, 0xf7, 0xfe, 0xfa, 0xd7, 0x1c, 0x33, 0x33, 0x90, 0x68, 0x18, 0x1c, 0x29, 0xf7, 0xff,
- 0xf8, 0x5b, 0x28, 0x00, 0xdb, 0x00, 0xe0, 0x81, 0xe0, 0xde, 0x7b, 0xa3, 0x7b, 0xe2, 0x06, 0x1b,
- 0x04, 0x12, 0x43, 0x1a, 0x7c, 0x23, 0x02, 0x1b, 0x43, 0x13, 0x7c, 0x62, 0x1c, 0x10, 0x43, 0x18,
- 0xd0, 0x01, 0xf0, 0x01, 0xf8, 0xf3, 0x23, 0x00, 0x73, 0xa3, 0x73, 0xe3, 0x74, 0x23, 0x74, 0x63,
- 0x7a, 0xa2, 0x7a, 0x63, 0x04, 0x12, 0x06, 0x1b, 0x43, 0x1a, 0x7a, 0xe3, 0x02, 0x1b, 0x43, 0x13,
- 0x7b, 0x22, 0x1c, 0x10, 0x43, 0x18, 0xd0, 0x01, 0xf0, 0x01, 0xf8, 0xe0, 0x23, 0x00, 0x72, 0x63,
- 0x72, 0xa3, 0x72, 0xe3, 0x73, 0x23, 0x79, 0x63, 0x2b, 0x09, 0xd1, 0x03, 0x4a, 0x20, 0x4b, 0x28,
- 0x60, 0x13, 0xe0, 0x28, 0x2b, 0x08, 0xd1, 0x0a, 0x79, 0xe3, 0x2b, 0x50, 0xd1, 0x07, 0x79, 0x23,
- 0x2b, 0x01, 0xd9, 0x04, 0x79, 0xa2, 0x4b, 0x23, 0x49, 0x19, 0x1a, 0x9b, 0x60, 0x0b, 0x9a, 0x04,
- 0x9b, 0x06, 0x32, 0x01, 0x33, 0x12, 0x92, 0x04, 0x93, 0x06, 0x99, 0x05, 0x9a, 0x04, 0x79, 0x0b,
- 0x42, 0x9a, 0xd2, 0x00, 0xe7, 0x28, 0x9b, 0x03, 0x99, 0x07, 0x33, 0x01, 0x31, 0x0d, 0x93, 0x03,
- 0x91, 0x07, 0x22, 0x32, 0x44, 0x6a, 0x78, 0x13, 0x99, 0x03, 0x42, 0x99, 0xd2, 0x00, 0xe6, 0xfb,
- 0x48, 0x15, 0xf7, 0xfe, 0xfa, 0x77, 0x46, 0x68, 0x30, 0x21, 0xf7, 0xfe, 0xf9, 0xf9, 0x4c, 0x11,
- 0xe0, 0x83, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x3c, 0x2c, 0x0d, 0xe0, 0x01, 0x13, 0x70, 0x62, 0xd3,
- 0x13, 0x70, 0x62, 0xfd, 0x13, 0x70, 0x67, 0x98, 0x13, 0x70, 0x67, 0xac, 0x13, 0x70, 0x63, 0x16,
- 0x13, 0x70, 0x67, 0xa8, 0x13, 0x70, 0x63, 0xa8, 0x13, 0x70, 0x63, 0x3c, 0x13, 0x70, 0x63, 0x9a,
- 0x13, 0x70, 0x63, 0x63, 0x13, 0x70, 0x63, 0xb7, 0xff, 0xff, 0xfb, 0x4f, 0x13, 0x70, 0x63, 0xfc,
- 0xff, 0xff, 0xb1, 0xe0, 0xff, 0xff, 0xd8, 0xf0, 0x13, 0x70, 0x63, 0xcb, 0x4b, 0x39, 0x48, 0x3a,
- 0x60, 0x23, 0xf7, 0xfe, 0xfa, 0x8f, 0x78, 0x29, 0x78, 0x33, 0x42, 0x8b, 0xd0, 0x02, 0x48, 0x37,
- 0xf7, 0xfe, 0xfa, 0x40, 0x4b, 0x36, 0x4a, 0x37, 0x60, 0x13, 0x46, 0x6b, 0x33, 0x37, 0x78, 0x31,
- 0x78, 0x1b, 0x42, 0x8b, 0xd1, 0x03, 0x4b, 0x34, 0x78, 0x1b, 0x07, 0x9a, 0xd5, 0x06, 0x1c, 0x33,
- 0x33, 0x90, 0x68, 0x18, 0xf7, 0xfe, 0xff, 0xaa, 0x28, 0x00, 0xdb, 0x3d, 0x4a, 0x2f, 0x4b, 0x30,
- 0x60, 0x13, 0x68, 0xb2, 0x2a, 0x00, 0xd0, 0x09, 0x1c, 0x33, 0x33, 0x90, 0x06, 0x12, 0x68, 0x18,
- 0x79, 0xf1, 0x0e, 0x12, 0xf7, 0xfe, 0xff, 0x86, 0x28, 0x00, 0xdb, 0x2d, 0x4a, 0x25, 0x4b, 0x29,
- 0x48, 0x29, 0x60, 0x13, 0x4a, 0x25, 0x4b, 0x29, 0x60, 0x13, 0xf7, 0xfe, 0xfa, 0x5b, 0x1c, 0x30,
- 0xf7, 0xff, 0xf8, 0x70, 0x1c, 0x04, 0x48, 0x26, 0xf7, 0xfe, 0xfa, 0x54, 0x2c, 0x00, 0xdb, 0x1c,
- 0x1c, 0x34, 0x23, 0x08, 0x34, 0xa0, 0x73, 0xb3, 0x68, 0x23, 0x2b, 0x00, 0xd1, 0x07, 0x20, 0x81,
- 0x01, 0x40, 0xf0, 0x01, 0xf8, 0x3f, 0x23, 0x1f, 0x30, 0x1f, 0x43, 0x98, 0x60, 0x20, 0x1c, 0x33,
- 0x33, 0xa0, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x01, 0x24, 0x00, 0xe0, 0x06, 0x4a, 0x13, 0x4b, 0x19,
- 0x24, 0x04, 0x60, 0x13, 0x42, 0x64, 0xe0, 0x00, 0x4c, 0x17, 0x4a, 0x0e, 0x4b, 0x11, 0x60, 0x13,
- 0x2c, 0x00, 0xda, 0x05, 0x4b, 0x0d, 0x48, 0x15, 0x68, 0x19, 0xf7, 0xfe, 0xf9, 0xe3, 0xe0, 0x03,
- 0x48, 0x13, 0xf7, 0xfe, 0xf9, 0xdf, 0x24, 0x00, 0xb0, 0x0f, 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02,
- 0x47, 0x08, 0x46, 0xc0, 0xff, 0xff, 0xfb, 0x4e, 0x13, 0x70, 0x64, 0x2a, 0x13, 0x70, 0x64, 0x45,
- 0x00, 0x98, 0x96, 0x80, 0x13, 0x70, 0x60, 0x38, 0x13, 0x70, 0x01, 0x0e, 0x13, 0x70, 0x67, 0xa8,
- 0xff, 0xff, 0xfb, 0x4d, 0x00, 0x0f, 0x42, 0x40, 0x13, 0x70, 0x64, 0x6f, 0xff, 0xff, 0xfb, 0x4c,
- 0x13, 0x70, 0x64, 0x87, 0xff, 0xff, 0xfb, 0x4b, 0xff, 0xff, 0xd8, 0xe7, 0x13, 0x70, 0x64, 0x9e,
- 0x13, 0x70, 0x64, 0xc0, 0xb5, 0xf0, 0x4b, 0x78, 0xb0, 0x8b, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x4f,
- 0x46, 0x6b, 0x22, 0x00, 0x33, 0x27, 0x70, 0x1a, 0xf0, 0x01, 0xf9, 0x24, 0x4a, 0x73, 0x23, 0x10,
- 0x70, 0x13, 0x4b, 0x73, 0x4a, 0x73, 0x78, 0x1b, 0x2b, 0x00, 0xd0, 0x01, 0x4b, 0x72, 0xe0, 0x00,
- 0x4b, 0x72, 0x4e, 0x73, 0x46, 0x6d, 0x60, 0x13, 0x35, 0x11, 0x23, 0x00, 0x1c, 0x37, 0x74, 0xab,
- 0x74, 0xeb, 0x75, 0x2b, 0x75, 0x6b, 0x37, 0x90, 0x68, 0x38, 0x1c, 0x29, 0xf7, 0xff, 0xfb, 0xfe,
- 0x4c, 0x6c, 0x79, 0x2b, 0x79, 0xa2, 0x42, 0x9a, 0xd1, 0x23, 0x79, 0xe2, 0x79, 0x6b, 0x42, 0x9a,
- 0xd1, 0x1f, 0x7a, 0x21, 0x7a, 0x2a, 0x7a, 0x60, 0x7a, 0x6b, 0x02, 0x09, 0x02, 0x12, 0x43, 0x08,
- 0x43, 0x13, 0x42, 0x98, 0xd1, 0x15, 0x7a, 0xa1, 0x7a, 0xaa, 0x7a, 0xe0, 0x7a, 0xeb, 0x02, 0x09,
- 0x02, 0x12, 0x43, 0x08, 0x43, 0x13, 0x42, 0x98, 0xd1, 0x0b, 0x7b, 0x22, 0x7b, 0xab, 0x42, 0x9a,
- 0xd1, 0x07, 0x7b, 0x62, 0x7b, 0xeb, 0x42, 0x9a, 0xd1, 0x03, 0x7b, 0xa2, 0x7c, 0x2b, 0x42, 0x9a,
- 0xd0, 0x08, 0x46, 0x68, 0x30, 0x11, 0xf7, 0xfe, 0xf8, 0xeb, 0x48, 0x57, 0xf7, 0xfe, 0xf9, 0x62,
- 0x4c, 0x56, 0xe0, 0x93, 0x46, 0x6c, 0x1c, 0x28, 0x34, 0x27, 0xf7, 0xfe, 0xf8, 0xe1, 0x68, 0x38,
- 0x1c, 0x21, 0xf7, 0xfe, 0xfe, 0xe1, 0x28, 0x00, 0xda, 0x01, 0x4c, 0x51, 0xe0, 0x86, 0x4b, 0x49,
- 0x4a, 0x50, 0x60, 0x1a, 0x78, 0x31, 0x78, 0x23, 0x42, 0x8b, 0xd1, 0x03, 0x4b, 0x4e, 0x78, 0x1b,
- 0x07, 0x9a, 0xd5, 0x08, 0x4b, 0x46, 0x33, 0x90, 0x68, 0x18, 0xf7, 0xfe, 0xfe, 0xbf, 0x28, 0x00,
- 0xda, 0x01, 0x4c, 0x4a, 0xe0, 0x72, 0x49, 0x42, 0x68, 0x8a, 0x2a, 0x00, 0xd0, 0x0b, 0x1c, 0x0b,
- 0x33, 0x90, 0x06, 0x12, 0x68, 0x18, 0x79, 0xc9, 0x0e, 0x12, 0xf7, 0xfe, 0xfe, 0x9b, 0x28, 0x00,
- 0xda, 0x01, 0x4c, 0x43, 0xe0, 0x62, 0x4b, 0x36, 0x4a, 0x36, 0x78, 0x1b, 0x2b, 0x00, 0xd0, 0x01,
- 0x4b, 0x35, 0xe0, 0x00, 0x4b, 0x35, 0x60, 0x13, 0x48, 0x35, 0x21, 0x00, 0xf7, 0xfe, 0xfe, 0xd2,
- 0x28, 0x00, 0xda, 0x01, 0x4c, 0x3b, 0xe0, 0x51, 0x4b, 0x32, 0x79, 0x5b, 0x2b, 0x00, 0xd1, 0x03,
- 0x4b, 0x35, 0x78, 0x1b, 0x07, 0xda, 0xd5, 0x22, 0x4d, 0x2d, 0x23, 0x00, 0x73, 0xab, 0x4c, 0x29,
- 0x4b, 0x30, 0x26, 0x01, 0x60, 0x23, 0x1c, 0x2b, 0x33, 0x90, 0x68, 0x18, 0x88, 0xeb, 0x21, 0xa1,
- 0x93, 0x00, 0x1c, 0x2b, 0x33, 0x0e, 0x93, 0x02, 0x22, 0xfe, 0x23, 0x00, 0x96, 0x01, 0xf7, 0xfe,
- 0xfd, 0xff, 0x4b, 0x21, 0x60, 0x23, 0x28, 0x00, 0xda, 0x06, 0x73, 0xae, 0x1c, 0x28, 0x21, 0x00,
- 0xf7, 0xfe, 0xfe, 0xa8, 0x4c, 0x28, 0xe0, 0x29, 0x7b, 0xab, 0x33, 0x01, 0x73, 0xab, 0x4b, 0x27,
- 0x4d, 0x18, 0x4f, 0x1b, 0x4e, 0x1b, 0x60, 0x2b, 0x79, 0x31, 0x1c, 0x38, 0xf7, 0xff, 0xfa, 0x60,
- 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x22, 0xf7, 0xfe, 0xf8, 0xe5, 0x4b, 0x13, 0x60, 0x2b, 0x2c, 0x00,
- 0xda, 0x01, 0x4c, 0x20, 0xe0, 0x12, 0x79, 0x31, 0x1c, 0x38, 0xf7, 0xff, 0xfa, 0x01, 0x1c, 0x04,
- 0x1c, 0x21, 0x48, 0x1d, 0xf7, 0xfe, 0xf8, 0xd6, 0x2c, 0x00, 0xda, 0x01, 0x4c, 0x1b, 0xe0, 0x05,
- 0x79, 0x33, 0x4a, 0x06, 0x70, 0x13, 0x4a, 0x1a, 0x23, 0x01, 0x70, 0x13, 0xb0, 0x0b, 0x1c, 0x20,
- 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x67, 0x98, 0x13, 0x70, 0x60, 0x3c,
- 0x13, 0x70, 0x01, 0x0f, 0x13, 0x70, 0x60, 0x38, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x03, 0x0d, 0x40,
- 0x13, 0x72, 0xc2, 0x00, 0x13, 0x70, 0x67, 0xac, 0x13, 0x70, 0x63, 0x16, 0xff, 0xff, 0xfc, 0x0f,
- 0xff, 0xff, 0xfc, 0x18, 0x00, 0x98, 0x96, 0x80, 0x13, 0x70, 0x01, 0x0e, 0xff, 0xff, 0xfc, 0x17,
- 0xff, 0xff, 0xfc, 0x16, 0xff, 0xff, 0xfc, 0x15, 0xff, 0xff, 0xfc, 0x14, 0x01, 0x31, 0x2d, 0x00,
- 0x13, 0x70, 0x64, 0xdd, 0xff, 0xff, 0xfc, 0x13, 0x13, 0x70, 0x62, 0x91, 0xff, 0xff, 0xfc, 0x12,
- 0x13, 0x70, 0x67, 0x9c, 0xb5, 0xf0, 0x4b, 0x8e, 0x22, 0x00, 0x80, 0x1a, 0x4b, 0x8d, 0x25, 0x00,
- 0x80, 0x1a, 0x4b, 0x8d, 0x4a, 0x8d, 0x70, 0x1d, 0x4b, 0x8d, 0xb0, 0x8b, 0x70, 0x1d, 0x23, 0x78,
- 0x42, 0x5b, 0x60, 0x13, 0x90, 0x08, 0xf0, 0x00, 0xff, 0xfd, 0x4c, 0x8a, 0x99, 0x08, 0x1c, 0x20,
- 0xf7, 0xff, 0xfc, 0x7c, 0x28, 0x00, 0xda, 0x00, 0xe0, 0xfc, 0x49, 0x87, 0x20, 0x01, 0x73, 0xa0,
- 0x78, 0x0b, 0x78, 0x4a, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x78, 0x8b, 0x02, 0x1b, 0x43, 0x13,
- 0x78, 0xca, 0x43, 0x1a, 0xd0, 0x48, 0x79, 0x4b, 0x2b, 0x00, 0xd1, 0x03, 0x4b, 0x7f, 0x78, 0x1b,
- 0x42, 0x03, 0xd0, 0x1d, 0x4d, 0x7b, 0x23, 0x00, 0x73, 0xab, 0x4c, 0x7d, 0x4b, 0x7d, 0x26, 0x01,
- 0x60, 0x23, 0x1c, 0x2b, 0x33, 0x90, 0x68, 0x18, 0x88, 0xeb, 0x21, 0xa1, 0x93, 0x00, 0x1c, 0x2b,
- 0x33, 0x0e, 0x93, 0x02, 0x22, 0xfe, 0x23, 0x00, 0x96, 0x01, 0xf7, 0xfe, 0xfd, 0x51, 0x4b, 0x76,
- 0x60, 0x23, 0x28, 0x00, 0xda, 0x01, 0x73, 0xae, 0xe0, 0xbf, 0x7b, 0xab, 0x33, 0x01, 0x73, 0xab,
- 0x4b, 0x6d, 0x48, 0x72, 0x79, 0x1d, 0x1c, 0x29, 0xf7, 0xfe, 0xf8, 0x44, 0x4e, 0x69, 0x1c, 0x29,
- 0x1c, 0x30, 0xf7, 0xff, 0xfa, 0x3d, 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x6d, 0xf7, 0xfe, 0xf8, 0x3a,
- 0x1c, 0xa3, 0x2b, 0x01, 0xd8, 0x01, 0x1c, 0x30, 0xe0, 0x3c, 0x2c, 0x00, 0xda, 0x00, 0xe0, 0xa4,
- 0x4a, 0x5d, 0x23, 0x01, 0x70, 0x13, 0x4b, 0x5e, 0x4a, 0x61, 0x70, 0x1d, 0x4b, 0x62, 0x60, 0x13,
- 0x4a, 0x5a, 0x23, 0x00, 0x60, 0x13, 0xe0, 0x94, 0x4a, 0x5c, 0x71, 0x4d, 0x27, 0x01, 0x26, 0x00,
- 0x25, 0x01, 0x92, 0x05, 0x1c, 0x32, 0x1e, 0x53, 0x41, 0x9a, 0x92, 0x09, 0x9a, 0x05, 0x78, 0x13,
- 0x22, 0x01, 0x42, 0x13, 0xd0, 0x04, 0x9b, 0x09, 0x2b, 0x00, 0xd1, 0x01, 0x2d, 0x00, 0xd1, 0x27,
- 0x48, 0x58, 0x1c, 0x31, 0xf7, 0xfe, 0xf8, 0x0e, 0x4a, 0x4e, 0x06, 0x31, 0x0e, 0x09, 0x1c, 0x10,
- 0x92, 0x07, 0xf7, 0xff, 0xfa, 0x05, 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x51, 0xf7, 0xfe, 0xf8, 0x02,
- 0x1c, 0xa3, 0x2b, 0x01, 0xd8, 0x10, 0x9b, 0x09, 0x2b, 0x00, 0xd0, 0x0d, 0x4a, 0x48, 0x4b, 0x4a,
- 0x60, 0x13, 0x98, 0x07, 0xf7, 0xfe, 0xfe, 0x56, 0x4a, 0x40, 0x23, 0x79, 0x42, 0x5b, 0x60, 0x13,
- 0x4a, 0x3d, 0x23, 0x00, 0x70, 0x13, 0xe0, 0x6d, 0x2c, 0x00, 0xda, 0x40, 0x2d, 0x00, 0xd0, 0x38,
- 0x4d, 0x45, 0x4c, 0x3f, 0x4b, 0x3f, 0x95, 0x06, 0x4a, 0x3a, 0x60, 0x23, 0x4b, 0x43, 0x27, 0x00,
- 0x68, 0x18, 0x88, 0xd3, 0x60, 0x2f, 0x73, 0x97, 0x93, 0x00, 0x1c, 0x13, 0x33, 0x0e, 0x25, 0x01,
- 0x93, 0x02, 0x21, 0xa1, 0x23, 0x00, 0x22, 0xfe, 0x95, 0x01, 0xf7, 0xfe, 0xfc, 0xd1, 0x4b, 0x36,
- 0x1c, 0x05, 0x60, 0x23, 0x28, 0x00, 0xda, 0x05, 0x4a, 0x2e, 0x23, 0x01, 0x73, 0x93, 0x9a, 0x06,
- 0x60, 0x17, 0xe0, 0x06, 0x4a, 0x2b, 0x7b, 0x93, 0x33, 0x01, 0x73, 0x93, 0x4b, 0x2a, 0x22, 0x01,
- 0x71, 0x5a, 0x4b, 0x28, 0x48, 0x32, 0x7b, 0x9f, 0x1c, 0x29, 0x1c, 0x3a, 0xf7, 0xfd, 0xff, 0xba,
- 0x4b, 0x26, 0x22, 0x01, 0x78, 0x1b, 0x42, 0x13, 0xd0, 0x05, 0x2d, 0x00, 0xda, 0x03, 0x25, 0x01,
- 0xe0, 0x02, 0x36, 0x01, 0xe0, 0x00, 0x25, 0x00, 0x42, 0xbe, 0xdb, 0x8b, 0xe0, 0x1d, 0x4b, 0x1e,
- 0x20, 0x00, 0x24, 0x01, 0x70, 0x18, 0x70, 0x58, 0x70, 0x98, 0x70, 0xdc, 0x06, 0x31, 0x0e, 0x09,
- 0x9d, 0x08, 0x71, 0x19, 0x89, 0x2b, 0x4a, 0x12, 0x80, 0x13, 0x89, 0x6b, 0x4a, 0x11, 0x80, 0x13,
- 0x4b, 0x11, 0x4a, 0x17, 0x70, 0x1c, 0x4b, 0x12, 0x70, 0x19, 0x4b, 0x17, 0x60, 0x13, 0x4b, 0x0f,
- 0x60, 0x18, 0xf0, 0x00, 0xfe, 0xfb, 0x20, 0x00, 0xe0, 0x0e, 0x4a, 0x0c, 0x23, 0x7a, 0x42, 0x5b,
- 0x60, 0x13, 0x48, 0x0c, 0xf7, 0xfe, 0xfd, 0xe6, 0x4a, 0x07, 0x23, 0x00, 0x70, 0x13, 0x48, 0x15,
- 0xf7, 0xfd, 0xff, 0x80, 0x20, 0x03, 0x42, 0x40, 0xb0, 0x0b, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
- 0x13, 0x70, 0x67, 0x9e, 0x13, 0x70, 0x67, 0xa0, 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x67, 0xa8,
- 0x13, 0x70, 0x60, 0x3c, 0x13, 0x72, 0xc2, 0x00, 0x13, 0x70, 0x67, 0xac, 0x13, 0x70, 0x01, 0x0e,
- 0x13, 0x70, 0x60, 0x38, 0x00, 0x98, 0x96, 0x80, 0x00, 0x0f, 0x42, 0x40, 0x13, 0x70, 0x64, 0xf2,
- 0x13, 0x70, 0x65, 0x10, 0x13, 0x70, 0x64, 0xf7, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x72, 0xc2, 0x90,
- 0x13, 0x70, 0x65, 0x2d, 0x13, 0x70, 0x65, 0x56, 0xb5, 0xf0, 0x4b, 0x51, 0xb0, 0x89, 0x68, 0x1f,
- 0x00, 0x83, 0x18, 0x1b, 0x00, 0xdb, 0x1c, 0x1a, 0x32, 0x58, 0x18, 0xfb, 0x18, 0xbe, 0x22, 0x00,
- 0x1c, 0x05, 0x67, 0x1a, 0x20, 0x32, 0xf7, 0xfd, 0xf9, 0x6f, 0x24, 0x00, 0x23, 0x16, 0x22, 0x00,
- 0x93, 0x01, 0x23, 0x80, 0x92, 0x00, 0x1c, 0x30, 0x21, 0x80, 0x22, 0x06, 0x00, 0x5b, 0x96, 0x02,
- 0xf7, 0xfe, 0xfc, 0x36, 0x28, 0x00, 0xda, 0x3d, 0x20, 0x64, 0x34, 0x01, 0xf7, 0xfd, 0xf9, 0x5c,
- 0x2c, 0x03, 0xd1, 0xeb, 0x24, 0x00, 0x1c, 0x28, 0xf7, 0xfe, 0xf8, 0xba, 0x20, 0x64, 0xf7, 0xfd,
- 0xf9, 0x53, 0x23, 0x16, 0x22, 0x00, 0x93, 0x01, 0x23, 0x80, 0x92, 0x00, 0x1c, 0x30, 0x21, 0x80,
- 0x22, 0x06, 0x00, 0x5b, 0x96, 0x02, 0xf7, 0xfe, 0xfc, 0x1b, 0x28, 0x00, 0xda, 0x22, 0x34, 0x01,
- 0x2c, 0x03, 0xd1, 0xe8, 0x24, 0x00, 0x1c, 0x28, 0xf7, 0xfe, 0xf8, 0x76, 0x20, 0x64, 0xf7, 0xfd,
- 0xf9, 0x3b, 0x1c, 0x28, 0xf7, 0xfe, 0xf8, 0x9c, 0x20, 0x64, 0xf7, 0xfd, 0xf9, 0x35, 0x23, 0x16,
- 0x22, 0x00, 0x93, 0x01, 0x23, 0x80, 0x92, 0x00, 0x1c, 0x30, 0x21, 0x80, 0x22, 0x06, 0x00, 0x5b,
- 0x96, 0x02, 0xf7, 0xfe, 0xfb, 0xfd, 0x28, 0x00, 0xda, 0x04, 0x34, 0x01, 0x2c, 0x03, 0xd1, 0xe2,
- 0x48, 0x24, 0xe0, 0x40, 0x1c, 0x6a, 0x04, 0x13, 0x0c, 0x1b, 0x93, 0x06, 0x00, 0xab, 0x19, 0x5b,
- 0x00, 0xdb, 0x18, 0xff, 0x1c, 0x3b, 0x33, 0x7c, 0x24, 0x00, 0x92, 0x07, 0x93, 0x05, 0x20, 0x32,
- 0xf7, 0xfd, 0xf9, 0x12, 0x23, 0x00, 0x93, 0x00, 0x93, 0x01, 0x93, 0x02, 0x1c, 0x30, 0x21, 0x00,
- 0x22, 0x05, 0x9b, 0x06, 0xf7, 0xfe, 0xfb, 0xdc, 0x28, 0x00, 0xda, 0x02, 0x4b, 0x16, 0x1b, 0x18,
- 0x34, 0x01, 0x9a, 0x05, 0x25, 0x00, 0x60, 0x15, 0x9b, 0x07, 0x67, 0x3b, 0x28, 0x00, 0xda, 0x1a,
- 0x21, 0x00, 0x1c, 0x30, 0xf7, 0xfe, 0xfc, 0x28, 0x20, 0x32, 0xf7, 0xfd, 0xf8, 0xf5, 0x23, 0x16,
- 0x93, 0x01, 0x23, 0x80, 0x1c, 0x30, 0x21, 0x80, 0x22, 0x06, 0x00, 0x5b, 0x95, 0x00, 0x96, 0x02,
- 0xf7, 0xfe, 0xfb, 0xbe, 0x28, 0x00, 0xdb, 0x02, 0x20, 0x01, 0x42, 0x40, 0xe0, 0x01, 0x48, 0x07,
- 0x67, 0x3d, 0x2c, 0x04, 0xdd, 0xcb, 0xb0, 0x09, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
- 0x13, 0x70, 0x60, 0x34, 0xff, 0xff, 0xf7, 0x67, 0xff, 0xff, 0xe0, 0xc0, 0xff, 0xff, 0xf7, 0x3e,
- 0xb5, 0x10, 0x4b, 0x0a, 0x1c, 0x04, 0x68, 0x1b, 0x68, 0x9a, 0x23, 0x01, 0x60, 0x93, 0xf7, 0xfe,
- 0xf8, 0x2f, 0x28, 0x00, 0xdb, 0x02, 0x1c, 0x20, 0xf7, 0xff, 0xff, 0x46, 0x4b, 0x03, 0x68, 0x1b,
- 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0xbc, 0x10, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x34,
- 0xb5, 0xf0, 0x1c, 0x06, 0x48, 0x44, 0xb0, 0x8b, 0x68, 0x02, 0x1c, 0x33, 0x92, 0x06, 0x68, 0x91,
- 0x33, 0x10, 0x00, 0x9b, 0x18, 0xc9, 0x00, 0xb3, 0x19, 0x9b, 0x00, 0xdb, 0x9c, 0x06, 0x1c, 0x1a,
- 0x32, 0x58, 0x18, 0xa2, 0x92, 0x08, 0x18, 0xe3, 0x22, 0x00, 0x67, 0x1a, 0x68, 0x03, 0x4a, 0x3b,
- 0x68, 0x9b, 0x1d, 0x0f, 0x68, 0x5b, 0x68, 0x4b, 0x40, 0x13, 0x2b, 0x01, 0xd0, 0x02, 0x24, 0x01,
- 0x42, 0x64, 0xe0, 0x64, 0x1c, 0x73, 0x04, 0x1b, 0x22, 0x00, 0x0c, 0x1b, 0x92, 0x09, 0x93, 0x05,
- 0x4b, 0x33, 0x20, 0x0a, 0x60, 0x3b, 0xf7, 0xfd, 0xf8, 0x8f, 0x4b, 0x32, 0x20, 0x64, 0x60, 0x3b,
- 0xf7, 0xfd, 0xf8, 0x8a, 0x4b, 0x30, 0x22, 0x80, 0x60, 0x3b, 0x23, 0xfa, 0x00, 0xdb, 0x93, 0x00,
- 0x00, 0x52, 0x23, 0x00, 0x1c, 0x38, 0x1c, 0x39, 0xf7, 0xfd, 0xff, 0x92, 0x68, 0x3a, 0x4b, 0x2b,
- 0x1c, 0x04, 0x40, 0x13, 0x2b, 0x05, 0xd1, 0x30, 0x23, 0xc0, 0x01, 0x1b, 0x40, 0x1a, 0x23, 0x80,
- 0x00, 0xdb, 0x42, 0x9a, 0xd0, 0x29, 0x28, 0x00, 0xd1, 0x29, 0x20, 0x64, 0xf7, 0xfd, 0xf8, 0x6c,
- 0x4b, 0x23, 0x21, 0x80, 0x68, 0x1a, 0x25, 0x00, 0x92, 0x07, 0x4a, 0x22, 0x60, 0x1a, 0x23, 0x16,
- 0x93, 0x01, 0x9b, 0x08, 0x22, 0x06, 0x93, 0x02, 0x1c, 0x18, 0x23, 0x80, 0x00, 0x5b, 0x94, 0x00,
- 0xf7, 0xfe, 0xfb, 0x2e, 0x1c, 0x04, 0x28, 0x00, 0xdb, 0x09, 0x98, 0x08, 0x21, 0x00, 0x22, 0x05,
- 0x9b, 0x05, 0x95, 0x00, 0x95, 0x01, 0x95, 0x02, 0xf7, 0xfe, 0xfb, 0x22, 0x1c, 0x04, 0x4b, 0x14,
- 0x9a, 0x07, 0x60, 0x1a, 0x2c, 0x00, 0xdb, 0x02, 0xe0, 0x08, 0x24, 0x01, 0x42, 0x64, 0x9b, 0x09,
- 0x33, 0x01, 0x93, 0x09, 0x2b, 0x04, 0xd1, 0xab, 0x2c, 0x00, 0xdb, 0x08, 0x00, 0xb3, 0x9a, 0x06,
- 0x19, 0x9b, 0x00, 0xdb, 0x18, 0xd3, 0x22, 0x00, 0x67, 0xda, 0x1c, 0x72, 0x67, 0x1a, 0xb0, 0x0b,
- 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x20, 0x01,
- 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x20, 0x05,
- 0x13, 0x70, 0x60, 0x38, 0x00, 0x03, 0x0d, 0x40, 0xb5, 0xf0, 0x4c, 0x1d, 0xb0, 0x81, 0x68, 0x23,
- 0x1c, 0x06, 0x68, 0x9d, 0x23, 0x01, 0x60, 0xab, 0xf7, 0xff, 0xff, 0x5a, 0x1c, 0x07, 0x28, 0x00,
- 0xda, 0x1b, 0x68, 0x23, 0x22, 0x37, 0x68, 0x99, 0x20, 0x0a, 0x68, 0x4b, 0x40, 0x13, 0x60, 0x4b,
- 0x68, 0x23, 0x1c, 0x34, 0x68, 0x9b, 0x34, 0x10, 0x68, 0x1b, 0x00, 0xa4, 0xf7, 0xfd, 0xf8, 0x04,
- 0x4b, 0x10, 0x19, 0x2c, 0x60, 0x63, 0x20, 0x32, 0xf7, 0xfc, 0xff, 0xfe, 0x4b, 0x0e, 0x20, 0x64,
- 0x60, 0x63, 0xf7, 0xfc, 0xff, 0xf9, 0x4b, 0x0d, 0x60, 0x63, 0x48, 0x09, 0x22, 0x37, 0x68, 0x03,
- 0xb0, 0x01, 0x68, 0x99, 0x68, 0x4b, 0x40, 0x13, 0x60, 0x4b, 0x68, 0x03, 0x68, 0x9a, 0x23, 0x04,
- 0x60, 0x93, 0x68, 0x03, 0x1c, 0x38, 0x68, 0x9b, 0x68, 0x1b, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
- 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x10, 0x01,
- 0xb5, 0xf0, 0x4b, 0x51, 0x4c, 0x51, 0x78, 0x1b, 0xb0, 0x83, 0x1c, 0x1a, 0x4b, 0x50, 0x1e, 0x51,
- 0x41, 0x8a, 0x68, 0x1b, 0x60, 0x22, 0x2b, 0x00, 0xd0, 0x2b, 0x4b, 0x4e, 0x00, 0x92, 0x68, 0x1b,
- 0x68, 0x99, 0x1c, 0x0b, 0x33, 0x44, 0x18, 0x9b, 0x68, 0x1b, 0x07, 0xda, 0xd4, 0x23, 0xf0, 0x00,
- 0xfd, 0x11, 0x20, 0x64, 0xf7, 0xfc, 0xff, 0xc0, 0xf0, 0x00, 0xfd, 0x00, 0x20, 0x64, 0xf7, 0xfc,
- 0xff, 0xbb, 0xf0, 0x00, 0xfd, 0x07, 0x20, 0x64, 0xf7, 0xfc, 0xff, 0xb6, 0xf0, 0x00, 0xfc, 0xf6,
- 0x20, 0x64, 0xf7, 0xfc, 0xff, 0xb1, 0xf0, 0x00, 0xfc, 0xfd, 0x20, 0x64, 0xf7, 0xfc, 0xff, 0xac,
- 0xf0, 0x00, 0xfc, 0xec, 0x20, 0x64, 0xf7, 0xfc, 0xff, 0xa7, 0x20, 0xfa, 0x00, 0x40, 0xf7, 0xfc,
- 0xff, 0xa3, 0x24, 0x01, 0xe0, 0x62, 0x23, 0x00, 0x60, 0x8b, 0x20, 0x00, 0xf7, 0xfc, 0xfd, 0x2e,
- 0x68, 0x20, 0xf7, 0xff, 0xff, 0x79, 0x1c, 0x06, 0x28, 0x00, 0xda, 0x03, 0x68, 0x20, 0xf7, 0xff,
- 0xff, 0x73, 0x1c, 0x06, 0x20, 0x3c, 0xf7, 0xfc, 0xff, 0x8f, 0x4b, 0x2e, 0x48, 0x2e, 0x93, 0x01,
- 0x68, 0x1b, 0x1c, 0x31, 0x68, 0x9a, 0x4b, 0x29, 0x32, 0x44, 0x68, 0x1b, 0x00, 0x9b, 0x18, 0xd2,
- 0x68, 0x15, 0x1c, 0x2a, 0xf7, 0xfd, 0xfd, 0x56, 0x4c, 0x25, 0x22, 0x01, 0x60, 0x22, 0x2e, 0x00,
- 0xdb, 0x38, 0x4b, 0x26, 0x1c, 0x2a, 0x40, 0x1a, 0x4b, 0x25, 0x42, 0x9a, 0xd1, 0x32, 0x4d, 0x25,
- 0x27, 0x00, 0x70, 0x2f, 0x60, 0x27, 0xf7, 0xff, 0xfb, 0x8d, 0x4b, 0x23, 0x4a, 0x23, 0x60, 0x13,
- 0x4b, 0x23, 0x93, 0x00, 0x28, 0x00, 0xdb, 0x11, 0x48, 0x22, 0xf7, 0xfd, 0xfd, 0x3b, 0xf0, 0x00,
- 0xfc, 0xa5, 0x22, 0x01, 0x60, 0x27, 0x70, 0x2a, 0x98, 0x00, 0xf7, 0xfc, 0xfc, 0xef, 0x9a, 0x01,
- 0x24, 0x00, 0x68, 0x13, 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0xe0, 0x14, 0x23, 0x01, 0x60, 0x23,
- 0x1c, 0x31, 0x48, 0x19, 0xf7, 0xfd, 0xfd, 0x26, 0x70, 0x2f, 0xf0, 0x00, 0xfc, 0x8f, 0x20, 0x64,
- 0xf7, 0xfc, 0xff, 0x4a, 0x98, 0x00, 0xf7, 0xfc, 0xfc, 0xd9, 0x9a, 0x01, 0x68, 0x13, 0x68, 0x9a,
- 0x23, 0x04, 0x60, 0x93, 0x24, 0x01, 0x20, 0x64, 0xf7, 0xfc, 0xff, 0x3e, 0xb0, 0x03, 0x1c, 0x20,
- 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x01, 0x0c, 0x13, 0x70, 0x67, 0x78,
- 0x13, 0x70, 0x67, 0x6c, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x65, 0x73, 0x00, 0x00, 0x31, 0x05,
- 0x00, 0x00, 0x10, 0x05, 0x13, 0x70, 0x67, 0x9c, 0x00, 0x0f, 0x42, 0x40, 0x13, 0x70, 0x60, 0x38,
- 0x13, 0x70, 0x12, 0xd9, 0x13, 0x70, 0x65, 0x9d, 0x13, 0x70, 0x65, 0xae, 0xb5, 0xf0, 0x4b, 0x28,
- 0xb0, 0x85, 0x68, 0x1b, 0x90, 0x03, 0x92, 0x02, 0x2b, 0x00, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x43,
- 0x04, 0x0b, 0x4f, 0x24, 0x25, 0x00, 0x0c, 0x1e, 0xf7, 0xff, 0xff, 0x32, 0x28, 0x00, 0xd1, 0x01,
- 0x25, 0x00, 0xe0, 0x01, 0x2d, 0x00, 0xdb, 0x02, 0x78, 0x3b, 0x2b, 0x01, 0xd0, 0x04, 0x4a, 0x1e,
- 0x23, 0x01, 0x25, 0x01, 0x60, 0x13, 0x42, 0x6d, 0x4b, 0x1b, 0x68, 0x19, 0x29, 0x00, 0xd1, 0xeb,
- 0x4a, 0x1a, 0x4b, 0x1b, 0x60, 0x13, 0x1c, 0x6b, 0xd0, 0x17, 0x4c, 0x1a, 0x20, 0x00, 0x68, 0x23,
- 0x68, 0x9b, 0x60, 0x99, 0xf7, 0xfc, 0xfc, 0x82, 0x4b, 0x17, 0x9a, 0x03, 0x78, 0x19, 0x9b, 0x02,
- 0x48, 0x16, 0x93, 0x00, 0x1c, 0x33, 0xf7, 0xfe, 0xfc, 0xdf, 0x1c, 0x05, 0x48, 0x14, 0xf7, 0xfc,
- 0xfc, 0x75, 0x68, 0x23, 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0x4a, 0x0c, 0x4b, 0x11, 0x60, 0x13,
- 0x2d, 0x00, 0xda, 0x02, 0x4a, 0x08, 0x23, 0x01, 0x60, 0x13, 0x4b, 0x07, 0x68, 0x1b, 0x2b, 0x00,
- 0xd1, 0xc2, 0x2d, 0x00, 0xdb, 0xc0, 0x20, 0x01, 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
- 0x13, 0x70, 0x67, 0x94, 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x70, 0x60, 0x38,
- 0x00, 0x2d, 0xc6, 0xc0, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x60, 0x3c, 0x13, 0x72, 0xc2, 0x00,
- 0x13, 0x70, 0x12, 0xd9, 0x00, 0x0f, 0x42, 0x40, 0xb5, 0xf0, 0x4b, 0x4b, 0xb0, 0x87, 0x68, 0x1b,
- 0x1c, 0x07, 0x92, 0x05, 0x2b, 0x00, 0xd1, 0x07, 0x4b, 0x48, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x03,
- 0x4a, 0x47, 0x4b, 0x48, 0x40, 0x02, 0x60, 0x1a, 0x4b, 0x47, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x06,
- 0x4a, 0x46, 0x68, 0x13, 0x2b, 0x01, 0xdd, 0x02, 0x23, 0x01, 0x60, 0x13, 0xe0, 0x61, 0x4b, 0x3f,
- 0x4a, 0x3d, 0x93, 0x03, 0x04, 0x0b, 0x0c, 0x1b, 0x25, 0x00, 0x26, 0x00, 0x92, 0x04, 0x93, 0x02,
- 0x9a, 0x04, 0x68, 0x13, 0x2b, 0x00, 0xd1, 0x04, 0x9a, 0x03, 0x68, 0x13, 0x2b, 0x00, 0xd1, 0x00,
- 0x26, 0x00, 0xf7, 0xff, 0xfe, 0xad, 0x28, 0x00, 0xd1, 0x00, 0x25, 0x00, 0x4b, 0x36, 0x68, 0x1b,
- 0x2b, 0x00, 0xd0, 0x03, 0x4b, 0x35, 0x68, 0x1b, 0x2b, 0x03, 0xd0, 0x53, 0x2d, 0x00, 0xdb, 0x03,
- 0x4b, 0x33, 0x78, 0x1b, 0x2b, 0x01, 0xd0, 0x04, 0x4a, 0x30, 0x23, 0x01, 0x25, 0x01, 0x60, 0x13,
- 0x42, 0x6d, 0x4b, 0x2e, 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0x41, 0x4b, 0x28, 0x4a, 0x2d, 0x68, 0x1b,
- 0x2b, 0x00, 0xd0, 0x01, 0x4b, 0x2c, 0xe0, 0x00, 0x4b, 0x2c, 0x60, 0x13, 0x1c, 0x6b, 0xd0, 0x18,
- 0x4c, 0x2b, 0x20, 0x00, 0x68, 0x23, 0x68, 0x9a, 0x23, 0x00, 0x60, 0x93, 0xf7, 0xfc, 0xfb, 0xee,
- 0x4b, 0x28, 0x9a, 0x05, 0x78, 0x19, 0x48, 0x28, 0x9b, 0x02, 0x92, 0x00, 0x1c, 0x3a, 0xf7, 0xfe,
- 0xfc, 0xd5, 0x1c, 0x05, 0x48, 0x25, 0xf7, 0xfc, 0xfb, 0xe1, 0x68, 0x23, 0x68, 0x9a, 0x23, 0x04,
- 0x60, 0x93, 0x4a, 0x1c, 0x4b, 0x22, 0x60, 0x13, 0x2d, 0x00, 0xda, 0x02, 0x4a, 0x17, 0x23, 0x01,
- 0x60, 0x13, 0x4b, 0x15, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x05, 0x4b, 0x14, 0x68, 0x1b, 0x2b, 0x00,
- 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x13, 0x4b, 0x11, 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0x07, 0x4b, 0x10,
- 0x78, 0x1b, 0x2b, 0x01, 0xd1, 0x03, 0x2d, 0x00, 0xdb, 0x01, 0x20, 0x01, 0xe0, 0x07, 0x36, 0x01,
- 0x2e, 0x03, 0xdd, 0x95, 0x0f, 0xeb, 0x22, 0x01, 0x40, 0x53, 0x06, 0x1b, 0x0e, 0x18, 0xb0, 0x07,
- 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x67, 0xc0, 0x13, 0x70, 0x67, 0x94,
- 0x7f, 0xff, 0xff, 0xff, 0x13, 0x70, 0x67, 0x54, 0x13, 0x70, 0x67, 0x48, 0x13, 0x70, 0x67, 0x6c,
- 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x60, 0x38, 0x00, 0x98, 0x96, 0x80, 0x00, 0x2d, 0xc6, 0xc0,
- 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x60, 0x3c, 0x13, 0x72, 0xc2, 0x00, 0x13, 0x70, 0x12, 0xd9,
- 0x00, 0x0f, 0x42, 0x40, 0xb5, 0xf0, 0x4b, 0x1e, 0xb0, 0x81, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x31,
- 0xf7, 0xff, 0xfe, 0x1e, 0x4b, 0x1b, 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0x2b, 0x4b, 0x1a, 0x78, 0x1b,
- 0x2b, 0x00, 0xd0, 0x27, 0x4e, 0x19, 0x4f, 0x1a, 0x4c, 0x1a, 0x4d, 0x1b, 0x60, 0x37, 0x79, 0x29,
- 0x1c, 0x20, 0xf7, 0xfe, 0xfc, 0xe5, 0x28, 0x00, 0xdb, 0x1c, 0x60, 0x37, 0x79, 0x29, 0x1c, 0x22,
- 0x1c, 0x23, 0x00, 0x88, 0x32, 0x10, 0x33, 0x50, 0x18, 0x12, 0x18, 0x1b, 0x1c, 0x20, 0xf7, 0xfe,
- 0xfc, 0x9b, 0x28, 0x00, 0xdb, 0x0e, 0x4b, 0x11, 0x68, 0x18, 0x28, 0x00, 0xd0, 0x07, 0x79, 0x2b,
- 0x22, 0x80, 0x33, 0x04, 0x00, 0x9b, 0x59, 0x1b, 0x01, 0x12, 0x42, 0x93, 0xd1, 0x02, 0x1e, 0x43,
- 0x41, 0x98, 0xe0, 0x00, 0x20, 0x00, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
- 0x13, 0x70, 0x67, 0x98, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x60, 0x38,
- 0x00, 0x0f, 0x42, 0x40, 0x13, 0x72, 0xc2, 0x00, 0x13, 0x70, 0x67, 0xac, 0x13, 0x70, 0x67, 0x94,
- 0xb5, 0xf0, 0x4b, 0x65, 0xb0, 0x83, 0x68, 0x1c, 0x2c, 0x00, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0xbf,
- 0x4a, 0x62, 0x20, 0x00, 0x92, 0x00, 0x68, 0x13, 0x68, 0x9b, 0x60, 0x9c, 0xf7, 0xfc, 0xfb, 0x36,
- 0x4a, 0x5f, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x13, 0x4a, 0x5e, 0x23, 0x01, 0x60, 0x13, 0x4b, 0x5e,
- 0x48, 0x5e, 0x70, 0x1c, 0xf7, 0xfd, 0xfb, 0x6e, 0x49, 0x5d, 0x4a, 0x5e, 0x78, 0x0b, 0x1e, 0x58,
- 0x41, 0x83, 0x60, 0x13, 0x1c, 0x1d, 0x00, 0x9f, 0xe0, 0x8e, 0x4b, 0x54, 0x68, 0x1b, 0x93, 0x01,
- 0x00, 0xab, 0x9a, 0x01, 0x19, 0x5b, 0x00, 0xdb, 0x18, 0xd3, 0x4a, 0x56, 0x67, 0x5d, 0x60, 0x15,
- 0x6f, 0x1b, 0x4a, 0x50, 0x2b, 0x00, 0xd0, 0x4d, 0x23, 0x01, 0x60, 0x13, 0x1c, 0x28, 0xf7, 0xff,
- 0xfc, 0xa7, 0x1c, 0x04, 0x20, 0x14, 0xf7, 0xfc, 0xfd, 0x77, 0x4a, 0x48, 0x68, 0x13, 0x68, 0x9b,
- 0x33, 0x44, 0x19, 0xdb, 0x68, 0x19, 0x2c, 0x00, 0xdb, 0x05, 0x4b, 0x4b, 0x1c, 0x0a, 0x40, 0x1a,
- 0x4b, 0x4a, 0x42, 0x9a, 0xd0, 0x0c, 0x1c, 0x28, 0xf7, 0xff, 0xfd, 0x46, 0x1c, 0x04, 0x20, 0x14,
- 0xf7, 0xfc, 0xfd, 0x62, 0x4b, 0x3d, 0x68, 0x1b, 0x68, 0x9b, 0x33, 0x44, 0x19, 0xdb, 0x68, 0x19,
- 0x4e, 0x3c, 0x23, 0x01, 0x60, 0x33, 0x2c, 0x00, 0xdb, 0x54, 0x4b, 0x3f, 0x1c, 0x0a, 0x40, 0x1a,
- 0x4b, 0x3e, 0x42, 0x9a, 0xd1, 0x4e, 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, 0x9a, 0x01, 0x30, 0x58,
- 0x18, 0x10, 0xf7, 0xff, 0xfa, 0x87, 0x28, 0x00, 0xd1, 0x44, 0x4b, 0x2f, 0x22, 0x01, 0x60, 0x1a,
- 0x60, 0x30, 0x48, 0x37, 0xf7, 0xfc, 0xfa, 0xd2, 0x4b, 0x2c, 0x48, 0x36, 0x68, 0x1b, 0x68, 0x9a,
- 0x23, 0x04, 0x60, 0x93, 0xf7, 0xfd, 0xfb, 0x0e, 0x4b, 0x33, 0x68, 0x1b, 0x1c, 0x18, 0x1e, 0x42,
- 0x41, 0x90, 0xe0, 0x45, 0x23, 0x01, 0x60, 0x13, 0x4a, 0x24, 0x48, 0x30, 0x68, 0x13, 0x68, 0x9b,
- 0x33, 0x44, 0x19, 0xdb, 0x68, 0x1c, 0x1c, 0x21, 0xf7, 0xfd, 0xfa, 0xfc, 0x23, 0x01, 0x42, 0x1c,
- 0xd0, 0x19, 0x1c, 0x28, 0xf7, 0xff, 0xfd, 0x00, 0x1c, 0x04, 0x20, 0x14, 0xf7, 0xfc, 0xfd, 0x1c,
- 0x4a, 0x1a, 0x68, 0x13, 0x68, 0x9b, 0x33, 0x44, 0x19, 0xdb, 0x68, 0x1a, 0x2c, 0x00, 0xdb, 0x04,
- 0x4b, 0x1d, 0x40, 0x1a, 0x4b, 0x1d, 0x42, 0x9a, 0xd0, 0x02, 0x1c, 0x28, 0xf7, 0xff, 0xfc, 0x38,
- 0x4a, 0x13, 0x23, 0x65, 0xe0, 0x04, 0x4a, 0x12, 0x68, 0x13, 0x33, 0x01, 0xd1, 0x02, 0x23, 0x64,
- 0x42, 0x5b, 0x60, 0x13, 0x35, 0x01, 0x37, 0x04, 0x4a, 0x11, 0x78, 0x13, 0x2b, 0x00, 0xd1, 0x01,
- 0x23, 0x01, 0xe0, 0x00, 0x23, 0x02, 0x42, 0x9d, 0xda, 0x00, 0xe7, 0x66, 0x48, 0x10, 0xf7, 0xfc,
- 0xfa, 0x85, 0x9a, 0x00, 0x68, 0x13, 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0x4b, 0x04, 0x68, 0x18,
- 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x67, 0x98, 0x13, 0x70, 0x60, 0x34,
- 0x13, 0x70, 0x67, 0xa8, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x65, 0xc6,
- 0x13, 0x70, 0x01, 0x0c, 0x13, 0x70, 0x67, 0x78, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x10, 0x05,
- 0x13, 0x70, 0x12, 0xd9, 0x13, 0x70, 0x66, 0x43, 0x13, 0x70, 0x67, 0x94, 0x13, 0x70, 0x66, 0x59,
- 0xb5, 0xf0, 0x4b, 0x21, 0x49, 0x21, 0x78, 0x1a, 0xb0, 0x81, 0x1e, 0x50, 0x41, 0x82, 0x60, 0x0a,
- 0x1c, 0x15, 0x00, 0x96, 0x1c, 0x18, 0x21, 0x01, 0x4f, 0x1d, 0xe0, 0x28, 0x00, 0xab, 0x68, 0x3a,
- 0x19, 0x5b, 0x00, 0xdb, 0x18, 0xd2, 0x67, 0x55, 0x68, 0x3b, 0x1d, 0x32, 0x68, 0x9b, 0x33, 0x44,
- 0x19, 0x9b, 0x68, 0x1b, 0x42, 0x0b, 0xd0, 0x18, 0x1c, 0x28, 0xf7, 0xff, 0xfc, 0x8d, 0x1c, 0x04,
- 0x20, 0x14, 0xf7, 0xfc, 0xfc, 0xa9, 0x68, 0x3b, 0x68, 0x9b, 0x33, 0x44, 0x19, 0x9b, 0x68, 0x1a,
- 0x2c, 0x00, 0xdb, 0x04, 0x4b, 0x0f, 0x40, 0x1a, 0x4b, 0x0f, 0x42, 0x9a, 0xd0, 0x02, 0x1c, 0x28,
- 0xf7, 0xff, 0xfb, 0xc6, 0x20, 0x65, 0x42, 0x40, 0xe0, 0x0a, 0x35, 0x01, 0x1c, 0x16, 0x78, 0x03,
- 0x2b, 0x00, 0xd1, 0x01, 0x23, 0x01, 0xe0, 0x00, 0x23, 0x02, 0x42, 0x9d, 0xdb, 0xce, 0x20, 0x00,
- 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x01, 0x0c, 0x13, 0x70, 0x67, 0x78,
- 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x39, 0x05, 0x00, 0x00, 0x10, 0x05, 0xb5, 0xf0, 0xb0, 0x81,
- 0x1c, 0x06, 0x07, 0xc2, 0xd4, 0x01, 0x20, 0x01, 0xe0, 0x38, 0x4b, 0x35, 0x68, 0x1c, 0x2c, 0x00,
- 0xd0, 0x09, 0x6b, 0x60, 0x21, 0x60, 0xf7, 0xfb, 0xfc, 0xdf, 0x6b, 0x60, 0x21, 0x60, 0xf0, 0x00,
- 0xf8, 0x71, 0x6b, 0xa4, 0xe7, 0xf3, 0x4c, 0x2f, 0x68, 0x23, 0x2b, 0x00, 0xd0, 0x1a, 0x6c, 0x58,
- 0x21, 0x20, 0xf7, 0xfb, 0xfc, 0xd1, 0x68, 0x23, 0x21, 0x20, 0x6c, 0x58, 0xf0, 0x00, 0xf8, 0x62,
- 0x68, 0x22, 0x23, 0x80, 0x04, 0x5b, 0x61, 0x13, 0x4b, 0x27, 0x68, 0x22, 0x68, 0x1b, 0x21, 0x20,
- 0x6b, 0x5b, 0x61, 0x53, 0x68, 0x23, 0x6c, 0x58, 0xf7, 0xfb, 0xfc, 0x96, 0x68, 0x23, 0x4a, 0x23,
- 0x69, 0x9b, 0x60, 0x13, 0x4b, 0x1e, 0x68, 0x18, 0xf7, 0xfc, 0xfc, 0xc6, 0x28, 0x00, 0xd0, 0x05,
- 0x4b, 0x1f, 0x20, 0x05, 0x68, 0x1a, 0x23, 0x00, 0x64, 0x13, 0x42, 0x40, 0x07, 0x73, 0xd5, 0x24,
- 0x4a, 0x1b, 0x25, 0x80, 0x4f, 0x1b, 0x24, 0x00, 0x46, 0x94, 0x01, 0xad, 0x46, 0x62, 0x68, 0x13,
- 0x00, 0xa2, 0x68, 0x9b, 0x33, 0x44, 0x18, 0x99, 0x68, 0x3b, 0x68, 0x0a, 0x42, 0x9c, 0xd1, 0x0c,
- 0x21, 0x01, 0x42, 0x0a, 0xd1, 0x0e, 0x4b, 0x14, 0x22, 0x20, 0x60, 0x19, 0x49, 0x13, 0x20, 0x01,
- 0x68, 0x0b, 0x42, 0x40, 0x43, 0x93, 0x60, 0x0b, 0xe0, 0x04, 0x4b, 0x11, 0x40, 0x13, 0x2b, 0x03,
- 0xd1, 0x00, 0x60, 0x0d, 0x34, 0x01, 0x2c, 0x04, 0xd1, 0xe0, 0x28, 0x00, 0xd0, 0x04, 0x23, 0x12,
- 0x42, 0x1e, 0xd0, 0x01, 0x20, 0x06, 0x42, 0x40, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
- 0x13, 0x70, 0x67, 0x88, 0x13, 0x70, 0x67, 0x8c, 0x13, 0x70, 0x67, 0xc4, 0x13, 0x70, 0x67, 0x90,
- 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x78, 0x13, 0x70, 0x67, 0x6c, 0x0d, 0x80, 0x00, 0xc0,
- 0x00, 0x00, 0x20, 0x03, 0x47, 0x70, 0x46, 0xc0, 0x47, 0x70, 0x46, 0xc0, 0xb5, 0x00, 0x4b, 0x04,
- 0xb0, 0x81, 0x1c, 0x01, 0x68, 0x18, 0xf7, 0xfb, 0xfc, 0x17, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00,
- 0x13, 0x70, 0x60, 0x40, 0xb5, 0x00, 0x4b, 0x0d, 0x1c, 0x01, 0xb0, 0x81, 0x68, 0x18, 0x22, 0x20,
- 0xf7, 0xfb, 0xfc, 0x46, 0x28, 0x00, 0xd1, 0x0d, 0x48, 0x09, 0xf7, 0xfb, 0xfc, 0x15, 0xf0, 0x00,
- 0xf9, 0x29, 0x20, 0xc8, 0xf7, 0xfc, 0xfb, 0xd8, 0xf0, 0x00, 0xf9, 0x18, 0x20, 0xc8, 0xf7, 0xfc,
- 0xfb, 0xd3, 0xe7, 0xf4, 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x40,
- 0x13, 0x70, 0x66, 0x76, 0xb5, 0x00, 0xb0, 0x81, 0xf7, 0xfb, 0xfb, 0xf6, 0xb0, 0x01, 0xbc, 0x01,
- 0x47, 0x00, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x81, 0xf7, 0xfb, 0xfb, 0xee, 0xb0, 0x01, 0xbc, 0x01,
- 0x47, 0x00, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x81, 0xf7, 0xfb, 0xfb, 0xe6, 0xb0, 0x01, 0xbc, 0x01,
- 0x47, 0x00, 0x46, 0xc0, 0xb5, 0x10, 0x1c, 0x04, 0xf7, 0xfb, 0xfb, 0xfe, 0x1c, 0x20, 0xbc, 0x10,
- 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x10, 0x1c, 0x04, 0xf7, 0xfb, 0xfb, 0xf6, 0x1c, 0x20, 0xbc, 0x10,
- 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x10, 0x1c, 0x04, 0xf7, 0xfb, 0xfb, 0xee, 0x1c, 0x20, 0xbc, 0x10,
- 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x00, 0x21, 0xe0, 0xb0, 0x81, 0x48, 0x07, 0x02, 0x09, 0xf7, 0xfb,
- 0xfb, 0xa3, 0x4b, 0x06, 0x60, 0x18, 0x28, 0x00, 0xdb, 0x01, 0x20, 0x00, 0xe0, 0x01, 0x20, 0x01,
- 0x42, 0x40, 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0xa0, 0x00, 0x13, 0x70, 0x60, 0x40,
- 0xb5, 0xf0, 0x4b, 0x27, 0x1c, 0x06, 0x68, 0x18, 0xb0, 0x87, 0x91, 0x05, 0x28, 0x00, 0xd0, 0x01,
- 0xf7, 0xfc, 0xf8, 0xe0, 0x4f, 0x23, 0x4a, 0x22, 0x68, 0x3d, 0x23, 0x00, 0x60, 0x13, 0x2d, 0x00,
- 0xd1, 0x17, 0xf7, 0xff, 0xfd, 0xbd, 0x4c, 0x20, 0x1c, 0x20, 0xf7, 0xfc, 0xfd, 0xa3, 0x4b, 0x1f,
- 0x1c, 0x02, 0x60, 0x18, 0x28, 0x00, 0xd0, 0x2d, 0x68, 0x23, 0x92, 0x00, 0x9a, 0x05, 0x48, 0x1c,
- 0x92, 0x01, 0x21, 0x00, 0x22, 0x00, 0x95, 0x02, 0xf0, 0x00, 0xfb, 0xfc, 0x60, 0x38, 0x28, 0x00,
- 0xd0, 0x20, 0x4d, 0x18, 0x68, 0x2c, 0x2c, 0x00, 0xd0, 0x0b, 0x48, 0x17, 0x1c, 0x31, 0x22, 0x06,
- 0xf0, 0x00, 0xfe, 0xc8, 0x28, 0x00, 0xd0, 0x16, 0x1c, 0x20, 0xf0, 0x00, 0xfa, 0x0b, 0x23, 0x00,
- 0x60, 0x2b, 0x4b, 0x0c, 0x1c, 0x31, 0x68, 0x18, 0xf0, 0x00, 0xfa, 0x14, 0x4b, 0x0d, 0x60, 0x18,
- 0x28, 0x00, 0xd0, 0x04, 0x48, 0x0c, 0x1c, 0x31, 0x22, 0x06, 0xf0, 0x00, 0xfe, 0xdf, 0x4b, 0x09,
- 0x68, 0x1c, 0xe0, 0x00, 0x24, 0x00, 0xb0, 0x07, 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
- 0x13, 0x70, 0x67, 0xd0, 0x13, 0x70, 0x67, 0xd4, 0x13, 0x72, 0xc3, 0xa0, 0x13, 0x72, 0xc3, 0xa4,
- 0x13, 0x70, 0x4b, 0x61, 0x13, 0x70, 0x67, 0xd8, 0x13, 0x70, 0x60, 0x44, 0xb5, 0x30, 0x4b, 0x0f,
- 0xb0, 0x81, 0x68, 0x18, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xfc, 0xf8, 0x84, 0x4c, 0x0c, 0x4b, 0x0b,
- 0x68, 0x20, 0x25, 0x00, 0x60, 0x1d, 0x28, 0x00, 0xd0, 0x02, 0xf0, 0x00, 0xf9, 0xd3, 0x60, 0x25,
- 0x4b, 0x08, 0x68, 0x18, 0x28, 0x00, 0xd0, 0x01, 0xf0, 0x00, 0xfa, 0x50, 0x4a, 0x05, 0x23, 0x00,
- 0xb0, 0x01, 0x60, 0x13, 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x67, 0xd0,
- 0x13, 0x70, 0x67, 0xd8, 0x13, 0x70, 0x67, 0xd4, 0xb5, 0x10, 0x4c, 0x0b, 0x68, 0x20, 0x28, 0x00,
- 0xd0, 0x03, 0xf0, 0x00, 0xf9, 0xb7, 0x23, 0x00, 0x60, 0x23, 0x4c, 0x08, 0x68, 0x23, 0x2b, 0x00,
- 0xd1, 0x03, 0x48, 0x07, 0xf7, 0xfc, 0xf8, 0x62, 0x60, 0x20, 0x4a, 0x06, 0x23, 0x01, 0x42, 0x5b,
- 0x60, 0x13, 0xbc, 0x10, 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x67, 0xd8, 0x13, 0x70, 0x67, 0xd0,
- 0x00, 0x00, 0x80, 0x20, 0x13, 0x70, 0x60, 0x10, 0xb5, 0xf0, 0x4f, 0x0f, 0x1c, 0x1e, 0x68, 0x3b,
- 0x1c, 0x15, 0x1c, 0x0c, 0x1c, 0x30, 0x1c, 0x19, 0x43, 0x51, 0xb0, 0x81, 0xf7, 0xfb, 0xfb, 0x24,
- 0x1c, 0x20, 0x1c, 0x29, 0x1c, 0x32, 0xf7, 0xff, 0xfc, 0x17, 0x28, 0x00, 0xd1, 0x01, 0x20, 0x01,
- 0xe0, 0x06, 0x68, 0x3b, 0x1c, 0x30, 0x1c, 0x19, 0x43, 0x69, 0xf7, 0xfb, 0xfa, 0xf5, 0x20, 0x00,
- 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x72, 0xc3, 0xa0, 0xb5, 0x00, 0xb0, 0x81,
- 0x20, 0x81, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0xf7, 0xfb, 0xfb, 0x2e, 0xb0, 0x01, 0xbc, 0x01,
- 0x47, 0x00, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x81, 0x20, 0x80, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00,
- 0xf7, 0xfb, 0xfb, 0x22, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0xb5, 0x30, 0x1c, 0x0d,
- 0x1c, 0x04, 0x1c, 0x13, 0xb0, 0x81, 0x1c, 0x2a, 0x1c, 0x21, 0x20, 0x10, 0xf7, 0xfb, 0xfb, 0x14,
- 0xb0, 0x01, 0xbc, 0x30, 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x00, 0x1c, 0x03, 0xb0, 0x81, 0x1c, 0x0a,
- 0x20, 0x06, 0x1c, 0x19, 0x23, 0x00, 0xf7, 0xfb, 0xfb, 0x07, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00,
- 0xb5, 0x00, 0x1c, 0x03, 0xb0, 0x81, 0x1c, 0x0a, 0x20, 0x05, 0x1c, 0x19, 0x23, 0x00, 0xf7, 0xfb,
- 0xfa, 0xfb, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00, 0xb5, 0x30, 0xb0, 0x81, 0x1c, 0x04, 0x1c, 0x0d,
- 0x1c, 0x13, 0x2a, 0x00, 0xdd, 0x04, 0x20, 0x09, 0x1c, 0x21, 0x1c, 0x2a, 0xf7, 0xfb, 0xfa, 0xec,
- 0xb0, 0x01, 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0xb5, 0x30, 0xb0, 0x81, 0x1c, 0x04, 0x1c, 0x0d,
- 0x1c, 0x13, 0x2a, 0x00, 0xdd, 0x04, 0x20, 0x02, 0x1c, 0x21, 0x1c, 0x2a, 0xf7, 0xfb, 0xfa, 0xdc,
- 0xb0, 0x01, 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0xb5, 0x00, 0xb0, 0x81, 0x20, 0x12, 0x21, 0x00,
- 0x22, 0x00, 0x23, 0x00, 0xf7, 0xfb, 0xfa, 0xd0, 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
- 0xb5, 0x00, 0xb0, 0x81, 0x20, 0x11, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0xf7, 0xfb, 0xfa, 0xc4,
- 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x81, 0x20, 0x01, 0x21, 0x00,
- 0x22, 0x00, 0x23, 0x00, 0xf7, 0xfb, 0xfa, 0xb8, 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
- 0xb5, 0x00, 0x1c, 0x03, 0xb0, 0x81, 0x1c, 0x0a, 0x20, 0x00, 0x1c, 0x19, 0x23, 0x00, 0xf7, 0xfb,
- 0xfa, 0xab, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00, 0xb5, 0xf0, 0xb0, 0x8d, 0x90, 0x04, 0x92, 0x03,
- 0x93, 0x02, 0x68, 0x05, 0x1c, 0x0a, 0x6a, 0x6e, 0x1e, 0xb3, 0x40, 0xda, 0x04, 0x13, 0x0c, 0x1b,
- 0x93, 0x06, 0x9b, 0x04, 0x7a, 0x28, 0x68, 0x5a, 0x9b, 0x06, 0x6a, 0x2c, 0x33, 0x80, 0x00, 0x5b,
- 0x5a, 0xd3, 0x68, 0x6f, 0x93, 0x0a, 0x2b, 0x00, 0xd1, 0x00, 0xe0, 0xc5, 0x1e, 0x63, 0x40, 0xc3,
- 0x1a, 0x36, 0x93, 0x08, 0x96, 0x07, 0x1e, 0x83, 0x1c, 0x0a, 0x9e, 0x08, 0x40, 0xda, 0x08, 0xbb,
- 0x40, 0x16, 0x3b, 0x01, 0x1c, 0x0a, 0x40, 0x1a, 0x92, 0x09, 0xd1, 0x02, 0x9b, 0x03, 0x93, 0x0b,
- 0xe0, 0x89, 0x9b, 0x07, 0x9a, 0x0a, 0x40, 0x9a, 0x92, 0x05, 0x6a, 0xeb, 0x18, 0xf3, 0x18, 0x99,
- 0x4a, 0x58, 0x92, 0x01, 0x68, 0x13, 0x6c, 0xef, 0x42, 0x8b, 0xd1, 0x05, 0x4a, 0x56, 0x4b, 0x57,
- 0x68, 0x12, 0x68, 0x19, 0x1c, 0x38, 0xe0, 0x14, 0x6b, 0x2c, 0x6b, 0xa8, 0x22, 0x01, 0x1c, 0x3b,
- 0xf0, 0x00, 0xf8, 0xa6, 0x1c, 0x04, 0x28, 0x00, 0xd0, 0x00, 0xe0, 0x96, 0x6a, 0xeb, 0x9a, 0x05,
- 0x18, 0xf3, 0x18, 0x9b, 0x9a, 0x01, 0x60, 0x13, 0x4b, 0x4c, 0x6c, 0xe9, 0x68, 0x18, 0x4b, 0x4a,
- 0x68, 0x1a, 0xf0, 0x00, 0xfd, 0x7b, 0x9b, 0x09, 0x00, 0x9a, 0x68, 0x6b, 0x1a, 0x9c, 0x9b, 0x02,
- 0x42, 0x9c, 0xd9, 0x00, 0x1c, 0x1c, 0x6c, 0xe9, 0x98, 0x03, 0x18, 0x89, 0x1c, 0x22, 0xf0, 0x00,
- 0xfd, 0x6d, 0x9a, 0x02, 0x9b, 0x03, 0x1b, 0x12, 0x92, 0x02, 0x9a, 0x08, 0x19, 0x1c, 0x36, 0x01,
- 0x94, 0x0b, 0x42, 0x96, 0xd9, 0x47, 0x9b, 0x02, 0x2b, 0x00, 0xd0, 0x44, 0x9b, 0x06, 0x33, 0x01,
- 0x04, 0x1b, 0x0c, 0x1b, 0x93, 0x06, 0x9b, 0x04, 0x68, 0x5a, 0x9b, 0x06, 0x33, 0x80, 0x00, 0x5b,
- 0x5a, 0xd3, 0x93, 0x0a, 0x2b, 0x00, 0xd0, 0x5f, 0x26, 0x00, 0xe0, 0x34, 0x7a, 0x2b, 0x9f, 0x02,
- 0x6a, 0x2a, 0x40, 0xdf, 0x19, 0xbb, 0x42, 0x93, 0xd9, 0x00, 0x1b, 0x97, 0x9a, 0x07, 0x6a, 0xe9,
- 0x9b, 0x0a, 0x18, 0x71, 0x40, 0x93, 0x18, 0xc9, 0x6b, 0x2c, 0x6b, 0xa8, 0x1c, 0x3a, 0x9b, 0x0b,
- 0xf0, 0x00, 0xf8, 0x56, 0x1c, 0x04, 0x28, 0x00, 0xd1, 0x47, 0x7a, 0x2b, 0x1c, 0x39, 0x40, 0x99,
- 0x9b, 0x02, 0x9a, 0x08, 0x1a, 0x5b, 0x19, 0xf6, 0x93, 0x02, 0x42, 0x96, 0xd9, 0x10, 0x2b, 0x00,
- 0xd0, 0x0e, 0x9b, 0x06, 0x33, 0x01, 0x04, 0x1b, 0x0c, 0x1b, 0x93, 0x06, 0x9b, 0x04, 0x68, 0x5a,
- 0x9b, 0x06, 0x33, 0x80, 0x00, 0x5b, 0x5a, 0xd3, 0x93, 0x0a, 0x2b, 0x00, 0xd0, 0x2c, 0x26, 0x00,
- 0x9a, 0x0b, 0x18, 0x52, 0x92, 0x0b, 0x68, 0x6b, 0x9a, 0x02, 0x42, 0x9a, 0xd2, 0xc6, 0x2a, 0x00,
- 0xd1, 0x01, 0x24, 0x00, 0xe0, 0x21, 0x9b, 0x07, 0x9f, 0x0a, 0x6a, 0xe9, 0x40, 0x9f, 0x18, 0x71,
- 0x6b, 0x2c, 0x6b, 0xa8, 0x19, 0xc9, 0x6c, 0xeb, 0x22, 0x01, 0xf0, 0x00, 0xf8, 0x21, 0x1c, 0x04,
- 0x28, 0x00, 0xd1, 0x12, 0x6a, 0xeb, 0x4a, 0x0b, 0x18, 0xf3, 0x19, 0xdb, 0x60, 0x13, 0x4b, 0x0b,
- 0x6c, 0xe9, 0x68, 0x18, 0x4b, 0x08, 0x68, 0x1a, 0xf0, 0x00, 0xfc, 0xf8, 0x6c, 0xe9, 0x98, 0x0b,
- 0x9a, 0x02, 0xf0, 0x00, 0xfc, 0xf3, 0xe0, 0x00, 0x24, 0x01, 0xb0, 0x0d, 0x1c, 0x20, 0xbc, 0xf0,
- 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x4c, 0x13, 0x70, 0x67, 0xe0, 0x13, 0x70, 0x67, 0xdc,
- 0x47, 0x20, 0x46, 0xc0, 0xb5, 0x10, 0x68, 0x02, 0x1c, 0x04, 0x6d, 0x13, 0x3b, 0x01, 0x65, 0x13,
- 0x68, 0x40, 0xf7, 0xfb, 0xfe, 0x9f, 0x1c, 0x20, 0xf7, 0xfb, 0xfe, 0x9c, 0xbc, 0x10, 0xbc, 0x01,
- 0x47, 0x00, 0x46, 0xc0, 0xb5, 0xf0, 0x1c, 0x03, 0x33, 0x48, 0x88, 0x1a, 0x7a, 0x03, 0xb0, 0x83,
- 0x41, 0x1a, 0x92, 0x01, 0x23, 0x01, 0x4a, 0x30, 0x42, 0x5b, 0x27, 0x00, 0x1c, 0x05, 0x1c, 0x0e,
- 0x60, 0x13, 0x97, 0x00, 0xe0, 0x4f, 0x68, 0x2b, 0x19, 0xdb, 0x7b, 0x1b, 0x2b, 0x00, 0xd0, 0x45,
- 0x6a, 0xe9, 0x9a, 0x00, 0x31, 0x01, 0x18, 0x89, 0x6b, 0xa8, 0x22, 0x01, 0x6c, 0xeb, 0x6b, 0x2c,
- 0xf0, 0x00, 0xf8, 0x52, 0x6c, 0xe9, 0x1c, 0x30, 0x22, 0x06, 0xf0, 0x00, 0xfc, 0x83, 0x28, 0x00,
- 0xd1, 0x34, 0x20, 0x0c, 0xf7, 0xfb, 0xfe, 0x7a, 0x1c, 0x06, 0x28, 0x00, 0xd1, 0x09, 0x48, 0x1f,
- 0xf7, 0xfb, 0xf9, 0x3a, 0x48, 0x1e, 0xf7, 0xfb, 0xf9, 0x37, 0x48, 0x1e, 0xf7, 0xfb, 0xf9, 0x34,
- 0xe0, 0x2d, 0x1c, 0x2b, 0x33, 0x48, 0x60, 0x05, 0x60, 0x87, 0x88, 0x18, 0xf7, 0xfb, 0xfe, 0x66,
- 0x1c, 0x03, 0x60, 0x70, 0x28, 0x00, 0xd1, 0x0c, 0x48, 0x14, 0xf7, 0xfb, 0xf9, 0x25, 0x48, 0x14,
- 0xf7, 0xfb, 0xf9, 0x22, 0x48, 0x13, 0xf7, 0xfb, 0xf9, 0x1f, 0x1c, 0x30, 0xf7, 0xfb, 0xfe, 0x4a,
- 0xe0, 0x14, 0x6a, 0xe9, 0x9a, 0x00, 0x31, 0x01, 0x18, 0x89, 0x6b, 0xa8, 0x6b, 0x2c, 0x9a, 0x01,
- 0xf0, 0x00, 0xf8, 0x1a, 0x6d, 0x2b, 0x33, 0x01, 0x65, 0x2b, 0xe0, 0x08, 0x9b, 0x00, 0x9a, 0x01,
- 0x37, 0x01, 0x18, 0x9b, 0x93, 0x00, 0x8f, 0xab, 0x42, 0x9f, 0xd3, 0xac, 0x26, 0x00, 0xb0, 0x03,
- 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x4c, 0x13, 0x70, 0x66, 0x95,
- 0x13, 0x70, 0x66, 0xa1, 0x13, 0x70, 0x66, 0x41, 0x47, 0x20, 0x46, 0xc0, 0xb5, 0x10, 0x6d, 0x03,
- 0x1c, 0x04, 0x2b, 0x00, 0xd0, 0x09, 0x48, 0x0d, 0xf7, 0xfb, 0xf8, 0xee, 0x48, 0x0c, 0xf7, 0xfb,
- 0xf8, 0xeb, 0x48, 0x0c, 0xf7, 0xfb, 0xf8, 0xe8, 0xe0, 0x0d, 0x68, 0x00, 0xf7, 0xfb, 0xfe, 0x12,
- 0x6c, 0xe0, 0xf7, 0xfb, 0xfe, 0x0f, 0x6c, 0x60, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xfb, 0xfe, 0x0a,
- 0x1c, 0x20, 0xf7, 0xfb, 0xfe, 0x07, 0xbc, 0x10, 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x66, 0x95,
- 0x13, 0x70, 0x66, 0xb3, 0x13, 0x70, 0x66, 0x41, 0xb5, 0xf0, 0xb0, 0x85, 0x90, 0x03, 0x20, 0x54,
- 0x91, 0x02, 0x92, 0x01, 0x1c, 0x1f, 0xf7, 0xfb, 0xfe, 0x01, 0x1c, 0x05, 0x2f, 0x00, 0xd1, 0x02,
- 0x20, 0x80, 0x00, 0x80, 0xe0, 0x00, 0x1c, 0x38, 0xf7, 0xfb, 0xfd, 0xf8, 0x23, 0x80, 0x02, 0x1b,
- 0x61, 0x2b, 0x1c, 0x06, 0x23, 0x00, 0x33, 0x01, 0x06, 0x1b, 0x0e, 0x1b, 0x2b, 0x10, 0xd1, 0xfa,
- 0x23, 0x0f, 0x75, 0x2b, 0x4b, 0x81, 0x60, 0x2e, 0x61, 0xeb, 0x9a, 0x0b, 0x4b, 0x80, 0x62, 0xea,
- 0x60, 0x1f, 0x9b, 0x0a, 0x20, 0x00, 0x0b, 0xd9, 0x17, 0xfa, 0x1c, 0x3b, 0xf0, 0x00, 0xfb, 0xae,
- 0x61, 0xa9, 0x9c, 0x0c, 0x2c, 0x00, 0xd0, 0x32, 0x1c, 0x30, 0x21, 0x00, 0x1c, 0x3a, 0xf0, 0x00,
- 0xfc, 0x49, 0x23, 0x57, 0x70, 0x33, 0x23, 0x42, 0x70, 0x73, 0x23, 0x46, 0x70, 0xb3, 0x23, 0x53,
- 0x70, 0xf3, 0x1c, 0x3c, 0x23, 0x00, 0xe0, 0x03, 0x33, 0x01, 0x06, 0x1b, 0x0e, 0x1b, 0x08, 0x64,
- 0x2c, 0x00, 0xd1, 0xf9, 0x3b, 0x01, 0x72, 0x33, 0x9a, 0x0a, 0x21, 0x80, 0x0e, 0x13, 0x71, 0x33,
- 0x0c, 0x13, 0x71, 0x73, 0x0a, 0x13, 0x71, 0xf2, 0x71, 0xb3, 0x69, 0xac, 0x22, 0x06, 0x20, 0x06,
- 0x02, 0x49, 0x1c, 0x0b, 0x40, 0x83, 0x42, 0x9c, 0xd3, 0x05, 0x1c, 0x53, 0x06, 0x1b, 0x0e, 0x1a,
- 0x30, 0x01, 0x2a, 0x0b, 0xd1, 0xf5, 0x7d, 0x2b, 0x18, 0xd3, 0x72, 0x73, 0xe0, 0x06, 0x6a, 0xe9,
- 0x98, 0x01, 0x22, 0x01, 0x1c, 0x33, 0x9c, 0x03, 0xf0, 0x00, 0xf8, 0xca, 0x78, 0x33, 0x78, 0x72,
- 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x78, 0xb3, 0x02, 0x1b, 0x43, 0x13, 0x78, 0xf2, 0x43, 0x1a,
- 0x4b, 0x58, 0x42, 0x9a, 0xd0, 0x04, 0x48, 0x58, 0xf7, 0xfb, 0xf8, 0x56, 0x48, 0x57, 0xe0, 0x2f,
- 0x4b, 0x57, 0x68, 0x1b, 0x42, 0x59, 0x41, 0x59, 0x29, 0x00, 0xd0, 0x36, 0x2f, 0x00, 0xd0, 0x11,
- 0x7a, 0x30, 0x1c, 0x3a, 0x33, 0x01, 0x06, 0x1b, 0x08, 0x52, 0x0e, 0x1b, 0x2a, 0x00, 0xd1, 0xf9,
- 0x3b, 0x01, 0x06, 0x1b, 0x0e, 0x1b, 0x42, 0x98, 0xd0, 0x04, 0x48, 0x4b, 0xf7, 0xfb, 0xf8, 0x3c,
- 0x48, 0x4c, 0xe0, 0x15, 0x29, 0x00, 0xd0, 0x20, 0x9a, 0x0a, 0x2a, 0x00, 0xd0, 0x1d, 0x79, 0x32,
- 0x79, 0x73, 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x79, 0xb2, 0x9c, 0x0a, 0x02, 0x12, 0x43, 0x1a,
- 0x79, 0xf3, 0x43, 0x13, 0x42, 0xa3, 0xd0, 0x10, 0x48, 0x3f, 0xf7, 0xfb, 0xf8, 0x25, 0x48, 0x42,
- 0xf7, 0xfb, 0xf8, 0x22, 0x48, 0x41, 0xf7, 0xfb, 0xf8, 0x1f, 0x1c, 0x28, 0xf7, 0xfb, 0xfd, 0x4a,
- 0x1c, 0x30, 0xf7, 0xfb, 0xfd, 0x47, 0x25, 0x00, 0xe0, 0x63, 0x7a, 0x33, 0x24, 0x01, 0x1c, 0x27,
- 0x40, 0x9f, 0x60, 0x6f, 0x7a, 0x33, 0x69, 0x29, 0x72, 0x2b, 0x79, 0x33, 0x79, 0x72, 0x06, 0x1b,
- 0x04, 0x12, 0x43, 0x1a, 0x79, 0xb3, 0x79, 0xf0, 0x02, 0x1b, 0x43, 0x13, 0x43, 0x18, 0x60, 0xe8,
- 0xf0, 0x00, 0xfa, 0x72, 0x1c, 0x39, 0x43, 0x41, 0x61, 0xa9, 0x7a, 0x72, 0x7d, 0x2b, 0x62, 0x6a,
- 0x40, 0x94, 0x1a, 0xd2, 0x69, 0xeb, 0x40, 0xd1, 0x40, 0xd3, 0x04, 0x1b, 0x0c, 0x1b, 0x04, 0x3a,
- 0x85, 0x6b, 0x0c, 0x12, 0x33, 0x80, 0x85, 0x29, 0x00, 0x5b, 0x1e, 0x51, 0x18, 0xc9, 0x42, 0x52,
- 0x1c, 0x2b, 0x40, 0x11, 0x33, 0x48, 0x80, 0x19, 0x62, 0x2c, 0x9a, 0x03, 0x63, 0x2a, 0x9b, 0x02,
- 0x63, 0x6b, 0x9a, 0x01, 0x8d, 0x2b, 0x63, 0xaa, 0x08, 0xda, 0x7a, 0x2b, 0x1a, 0xa4, 0x40, 0xdc,
- 0x64, 0x2c, 0x9b, 0x0c, 0x2b, 0x00, 0xd1, 0x01, 0x64, 0x6b, 0xe0, 0x0b, 0x1e, 0x78, 0x18, 0x80,
- 0x42, 0x7b, 0x40, 0x18, 0xf7, 0xfb, 0xfd, 0x0a, 0x8d, 0x2a, 0x64, 0x68, 0x08, 0xd2, 0x21, 0xff,
- 0xf0, 0x00, 0xfb, 0x78, 0x1c, 0x2b, 0x33, 0x48, 0x88, 0x19, 0x6c, 0x28, 0x7a, 0x2b, 0x38, 0x01,
- 0x41, 0x19, 0xf0, 0x00, 0xfa, 0x31, 0x68, 0x6b, 0x04, 0x00, 0x0c, 0x00, 0x3b, 0x0c, 0x87, 0xa8,
- 0x42, 0x98, 0xd9, 0x00, 0x87, 0xab, 0x68, 0x68, 0xf7, 0xfb, 0xfc, 0xf0, 0x23, 0x00, 0x64, 0xe8,
- 0x65, 0x2b, 0xb0, 0x05, 0x1c, 0x28, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x00, 0x04, 0x60, 0x90,
- 0x13, 0x70, 0x67, 0xe0, 0x57, 0x42, 0x46, 0x53, 0x13, 0x70, 0x66, 0x95, 0x13, 0x70, 0x66, 0xdf,
- 0x13, 0x70, 0x67, 0xe4, 0x13, 0x70, 0x66, 0xe9, 0x13, 0x70, 0x67, 0x06, 0x13, 0x70, 0x66, 0x41,
- 0x47, 0x20, 0x46, 0xc0, 0xb5, 0xf0, 0xb0, 0xa5, 0x90, 0x0c, 0x1c, 0x18, 0x92, 0x0a, 0x93, 0x09,
- 0x91, 0x0b, 0xf7, 0xfb, 0xfc, 0xcb, 0x4b, 0x8c, 0x22, 0x01, 0x4c, 0x8c, 0x42, 0x52, 0x60, 0x1a,
- 0x68, 0x23, 0x1c, 0x05, 0x2b, 0x00, 0xd1, 0x03, 0x98, 0x09, 0xf7, 0xfb, 0xfc, 0xbf, 0x60, 0x20,
- 0x4b, 0x87, 0x99, 0x09, 0x98, 0x0a, 0x60, 0x19, 0x22, 0x01, 0x21, 0x00, 0x1c, 0x2b, 0x9c, 0x0c,
- 0xf0, 0x00, 0xf9, 0x18, 0x28, 0x00, 0xd0, 0x00, 0xe0, 0xf4, 0x23, 0xff, 0x00, 0x5b, 0x5c, 0xeb,
- 0x2b, 0x55, 0xd1, 0x1b, 0x4b, 0x7f, 0x5c, 0xeb, 0x2b, 0xaa, 0xd1, 0x17, 0x1c, 0xe8, 0x49, 0x7e,
- 0x22, 0x04, 0xf0, 0x00, 0xfb, 0x9d, 0x28, 0x00, 0xd0, 0x10, 0x4c, 0x7c, 0x1c, 0x28, 0x30, 0x36,
- 0x1c, 0x21, 0x22, 0x03, 0xf0, 0x00, 0xfb, 0x94, 0x28, 0x00, 0xd0, 0x07, 0x1c, 0x28, 0x30, 0x52,
- 0x1c, 0x21, 0x22, 0x03, 0xf0, 0x00, 0xfb, 0x8c, 0x28, 0x00, 0xd1, 0x05, 0xa8, 0x14, 0x21, 0x00,
- 0x22, 0x40, 0xf0, 0x00, 0xfa, 0xff, 0xe0, 0x06, 0x22, 0xdf, 0x00, 0x52, 0x18, 0xa9, 0xa8, 0x14,
- 0x22, 0x40, 0xf0, 0x00, 0xfa, 0xb3, 0x23, 0x01, 0x21, 0xe4, 0x42, 0x5b, 0x24, 0x00, 0x00, 0x49,
- 0xae, 0x14, 0x93, 0x11, 0x94, 0x12, 0x91, 0x07, 0x78, 0x2b, 0x78, 0x6a, 0x06, 0x1b, 0x04, 0x12,
- 0x43, 0x1a, 0x78, 0xab, 0x7a, 0x37, 0x02, 0x1b, 0x43, 0x13, 0x78, 0xea, 0x7a, 0x70, 0x43, 0x1a,
- 0x4b, 0x63, 0x7a, 0xb1, 0x7a, 0xf4, 0x42, 0x9a, 0xd0, 0x03, 0x79, 0x33, 0x2b, 0x00, 0xd1, 0x00,
- 0xe0, 0xa3, 0x04, 0x0a, 0x02, 0x03, 0x43, 0x13, 0x43, 0x3b, 0x1c, 0x1f, 0x79, 0x33, 0x06, 0x22,
- 0x43, 0x17, 0x2b, 0x0f, 0xd1, 0x69, 0x22, 0xe3, 0x21, 0x00, 0x00, 0x52, 0x91, 0x13, 0x92, 0x08,
- 0x19, 0xc9, 0x91, 0x05, 0x98, 0x0a, 0x22, 0x01, 0x1c, 0x2b, 0x9c, 0x0c, 0xf0, 0x00, 0xf8, 0xb2,
- 0x28, 0x00, 0xd0, 0x00, 0xe0, 0x8e, 0x49, 0x53, 0x9c, 0x07, 0x5c, 0x6a, 0x5d, 0x2b, 0x99, 0x08,
- 0x04, 0x1b, 0x02, 0x12, 0x43, 0x1a, 0x4c, 0x50, 0x5c, 0x6b, 0x99, 0x05, 0x43, 0x1a, 0x5d, 0x2b,
- 0x98, 0x0a, 0x06, 0x1b, 0x43, 0x1a, 0x18, 0x8a, 0x23, 0xeb, 0x92, 0x05, 0x00, 0x5b, 0x5c, 0xeb,
- 0x1c, 0x11, 0x93, 0x0d, 0x4b, 0x49, 0x22, 0x01, 0x5c, 0xeb, 0x9c, 0x0c, 0x93, 0x0e, 0x23, 0xec,
- 0x00, 0x5b, 0x5c, 0xeb, 0x93, 0x0f, 0x4b, 0x46, 0x5c, 0xeb, 0x93, 0x10, 0x1c, 0x2b, 0xf0, 0x00,
- 0xf8, 0x89, 0x28, 0x00, 0xd1, 0x66, 0x78, 0x2b, 0x78, 0x6a, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a,
- 0x78, 0xab, 0x02, 0x1b, 0x43, 0x13, 0x78, 0xea, 0x43, 0x1a, 0x4b, 0x39, 0x42, 0x9a, 0xd1, 0x12,
- 0x99, 0x12, 0x9a, 0x2b, 0x42, 0x91, 0xd1, 0x05, 0x9b, 0x05, 0x9c, 0x2c, 0x90, 0x00, 0x93, 0x01,
- 0x94, 0x02, 0xe0, 0x38, 0x99, 0x05, 0x9a, 0x11, 0x42, 0x91, 0xd0, 0x04, 0x9b, 0x12, 0x9c, 0x05,
- 0x33, 0x01, 0x93, 0x12, 0x94, 0x11, 0x99, 0x0e, 0x9c, 0x0f, 0x02, 0x0b, 0x04, 0x22, 0x99, 0x0d,
- 0x43, 0x13, 0x9c, 0x10, 0x43, 0x0b, 0x06, 0x22, 0x1c, 0x19, 0x43, 0x11, 0xd0, 0x35, 0x9a, 0x13,
- 0x32, 0x01, 0x92, 0x13, 0x2a, 0x08, 0xd1, 0x9b, 0xe0, 0x2f, 0x98, 0x0a, 0x1c, 0x39, 0x22, 0x01,
- 0x1c, 0x2b, 0x9c, 0x0c, 0xf0, 0x00, 0xf8, 0x4e, 0x28, 0x00, 0xd1, 0x2b, 0x78, 0x2b, 0x78, 0x6a,
- 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x78, 0xab, 0x02, 0x1b, 0x43, 0x13, 0x78, 0xea, 0x43, 0x1a,
- 0x4b, 0x1b, 0x42, 0x9a, 0xd1, 0x19, 0x99, 0x12, 0x9a, 0x2b, 0x42, 0x91, 0xd1, 0x0e, 0x9b, 0x2c,
- 0x90, 0x00, 0x97, 0x01, 0x93, 0x02, 0x98, 0x0c, 0x99, 0x0b, 0x9a, 0x0a, 0x9b, 0x09, 0xf7, 0xff,
- 0xfd, 0xc3, 0x1c, 0x04, 0x1c, 0x28, 0xf7, 0xfb, 0xfb, 0xbd, 0xe0, 0x0f, 0x9c, 0x11, 0x42, 0xa7,
- 0xd0, 0x03, 0x99, 0x12, 0x97, 0x11, 0x31, 0x01, 0x91, 0x12, 0xab, 0x20, 0x42, 0x9e, 0xd0, 0x01,
- 0x36, 0x10, 0xe7, 0x41, 0x1c, 0x28, 0xf7, 0xfb, 0xfb, 0xad, 0x24, 0x00, 0xb0, 0x25, 0x1c, 0x20,
- 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x4c, 0x13, 0x70, 0x67, 0xdc,
- 0x13, 0x70, 0x67, 0xe0, 0x00, 0x00, 0x01, 0xff, 0x13, 0x70, 0x67, 0x22, 0x13, 0x70, 0x67, 0x27,
- 0x57, 0x42, 0x46, 0x53, 0x00, 0x00, 0x01, 0xc7, 0x00, 0x00, 0x01, 0xc9, 0x00, 0x00, 0x01, 0xd7,
- 0x00, 0x00, 0x01, 0xd9, 0x47, 0x20, 0x46, 0xc0, 0xef, 0x00, 0x00, 0xcc, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x00, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x00, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0x90, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x00, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0xd0, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x00, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x01, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x01, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x90, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x01, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0xd0, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x01, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x02, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x02, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x90, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x02, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0xd0, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x02, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x03, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x03, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x90, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x03, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0xd0, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x03, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x04, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x04, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x90, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x04, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0xd0, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x04, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x05, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x05, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x05, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x06, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x07, 0xf0, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe6, 0x00, 0x08, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x0a, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe2, 0x90, 0x10, 0x00, 0xe3, 0xb0, 0x00, 0x04, 0xef, 0x00, 0x00, 0xab, 0xe1, 0x2f, 0xff, 0x1e,
- 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0x29, 0x00, 0xd0, 0x34, 0x23, 0x01, 0x22, 0x00,
- 0xb4, 0x10, 0x42, 0x88, 0xd3, 0x2c, 0x24, 0x01, 0x07, 0x24, 0x42, 0xa1, 0xd2, 0x04, 0x42, 0x81,
- 0xd2, 0x02, 0x01, 0x09, 0x01, 0x1b, 0xe7, 0xf8, 0x00, 0xe4, 0x42, 0xa1, 0xd2, 0x04, 0x42, 0x81,
- 0xd2, 0x02, 0x00, 0x49, 0x00, 0x5b, 0xe7, 0xf8, 0x42, 0x88, 0xd3, 0x01, 0x1a, 0x40, 0x43, 0x1a,
- 0x08, 0x4c, 0x42, 0xa0, 0xd3, 0x02, 0x1b, 0x00, 0x08, 0x5c, 0x43, 0x22, 0x08, 0x8c, 0x42, 0xa0,
- 0xd3, 0x02, 0x1b, 0x00, 0x08, 0x9c, 0x43, 0x22, 0x08, 0xcc, 0x42, 0xa0, 0xd3, 0x02, 0x1b, 0x00,
- 0x08, 0xdc, 0x43, 0x22, 0x28, 0x00, 0xd0, 0x03, 0x09, 0x1b, 0xd0, 0x01, 0x09, 0x09, 0xe7, 0xe3,
- 0x1c, 0x10, 0xbc, 0x10, 0x47, 0x70, 0xb5, 0x02, 0xf0, 0x00, 0xf8, 0x5e, 0x20, 0x00, 0xbc, 0x06,
- 0x47, 0x10, 0x46, 0xc0, 0xb5, 0x03, 0xf7, 0xff, 0xff, 0xbf, 0xbc, 0x0e, 0x43, 0x42, 0x1a, 0x89,
- 0x47, 0x18, 0x46, 0xc0, 0x29, 0x00, 0xd0, 0x41, 0xb4, 0x10, 0x1c, 0x04, 0x40, 0x4c, 0x46, 0xa4,
- 0x23, 0x01, 0x22, 0x00, 0x29, 0x00, 0xd5, 0x00, 0x42, 0x49, 0x28, 0x00, 0xd5, 0x00, 0x42, 0x40,
- 0x42, 0x88, 0xd3, 0x2c, 0x24, 0x01, 0x07, 0x24, 0x42, 0xa1, 0xd2, 0x04, 0x42, 0x81, 0xd2, 0x02,
- 0x01, 0x09, 0x01, 0x1b, 0xe7, 0xf8, 0x00, 0xe4, 0x42, 0xa1, 0xd2, 0x04, 0x42, 0x81, 0xd2, 0x02,
- 0x00, 0x49, 0x00, 0x5b, 0xe7, 0xf8, 0x42, 0x88, 0xd3, 0x01, 0x1a, 0x40, 0x43, 0x1a, 0x08, 0x4c,
- 0x42, 0xa0, 0xd3, 0x02, 0x1b, 0x00, 0x08, 0x5c, 0x43, 0x22, 0x08, 0x8c, 0x42, 0xa0, 0xd3, 0x02,
- 0x1b, 0x00, 0x08, 0x9c, 0x43, 0x22, 0x08, 0xcc, 0x42, 0xa0, 0xd3, 0x02, 0x1b, 0x00, 0x08, 0xdc,
- 0x43, 0x22, 0x28, 0x00, 0xd0, 0x03, 0x09, 0x1b, 0xd0, 0x01, 0x09, 0x09, 0xe7, 0xe3, 0x1c, 0x10,
- 0x46, 0x64, 0x2c, 0x00, 0xd5, 0x00, 0x42, 0x40, 0xbc, 0x10, 0x47, 0x70, 0xb5, 0x02, 0xf0, 0x00,
- 0xf8, 0x0b, 0x20, 0x00, 0xbc, 0x06, 0x47, 0x10, 0xb5, 0x03, 0xf7, 0xff, 0xff, 0xb3, 0xbc, 0x0e,
- 0x43, 0x42, 0x1a, 0x89, 0x47, 0x18, 0x46, 0xc0, 0x47, 0x70, 0x46, 0xc0, 0xb5, 0xf0, 0x46, 0x57,
- 0x46, 0x46, 0xb4, 0xc0, 0x1c, 0x1e, 0x4b, 0x16, 0x46, 0x90, 0x1c, 0x0a, 0x40, 0x1a, 0x40, 0x33,
- 0x46, 0x82, 0x1c, 0x10, 0x43, 0x58, 0x0c, 0x0c, 0x1c, 0x0f, 0x0c, 0x31, 0x46, 0x84, 0x43, 0x4a,
- 0x1c, 0x20, 0x43, 0x58, 0x1c, 0x25, 0x43, 0x4d, 0x46, 0x61, 0x18, 0x82, 0x0c, 0x0b, 0x18, 0xd2,
- 0x42, 0x90, 0xd9, 0x02, 0x23, 0x80, 0x02, 0x5b, 0x18, 0xed, 0x4b, 0x09, 0x46, 0x61, 0x04, 0x14,
- 0x0c, 0x10, 0x40, 0x0b, 0x18, 0x2a, 0x18, 0xe1, 0x46, 0x40, 0x43, 0x78, 0x46, 0x53, 0x43, 0x73,
- 0x18, 0xc0, 0x18, 0x80, 0xbc, 0x0c, 0x46, 0x90, 0x46, 0x9a, 0xbc, 0xf0, 0xbc, 0x04, 0x47, 0x10,
- 0x00, 0x00, 0xff, 0xff, 0xb5, 0x70, 0x1c, 0x0e, 0x1c, 0x15, 0x1c, 0x04, 0x2a, 0x03, 0xd9, 0x20,
- 0x1c, 0x33, 0x43, 0x03, 0x07, 0x9a, 0xd0, 0x12, 0x78, 0x23, 0x78, 0x08, 0x42, 0x83, 0xd1, 0x1b,
- 0x1e, 0x6a, 0xe0, 0x06, 0x34, 0x01, 0x31, 0x01, 0x78, 0x23, 0x78, 0x08, 0x3a, 0x01, 0x42, 0x83,
- 0xd1, 0x12, 0x2a, 0x00, 0xd1, 0xf6, 0x20, 0x00, 0xbc, 0x70, 0xbc, 0x02, 0x47, 0x08, 0x68, 0x02,
- 0x68, 0x0b, 0x42, 0x9a, 0xd1, 0x04, 0x3d, 0x04, 0x30, 0x04, 0x31, 0x04, 0x2d, 0x03, 0xd8, 0xf6,
- 0x1c, 0x04, 0x2d, 0x00, 0xd1, 0xe0, 0xe7, 0xee, 0x1a, 0x18, 0xe7, 0xed, 0xb5, 0xf0, 0x1c, 0x07,
- 0x1c, 0x0e, 0x1c, 0x04, 0x1c, 0x15, 0x1c, 0x08, 0x1c, 0x11, 0x2a, 0x0f, 0xd9, 0x03, 0x1c, 0x33,
- 0x43, 0x3b, 0x07, 0x9a, 0xd0, 0x0b, 0x29, 0x00, 0xd0, 0x05, 0x22, 0x00, 0x5c, 0x83, 0x54, 0xa3,
- 0x32, 0x01, 0x42, 0x8a, 0xd1, 0xfa, 0x1c, 0x38, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x1c, 0x3a,
- 0x1c, 0x31, 0x1c, 0x28, 0x68, 0x0b, 0x60, 0x13, 0x68, 0x4b, 0x60, 0x53, 0x68, 0x8b, 0x60, 0x93,
- 0x68, 0xcb, 0x38, 0x10, 0x60, 0xd3, 0x31, 0x10, 0x32, 0x10, 0x28, 0x0f, 0xd8, 0xf2, 0x1c, 0x2b,
- 0x3b, 0x10, 0x09, 0x1a, 0x01, 0x11, 0x32, 0x01, 0x01, 0x12, 0x1a, 0x59, 0x18, 0xb0, 0x18, 0xbc,
- 0x29, 0x03, 0xd9, 0xd8, 0x22, 0x00, 0x58, 0x83, 0x50, 0xa3, 0x32, 0x04, 0x1a, 0x8b, 0x2b, 0x03,
- 0xd8, 0xf9, 0x1f, 0x0b, 0x08, 0x9a, 0x00, 0x91, 0x32, 0x01, 0x00, 0x92, 0x1a, 0x59, 0x18, 0x80,
- 0x18, 0xa4, 0xe7, 0xc8, 0xb5, 0xf0, 0x1c, 0x07, 0x46, 0x8c, 0x1c, 0x10, 0x1c, 0x39, 0x07, 0xba,
- 0xd0, 0x0e, 0x28, 0x00, 0xd0, 0x49, 0x46, 0x62, 0x06, 0x13, 0x38, 0x01, 0x0e, 0x1b, 0x22, 0x03,
- 0xe0, 0x02, 0x28, 0x00, 0xd0, 0x41, 0x38, 0x01, 0x70, 0x0b, 0x31, 0x01, 0x42, 0x11, 0xd1, 0xf8,
- 0x1c, 0x05, 0x1c, 0x0a, 0x28, 0x03, 0xd9, 0x2e, 0x23, 0xff, 0x46, 0x62, 0x40, 0x1a, 0x02, 0x13,
- 0x43, 0x13, 0x04, 0x1a, 0x1c, 0x14, 0x1c, 0x0e, 0x43, 0x1c, 0x28, 0x0f, 0xd9, 0x12, 0x1c, 0x02,
- 0x1c, 0x0b, 0x3a, 0x10, 0x60, 0x1c, 0x60, 0x5c, 0x60, 0x9c, 0x60, 0xdc, 0x33, 0x10, 0x2a, 0x0f,
- 0xd8, 0xf7, 0x1c, 0x03, 0x3b, 0x10, 0x1c, 0x1d, 0x09, 0x1b, 0x33, 0x01, 0x22, 0x0f, 0x01, 0x1b,
- 0x40, 0x15, 0x18, 0xce, 0x2d, 0x03, 0xd9, 0x0d, 0x22, 0x00, 0x50, 0xb4, 0x32, 0x04, 0x1a, 0xab,
- 0x2b, 0x03, 0xd8, 0xfa, 0x1f, 0x2b, 0x1c, 0x1d, 0x08, 0x9b, 0x33, 0x01, 0x22, 0x03, 0x00, 0x9b,
- 0x40, 0x15, 0x18, 0xf6, 0x1c, 0x32, 0x2d, 0x00, 0xd0, 0x07, 0x46, 0x61, 0x06, 0x0b, 0x0e, 0x19,
- 0x23, 0x00, 0x54, 0xd1, 0x33, 0x01, 0x42, 0x9d, 0xd1, 0xfb, 0x1c, 0x38, 0xbc, 0xf0, 0xbc, 0x02,
- 0x47, 0x08, 0x46, 0xc0, 0xb5, 0x30, 0x1c, 0x0b, 0x43, 0x03, 0x07, 0x9a, 0xd1, 0x1c, 0x68, 0x02,
- 0x68, 0x0b, 0x42, 0x9a, 0xd1, 0x18, 0x4c, 0x10, 0x19, 0x13, 0x43, 0x93, 0x4a, 0x0f, 0x42, 0x13,
- 0xd1, 0x0b, 0x1c, 0x14, 0x30, 0x04, 0x31, 0x04, 0x68, 0x02, 0x68, 0x0b, 0x42, 0x9a, 0xd1, 0x0b,
- 0x4d, 0x09, 0x19, 0x53, 0x43, 0x93, 0x42, 0x23, 0xd0, 0xf4, 0x20, 0x00, 0xe0, 0x09, 0x78, 0x0a,
- 0x42, 0x9a, 0xd1, 0x05, 0x30, 0x01, 0x31, 0x01, 0x78, 0x03, 0x2b, 0x00, 0xd1, 0xf7, 0x78, 0x0a,
- 0x1a, 0x98, 0xbc, 0x30, 0xbc, 0x02, 0x47, 0x08, 0xfe, 0xfe, 0xfe, 0xff, 0x80, 0x80, 0x80, 0x80,
- 0xb5, 0x70, 0x1c, 0x04, 0x2a, 0x00, 0xd0, 0x41, 0x1c, 0x0b, 0x43, 0x03, 0x07, 0x98, 0xd1, 0x2c,
- 0x1c, 0x20, 0x1c, 0x0d, 0x2a, 0x03, 0xd9, 0x26, 0x68, 0x24, 0x68, 0x0b, 0x42, 0x9c, 0xd1, 0x22,
- 0x3a, 0x04, 0x2a, 0x00, 0xd0, 0x32, 0x49, 0x1b, 0x18, 0x63, 0x49, 0x1b, 0x43, 0xa3, 0x42, 0x0b,
- 0xd1, 0x2c, 0x1c, 0x0c, 0xe0, 0x0b, 0x68, 0x01, 0x68, 0x2b, 0x42, 0x99, 0xd1, 0x13, 0x3a, 0x04,
- 0x2a, 0x00, 0xd0, 0x23, 0x4e, 0x13, 0x19, 0x8b, 0x43, 0x8b, 0x42, 0x23, 0xd1, 0x1e, 0x30, 0x04,
- 0x35, 0x04, 0x2a, 0x03, 0xd8, 0xef, 0x1c, 0x04, 0x1c, 0x29, 0x2a, 0x00, 0xd1, 0x05, 0x78, 0x03,
- 0x78, 0x28, 0x1a, 0x18, 0xe0, 0x13, 0x1c, 0x04, 0x1c, 0x29, 0x78, 0x23, 0x78, 0x08, 0x3a, 0x01,
- 0x42, 0x98, 0xd0, 0x09, 0xe7, 0xf5, 0x28, 0x00, 0xd0, 0x08, 0x34, 0x01, 0x31, 0x01, 0x78, 0x23,
- 0x78, 0x08, 0x42, 0x98, 0xd1, 0xed, 0x3a, 0x01, 0x2a, 0x00, 0xd1, 0xf4, 0x20, 0x00, 0xbc, 0x70,
- 0xbc, 0x02, 0x47, 0x08, 0xfe, 0xfe, 0xfe, 0xff, 0x80, 0x80, 0x80, 0x80, 0x49, 0x4f, 0x53, 0x20,
- 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x1f, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x13, 0x72, 0xc2, 0xa4, 0x00, 0x0f, 0x42, 0x40, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x64, 0x65, 0x76,
- 0x2f, 0x75, 0x73, 0x62, 0x31, 0x32, 0x33, 0x00, 0x2f, 0x64, 0x65, 0x76, 0x2f, 0x75, 0x73, 0x62,
- 0x31, 0x32, 0x33, 0x2f, 0x4f, 0x46, 0x46, 0x00, 0x57, 0x42, 0x46, 0x53, 0x20, 0x6e, 0x6f, 0x74,
- 0x20, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x21, 0x0a,
- 0x00, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20,
- 0x20, 0x28, 0x25, 0x73, 0x29, 0x0a, 0x00, 0x20, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x00, 0x20, 0x50,
- 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x00, 0x20, 0x52, 0x65, 0x63, 0x6c, 0x00, 0x20, 0x48,
- 0x61, 0x6c, 0x74, 0x00, 0x20, 0x49, 0x41, 0x41, 0x00, 0x20, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x00,
- 0x20, 0x46, 0x4c, 0x52, 0x00, 0x20, 0x50, 0x43, 0x44, 0x00, 0x20, 0x45, 0x52, 0x52, 0x00, 0x20,
- 0x49, 0x4e, 0x54, 0x00, 0x20, 0x20, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x20,
- 0x25, 0x78, 0x20, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x25,
- 0x73, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x0a, 0x00, 0x20, 0x20, 0x20, 0x20, 0x73, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x75, 0x73,
- 0x62, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x3a, 0x20,
- 0x42, 0x55, 0x4c, 0x4b, 0x20, 0x52, 0x45, 0x53, 0x45, 0x54, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x75,
- 0x73, 0x62, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x3a,
- 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x68, 0x61, 0x6c, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x72, 0x65,
- 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x75, 0x73, 0x62, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
- 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x3a, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x68, 0x61, 0x6c,
- 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x75, 0x73,
- 0x62, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x3a, 0x20,
- 0x55, 0x53, 0x42, 0x5f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x5f, 0x5f, 0x73,
- 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x62, 0x77, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00,
- 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x62, 0x77, 0x00, 0x5f, 0x5f, 0x55, 0x53, 0x42, 0x5f,
- 0x42, 0x6c, 0x6b, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x20, 0x25, 0x69,
- 0x0a, 0x00, 0x5f, 0x5f, 0x55, 0x53, 0x42, 0x5f, 0x42, 0x6c, 0x6b, 0x4d, 0x73, 0x67, 0x54, 0x69,
- 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x00, 0x5f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x73, 0x77,
- 0x20, 0x25, 0x69, 0x0a, 0x00, 0x5f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x73, 0x77, 0x00,
- 0x20, 0x20, 0x20, 0x20, 0x53, 0x43, 0x53, 0x49, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x55, 0x4e,
- 0x49, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a,
- 0x00, 0x20, 0x20, 0x20, 0x20, 0x53, 0x43, 0x53, 0x49, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53,
- 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00,
- 0x20, 0x20, 0x20, 0x20, 0x53, 0x43, 0x53, 0x49, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54,
- 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, 0x78,
- 0x0a, 0x00, 0x20, 0x20, 0x20, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70,
- 0x20, 0x63, 0x6d, 0x64, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x20, 0x20, 0x20,
- 0x20, 0x49, 0x6e, 0x71, 0x75, 0x69, 0x72, 0x79, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a,
- 0x00, 0x20, 0x20, 0x20, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x54, 0x79, 0x70, 0x65,
- 0x3a, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x61, 0x64, 0x43, 0x61,
- 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x55,
- 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29,
- 0x3a, 0x20, 0x55, 0x53, 0x42, 0x5f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x6f, 0x72, 0x73, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x55,
- 0x53, 0x42, 0x5f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,
- 0x73, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65,
- 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e,
- 0x67, 0x65, 0x64, 0x21, 0x21, 0x21, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61,
- 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x75, 0x63, 0x64, 0x20, 0x25,
- 0x69, 0x20, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x25, 0x69, 0x20, 0x6d, 0x41, 0x0a, 0x00, 0x55,
- 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29,
- 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x73, 0x75, 0x62, 0x63,
- 0x6c, 0x61, 0x73, 0x73, 0x20, 0x25, 0x69, 0x20, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x74,
- 0x20, 0x25, 0x69, 0x20, 0x0a, 0x00, 0x49, 0x6e, 0x20, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x3a, 0x20,
- 0x25, 0x69, 0x0a, 0x00, 0x4f, 0x75, 0x74, 0x20, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x3a, 0x20, 0x25,
- 0x69, 0x0a, 0x00, 0x65, 0x70, 0x5f, 0x69, 0x6e, 0x20, 0x25, 0x78, 0x20, 0x65, 0x70, 0x5f, 0x6f,
- 0x75, 0x74, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
- 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x63, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
- 0x20, 0x66, 0x69, 0x6e, 0x64, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66,
- 0x61, 0x63, 0x65, 0x21, 0x21, 0x21, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61,
- 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x3a,
- 0x20, 0x25, 0x78, 0x20, 0x61, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65,
- 0x3a, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x55, 0x53, 0x42, 0x5f,
- 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e,
- 0x28, 0x29, 0x3a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e,
- 0x66, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x42, 0x65, 0x66, 0x6f, 0x72,
- 0x65, 0x20, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x52, 0x65, 0x73,
- 0x65, 0x74, 0x00, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72,
- 0x61, 0x67, 0x65, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f,
- 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x74, 0x72, 0x79,
- 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53,
- 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x72,
- 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x0a, 0x00, 0x20, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x20,
- 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x46, 0x61,
- 0x73, 0x74, 0x20, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4d, 0x6f,
- 0x75, 0x6e, 0x74, 0x4c, 0x55, 0x4e, 0x20, 0x25, 0x69, 0x23, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53,
- 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x55, 0x4e, 0x3a,
- 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x54, 0x4f, 0x52,
- 0x41, 0x47, 0x45, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x55, 0x4e, 0x20,
- 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x20, 0x6d, 0x61, 0x78, 0x6c, 0x75, 0x6e, 0x20, 0x25, 0x69,
- 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4d, 0x6f, 0x75,
- 0x6e, 0x74, 0x4c, 0x55, 0x4e, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x21, 0x21, 0x21, 0x0a, 0x00, 0x55,
- 0x6e, 0x70, 0x6c, 0x75, 0x67, 0x3a, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72,
- 0x74, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65,
- 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x4f, 0x4b, 0x0a, 0x00, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x72,
- 0x65, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x4b, 0x4f, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69,
- 0x0a, 0x00, 0x0a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
- 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
- 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
- 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x0a, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
- 0x65, 0x5f, 0x49, 0x6e, 0x69, 0x74, 0x28, 0x29, 0x0a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
- 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
- 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
- 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x0a, 0x0a, 0x00, 0x55,
- 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x49, 0x6e, 0x69, 0x74, 0x28, 0x29,
- 0x20, 0x4f, 0x6b, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f,
- 0x49, 0x6e, 0x69, 0x74, 0x28, 0x29, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, 0x78,
- 0x0a, 0x00, 0x55, 0x53, 0x42, 0x20, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x3a, 0x20, 0x6e, 0x6f, 0x74,
- 0x20, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x21, 0x0a,
- 0x00, 0x77, 0x62, 0x66, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x00, 0x61, 0x6c, 0x6c,
- 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x00, 0x74,
- 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x20, 0x77,
- 0x62, 0x66, 0x73, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x64, 0x69, 0x73, 0x63, 0x73, 0x20,
- 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x00, 0x62, 0x61, 0x64, 0x20, 0x6d,
- 0x61, 0x67, 0x69, 0x63, 0x00, 0x68, 0x64, 0x20, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x73,
- 0x69, 0x7a, 0x65, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63,
- 0x68, 0x00, 0x68, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x20, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20,
- 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, 0x4e, 0x54,
- 0x46, 0x53, 0x00, 0x46, 0x41, 0x54, 0x00
-};
+#define size_ehcmodule_5 25287
+
+unsigned char ehcmodule_5[25287] __attribute__((aligned (32)))={
+ 0x7f, 0x45, 0x4c, 0x46, 0x01, 0x02, 0x01, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x28, 0x00, 0x00, 0x00, 0x01, 0x13, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x34, 0x00, 0x20, 0x00, 0x05, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa0, 0x00, 0xf0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xa0,
+ 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x34, 0x00, 0xf0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0xd4, 0x00, 0xf0, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x08, 0x13, 0x70, 0x00, 0x00,
+ 0x13, 0x70, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x94, 0x00, 0x00, 0x5a, 0x94, 0x00, 0xf0, 0x00, 0x05,
+ 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x5b, 0x9c, 0x13, 0x70, 0x60, 0x00,
+ 0x13, 0x70, 0x60, 0x00, 0x00, 0x00, 0x07, 0x2b, 0x00, 0x02, 0x95, 0xa8, 0x00, 0xf0, 0x00, 0x06,
+ 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x06,
+ 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x13, 0x70, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x7f, 0x13, 0x72, 0xf3, 0xa8, 0xe3, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0x10, 0x00,
+ 0xe5, 0x9f, 0x31, 0x00, 0xe1, 0x2f, 0xff, 0x13, 0xe5, 0x9f, 0xc0, 0xfc, 0xe5, 0x9c, 0xc0, 0x00,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe7, 0x9c, 0xc1, 0x0b, 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0x2f, 0xff, 0x1c,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0xb0, 0x3f, 0xea, 0xff, 0xff, 0xf5,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0xb0, 0x40, 0xea, 0xff, 0xff, 0xf1,
+ 0xe3, 0xa0, 0x00, 0x00, 0xee, 0x07, 0x0f, 0x15, 0xe1, 0x2f, 0xff, 0x1e, 0xe1, 0xa0, 0x00, 0x00,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xe3, 0x18, 0x00, 0x10, 0x0a, 0x00, 0x00, 0x12,
+ 0xe3, 0xc8, 0x80, 0x10, 0xe3, 0xa0, 0x20, 0x10, 0xe5, 0x87, 0x20, 0x00, 0xe1, 0xa0, 0x00, 0x00,
+ 0xe1, 0xa0, 0x20, 0x0d, 0xe1, 0xa0, 0x00, 0x00, 0xe5, 0x9f, 0xd0, 0x90, 0xe1, 0xa0, 0x00, 0x00,
+ 0xe9, 0x2d, 0x5f, 0xfe, 0xe1, 0xa0, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x0f, 0xe8, 0xbd, 0x5f, 0xfe,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0xd0, 0x02, 0xe3, 0x10, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x02,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe3, 0xa0, 0x00, 0x04, 0xeb, 0x00, 0x00, 0x05, 0xe3, 0x18, 0x00, 0x01,
+ 0x0a, 0x00, 0x00, 0x01, 0xe5, 0x9f, 0xf0, 0x58, 0xe1, 0xa0, 0x00, 0x00, 0xe5, 0x9f, 0xf0, 0x54,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe5, 0x9f, 0xf0, 0x50, 0xe1, 0xa0, 0x00, 0x00, 0xe5, 0x9f, 0x20, 0x4c,
+ 0xe1, 0x2f, 0xff, 0x12, 0xe1, 0xa0, 0x00, 0x00, 0xee, 0x13, 0x0f, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xee, 0x03, 0x0f, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0x45, 0x48, 0x43, 0x5f, 0x43, 0x46, 0x47, 0x00,
+ 0x12, 0x34, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x13, 0x70, 0x0e, 0x2d, 0x13, 0x72, 0xc0, 0x00,
+ 0x13, 0x72, 0xf5, 0xa8, 0xff, 0xff, 0x1e, 0x80, 0xff, 0xff, 0x1e, 0x9c, 0xff, 0xff, 0x1d, 0x44,
+ 0x13, 0x70, 0x0c, 0x59, 0xe1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x11,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xf5, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x07,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x07, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xff,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0xb5, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x0d,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0xd2, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x2d,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x29, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x2f,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xeb, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xd3,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x1f, 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0xa1,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xe7, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x15, 0x1f,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xe7, 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0xc5,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xef, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xd1,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xed, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xef,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0xb7, 0x46, 0xc0, 0x47, 0x78, 0xea, 0xff, 0xff, 0x89,
+ 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xd1, 0x46, 0xc0, 0x47, 0x78, 0xea, 0x00, 0x14, 0xad,
+ 0xb5, 0x00, 0x28, 0x02, 0xd0, 0x11, 0x28, 0x02, 0xd8, 0x04, 0x28, 0x00, 0xd0, 0x08, 0x28, 0x01,
+ 0xd1, 0x04, 0xe0, 0x08, 0x28, 0x10, 0xd0, 0x0d, 0x28, 0x11, 0xd0, 0x0d, 0x48, 0x08, 0xe0, 0x0c,
+ 0x4b, 0x08, 0x68, 0x18, 0xe0, 0x09, 0x48, 0x08, 0xe0, 0x07, 0x4a, 0x08, 0x23, 0x01, 0x60, 0x13,
+ 0x20, 0x00, 0xe0, 0x02, 0x48, 0x06, 0xe0, 0x00, 0x48, 0x06, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
+ 0xff, 0xff, 0xfd, 0x66, 0x13, 0x70, 0x60, 0x28, 0x13, 0x70, 0x4a, 0xd5, 0x13, 0x70, 0x67, 0x40,
+ 0x13, 0x70, 0x43, 0xb1, 0x13, 0x70, 0x42, 0xe5, 0xb5, 0x30, 0xb0, 0x81, 0x1c, 0x0c, 0xf7, 0xff,
+ 0xff, 0x8f, 0x1c, 0x05, 0x28, 0x00, 0xd1, 0x27, 0x2c, 0x00, 0xd0, 0x25, 0x68, 0x24, 0x2c, 0x00,
+ 0xd0, 0x22, 0x78, 0x22, 0x78, 0x63, 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x78, 0xa2, 0x02, 0x12,
+ 0x43, 0x1a, 0x78, 0xe3, 0x43, 0x13, 0x2b, 0x06, 0xd1, 0x16, 0x7b, 0x23, 0x7b, 0x62, 0x06, 0x1b,
+ 0x04, 0x12, 0x43, 0x1a, 0x7b, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x7b, 0xe2, 0x43, 0x1a, 0x2a, 0x7a,
+ 0xd0, 0x02, 0x2a, 0x88, 0xd1, 0x08, 0xe0, 0x02, 0x48, 0x06, 0x21, 0x15, 0xe0, 0x01, 0x48, 0x05,
+ 0x21, 0x14, 0x1c, 0x22, 0xf0, 0x04, 0xfc, 0x82, 0xb0, 0x01, 0x1c, 0x28, 0xbc, 0x30, 0xbc, 0x02,
+ 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x02, 0xe1, 0xb5, 0x70, 0x1c, 0x0c, 0x1c, 0x05, 0xf7, 0xff,
+ 0xff, 0x87, 0x1c, 0x06, 0x20, 0x01, 0x42, 0x40, 0xf7, 0xff, 0xff, 0x6e, 0x0e, 0x2b, 0x73, 0x23,
+ 0x0c, 0x2b, 0x73, 0x63, 0x0a, 0x2b, 0x73, 0xa3, 0x7c, 0x62, 0x7c, 0x23, 0x04, 0x12, 0x06, 0x1b,
+ 0x43, 0x1a, 0x7c, 0xa3, 0x73, 0xe5, 0x02, 0x1b, 0x43, 0x13, 0x7c, 0xe2, 0x06, 0x2d, 0x43, 0x1a,
+ 0x1c, 0x20, 0x60, 0x15, 0x30, 0x0c, 0x21, 0x04, 0xf7, 0xff, 0xff, 0x46, 0x7c, 0x23, 0x7c, 0x62,
+ 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7c, 0xa3, 0x7c, 0xe0, 0x02, 0x1b, 0x43, 0x13, 0x43, 0x18,
+ 0x21, 0x04, 0xf7, 0xff, 0xff, 0x39, 0x1c, 0x30, 0xf7, 0xff, 0xff, 0x46, 0x20, 0x00, 0xbc, 0x70,
+ 0xbc, 0x02, 0x47, 0x08, 0xb5, 0xf0, 0xb0, 0x8f, 0x90, 0x08, 0x91, 0x07, 0x1c, 0x08, 0x1c, 0x11,
+ 0x92, 0x06, 0x92, 0x09, 0xf7, 0xff, 0xff, 0x30, 0x4c, 0x7f, 0x68, 0x23, 0x2b, 0x00, 0xd1, 0x00,
+ 0xe0, 0xec, 0xa8, 0x0d, 0xf0, 0x01, 0xf9, 0x0e, 0x4b, 0x7c, 0x60, 0x18, 0x28, 0x00, 0xd0, 0x04,
+ 0x23, 0x80, 0x9a, 0x0d, 0x01, 0x1b, 0x42, 0x9a, 0xd0, 0x04, 0x4a, 0x79, 0x23, 0x01, 0x42, 0x5b,
+ 0x60, 0x13, 0xe0, 0xdb, 0x4d, 0x77, 0x68, 0x2a, 0x2a, 0x00, 0xdb, 0x63, 0x4b, 0x76, 0x42, 0x9a,
+ 0xd0, 0x60, 0x4a, 0x73, 0x68, 0x13, 0x1c, 0x58, 0xd1, 0x5c, 0x1c, 0x2e, 0x4a, 0x6e, 0x49, 0x71,
+ 0x68, 0x13, 0x68, 0x08, 0x33, 0x1f, 0x21, 0x1f, 0x1c, 0x1c, 0x43, 0x8c, 0x1c, 0x07, 0x21, 0x10,
+ 0x1c, 0x22, 0x37, 0x10, 0xf0, 0x03, 0xff, 0xf8, 0x28, 0x00, 0xd1, 0x00, 0xe0, 0xbe, 0x78, 0x23,
+ 0x2b, 0x43, 0xd1, 0x0a, 0x78, 0x63, 0x2b, 0x49, 0xd1, 0x07, 0x78, 0xa3, 0x2b, 0x53, 0xd1, 0x04,
+ 0x78, 0xe3, 0x2b, 0x4f, 0xd1, 0x01, 0x4b, 0x64, 0xe0, 0x07, 0x68, 0x33, 0x2b, 0x00, 0xd0, 0x02,
+ 0x23, 0x00, 0x60, 0x33, 0xe7, 0xda, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x2b, 0x79, 0x62, 0x79, 0xa3,
+ 0x02, 0x12, 0x04, 0x1b, 0x18, 0xd2, 0x79, 0x23, 0x4e, 0x5c, 0x18, 0xd2, 0x79, 0xe3, 0x4d, 0x5c,
+ 0x06, 0x1b, 0x18, 0xd2, 0x0a, 0xd2, 0x60, 0x32, 0x22, 0x80, 0x01, 0x12, 0x1c, 0x28, 0x21, 0x00,
+ 0xf0, 0x05, 0xfa, 0x68, 0x4b, 0x53, 0x68, 0x1a, 0x4b, 0x53, 0x42, 0x9a, 0xd1, 0x1a, 0x68, 0x36,
+ 0x20, 0x00, 0x46, 0xb4, 0x4e, 0x53, 0x22, 0x07, 0x40, 0x02, 0xd1, 0x02, 0x10, 0xc3, 0x00, 0x9b,
+ 0x51, 0x9f, 0x18, 0x23, 0x7a, 0x1b, 0x2b, 0x00, 0xd0, 0x07, 0x21, 0x01, 0x10, 0xc3, 0x40, 0x91,
+ 0x1c, 0x0a, 0x5c, 0xe9, 0x44, 0x67, 0x43, 0x0a, 0x54, 0xea, 0x23, 0x80, 0x30, 0x01, 0x01, 0xdb,
+ 0x42, 0x98, 0xd1, 0xe8, 0x4b, 0x40, 0x22, 0x1f, 0x68, 0x1b, 0x33, 0x1f, 0x43, 0x93, 0x93, 0x0b,
+ 0x9a, 0x07, 0x23, 0x80, 0x02, 0x1b, 0x92, 0x0a, 0x93, 0x05, 0xe0, 0x63, 0x98, 0x08, 0x4a, 0x3c,
+ 0x0a, 0x43, 0x1c, 0x1d, 0x21, 0x0f, 0x68, 0x13, 0x43, 0x8d, 0x42, 0x9d, 0xd0, 0x3a, 0x4b, 0x39,
+ 0x60, 0x15, 0x68, 0x1a, 0x4b, 0x38, 0x42, 0x9a, 0xd1, 0x1e, 0x4b, 0x38, 0x1c, 0x28, 0x68, 0x1c,
+ 0x27, 0x07, 0x1c, 0x21, 0xf0, 0x05, 0xf8, 0xe8, 0x4a, 0x36, 0x08, 0xc6, 0x00, 0xb3, 0x58, 0x99,
+ 0x4b, 0x33, 0x40, 0x07, 0x20, 0x01, 0x22, 0x00, 0x93, 0x01, 0x46, 0x84, 0xe0, 0x07, 0x98, 0x01,
+ 0x5d, 0x83, 0x46, 0x60, 0x41, 0x13, 0x42, 0x03, 0xd0, 0x00, 0x19, 0x09, 0x32, 0x01, 0x42, 0xba,
+ 0xd3, 0xf5, 0x1e, 0x63, 0x40, 0x2b, 0x18, 0xcd, 0x4b, 0x24, 0x68, 0x1b, 0x1b, 0x5c, 0x2c, 0x10,
+ 0xdc, 0x3a, 0x2c, 0x10, 0xd0, 0x07, 0x22, 0x80, 0x98, 0x0b, 0x21, 0x00, 0x02, 0x12, 0xf0, 0x05,
+ 0xfa, 0x01, 0x2c, 0x00, 0xdd, 0x06, 0x1c, 0x28, 0x1c, 0x21, 0x9a, 0x0b, 0xf0, 0x03, 0xff, 0x5c,
+ 0x28, 0x00, 0xd0, 0x23, 0x99, 0x08, 0x4b, 0x20, 0x9a, 0x05, 0x40, 0x0b, 0x00, 0x9b, 0x98, 0x06,
+ 0x1a, 0xd1, 0x42, 0x81, 0xd8, 0x01, 0x1c, 0x0c, 0xe0, 0x00, 0x9c, 0x06, 0x9a, 0x0b, 0x98, 0x0a,
+ 0x18, 0xd1, 0x1c, 0x22, 0xf0, 0x05, 0xf9, 0xa2, 0x98, 0x0a, 0x1c, 0x21, 0xf7, 0xff, 0xfe, 0x4c,
+ 0x9b, 0x0a, 0x98, 0x06, 0x19, 0x1b, 0x99, 0x08, 0x93, 0x0a, 0x10, 0xa3, 0x1b, 0x00, 0x18, 0xc9,
+ 0x90, 0x06, 0x91, 0x08, 0x9a, 0x06, 0x2a, 0x00, 0xd1, 0x98, 0xe0, 0x07, 0x20, 0x80, 0x02, 0x00,
+ 0xb0, 0x0f, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x24, 0x10, 0xe7, 0xcc, 0x98, 0x07, 0x99, 0x09,
+ 0xf7, 0xff, 0xfe, 0x12, 0x20, 0x00, 0xe7, 0xf3, 0x13, 0x70, 0x67, 0xd0, 0x13, 0x70, 0x67, 0x4c,
+ 0x13, 0x70, 0x60, 0x10, 0x13, 0x70, 0x60, 0x14, 0x7f, 0xff, 0xff, 0xff, 0x13, 0x70, 0x67, 0x50,
+ 0x13, 0x70, 0x78, 0x00, 0x13, 0x70, 0x80, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xb5, 0xf0, 0x4b, 0xc9,
+ 0xb0, 0x93, 0x68, 0x18, 0x21, 0x80, 0xf7, 0xff, 0xfe, 0x23, 0x21, 0x20, 0xf7, 0xff, 0xfe, 0x24,
+ 0x90, 0x0a, 0xf0, 0x00, 0xfc, 0x0d, 0xf7, 0xff, 0xfd, 0xff, 0x21, 0x78, 0xf7, 0xff, 0xfd, 0xd0,
+ 0x99, 0x0a, 0x48, 0xc1, 0xf7, 0xff, 0xfe, 0x20, 0x48, 0xc0, 0x9a, 0x0a, 0x23, 0x00, 0x1c, 0x01,
+ 0xf7, 0xff, 0xfd, 0xd2, 0x49, 0xbe, 0x90, 0x08, 0x20, 0xcd, 0xf0, 0x04, 0xfb, 0x71, 0x22, 0x00,
+ 0x92, 0x09, 0x92, 0x0b, 0x92, 0x0c, 0x92, 0x0d, 0x4b, 0xba, 0x4a, 0xbb, 0x26, 0x01, 0x93, 0x05,
+ 0x92, 0x04, 0xe0, 0x00, 0x26, 0x00, 0x98, 0x0a, 0xa9, 0x11, 0x22, 0x00, 0xf7, 0xff, 0xfd, 0xd8,
+ 0x90, 0x10, 0x9b, 0x10, 0x2b, 0x00, 0xd1, 0xf6, 0x2e, 0x00, 0xd0, 0x02, 0x98, 0x08, 0xf7, 0xff,
+ 0xfd, 0xab, 0x9a, 0x05, 0x9c, 0x11, 0x23, 0x00, 0x60, 0x13, 0x2c, 0x00, 0xd1, 0x54, 0x4b, 0xaf,
+ 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x05, 0x4b, 0xae, 0x68, 0x1a, 0x2a, 0x00, 0xd1, 0x01, 0x4b, 0xaa,
+ 0x60, 0x1a, 0x9b, 0x09, 0x2b, 0x00, 0xd0, 0xdd, 0x4b, 0xa7, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0xd9,
+ 0x4b, 0xa7, 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0xd5, 0x4b, 0xa6, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x09,
+ 0xf0, 0x03, 0xfd, 0x96, 0x28, 0x00, 0xd0, 0x05, 0xf0, 0x03, 0xfd, 0x92, 0x28, 0x00, 0xd0, 0x01,
+ 0xf0, 0x03, 0xfd, 0x8e, 0x4b, 0x9f, 0x68, 0x1e, 0x2e, 0x00, 0xd1, 0x23, 0x4f, 0x9e, 0x4a, 0x9f,
+ 0x68, 0x3b, 0x3b, 0x01, 0x42, 0x93, 0xd8, 0x1d, 0x4c, 0x96, 0x4d, 0x9d, 0x23, 0x01, 0x60, 0x23,
+ 0x68, 0x28, 0x4a, 0x9c, 0x21, 0x01, 0xf0, 0x03, 0xfe, 0x9f, 0x60, 0x26, 0x28, 0x00, 0xd0, 0x09,
+ 0x23, 0x80, 0x68, 0x3a, 0x00, 0x9b, 0x42, 0x9a, 0xd1, 0x04, 0x68, 0x2b, 0x22, 0x80, 0x02, 0x12,
+ 0x18, 0x9b, 0x60, 0x2b, 0x49, 0x92, 0x4b, 0x94, 0x68, 0x0a, 0x68, 0x1b, 0x42, 0x9a, 0xd3, 0x01,
+ 0x23, 0x00, 0x60, 0x0b, 0x4b, 0x8a, 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0x9b, 0x98, 0x08, 0x49, 0x83,
+ 0xf7, 0xff, 0xfd, 0x8e, 0x26, 0x01, 0xe7, 0x96, 0x78, 0x23, 0x78, 0x62, 0x06, 0x1b, 0x04, 0x12,
+ 0x43, 0x1a, 0x78, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x78, 0xe2, 0x1c, 0x16, 0x43, 0x1e, 0x2e, 0x02,
+ 0xd0, 0x59, 0x2e, 0x02, 0xd8, 0x02, 0x2e, 0x01, 0xd1, 0x04, 0xe0, 0x07, 0x2e, 0x06, 0xd0, 0x03,
+ 0x2e, 0x07, 0xd0, 0x67, 0x25, 0x01, 0xe0, 0x30, 0x25, 0x01, 0xe2, 0x4f, 0x7b, 0x23, 0x7b, 0x62,
+ 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7b, 0xa3, 0x49, 0x6f, 0x02, 0x1b, 0x43, 0x13, 0x7b, 0xe2,
+ 0x1c, 0x15, 0x43, 0x1d, 0x1c, 0x28, 0xf0, 0x05, 0xf9, 0x4d, 0x28, 0x00, 0xd1, 0x16, 0x7d, 0x23,
+ 0x7d, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7d, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x7d, 0xe2,
+ 0x1c, 0x15, 0x43, 0x1d, 0x9b, 0x0c, 0x2b, 0x00, 0xd0, 0x00, 0xe2, 0x2d, 0x4b, 0x68, 0x68, 0x1b,
+ 0x2b, 0x00, 0xd0, 0x00, 0xe2, 0x28, 0xf0, 0x04, 0xf8, 0x2b, 0xe2, 0x25, 0x49, 0x6b, 0x1c, 0x28,
+ 0xf0, 0x05, 0xf9, 0x30, 0x28, 0x00, 0xd0, 0x02, 0x25, 0x06, 0x42, 0x6d, 0xe2, 0x1e, 0x7d, 0x23,
+ 0x7d, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7d, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x7d, 0xe2,
+ 0x1c, 0x15, 0x43, 0x1d, 0x4b, 0x5a, 0x60, 0x1e, 0x4b, 0x57, 0x60, 0x18, 0x48, 0x60, 0xf0, 0x00,
+ 0xfa, 0x6d, 0x4b, 0x60, 0x68, 0x1b, 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0xf0, 0x00, 0xfd, 0xe2,
+ 0x23, 0x00, 0x93, 0x09, 0xe2, 0x02, 0x7a, 0x23, 0x7a, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a,
+ 0x7a, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x7a, 0xe2, 0x1c, 0x10, 0x9a, 0x0b, 0x43, 0x18, 0x42, 0x82,
+ 0xd1, 0x02, 0x23, 0x00, 0x93, 0x0b, 0xe0, 0x03, 0xf0, 0x00, 0xfd, 0xee, 0xf0, 0x00, 0xfd, 0xe2,
+ 0x25, 0x00, 0xe1, 0xeb, 0x7e, 0x23, 0x7e, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7e, 0xa3,
+ 0x02, 0x1b, 0x43, 0x13, 0x7e, 0xe2, 0x1c, 0x16, 0x43, 0x1e, 0x7c, 0x62, 0x7c, 0x23, 0x04, 0x12,
+ 0x06, 0x1b, 0x43, 0x1a, 0x7c, 0xa3, 0x02, 0x1b, 0x43, 0x13, 0x7c, 0xe2, 0x43, 0x1a, 0x92, 0x06,
+ 0x7d, 0x23, 0x7d, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7d, 0xa3, 0x02, 0x1b, 0x43, 0x13,
+ 0x7d, 0xe2, 0x1c, 0x15, 0x43, 0x1d, 0x7b, 0x23, 0x2b, 0x00, 0xd1, 0x02, 0x9a, 0x0b, 0x2a, 0x00,
+ 0xd0, 0x01, 0x27, 0x00, 0xe0, 0x0c, 0x7a, 0x23, 0x7a, 0x62, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a,
+ 0x7a, 0xa3, 0x7a, 0xe0, 0x02, 0x1b, 0x43, 0x13, 0x43, 0x18, 0xf0, 0x00, 0xfd, 0xb5, 0x1c, 0x07,
+ 0x9b, 0x06, 0x1c, 0x30, 0x18, 0xed, 0x00, 0xe9, 0x95, 0x07, 0x1c, 0x34, 0xf7, 0xff, 0xfc, 0xac,
+ 0x25, 0x00, 0xe0, 0x05, 0x68, 0x20, 0x68, 0x61, 0xf7, 0xff, 0xfc, 0xa6, 0x35, 0x01, 0x34, 0x08,
+ 0x9a, 0x07, 0x42, 0x95, 0xdb, 0xf6, 0x4c, 0x22, 0x68, 0x20, 0x28, 0x00, 0xd0, 0x00, 0xe1, 0x87,
+ 0x99, 0x11, 0x7b, 0x0b, 0x7b, 0x4a, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7b, 0x8b, 0x02, 0x1b,
+ 0x43, 0x13, 0x7b, 0xca, 0x43, 0x1a, 0x4b, 0x24, 0x42, 0x9a, 0xd1, 0x00, 0xe0, 0xf6, 0x42, 0x9a,
+ 0xd8, 0x46, 0x2a, 0x06, 0xd8, 0x0b, 0x2a, 0x05, 0xd3, 0x00, 0xe0, 0xd0, 0x2a, 0x01, 0xd1, 0x00,
+ 0xe0, 0x92, 0x2a, 0x00, 0xd0, 0x6c, 0x2a, 0x02, 0xd0, 0x00, 0xe1, 0x01, 0xe0, 0xc7, 0x2a, 0x1b,
+ 0xd8, 0x06, 0x2a, 0x1a, 0xd3, 0x00, 0xe0, 0x9f, 0x2a, 0x0c, 0xd0, 0x00, 0xe0, 0xf8, 0xe0, 0x8f,
+ 0x4b, 0x16, 0x42, 0x9a, 0xd1, 0x00, 0xe0, 0x9a, 0x33, 0x01, 0x42, 0x9a, 0xd0, 0x00, 0xe0, 0xef,
+ 0xe0, 0xc7, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x28, 0x13, 0x70, 0x60, 0x50, 0x00, 0x98, 0x96, 0x80,
+ 0x13, 0x70, 0x02, 0x19, 0x13, 0x70, 0x67, 0xc0, 0x13, 0x70, 0x60, 0x0c, 0x13, 0x70, 0x67, 0x48,
+ 0x13, 0x70, 0x67, 0x40, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x72, 0xc3, 0xa0, 0x00, 0x00, 0x0f, 0xfe,
+ 0x13, 0x70, 0x67, 0x54, 0x13, 0x70, 0x68, 0x00, 0x13, 0x72, 0xc3, 0xa4, 0x13, 0x70, 0x60, 0x5c,
+ 0x13, 0x70, 0x12, 0x99, 0x13, 0x70, 0x60, 0x34, 0x55, 0x4d, 0x53, 0x03, 0x55, 0x4d, 0x53, 0x01,
+ 0x4b, 0xac, 0x42, 0x9a, 0xd1, 0x00, 0xe0, 0x86, 0x42, 0x9a, 0xd8, 0x12, 0x3b, 0x7b, 0x42, 0x9a,
+ 0xd1, 0x00, 0xe0, 0xb4, 0x42, 0x9a, 0xd8, 0x04, 0x3b, 0x02, 0x42, 0x9a, 0xd0, 0x00, 0xe0, 0xb7,
+ 0xe0, 0xa5, 0x4b, 0xa5, 0x42, 0x9a, 0xd0, 0x72, 0x33, 0x70, 0x42, 0x9a, 0xd0, 0x00, 0xe0, 0xaf,
+ 0xe0, 0xaa, 0x4b, 0xa2, 0x42, 0x9a, 0xd1, 0x00, 0xe1, 0x06, 0x42, 0x9a, 0xd8, 0x07, 0x4b, 0xa0,
+ 0x42, 0x9a, 0xd0, 0x6e, 0x4b, 0x9f, 0x42, 0x9a, 0xd0, 0x00, 0xe0, 0xa1, 0xe0, 0xa2, 0x4b, 0x9e,
+ 0x42, 0x9a, 0xd1, 0x00, 0xe0, 0xed, 0x33, 0x01, 0x42, 0x9a, 0xd0, 0x00, 0xe0, 0x98, 0xe0, 0xde,
+ 0x2f, 0x00, 0xd1, 0x00, 0xe0, 0xfe, 0x69, 0x33, 0x88, 0x18, 0x69, 0xb3, 0x88, 0x1c, 0x6a, 0x33,
+ 0x88, 0x1d, 0x68, 0x33, 0x78, 0x19, 0x68, 0xb3, 0x78, 0x1a, 0x02, 0x03, 0x0a, 0x00, 0x43, 0x03,
+ 0x02, 0x20, 0x0a, 0x24, 0x43, 0x20, 0x04, 0x00, 0x0c, 0x00, 0x90, 0x00, 0x02, 0x28, 0x0a, 0x2d,
+ 0x43, 0x28, 0x04, 0x00, 0x0c, 0x00, 0x90, 0x01, 0x6b, 0x30, 0x04, 0x1b, 0x90, 0x02, 0x0c, 0x1b,
+ 0x1c, 0x38, 0xf0, 0x01, 0xfe, 0x95, 0xe0, 0x60, 0x2f, 0x00, 0xd1, 0x00, 0xe0, 0xda, 0x68, 0x33,
+ 0x1c, 0x38, 0x78, 0x19, 0x68, 0xb3, 0x88, 0x1a, 0x69, 0x33, 0xf0, 0x01, 0xfd, 0x87, 0xe0, 0x54,
+ 0x2f, 0x00, 0xd0, 0x00, 0xe0, 0xce, 0x68, 0x33, 0x69, 0x32, 0x78, 0x18, 0x68, 0xb3, 0x78, 0x19,
+ 0x69, 0xb3, 0xf0, 0x00, 0xfc, 0xed, 0xe0, 0x48, 0x25, 0x01, 0x24, 0x00, 0xe0, 0xc5, 0xf0, 0x03,
+ 0xfd, 0xef, 0x1c, 0x05, 0x28, 0x00, 0xda, 0x01, 0x23, 0x00, 0xe0, 0x02, 0x4a, 0x77, 0x23, 0x01,
+ 0x60, 0x13, 0x99, 0x11, 0x93, 0x09, 0x7a, 0x0b, 0x7a, 0x4a, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a,
+ 0x7a, 0x8b, 0x02, 0x1b, 0x43, 0x13, 0x7a, 0xca, 0x43, 0x1a, 0x92, 0x0b, 0xe0, 0xac, 0x4b, 0x6f,
+ 0x22, 0x00, 0x60, 0x18, 0xe0, 0x6a, 0x68, 0x32, 0x4b, 0x6d, 0x68, 0x12, 0x60, 0x1a, 0x25, 0x00,
+ 0xe0, 0xa2, 0x23, 0x01, 0x60, 0x23, 0x4b, 0x69, 0x60, 0x18, 0x48, 0x6a, 0xf0, 0x00, 0xf9, 0x0e,
+ 0x4b, 0x69, 0x68, 0x1b, 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0xf0, 0x00, 0xfc, 0x83, 0x23, 0x00,
+ 0x93, 0x09, 0x4c, 0x66, 0x1c, 0x20, 0xf0, 0x00, 0xfd, 0xa5, 0x4b, 0x65, 0x1c, 0x05, 0x60, 0x18,
+ 0x68, 0x32, 0x2a, 0x00, 0xd1, 0x00, 0xe0, 0x87, 0x68, 0x23, 0xe0, 0x68, 0x68, 0x33, 0x69, 0x32,
+ 0x68, 0x18, 0x68, 0xb3, 0x68, 0x19, 0xf0, 0x03, 0xfc, 0xa7, 0x1c, 0x05, 0xe0, 0x7c, 0x68, 0x33,
+ 0x69, 0x32, 0x68, 0x18, 0x68, 0xb3, 0x68, 0x19, 0xf0, 0x03, 0xfc, 0x38, 0xe7, 0xf5, 0x4b, 0x59,
+ 0x68, 0x1a, 0x42, 0x51, 0x41, 0x4a, 0xe7, 0xc9, 0x68, 0x32, 0x4b, 0x50, 0x68, 0x12, 0x60, 0x1a,
+ 0x25, 0x01, 0xe0, 0x69, 0x7a, 0x0b, 0x7a, 0x4a, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7a, 0x8b,
+ 0x02, 0x1b, 0x43, 0x13, 0x7a, 0xca, 0x21, 0x00, 0x43, 0x1a, 0x92, 0x0b, 0x91, 0x0f, 0x68, 0x34,
+ 0x78, 0x23, 0x2b, 0x5f, 0xd1, 0x1c, 0x78, 0x63, 0x2b, 0x44, 0xd1, 0x19, 0x78, 0xa3, 0x2b, 0x56,
+ 0xd1, 0x16, 0x78, 0xe3, 0x2b, 0x44, 0xd1, 0x13, 0x4b, 0x40, 0x4c, 0x47, 0x22, 0x01, 0x60, 0x1a,
+ 0x60, 0x21, 0x68, 0xf3, 0x2b, 0x04, 0xd1, 0x06, 0x68, 0xb1, 0xa8, 0x0f, 0x22, 0x04, 0xf0, 0x04,
+ 0xfe, 0xc5, 0x9b, 0x0f, 0x60, 0x23, 0xf0, 0x04, 0xf8, 0x1f, 0x22, 0x01, 0x92, 0x09, 0xe7, 0x96,
+ 0x68, 0xf3, 0x2b, 0x04, 0xd1, 0x04, 0x68, 0xb1, 0xa8, 0x0f, 0x22, 0x04, 0xf0, 0x04, 0xfe, 0xb6,
+ 0x99, 0x0f, 0x1c, 0x20, 0xf0, 0x03, 0xff, 0x8c, 0x90, 0x0d, 0x28, 0x00, 0xd1, 0x02, 0x23, 0x01,
+ 0x93, 0x09, 0xe0, 0x25, 0x4a, 0x2d, 0x23, 0x01, 0x60, 0x13, 0x93, 0x09, 0xe7, 0x7f, 0xf0, 0x03,
+ 0xfd, 0x01, 0x1c, 0x05, 0x28, 0x00, 0xd1, 0x1f, 0x23, 0x01, 0x4a, 0x30, 0x42, 0x5b, 0x60, 0x13,
+ 0xe0, 0x1a, 0x4a, 0x26, 0x23, 0x01, 0x60, 0x13, 0x68, 0x33, 0x69, 0x31, 0x68, 0x18, 0x68, 0xb3,
+ 0x68, 0x1a, 0xf7, 0xff, 0xfc, 0x07, 0xe7, 0x90, 0x9a, 0x0d, 0x2a, 0x00, 0xd0, 0x08, 0x68, 0x33,
+ 0x69, 0x32, 0x68, 0x19, 0x68, 0xb3, 0x98, 0x0d, 0x68, 0x1b, 0xf0, 0x04, 0xf8, 0xb5, 0xe7, 0x5e,
+ 0x25, 0x01, 0xe0, 0x00, 0x25, 0x06, 0x42, 0x6d, 0x24, 0x01, 0x9a, 0x06, 0x00, 0xd3, 0x18, 0xf6,
+ 0x1c, 0x17, 0xe0, 0x05, 0x68, 0x30, 0x68, 0x71, 0xf7, 0xff, 0xfb, 0x26, 0x37, 0x01, 0x36, 0x08,
+ 0x9b, 0x07, 0x42, 0x9f, 0xdb, 0xf6, 0xe0, 0x02, 0x22, 0x01, 0x92, 0x0c, 0x24, 0x01, 0x9a, 0x04,
+ 0x68, 0x13, 0x2b, 0x00, 0xd1, 0x01, 0x26, 0x00, 0xe0, 0x04, 0x98, 0x08, 0x49, 0x14, 0xf7, 0xff,
+ 0xfb, 0x17, 0x26, 0x01, 0x2c, 0x00, 0xd1, 0x00, 0xe5, 0x1d, 0x98, 0x11, 0x1c, 0x29, 0xf7, 0xff,
+ 0xfa, 0xff, 0xe5, 0x18, 0x55, 0x4d, 0x53, 0x81, 0x55, 0x4d, 0x53, 0x10, 0x57, 0x46, 0x53, 0x02,
+ 0x55, 0x4d, 0x53, 0x82, 0x57, 0x46, 0x53, 0x01, 0x57, 0x46, 0x53, 0x03, 0x13, 0x70, 0x60, 0x0c,
+ 0x13, 0x70, 0x67, 0x48, 0x13, 0x70, 0x12, 0x99, 0x13, 0x70, 0x60, 0x34, 0x13, 0x72, 0xc3, 0xa0,
+ 0x13, 0x72, 0xc3, 0xa4, 0x13, 0x70, 0x67, 0x44, 0x13, 0x70, 0x60, 0x14, 0x13, 0x70, 0x60, 0x10,
+ 0x00, 0x98, 0x96, 0x80, 0xb5, 0x00, 0x4b, 0x04, 0xb0, 0x81, 0x1c, 0x01, 0x68, 0x18, 0xf7, 0xff,
+ 0xfa, 0xbb, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x60, 0x28, 0xb5, 0x00, 0x4b, 0x0d,
+ 0x1c, 0x01, 0xb0, 0x81, 0x68, 0x18, 0x22, 0x20, 0xf7, 0xff, 0xfa, 0xea, 0x28, 0x00, 0xd1, 0x0d,
+ 0x48, 0x09, 0xf7, 0xff, 0xfa, 0xb9, 0xf0, 0x03, 0xff, 0xcd, 0x20, 0xc8, 0xf0, 0x00, 0xfa, 0x7c,
+ 0xf0, 0x03, 0xff, 0xbc, 0x20, 0xc8, 0xf0, 0x00, 0xfa, 0x77, 0xe7, 0xf4, 0xb0, 0x01, 0xbc, 0x02,
+ 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x28, 0x13, 0x70, 0x60, 0x6c, 0x4b, 0x02, 0x4a, 0x03,
+ 0x60, 0x18, 0x23, 0x00, 0x60, 0x13, 0x47, 0x70, 0x13, 0x70, 0x67, 0x60, 0x13, 0x70, 0x67, 0x58,
+ 0xb5, 0xf0, 0x4f, 0x1d, 0x21, 0x10, 0x68, 0x3b, 0x4d, 0x1c, 0x43, 0x8b, 0x60, 0x3b, 0x68, 0x2b,
+ 0x4e, 0x1b, 0x68, 0x9a, 0x68, 0x33, 0xb0, 0x81, 0x68, 0x54, 0x2b, 0x00, 0xd0, 0x11, 0x1c, 0x20,
+ 0xf0, 0x00, 0xf8, 0x36, 0x28, 0x00, 0xdc, 0x13, 0x23, 0x00, 0x60, 0x33, 0x4b, 0x15, 0x60, 0x18,
+ 0x20, 0x04, 0xf7, 0xff, 0xfa, 0x75, 0x68, 0x2b, 0x68, 0x9a, 0x23, 0x37, 0x40, 0x23, 0x60, 0x53,
+ 0xe0, 0x14, 0x4b, 0x11, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x04, 0x1c, 0x20, 0xf0, 0x00, 0xf8, 0x20,
+ 0x68, 0x2b, 0x68, 0x9a, 0x23, 0x37, 0x40, 0x23, 0x60, 0x53, 0x68, 0x3b, 0x22, 0x10, 0x43, 0x13,
+ 0x4a, 0x0a, 0x60, 0x3b, 0x68, 0x13, 0x21, 0x10, 0x43, 0x0b, 0x60, 0x13, 0xb0, 0x01, 0x20, 0x00,
+ 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x0d, 0x80, 0x00, 0x3c, 0x13, 0x70, 0x60, 0x34,
+ 0x13, 0x70, 0x67, 0x58, 0x13, 0x70, 0x67, 0x5c, 0x13, 0x70, 0x67, 0x60, 0x0d, 0x80, 0x00, 0x38,
+ 0x47, 0x18, 0x46, 0xc0, 0xb5, 0x70, 0x4d, 0x15, 0x4b, 0x15, 0x26, 0x02, 0x42, 0x76, 0x1c, 0x29,
+ 0x68, 0x18, 0x22, 0x00, 0x60, 0x2e, 0xf7, 0xff, 0xfa, 0x4b, 0x4b, 0x12, 0x22, 0x00, 0x68, 0x1b,
+ 0x4c, 0x11, 0x68, 0x9b, 0x60, 0x9a, 0x4b, 0x11, 0x68, 0x20, 0x60, 0x1a, 0xf7, 0xff, 0xfa, 0x1c,
+ 0x68, 0x20, 0xf7, 0xff, 0xfa, 0x1d, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x23, 0x68, 0x2b, 0x2b, 0x00,
+ 0xd1, 0x03, 0x4b, 0x0b, 0x68, 0x1b, 0x60, 0x2b, 0xe0, 0x00, 0x60, 0x2e, 0x20, 0x04, 0xf7, 0xff,
+ 0xfa, 0x27, 0x4b, 0x02, 0x68, 0x18, 0xbc, 0x70, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x67, 0x64,
+ 0x13, 0x70, 0x60, 0x18, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x60, 0x1c, 0x13, 0x70, 0x67, 0x58,
+ 0x13, 0x70, 0x67, 0x5c, 0xb5, 0x10, 0x4b, 0x0f, 0x1c, 0x04, 0x68, 0x1a, 0x1c, 0x08, 0x23, 0x01,
+ 0x49, 0x0d, 0xf7, 0xff, 0xf9, 0xf9, 0x4b, 0x0d, 0x21, 0x10, 0x60, 0x18, 0x48, 0x0c, 0xf0, 0x03,
+ 0xff, 0x47, 0x21, 0x10, 0x48, 0x0b, 0xf0, 0x03, 0xff, 0x37, 0x4b, 0x0b, 0x20, 0x04, 0x60, 0x1c,
+ 0x4b, 0x0a, 0x68, 0x1b, 0x68, 0x9a, 0x23, 0x37, 0x60, 0x93, 0xf7, 0xff, 0xf9, 0xf9, 0xbc, 0x10,
+ 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x60, 0x18, 0x05, 0xf5, 0xe1, 0x00, 0x13, 0x70, 0x60, 0x1c,
+ 0x0d, 0x80, 0x00, 0x38, 0x0d, 0x80, 0x00, 0x3c, 0x13, 0x70, 0x67, 0x58, 0x13, 0x70, 0x60, 0x34,
+ 0xb5, 0x30, 0x4d, 0x11, 0x4a, 0x11, 0x68, 0x2b, 0xb0, 0x81, 0x40, 0x13, 0x60, 0x2b, 0x20, 0x80,
+ 0xf0, 0x03, 0xfd, 0xc0, 0x21, 0x20, 0xf7, 0xff, 0xfa, 0x07, 0x4c, 0x0d, 0x60, 0x20, 0x20, 0x04,
+ 0xf7, 0xff, 0xf9, 0xee, 0x68, 0x21, 0x22, 0x00, 0x20, 0x04, 0xf7, 0xff, 0xfa, 0x11, 0x68, 0x2a,
+ 0x23, 0x80, 0x02, 0x1b, 0x43, 0x1a, 0x60, 0x2a, 0x20, 0x04, 0xf7, 0xff, 0xf9, 0xc9, 0xb0, 0x01,
+ 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x0d, 0x04, 0x00, 0xcc, 0xff, 0xff, 0x7f, 0xff,
+ 0x13, 0x70, 0x60, 0x18, 0xb5, 0x00, 0x4b, 0x06, 0x02, 0xc0, 0x68, 0x1a, 0x1c, 0x19, 0x68, 0x0b,
+ 0x1a, 0x9b, 0xd5, 0x00, 0x68, 0x0a, 0x42, 0x83, 0xd9, 0xf9, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0,
+ 0x0d, 0x80, 0x00, 0x10, 0xb5, 0x00, 0x4b, 0x19, 0x4a, 0x19, 0x78, 0x1b, 0xb0, 0x81, 0x1e, 0x59,
+ 0x41, 0x8b, 0x60, 0x13, 0xf0, 0x03, 0xff, 0x1c, 0x1c, 0x03, 0x48, 0x16, 0x21, 0x04, 0x60, 0x03,
+ 0xf7, 0xff, 0xf9, 0xba, 0xf0, 0x03, 0xff, 0x08, 0x22, 0x00, 0x1c, 0x01, 0x48, 0x12, 0xf0, 0x03,
+ 0xfe, 0xbd, 0x21, 0xa0, 0x02, 0x49, 0x48, 0x11, 0xf7, 0xff, 0xf9, 0x6e, 0x4b, 0x10, 0x21, 0x80,
+ 0x60, 0x18, 0xf7, 0xff, 0xf9, 0xb5, 0x21, 0x20, 0xf7, 0xff, 0xf9, 0xb6, 0x4b, 0x0d, 0x60, 0x18,
+ 0xf0, 0x00, 0xfd, 0x7c, 0x28, 0x00, 0xda, 0x02, 0x20, 0x01, 0x42, 0x40, 0xe0, 0x02, 0xf7, 0xff,
+ 0xfb, 0x7d, 0x20, 0x00, 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x01, 0x0c,
+ 0x13, 0x70, 0x67, 0x78, 0x13, 0x72, 0xc0, 0x00, 0x13, 0x70, 0x0f, 0x21, 0x13, 0x71, 0x80, 0x00,
+ 0x13, 0x70, 0x60, 0x28, 0x13, 0x70, 0x60, 0x20, 0xb5, 0x70, 0x1c, 0x0c, 0x1c, 0x05, 0xf7, 0xff,
+ 0xf9, 0x9f, 0x1c, 0x06, 0x20, 0x01, 0x42, 0x40, 0xf7, 0xff, 0xf9, 0x86, 0x68, 0x22, 0x4b, 0x11,
+ 0x42, 0x9a, 0xd1, 0x18, 0x4b, 0x10, 0x49, 0x11, 0x22, 0x01, 0x43, 0x13, 0x60, 0x4b, 0x22, 0x08,
+ 0x1c, 0x20, 0xf0, 0x04, 0xfc, 0xc3, 0x1c, 0x20, 0x21, 0x08, 0xf7, 0xff, 0xf9, 0x65, 0x1b, 0x63,
+ 0x4a, 0x0b, 0x08, 0x9b, 0x3b, 0x02, 0x40, 0x13, 0x4a, 0x0a, 0x1c, 0x28, 0x43, 0x13, 0x60, 0x2b,
+ 0x21, 0x04, 0xf7, 0xff, 0xf9, 0x59, 0x1c, 0x30, 0xf7, 0xff, 0xf9, 0x66, 0xbc, 0x70, 0xbc, 0x01,
+ 0x47, 0x00, 0x46, 0xc0, 0xe6, 0x00, 0x01, 0x70, 0x13, 0x70, 0x02, 0x71, 0x13, 0x70, 0x60, 0x2c,
+ 0x00, 0xff, 0xff, 0xff, 0xea, 0x00, 0x00, 0x00, 0xb5, 0x30, 0x1c, 0x04, 0xb0, 0x81, 0xf7, 0xff,
+ 0xf9, 0x1f, 0x2c, 0x26, 0xd0, 0x42, 0x2c, 0x26, 0xd8, 0x05, 0x2c, 0x24, 0xd0, 0x09, 0x2c, 0x25,
+ 0xd0, 0x00, 0xe0, 0x97, 0xe0, 0x0e, 0x2c, 0x39, 0xd0, 0x64, 0x2c, 0x3c, 0xd0, 0x00, 0xe0, 0x91,
+ 0xe0, 0x62, 0x49, 0x4b, 0x4b, 0x4b, 0x48, 0x4c, 0x60, 0x4b, 0x22, 0x08, 0xf0, 0x04, 0xfc, 0x86,
+ 0x48, 0x49, 0xe0, 0x84, 0x49, 0x49, 0x48, 0x4a, 0xf7, 0xff, 0xff, 0xa6, 0x4c, 0x44, 0x48, 0x49,
+ 0x4b, 0x49, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff,
+ 0xf9, 0x1b, 0x48, 0x46, 0x4b, 0x46, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22,
+ 0x21, 0x08, 0xf7, 0xff, 0xf9, 0x11, 0x48, 0x43, 0x4b, 0x43, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03,
+ 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff, 0xf9, 0x07, 0x4b, 0x36, 0x48, 0x3f, 0x60, 0x63,
+ 0x1c, 0x21, 0x22, 0x08, 0xf0, 0x04, 0xfc, 0x5a, 0x48, 0x3c, 0xe0, 0x58, 0x49, 0x3c, 0x48, 0x3d,
+ 0xf7, 0xff, 0xff, 0x7a, 0x4c, 0x2e, 0x48, 0x33, 0x4b, 0x3b, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03,
+ 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff, 0xf8, 0xef, 0x48, 0x30, 0x4b, 0x37, 0x1c, 0x22,
+ 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff, 0xf8, 0xe5, 0x48, 0x2d,
+ 0x4b, 0x33, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff,
+ 0xf8, 0xdb, 0x4b, 0x20, 0x48, 0x2f, 0x60, 0x63, 0x1c, 0x21, 0x22, 0x08, 0xf0, 0x04, 0xfc, 0x2e,
+ 0x48, 0x2c, 0xe0, 0x2c, 0x48, 0x2c, 0xe0, 0x00, 0x48, 0x2c, 0x49, 0x2d, 0xf7, 0xff, 0xff, 0x4c,
+ 0x4c, 0x17, 0x48, 0x1c, 0x4b, 0x2b, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22,
+ 0x21, 0x08, 0xf7, 0xff, 0xf8, 0xc1, 0x48, 0x19, 0x4b, 0x27, 0x1c, 0x22, 0x60, 0x63, 0x1c, 0x03,
+ 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff, 0xf8, 0xb7, 0x48, 0x16, 0x4b, 0x23, 0x1c, 0x22,
+ 0x60, 0x63, 0x1c, 0x03, 0xca, 0x22, 0xc3, 0x22, 0x21, 0x08, 0xf7, 0xff, 0xf8, 0xad, 0x4b, 0x09,
+ 0x48, 0x1f, 0x60, 0x63, 0x1c, 0x21, 0x22, 0x08, 0xf0, 0x04, 0xfc, 0x00, 0x48, 0x1c, 0x21, 0x08,
+ 0xf7, 0xff, 0xf8, 0xa2, 0xb0, 0x01, 0x20, 0x00, 0xbc, 0x30, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
+ 0x13, 0x70, 0x60, 0x2c, 0x13, 0x70, 0x00, 0x60, 0xff, 0xff, 0x1e, 0x78, 0x20, 0x20, 0x40, 0x8c,
+ 0x20, 0x20, 0x5d, 0xe8, 0x13, 0x70, 0x00, 0xbc, 0xff, 0xff, 0x1f, 0x70, 0x13, 0x70, 0x00, 0xc4,
+ 0xff, 0xff, 0x1f, 0x8c, 0x13, 0x70, 0x00, 0xcc, 0xff, 0xff, 0x1e, 0x34, 0xff, 0xff, 0x1f, 0x68,
+ 0x20, 0x20, 0x3e, 0x6c, 0x20, 0x20, 0x5b, 0x14, 0xff, 0xff, 0x1e, 0xb0, 0xff, 0xff, 0x1e, 0xcc,
+ 0xff, 0xff, 0x1d, 0x74, 0xff, 0xff, 0x1e, 0xa8, 0x20, 0x20, 0x5e, 0x84, 0x20, 0x20, 0x5d, 0x94,
+ 0x20, 0x20, 0x3f, 0x60, 0xff, 0xff, 0x21, 0x30, 0xff, 0xff, 0x21, 0x4c, 0xff, 0xff, 0x1f, 0xf4,
+ 0xff, 0xff, 0x21, 0x28, 0xb5, 0x30, 0x4d, 0x0c, 0xb0, 0x81, 0x23, 0x00, 0x68, 0x2a, 0x49, 0x0b,
+ 0xf7, 0xff, 0xf8, 0x3a, 0x4c, 0x0a, 0x49, 0x0b, 0x22, 0x00, 0x60, 0x20, 0x68, 0x28, 0xf7, 0xff,
+ 0xf8, 0x4f, 0x68, 0x20, 0xf7, 0xff, 0xf8, 0x28, 0x68, 0x20, 0xf7, 0xff, 0xf8, 0x29, 0xb0, 0x01,
+ 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x20, 0x00, 0x98, 0x96, 0x80,
+ 0x13, 0x70, 0x60, 0x24, 0x13, 0x70, 0x67, 0x68, 0xb5, 0x00, 0x1c, 0x03, 0x01, 0x40, 0x1a, 0xc0,
+ 0x00, 0x80, 0x18, 0xc0, 0xb0, 0x81, 0x00, 0xc0, 0xf7, 0xff, 0xff, 0xd4, 0xb0, 0x01, 0xbc, 0x01,
+ 0x47, 0x00, 0x46, 0xc0, 0xb5, 0xf0, 0xb0, 0x83, 0x93, 0x00, 0x46, 0x94, 0x06, 0x0b, 0x0e, 0x0a,
+ 0x26, 0xff, 0x43, 0x1a, 0x02, 0x36, 0x1c, 0x0b, 0x40, 0x33, 0x02, 0x1b, 0x25, 0xff, 0x43, 0x1a,
+ 0x04, 0x2d, 0x1c, 0x0b, 0x40, 0x2b, 0x0a, 0x1b, 0x43, 0x1a, 0x90, 0x01, 0x60, 0xc2, 0x9a, 0x01,
+ 0x23, 0x00, 0x62, 0x13, 0x4b, 0x2a, 0x1c, 0x0a, 0x40, 0x1a, 0x23, 0x80, 0x01, 0x5b, 0x1a, 0x98,
+ 0x45, 0x84, 0xd2, 0x01, 0x46, 0x64, 0xe0, 0x2f, 0x23, 0x80, 0x01, 0x5b, 0x18, 0xca, 0x4b, 0x25,
+ 0x1c, 0x11, 0x1c, 0x04, 0x1c, 0x2e, 0x40, 0x19, 0x98, 0x01, 0x27, 0x01, 0x25, 0x00, 0xe0, 0x18,
+ 0x06, 0x0b, 0x0e, 0x0a, 0x43, 0x1a, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x0b, 0x02, 0x1b, 0x43, 0x1a,
+ 0x1c, 0x0b, 0x40, 0x33, 0x0a, 0x1b, 0x43, 0x1a, 0x61, 0x02, 0x22, 0x80, 0x01, 0x52, 0x18, 0xa4,
+ 0x62, 0x45, 0x45, 0x64, 0xd3, 0x00, 0x46, 0x64, 0x23, 0x80, 0x01, 0x5b, 0x18, 0xc9, 0x37, 0x01,
+ 0x30, 0x04, 0x45, 0x64, 0xd2, 0x01, 0x2f, 0x04, 0xdd, 0xe2, 0x45, 0x64, 0xd0, 0x04, 0x1c, 0x20,
+ 0x99, 0x08, 0xf0, 0x04, 0xfa, 0xd9, 0x1a, 0x64, 0x9b, 0x00, 0x04, 0x22, 0x43, 0x1a, 0x06, 0x13,
+ 0x0e, 0x11, 0x43, 0x19, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x13, 0x02, 0x1b, 0x43, 0x19, 0x23, 0xff,
+ 0x04, 0x1b, 0x40, 0x1a, 0x0a, 0x12, 0x43, 0x11, 0x23, 0x80, 0x9a, 0x01, 0x04, 0x5b, 0xb0, 0x03,
+ 0x1c, 0x20, 0x60, 0x91, 0x64, 0x14, 0x60, 0x13, 0x60, 0x53, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
+ 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0x00, 0xb5, 0xf0, 0x26, 0xff, 0x25, 0xff, 0x22, 0x03,
+ 0x02, 0x36, 0x04, 0x2d, 0x46, 0x94, 0x4f, 0x18, 0xe0, 0x1e, 0x68, 0x82, 0x06, 0x13, 0x0e, 0x11,
+ 0x43, 0x19, 0x1c, 0x13, 0x40, 0x33, 0x02, 0x1b, 0x43, 0x19, 0x40, 0x2a, 0x0a, 0x12, 0x1c, 0x0c,
+ 0x43, 0x14, 0x0a, 0x23, 0x46, 0x62, 0x40, 0x13, 0x2b, 0x02, 0xd0, 0x07, 0x6b, 0xc1, 0x6c, 0x03,
+ 0x69, 0x4a, 0x18, 0xd2, 0x0c, 0x23, 0x40, 0x3b, 0x1a, 0xd2, 0x61, 0x4a, 0x6c, 0x03, 0x2b, 0x00,
+ 0xd0, 0x01, 0x06, 0x63, 0xd4, 0x03, 0x6b, 0x80, 0x28, 0x00, 0xd1, 0xde, 0xe0, 0x04, 0x6b, 0xc2,
+ 0x23, 0x01, 0x42, 0x5b, 0x61, 0x53, 0x1c, 0x18, 0x4b, 0x04, 0x68, 0x1a, 0x23, 0x00, 0x64, 0x13,
+ 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0x13, 0x70, 0x60, 0x34,
+ 0xb5, 0x00, 0x07, 0x43, 0xd5, 0x15, 0x4b, 0x0c, 0x4a, 0x0c, 0x68, 0x1b, 0x68, 0x99, 0x6c, 0x4b,
+ 0x40, 0x13, 0x2b, 0x03, 0xd1, 0x02, 0x23, 0x80, 0x01, 0x9b, 0x64, 0x4b, 0x4b, 0x06, 0x4a, 0x07,
+ 0x68, 0x1b, 0x68, 0x99, 0x6c, 0x8b, 0x40, 0x13, 0x2b, 0x03, 0xd1, 0x02, 0x23, 0x80, 0x01, 0x9b,
+ 0x64, 0x8b, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x20, 0x03,
+ 0xb5, 0xf0, 0x07, 0x43, 0xd5, 0x21, 0x24, 0x80, 0x4e, 0x11, 0x4d, 0x12, 0x4f, 0x12, 0x20, 0x00,
+ 0x01, 0xa4, 0x68, 0x33, 0x00, 0x82, 0x68, 0x9b, 0x33, 0x44, 0x18, 0x99, 0x68, 0x2b, 0x68, 0x0a,
+ 0x42, 0x98, 0xd1, 0x0a, 0x07, 0xd3, 0xd4, 0x0d, 0x4a, 0x0c, 0x23, 0x02, 0x49, 0x0c, 0x60, 0x13,
+ 0x68, 0x0b, 0x22, 0x20, 0x43, 0x93, 0x60, 0x0b, 0xe0, 0x04, 0x1c, 0x13, 0x40, 0x3b, 0x2b, 0x03,
+ 0xd1, 0x00, 0x60, 0x0c, 0x30, 0x01, 0x28, 0x04, 0xd1, 0xe3, 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00,
+ 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x78, 0x00, 0x00, 0x20, 0x03, 0x13, 0x70, 0x67, 0x6c,
+ 0x0d, 0x80, 0x00, 0xc0, 0xb5, 0x00, 0x4b, 0x0a, 0x22, 0x80, 0x68, 0x1b, 0x01, 0x92, 0x68, 0x99,
+ 0x6c, 0x4b, 0x42, 0x13, 0xd1, 0x00, 0x64, 0x4a, 0x4b, 0x05, 0x22, 0x80, 0x68, 0x1b, 0x01, 0x92,
+ 0x68, 0x99, 0x6c, 0x8b, 0x42, 0x13, 0xd1, 0x00, 0x64, 0x8a, 0x20, 0x00, 0xbc, 0x02, 0x47, 0x08,
+ 0x13, 0x70, 0x60, 0x34, 0xb5, 0x00, 0x28, 0x00, 0xd0, 0x02, 0x23, 0x01, 0x42, 0x5b, 0x62, 0x03,
+ 0x20, 0x00, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x4b, 0x06, 0x49, 0x07, 0x78, 0x1a, 0x68, 0x08,
+ 0x1e, 0x53, 0x41, 0x9a, 0x4b, 0x05, 0x60, 0x1a, 0x00, 0x93, 0x18, 0x9b, 0x00, 0xdb, 0x33, 0x58,
+ 0x18, 0xc0, 0x47, 0x70, 0x13, 0x70, 0x01, 0x0c, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x78,
+ 0xb5, 0x10, 0x1c, 0x18, 0x4b, 0x12, 0x1c, 0x14, 0x78, 0x1a, 0x1e, 0x53, 0x41, 0x9a, 0x4b, 0x11,
+ 0x60, 0x1a, 0x4b, 0x11, 0x68, 0x19, 0x00, 0x93, 0x18, 0x9b, 0x00, 0xdb, 0x18, 0xc9, 0x6f, 0x0b,
+ 0x2b, 0x00, 0xd0, 0x10, 0x23, 0x00, 0x80, 0x03, 0x80, 0x43, 0x31, 0x60, 0x88, 0x0b, 0x04, 0x1b,
+ 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x80, 0x82, 0x88, 0x4b, 0x04, 0x1b, 0x0a, 0x1a, 0x0e, 0x1b,
+ 0x43, 0x1a, 0x80, 0xc2, 0x23, 0x01, 0x20, 0x00, 0x70, 0x23, 0xbc, 0x10, 0xbc, 0x02, 0x47, 0x08,
+ 0x13, 0x70, 0x01, 0x0c, 0x13, 0x70, 0x67, 0x78, 0x13, 0x70, 0x60, 0x34, 0xb5, 0xf0, 0xb0, 0x81,
+ 0x1c, 0x07, 0x28, 0x00, 0xd1, 0x04, 0x4a, 0x20, 0x23, 0x30, 0x70, 0x13, 0x70, 0x50, 0xe0, 0x36,
+ 0x4d, 0x1e, 0x1c, 0x06, 0x1c, 0x30, 0x21, 0x0a, 0xf0, 0x04, 0xf9, 0xb6, 0x1c, 0x30, 0x1c, 0x0c,
+ 0x21, 0x0a, 0xf0, 0x04, 0xf9, 0x67, 0x17, 0xe3, 0x18, 0xe4, 0x40, 0x5c, 0x34, 0x30, 0x4b, 0x18,
+ 0x70, 0x2c, 0x3d, 0x01, 0x1c, 0x06, 0x42, 0x9d, 0xd1, 0xec, 0x1c, 0x2a, 0x3a, 0x0f, 0x23, 0x00,
+ 0x76, 0x93, 0x2f, 0x00, 0xdb, 0x01, 0x20, 0x00, 0xe0, 0x02, 0x23, 0x2d, 0x70, 0x13, 0x20, 0x01,
+ 0x22, 0x10, 0x49, 0x0d, 0xe0, 0x00, 0x32, 0x01, 0x5c, 0x8b, 0x2b, 0x30, 0xd0, 0xfb, 0x2b, 0x00,
+ 0xd1, 0x00, 0x3a, 0x01, 0x4b, 0x08, 0x18, 0x99, 0x18, 0x1b, 0xe0, 0x02, 0x70, 0x1a, 0x30, 0x01,
+ 0x33, 0x01, 0x78, 0x0a, 0x31, 0x01, 0x2a, 0x00, 0xd1, 0xf8, 0x4b, 0x03, 0x54, 0x1a, 0xb0, 0x01,
+ 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x72, 0xc1, 0xe0, 0x13, 0x72, 0xc1, 0xf9,
+ 0x13, 0x72, 0xc1, 0xef, 0xb5, 0xf0, 0xb0, 0x81, 0x1c, 0x06, 0x28, 0x00, 0xd1, 0x04, 0x4a, 0x1a,
+ 0x23, 0x30, 0x70, 0x13, 0x70, 0x50, 0xe0, 0x2a, 0x4d, 0x18, 0x1c, 0x2f, 0x3f, 0x0a, 0x1c, 0x30,
+ 0x21, 0x0a, 0xf0, 0x04, 0xf9, 0x17, 0x1c, 0x30, 0x1c, 0x0c, 0x21, 0x0a, 0xf0, 0x04, 0xf8, 0xd4,
+ 0x34, 0x30, 0x70, 0x2c, 0x3d, 0x01, 0x1c, 0x06, 0x42, 0xbd, 0xd1, 0xf0, 0x1c, 0x2a, 0x23, 0x00,
+ 0x3a, 0x0f, 0x76, 0x93, 0x23, 0x10, 0xe0, 0x00, 0x33, 0x01, 0x5c, 0xd1, 0x29, 0x30, 0xd0, 0xfb,
+ 0x29, 0x00, 0xd1, 0x00, 0x3b, 0x01, 0x48, 0x08, 0x22, 0x00, 0x18, 0xc1, 0x1c, 0x04, 0xe0, 0x01,
+ 0x54, 0xa3, 0x32, 0x01, 0x78, 0x0b, 0x31, 0x01, 0x2b, 0x00, 0xd1, 0xf9, 0x54, 0x83, 0xb0, 0x01,
+ 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x72, 0xc1, 0xe0, 0x13, 0x72, 0xc1, 0xf9,
+ 0xb5, 0x10, 0x28, 0x00, 0xd1, 0x04, 0x4a, 0x19, 0x23, 0x30, 0x70, 0x13, 0x70, 0x50, 0xe0, 0x2a,
+ 0x4a, 0x17, 0x24, 0x0f, 0x1c, 0x11, 0x39, 0x08, 0x1c, 0x03, 0x40, 0x23, 0x09, 0x00, 0x2b, 0x09,
+ 0xdd, 0x00, 0x33, 0x07, 0x33, 0x30, 0x70, 0x13, 0x3a, 0x01, 0x42, 0x8a, 0xd1, 0xf4, 0x3a, 0x0f,
+ 0x23, 0x00, 0x76, 0x13, 0x23, 0x30, 0x70, 0x13, 0x23, 0x78, 0x70, 0x53, 0x23, 0x10, 0xe0, 0x00,
+ 0x33, 0x01, 0x5c, 0xd1, 0x29, 0x30, 0xd0, 0xfb, 0x29, 0x00, 0xd1, 0x00, 0x3b, 0x01, 0x48, 0x07,
+ 0x22, 0x02, 0x18, 0xc1, 0x1c, 0x04, 0xe0, 0x01, 0x54, 0xa3, 0x32, 0x01, 0x78, 0x0b, 0x31, 0x01,
+ 0x2b, 0x00, 0xd1, 0xf9, 0x54, 0x83, 0xbc, 0x10, 0xbc, 0x01, 0x47, 0x00, 0x13, 0x72, 0xc1, 0xe0,
+ 0x13, 0x72, 0xc1, 0xf7, 0xb5, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x23, 0x00, 0x60, 0x03, 0x4b, 0x0c,
+ 0x78, 0x1b, 0x2b, 0x01, 0xd1, 0x11, 0x4b, 0x0b, 0x78, 0x1a, 0x2a, 0x10, 0xd0, 0x0d, 0x28, 0x00,
+ 0xd0, 0x04, 0x4b, 0x09, 0x32, 0x04, 0x00, 0x92, 0x58, 0xd3, 0x60, 0x03, 0x4b, 0x05, 0x4a, 0x06,
+ 0x78, 0x1b, 0x33, 0x14, 0x00, 0x9b, 0x58, 0x98, 0xe0, 0x00, 0x20, 0x00, 0xbc, 0x02, 0x47, 0x08,
+ 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x60, 0x3c, 0x13, 0x72, 0xc2, 0x00, 0xb5, 0xf0, 0x4a, 0x67,
+ 0xb0, 0x8b, 0x68, 0x13, 0x2b, 0x00, 0xd1, 0x06, 0x4b, 0x65, 0x68, 0x19, 0x69, 0x8b, 0x60, 0x13,
+ 0x6a, 0x0b, 0x4a, 0x64, 0x60, 0x13, 0x4b, 0x63, 0x4f, 0x61, 0x68, 0x1d, 0x26, 0x00, 0x1c, 0x34,
+ 0x68, 0x3b, 0x34, 0x08, 0x00, 0xa4, 0x50, 0xe5, 0x68, 0x3b, 0x21, 0x00, 0x58, 0xe0, 0x22, 0x60,
+ 0xf0, 0x04, 0xf9, 0x70, 0x68, 0x3b, 0x21, 0x60, 0x58, 0xe0, 0xf0, 0x03, 0xf9, 0xd3, 0x1c, 0x2b,
+ 0x33, 0x7f, 0x1c, 0x1d, 0x21, 0x1f, 0x36, 0x01, 0x43, 0x8d, 0x2e, 0x08, 0xd1, 0xe7, 0x24, 0x00,
+ 0x26, 0x1f, 0x1c, 0x28, 0x21, 0x00, 0x22, 0x60, 0xf0, 0x04, 0xf9, 0x5c, 0x1c, 0x28, 0x21, 0x60,
+ 0xf0, 0x03, 0xf9, 0xc0, 0x1c, 0x2b, 0x33, 0x7f, 0x1c, 0x1d, 0x34, 0x01, 0x43, 0xb5, 0x2c, 0x08,
+ 0xd1, 0xef, 0x4b, 0x4d, 0x4a, 0x4d, 0x60, 0x1d, 0x4b, 0x48, 0x92, 0x06, 0x21, 0x80, 0x22, 0xff,
+ 0x68, 0x1f, 0x05, 0xc9, 0x23, 0x00, 0x02, 0x12, 0x93, 0x08, 0x91, 0x02, 0x92, 0x01, 0x9b, 0x06,
+ 0x21, 0x00, 0x60, 0x1f, 0x22, 0x60, 0x1c, 0x38, 0xf0, 0x04, 0xf9, 0x3c, 0x1c, 0x38, 0xf0, 0x03,
+ 0xf9, 0x5b, 0x64, 0x78, 0x99, 0x06, 0x9b, 0x08, 0x68, 0x0a, 0x2b, 0x00, 0xd0, 0x01, 0x23, 0x80,
+ 0x04, 0x1b, 0x60, 0x53, 0x99, 0x06, 0x23, 0x00, 0x68, 0x0a, 0x60, 0x93, 0x68, 0x0b, 0x9a, 0x02,
+ 0x21, 0x1f, 0x61, 0x9a, 0x1c, 0x3b, 0x33, 0x7f, 0x9a, 0x06, 0x1c, 0x1f, 0x43, 0x8f, 0x68, 0x12,
+ 0x1c, 0x38, 0x92, 0x07, 0xf0, 0x03, 0xf9, 0x40, 0x1c, 0x06, 0x1c, 0x38, 0xf0, 0x03, 0xf9, 0x3c,
+ 0x1c, 0x04, 0x1c, 0x38, 0xf0, 0x03, 0xf9, 0x38, 0x1c, 0x05, 0x1c, 0x38, 0xf0, 0x03, 0xf9, 0x34,
+ 0x99, 0x01, 0x23, 0xff, 0x22, 0xff, 0x04, 0x12, 0x02, 0x1b, 0x93, 0x05, 0x40, 0x0c, 0x40, 0x15,
+ 0x23, 0xe0, 0x40, 0x1e, 0x21, 0x02, 0x02, 0x24, 0x0a, 0x2d, 0x0e, 0x00, 0x43, 0x0e, 0x43, 0x2c,
+ 0x92, 0x04, 0x43, 0x04, 0x9a, 0x07, 0x06, 0x36, 0x43, 0x34, 0x60, 0x14, 0x9b, 0x06, 0x68, 0x1a,
+ 0x23, 0x80, 0x04, 0x5b, 0x61, 0x13, 0x99, 0x06, 0x68, 0x0a, 0x61, 0x53, 0xc9, 0x01, 0x91, 0x06,
+ 0x21, 0x60, 0xf0, 0x03, 0xf9, 0x57, 0x9a, 0x08, 0x32, 0x01, 0x92, 0x08, 0x2a, 0x06, 0xd1, 0xa6,
+ 0x4b, 0x1a, 0x4f, 0x16, 0x93, 0x03, 0x69, 0x59, 0x68, 0x38, 0x91, 0x09, 0xf0, 0x03, 0xf9, 0x04,
+ 0x1c, 0x06, 0x68, 0x38, 0xf0, 0x03, 0xf9, 0x00, 0x1c, 0x04, 0x68, 0x38, 0xf0, 0x03, 0xf8, 0xfc,
+ 0x1c, 0x05, 0x68, 0x38, 0xf0, 0x03, 0xf8, 0xf8, 0x9a, 0x05, 0x9b, 0x04, 0x40, 0x14, 0x40, 0x1d,
+ 0x21, 0xe0, 0x0a, 0x2d, 0x22, 0x02, 0x40, 0x0e, 0x02, 0x24, 0x43, 0x2c, 0x43, 0x16, 0x0e, 0x00,
+ 0x9b, 0x09, 0x06, 0x36, 0x43, 0x04, 0x43, 0x34, 0x60, 0x1c, 0x99, 0x03, 0x69, 0x48, 0x21, 0x60,
+ 0xf0, 0x03, 0xf9, 0x28, 0xb0, 0x0b, 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x67, 0xcc,
+ 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0xc8, 0x13, 0x70, 0x67, 0xc4, 0x13, 0x72, 0xc0, 0x20,
+ 0xb5, 0x30, 0xb0, 0x81, 0x1c, 0x04, 0xf0, 0x03, 0xf8, 0xcf, 0x21, 0x00, 0x1c, 0x05, 0x22, 0x60,
+ 0x1c, 0x20, 0xf0, 0x04, 0xf8, 0xa7, 0x23, 0x40, 0x60, 0xa3, 0x23, 0x80, 0x04, 0x5b, 0xb0, 0x01,
+ 0x63, 0x65, 0x60, 0x23, 0x60, 0x63, 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0xb5, 0xf0, 0x4b, 0x1a,
+ 0xb0, 0x83, 0x68, 0x1d, 0x23, 0x00, 0x93, 0x01, 0x23, 0xff, 0x02, 0x1b, 0x27, 0xff, 0x26, 0x80,
+ 0x93, 0x00, 0x04, 0x3f, 0x04, 0x76, 0x1c, 0x28, 0xf7, 0xff, 0xff, 0xda, 0x9b, 0x01, 0x2b, 0x03,
+ 0xd0, 0x19, 0x1c, 0x2c, 0x23, 0x1f, 0x34, 0x7f, 0x43, 0x9c, 0x6b, 0x62, 0x1c, 0x28, 0x06, 0x13,
+ 0x0e, 0x11, 0x43, 0x19, 0x9b, 0x00, 0x60, 0x6e, 0x40, 0x13, 0x02, 0x1b, 0x40, 0x3a, 0x43, 0x19,
+ 0x0a, 0x12, 0x43, 0x11, 0x60, 0x29, 0x21, 0x60, 0xf0, 0x03, 0xf8, 0xdc, 0x9b, 0x01, 0x1c, 0x25,
+ 0x33, 0x01, 0x93, 0x01, 0xe7, 0xdf, 0x1c, 0x28, 0x21, 0x60, 0xf0, 0x03, 0xf8, 0xd3, 0xb0, 0x03,
+ 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x67, 0xc4, 0xb5, 0xf0, 0xb0, 0x83,
+ 0xf7, 0xff, 0xfe, 0xd4, 0xf7, 0xff, 0xff, 0xc2, 0x4d, 0x4b, 0x49, 0x4c, 0x68, 0x2a, 0x68, 0x0b,
+ 0x4f, 0x4b, 0x61, 0x93, 0x68, 0x2a, 0x68, 0x4b, 0x4e, 0x4a, 0x61, 0xd3, 0x68, 0x8b, 0x4a, 0x4a,
+ 0x60, 0x3b, 0x92, 0x01, 0x68, 0xcb, 0x60, 0x13, 0x69, 0x0b, 0x21, 0x60, 0x60, 0x33, 0x68, 0x2b,
+ 0x69, 0x98, 0xf0, 0x03, 0xf8, 0x97, 0x68, 0x2a, 0x69, 0x93, 0x64, 0xda, 0x68, 0x2b, 0x22, 0x00,
+ 0x69, 0x9b, 0x64, 0x9a, 0x68, 0x2b, 0x69, 0x9c, 0x1c, 0x20, 0xf0, 0x03, 0xf8, 0x5d, 0x64, 0x60,
+ 0x68, 0x33, 0x6c, 0x59, 0x68, 0x2b, 0x1c, 0x0a, 0x69, 0x98, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x1a,
+ 0x23, 0xff, 0x04, 0x1b, 0x40, 0x0b, 0x0a, 0x1b, 0x02, 0x12, 0x43, 0x1a, 0x0e, 0x0b, 0x43, 0x1a,
+ 0x23, 0xe0, 0x40, 0x19, 0x23, 0x02, 0x43, 0x19, 0x06, 0x09, 0x43, 0x0a, 0x60, 0x02, 0x68, 0x2b,
+ 0x21, 0x60, 0x69, 0x9a, 0x23, 0x80, 0x04, 0x1b, 0x60, 0x53, 0x68, 0x2b, 0x22, 0x00, 0x69, 0x9b,
+ 0x60, 0x9a, 0x68, 0x2b, 0x69, 0x9a, 0x23, 0x80, 0x05, 0xdb, 0x61, 0x93, 0x68, 0x2b, 0x69, 0x9a,
+ 0x23, 0x80, 0x04, 0x5b, 0x61, 0x13, 0x68, 0x2a, 0x69, 0x92, 0x61, 0x53, 0x68, 0x2b, 0x69, 0x98,
+ 0xf0, 0x03, 0xf8, 0x70, 0x68, 0x2b, 0x21, 0x60, 0x69, 0xd8, 0xf0, 0x03, 0xf8, 0x53, 0x68, 0x2a,
+ 0x69, 0xd3, 0x64, 0xda, 0x68, 0x2b, 0x22, 0x00, 0x69, 0xdb, 0x64, 0x9a, 0x68, 0x2b, 0x69, 0xdc,
+ 0x1c, 0x20, 0xf0, 0x03, 0xf8, 0x19, 0x64, 0x60, 0x68, 0x38, 0x21, 0x60, 0xf0, 0x03, 0xf8, 0x42,
+ 0x68, 0x3a, 0x68, 0x2b, 0x64, 0xd3, 0x68, 0x3b, 0x22, 0x00, 0x64, 0x9a, 0x68, 0x3c, 0x1c, 0x20,
+ 0xf0, 0x03, 0xf8, 0x0a, 0x64, 0x60, 0x68, 0x38, 0x21, 0x60, 0xf0, 0x03, 0xf8, 0x4b, 0x9b, 0x01,
+ 0x21, 0x60, 0x68, 0x18, 0xf0, 0x03, 0xf8, 0x2e, 0x9b, 0x01, 0x68, 0x1a, 0x68, 0x2b, 0x64, 0xd3,
+ 0x9a, 0x01, 0x68, 0x13, 0x22, 0x00, 0x64, 0x9a, 0x9b, 0x01, 0x68, 0x1c, 0x1c, 0x20, 0xf0, 0x02,
+ 0xff, 0xf3, 0x64, 0x60, 0x9a, 0x01, 0x21, 0x60, 0x68, 0x10, 0xf0, 0x03, 0xf8, 0x33, 0xb0, 0x03,
+ 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x34, 0x13, 0x72, 0xc0, 0x20,
+ 0x13, 0x70, 0x67, 0x7c, 0x13, 0x70, 0x67, 0x84, 0x13, 0x70, 0x67, 0x80, 0xb5, 0xf0, 0x4c, 0x23,
+ 0x4b, 0x23, 0xb0, 0x81, 0x60, 0x23, 0xf0, 0x03, 0xf8, 0x35, 0x28, 0x00, 0xda, 0x02, 0x20, 0x01,
+ 0x42, 0x40, 0xe0, 0x37, 0xf0, 0x03, 0xf9, 0x80, 0x60, 0x20, 0x68, 0x82, 0x4b, 0x1d, 0x21, 0x01,
+ 0x60, 0x13, 0x68, 0x20, 0x68, 0x82, 0x68, 0x13, 0x42, 0x0b, 0xd1, 0xfc, 0x21, 0xfc, 0xf0, 0x03,
+ 0xf8, 0x09, 0x27, 0x80, 0x26, 0x80, 0x4c, 0x15, 0x25, 0x00, 0x04, 0x7f, 0x01, 0x76, 0x68, 0x23,
+ 0x21, 0x04, 0x6c, 0xdb, 0x51, 0x5f, 0x68, 0x23, 0x6c, 0xdb, 0x59, 0x58, 0x35, 0x04, 0xf0, 0x02,
+ 0xff, 0xf9, 0x42, 0xb5, 0xd1, 0xf3, 0xf7, 0xff, 0xff, 0x29, 0x68, 0x23, 0x22, 0x01, 0x33, 0x54,
+ 0x70, 0x1a, 0x68, 0x23, 0x20, 0x00, 0x68, 0x9a, 0x69, 0x9b, 0x6c, 0x5b, 0x61, 0x93, 0x68, 0x23,
+ 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0x68, 0x23, 0x68, 0x9a, 0x4b, 0x07, 0x60, 0x13, 0x68, 0x23,
+ 0x68, 0x9b, 0x68, 0x1b, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x34,
+ 0x13, 0x72, 0xc2, 0xa4, 0x00, 0x01, 0x00, 0x20, 0x00, 0x01, 0x00, 0x21, 0xb5, 0x10, 0x4b, 0x0c,
+ 0x68, 0x18, 0x6c, 0x01, 0x29, 0x07, 0xdd, 0x01, 0x24, 0x00, 0xe0, 0x0d, 0x4b, 0x09, 0x68, 0x1b,
+ 0x00, 0xdb, 0x18, 0x5b, 0x00, 0x5a, 0x18, 0xd2, 0x6a, 0x03, 0x01, 0x52, 0x18, 0x9c, 0x1c, 0x4b,
+ 0x64, 0x03, 0x1c, 0x20, 0xf7, 0xff, 0xfe, 0xa4, 0x1c, 0x20, 0xbc, 0x10, 0xbc, 0x02, 0x47, 0x08,
+ 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x70, 0xb5, 0xf0, 0xb0, 0x8d, 0x1c, 0x05, 0xf7, 0xff,
+ 0xff, 0xdd, 0x90, 0x08, 0x28, 0x00, 0xd1, 0x00, 0xe0, 0xad, 0x63, 0xc5, 0x23, 0x00, 0x61, 0x6b,
+ 0x7e, 0x6b, 0x69, 0x2a, 0x93, 0x07, 0x7e, 0x2b, 0x92, 0x0a, 0x2b, 0x00, 0xd0, 0x02, 0x9c, 0x08,
+ 0x26, 0x80, 0xe0, 0x26, 0x23, 0x08, 0x93, 0x00, 0x23, 0xa0, 0x68, 0x69, 0x22, 0x08, 0x00, 0x9b,
+ 0x98, 0x08, 0xf7, 0xff, 0xfb, 0x57, 0xf7, 0xff, 0xff, 0xc1, 0x1c, 0x04, 0x28, 0x00, 0xd1, 0x00,
+ 0xe0, 0x91, 0x6b, 0x42, 0x63, 0xc5, 0x06, 0x13, 0x0e, 0x11, 0x43, 0x19, 0x23, 0xff, 0x02, 0x1b,
+ 0x40, 0x13, 0x02, 0x1b, 0x43, 0x19, 0x23, 0xff, 0x04, 0x1b, 0x40, 0x1a, 0x0a, 0x12, 0x43, 0x11,
+ 0x9a, 0x08, 0x60, 0x11, 0x63, 0x90, 0x9b, 0x0a, 0x2b, 0x00, 0xd1, 0x01, 0x4e, 0x40, 0xe0, 0x00,
+ 0x4e, 0x40, 0x68, 0xea, 0x9b, 0x07, 0x92, 0x09, 0x2b, 0x00, 0xd0, 0x02, 0x23, 0x80, 0x00, 0x5b,
+ 0x43, 0x1e, 0x69, 0xea, 0x4b, 0x3c, 0x27, 0xff, 0x40, 0x13, 0x93, 0x0b, 0x3b, 0x01, 0x22, 0x80,
+ 0x93, 0x04, 0x23, 0xff, 0x04, 0x52, 0x02, 0x1b, 0x92, 0x05, 0x93, 0x03, 0x04, 0x3f, 0x9a, 0x0b,
+ 0x1c, 0x33, 0x92, 0x00, 0x1c, 0x20, 0x9a, 0x0a, 0x99, 0x09, 0xf7, 0xff, 0xfb, 0x1b, 0x9b, 0x0a,
+ 0x9a, 0x09, 0x1a, 0x1b, 0x93, 0x0a, 0x9b, 0x07, 0x18, 0x12, 0x92, 0x09, 0x2b, 0x00, 0xd0, 0x01,
+ 0x9a, 0x05, 0x60, 0x62, 0x9a, 0x04, 0x18, 0x13, 0x9a, 0x0b, 0x42, 0x13, 0xd1, 0x01, 0x4b, 0x2b,
+ 0x18, 0xf6, 0x9a, 0x0a, 0x2a, 0x00, 0xdd, 0x13, 0xf7, 0xff, 0xff, 0x70, 0x28, 0x00, 0xd0, 0x42,
+ 0x6b, 0x42, 0x63, 0xc5, 0x06, 0x13, 0x0e, 0x11, 0x43, 0x19, 0x9b, 0x03, 0x63, 0xa0, 0x40, 0x13,
+ 0x02, 0x1b, 0x40, 0x3a, 0x43, 0x19, 0x0a, 0x12, 0x43, 0x11, 0x60, 0x21, 0x1c, 0x04, 0xe7, 0xce,
+ 0x23, 0x80, 0x04, 0x5b, 0x60, 0x63, 0x69, 0x2b, 0x1c, 0x27, 0x2b, 0x00, 0xd0, 0x24, 0x7e, 0x2b,
+ 0x93, 0x06, 0x2b, 0x00, 0xd1, 0x20, 0xf7, 0xff, 0xff, 0x51, 0x1c, 0x04, 0x28, 0x00, 0xd0, 0x22,
+ 0x6b, 0x42, 0x63, 0xc5, 0x06, 0x13, 0x0e, 0x11, 0x43, 0x19, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x13,
+ 0x02, 0x1b, 0x43, 0x19, 0x23, 0xff, 0x04, 0x1b, 0x40, 0x1a, 0x0a, 0x12, 0x23, 0x80, 0x43, 0x11,
+ 0x00, 0x5b, 0x4a, 0x0e, 0x60, 0x39, 0x63, 0xb8, 0x40, 0x73, 0x43, 0x13, 0x9a, 0x06, 0x21, 0x00,
+ 0x92, 0x00, 0x22, 0x00, 0xf7, 0xff, 0xfa, 0xc6, 0x68, 0xa3, 0x22, 0x80, 0x04, 0x12, 0x43, 0x13,
+ 0x60, 0xa3, 0x98, 0x08, 0xe0, 0x00, 0x20, 0x00, 0xb0, 0x0d, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
+ 0x80, 0x00, 0x01, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x07, 0xff, 0x80, 0x00, 0x00, 0x00,
+ 0xb5, 0xf0, 0x7c, 0x83, 0x7c, 0xc2, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7d, 0x03, 0xb0, 0x85,
+ 0x02, 0x1b, 0x43, 0x13, 0x7d, 0x42, 0x1c, 0x06, 0x43, 0x1a, 0xd0, 0x67, 0x22, 0x00, 0x92, 0x01,
+ 0xe0, 0x53, 0x06, 0x0b, 0x04, 0x12, 0x43, 0x1a, 0x02, 0x23, 0x43, 0x13, 0x9a, 0x03, 0x43, 0x03,
+ 0x18, 0x9d, 0x7a, 0x6b, 0x7a, 0xaa, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7a, 0xeb, 0x02, 0x1b,
+ 0x43, 0x13, 0x7b, 0x2a, 0x43, 0x1a, 0xd0, 0x3b, 0x23, 0x00, 0x93, 0x02, 0x27, 0x00, 0xe0, 0x26,
+ 0x06, 0x0b, 0x04, 0x12, 0x43, 0x1a, 0x02, 0x23, 0x43, 0x13, 0x43, 0x03, 0x19, 0xdc, 0x7b, 0xa3,
+ 0x7b, 0xe2, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7c, 0x23, 0x02, 0x1b, 0x43, 0x13, 0x7c, 0x62,
+ 0x1c, 0x10, 0x43, 0x18, 0xd0, 0x01, 0xf0, 0x02, 0xfe, 0x71, 0x7a, 0x63, 0x7a, 0xa2, 0x06, 0x1b,
+ 0x04, 0x12, 0x43, 0x1a, 0x7a, 0xe3, 0x02, 0x1b, 0x43, 0x13, 0x7b, 0x22, 0x1c, 0x10, 0x43, 0x18,
+ 0xd0, 0x01, 0xf0, 0x02, 0xfe, 0x63, 0x9a, 0x02, 0x37, 0x12, 0x32, 0x01, 0x92, 0x02, 0x79, 0x2b,
+ 0x7a, 0x69, 0x46, 0x9c, 0x9b, 0x02, 0x7a, 0xaa, 0x7a, 0xec, 0x7b, 0x28, 0x45, 0x63, 0xdb, 0xcf,
+ 0x06, 0x0b, 0x04, 0x12, 0x43, 0x1a, 0x02, 0x23, 0x43, 0x13, 0x43, 0x18, 0xf0, 0x02, 0xfe, 0x4e,
+ 0x9d, 0x01, 0x9a, 0x03, 0x35, 0x01, 0x95, 0x01, 0x32, 0x0d, 0x7c, 0x73, 0x9d, 0x01, 0x92, 0x03,
+ 0x7c, 0xb1, 0x7c, 0xf2, 0x7d, 0x34, 0x7d, 0x70, 0x42, 0x9d, 0xdb, 0xa2, 0x06, 0x0b, 0x04, 0x12,
+ 0x43, 0x1a, 0x02, 0x23, 0x43, 0x13, 0x43, 0x18, 0xf0, 0x02, 0xfe, 0x38, 0xb0, 0x05, 0xbc, 0xf0,
+ 0xbc, 0x01, 0x47, 0x00, 0xb4, 0x0f, 0xb5, 0xf0, 0xb0, 0x83, 0x46, 0x6a, 0x23, 0x80, 0xad, 0x08,
+ 0x32, 0x06, 0x01, 0x9b, 0xcd, 0x10, 0x80, 0x13, 0x4e, 0x1d, 0xe0, 0x30, 0x1c, 0x67, 0x2b, 0x25,
+ 0xd0, 0x07, 0x46, 0x6a, 0x46, 0x68, 0x71, 0x93, 0x30, 0x06, 0x1c, 0x3c, 0xf7, 0xfe, 0xfa, 0x4c,
+ 0xe0, 0x25, 0x78, 0x63, 0x2b, 0x73, 0xd0, 0x1c, 0x2b, 0x73, 0xd8, 0x04, 0x2b, 0x64, 0xd0, 0x07,
+ 0x2b, 0x69, 0xd1, 0x1b, 0xe0, 0x04, 0x2b, 0x75, 0xd0, 0x07, 0x2b, 0x78, 0xd1, 0x16, 0xe0, 0x0a,
+ 0x68, 0x28, 0x1d, 0x2c, 0xf7, 0xff, 0xfb, 0x72, 0xe0, 0x09, 0x68, 0x28, 0xf7, 0xff, 0xfb, 0xba,
+ 0x1d, 0x2c, 0x1c, 0x30, 0xe0, 0x07, 0x68, 0x28, 0x1d, 0x2c, 0xf7, 0xff, 0xfb, 0xf1, 0x48, 0x08,
+ 0xe0, 0x01, 0x68, 0x28, 0x1d, 0x2c, 0xf7, 0xfe, 0xfa, 0x27, 0x1c, 0x25, 0x1c, 0x7c, 0x78, 0x23,
+ 0x2b, 0x00, 0xd1, 0xcb, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x08, 0xb0, 0x04, 0x47, 0x18, 0x46, 0xc0,
+ 0x13, 0x72, 0xc1, 0xe0, 0xb5, 0xf0, 0x4b, 0x32, 0xb0, 0x8f, 0x68, 0x1b, 0x1c, 0x01, 0x68, 0x9a,
+ 0x4b, 0x30, 0x68, 0x54, 0x68, 0x1b, 0x32, 0x44, 0x00, 0x9b, 0x18, 0xd2, 0x68, 0x12, 0x48, 0x2e,
+ 0x92, 0x0d, 0xf7, 0xff, 0xff, 0xa7, 0x04, 0x20, 0xd4, 0x02, 0x49, 0x2c, 0x91, 0x0a, 0xe0, 0x01,
+ 0x4b, 0x2b, 0x93, 0x0a, 0x04, 0x60, 0xd4, 0x02, 0x49, 0x28, 0x91, 0x0b, 0xe0, 0x01, 0x4b, 0x29,
+ 0x93, 0x0b, 0x04, 0xa0, 0xd4, 0x02, 0x49, 0x25, 0x91, 0x0c, 0xe0, 0x01, 0x4b, 0x26, 0x93, 0x0c,
+ 0x04, 0xe0, 0xd4, 0x02, 0x49, 0x21, 0x46, 0x8c, 0xe0, 0x01, 0x4b, 0x24, 0x46, 0x9c, 0x06, 0xa0,
+ 0xd4, 0x01, 0x4f, 0x1e, 0xe0, 0x00, 0x4f, 0x22, 0x06, 0xe1, 0xd4, 0x01, 0x4e, 0x1b, 0xe0, 0x00,
+ 0x4e, 0x20, 0x07, 0x23, 0xd4, 0x01, 0x4d, 0x19, 0xe0, 0x00, 0x4d, 0x1f, 0x07, 0x60, 0xd4, 0x01,
+ 0x4a, 0x16, 0xe0, 0x00, 0x4a, 0x1d, 0x07, 0xa1, 0xd4, 0x01, 0x4b, 0x14, 0xe0, 0x00, 0x4b, 0x1c,
+ 0x07, 0xe0, 0xd4, 0x01, 0x49, 0x11, 0xe0, 0x00, 0x49, 0x1a, 0x48, 0x1b, 0x92, 0x05, 0x90, 0x09,
+ 0x98, 0x0c, 0x9a, 0x0a, 0x90, 0x00, 0x46, 0x60, 0x90, 0x01, 0x93, 0x06, 0x91, 0x07, 0x9b, 0x0b,
+ 0x98, 0x09, 0x1c, 0x21, 0x97, 0x02, 0x96, 0x03, 0x95, 0x04, 0xf7, 0xff, 0xff, 0x5b, 0x99, 0x0d,
+ 0x48, 0x12, 0xf7, 0xff, 0xff, 0x57, 0xb0, 0x0f, 0xbc, 0xf0, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0,
+ 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x78, 0x13, 0x70, 0x60, 0x85, 0x13, 0x70, 0x66, 0x42,
+ 0x13, 0x70, 0x60, 0x9b, 0x13, 0x70, 0x60, 0xa2, 0x13, 0x70, 0x60, 0xac, 0x13, 0x70, 0x60, 0xb2,
+ 0x13, 0x70, 0x60, 0xb8, 0x13, 0x70, 0x60, 0xbd, 0x13, 0x70, 0x60, 0xc4, 0x13, 0x70, 0x60, 0xc9,
+ 0x13, 0x70, 0x60, 0xce, 0x13, 0x70, 0x60, 0xd3, 0x13, 0x70, 0x60, 0xd8, 0x13, 0x70, 0x60, 0xfd,
+ 0xb5, 0x30, 0x4b, 0x0b, 0xb0, 0x81, 0x68, 0x1a, 0x25, 0x20, 0x68, 0x92, 0x1c, 0x1c, 0x68, 0x12,
+ 0x68, 0x23, 0x43, 0x2a, 0x68, 0x9b, 0x20, 0x0a, 0x60, 0x1a, 0xf7, 0xff, 0xf9, 0x2b, 0x68, 0x23,
+ 0x68, 0x9b, 0x68, 0x1a, 0x42, 0x2a, 0xd0, 0xf3, 0xb0, 0x01, 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00,
+ 0x13, 0x70, 0x60, 0x34, 0xb5, 0x30, 0x4b, 0x0b, 0xb0, 0x81, 0x68, 0x1a, 0x25, 0x20, 0x68, 0x92,
+ 0x1c, 0x1c, 0x68, 0x12, 0x68, 0x23, 0x43, 0xaa, 0x68, 0x9b, 0x20, 0x0a, 0x60, 0x1a, 0xf7, 0xff,
+ 0xf9, 0x11, 0x68, 0x23, 0x68, 0x9b, 0x68, 0x1a, 0x42, 0x2a, 0xd1, 0xf3, 0xb0, 0x01, 0xbc, 0x30,
+ 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x60, 0x34, 0xb5, 0xf0, 0xb0, 0x81, 0x1c, 0x0e, 0x28, 0x00,
+ 0xd1, 0x18, 0x4e, 0x18, 0x4d, 0x18, 0x4f, 0x19, 0x24, 0x00, 0x68, 0x33, 0x68, 0x9b, 0x69, 0x9a,
+ 0x69, 0x2b, 0x6c, 0x5b, 0x42, 0x9a, 0xd3, 0x06, 0x69, 0x6b, 0x6c, 0x5b, 0x42, 0x9a, 0xd8, 0x02,
+ 0xf7, 0xff, 0xff, 0xd0, 0xe0, 0x18, 0x20, 0x0a, 0x34, 0x01, 0xf7, 0xff, 0xf8, 0xeb, 0x42, 0xbc,
+ 0xd1, 0xeb, 0xe0, 0x11, 0x28, 0x01, 0xd1, 0x0f, 0x24, 0x00, 0x4d, 0x0a, 0x4f, 0x0b, 0xe0, 0x05,
+ 0x20, 0x0a, 0x34, 0x01, 0xf7, 0xff, 0xf8, 0xde, 0x42, 0xbc, 0xd0, 0x05, 0x68, 0x2b, 0x68, 0x9b,
+ 0x69, 0x9a, 0x6c, 0x73, 0x42, 0x9a, 0xd0, 0xf3, 0xb0, 0x01, 0x20, 0x00, 0xbc, 0xf0, 0xbc, 0x02,
+ 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x34, 0x13, 0x72, 0xc0, 0x20, 0x00, 0x00, 0x13, 0x88,
+ 0xb5, 0xf0, 0xb0, 0x83, 0x1c, 0x1f, 0x4b, 0x0f, 0x92, 0x00, 0x91, 0x01, 0x9a, 0x08, 0x68, 0x1c,
+ 0x00, 0x55, 0x1c, 0x1e, 0x20, 0x0a, 0xf7, 0xff, 0xf8, 0xbd, 0x9a, 0x01, 0x68, 0x13, 0x9a, 0x00,
+ 0x40, 0x13, 0x42, 0xbb, 0xd1, 0x01, 0x20, 0x00, 0xe0, 0x07, 0x68, 0x33, 0x1b, 0x1b, 0xd5, 0x00,
+ 0x68, 0x34, 0x42, 0xab, 0xd3, 0xee, 0x20, 0x02, 0x42, 0x40, 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x02,
+ 0x47, 0x08, 0x46, 0xc0, 0x0d, 0x80, 0x00, 0x10, 0xb5, 0x10, 0x4b, 0x13, 0x30, 0x10, 0x68, 0x1b,
+ 0x00, 0x80, 0x68, 0x9b, 0x18, 0x1c, 0x68, 0x62, 0x23, 0x80, 0x01, 0x9b, 0x42, 0x1a, 0xd1, 0x00,
+ 0x40, 0x5a, 0x23, 0x2e, 0x43, 0x9a, 0x60, 0x62, 0x20, 0x05, 0xf7, 0xfe, 0xff, 0x2b, 0x23, 0x80,
+ 0x68, 0x62, 0x01, 0x9b, 0x42, 0x1a, 0xd0, 0x00, 0x40, 0x5a, 0x23, 0x2e, 0x43, 0x9a, 0x60, 0x62,
+ 0x20, 0x05, 0xf7, 0xfe, 0xff, 0x1f, 0x4b, 0x05, 0x20, 0x05, 0x60, 0x63, 0xf7, 0xfe, 0xff, 0x1a,
+ 0xbc, 0x10, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x18, 0x01,
+ 0xb5, 0xf0, 0x4b, 0x29, 0xb0, 0x85, 0x68, 0x1a, 0x1c, 0x03, 0x68, 0x92, 0x33, 0x10, 0x00, 0x9b,
+ 0x18, 0xd2, 0x92, 0x03, 0x1c, 0x15, 0x4b, 0x25, 0x68, 0x52, 0x35, 0x04, 0x40, 0x13, 0x2b, 0x01,
+ 0xd0, 0x06, 0x04, 0x91, 0xd5, 0x01, 0xf7, 0xff, 0xff, 0xbf, 0x24, 0x01, 0x42, 0x64, 0xe0, 0x36,
+ 0x26, 0x88, 0x27, 0x00, 0x01, 0x76, 0x21, 0x04, 0x1c, 0x13, 0x43, 0x8b, 0x43, 0x33, 0x60, 0x2b,
+ 0x20, 0x3c, 0xf7, 0xff, 0xf8, 0x79, 0x68, 0x2b, 0x4a, 0x19, 0x20, 0x32, 0x40, 0x13, 0x60, 0x2b,
+ 0xf7, 0xff, 0xf8, 0x72, 0x4b, 0x17, 0x22, 0x80, 0x93, 0x00, 0x1c, 0x28, 0x1c, 0x29, 0x00, 0x52,
+ 0x23, 0x00, 0xf7, 0xff, 0xff, 0x7d, 0x1c, 0x04, 0x28, 0x00, 0xd0, 0x03, 0x9b, 0x03, 0x4c, 0x12,
+ 0x68, 0x5a, 0xe0, 0x14, 0x68, 0x2a, 0x21, 0x04, 0x42, 0x0a, 0xd1, 0x02, 0x37, 0x01, 0x2f, 0x04,
+ 0xd1, 0xd9, 0x07, 0x53, 0xd4, 0x0b, 0x23, 0x80, 0x01, 0x9b, 0x43, 0x13, 0x99, 0x03, 0x22, 0x2a,
+ 0x43, 0x93, 0x60, 0x4b, 0x20, 0x0a, 0xf7, 0xff, 0xf8, 0x4f, 0x9b, 0x03, 0x68, 0x5a, 0xb0, 0x05,
+ 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x20, 0x01,
+ 0xff, 0xff, 0xfe, 0xd5, 0x00, 0x00, 0x13, 0x88, 0xff, 0xff, 0xf8, 0x30, 0xb5, 0xf0, 0xb0, 0x85,
+ 0x90, 0x01, 0x1c, 0x0f, 0x20, 0x00, 0x21, 0x00, 0xf7, 0xff, 0xff, 0x0e, 0x7e, 0x3a, 0x2a, 0x00,
+ 0xd1, 0x06, 0x4b, 0xc2, 0x21, 0x08, 0x60, 0x1a, 0x68, 0x38, 0xf0, 0x02, 0xfc, 0x8b, 0x60, 0x78,
+ 0x69, 0x39, 0x29, 0x00, 0xd0, 0x09, 0x7e, 0x7b, 0x68, 0xb8, 0x2b, 0x00, 0xd0, 0x02, 0xf0, 0x02,
+ 0xfc, 0x81, 0xe0, 0x01, 0xf0, 0x02, 0xfc, 0x76, 0x60, 0xf8, 0x7e, 0x3b, 0x2b, 0x00, 0xd1, 0x03,
+ 0x4b, 0xb7, 0x68, 0x1b, 0x69, 0xdb, 0xe0, 0x06, 0x7e, 0x7b, 0x2b, 0x00, 0xd0, 0x01, 0x4b, 0xb5,
+ 0xe0, 0x00, 0x4b, 0xb5, 0x68, 0x1b, 0x93, 0x02, 0x4c, 0xb4, 0x4b, 0xb5, 0x98, 0x02, 0x99, 0x02,
+ 0x60, 0x18, 0x22, 0x60, 0x1c, 0x20, 0xf0, 0x02, 0xfd, 0x87, 0x21, 0x00, 0x22, 0x30, 0x98, 0x02,
+ 0xf0, 0x03, 0xfb, 0xe8, 0x4b, 0xaa, 0x49, 0xaf, 0x68, 0x1a, 0x23, 0x00, 0x64, 0x13, 0x68, 0x0b,
+ 0x22, 0x01, 0x40, 0x53, 0x60, 0x0b, 0x1c, 0x38, 0xf7, 0xff, 0xfc, 0x8e, 0x4b, 0xaa, 0x64, 0xa0,
+ 0x60, 0x18, 0x1c, 0x06, 0x98, 0x01, 0x22, 0x80, 0x69, 0x83, 0x7e, 0x39, 0x01, 0x92, 0x43, 0x1a,
+ 0x23, 0x0f, 0x40, 0x0b, 0x02, 0x1b, 0x1c, 0x10, 0x69, 0xfc, 0x43, 0x18, 0x29, 0x00, 0xd1, 0x03,
+ 0x4b, 0xa2, 0x1c, 0x01, 0x43, 0x19, 0xe0, 0x08, 0x4b, 0xa1, 0x1c, 0x22, 0x40, 0x1a, 0x23, 0x80,
+ 0x04, 0x12, 0x05, 0xdb, 0x43, 0x1a, 0x1c, 0x11, 0x43, 0x01, 0x06, 0x0b, 0x0e, 0x0a, 0x24, 0xff,
+ 0x02, 0x24, 0x43, 0x1a, 0x1c, 0x0b, 0x40, 0x23, 0x02, 0x1b, 0x20, 0xff, 0x04, 0x00, 0x43, 0x1a,
+ 0x1c, 0x0b, 0x40, 0x03, 0x4d, 0x91, 0x0a, 0x1b, 0x43, 0x1a, 0x23, 0x40, 0x60, 0xab, 0x4b, 0x95,
+ 0x60, 0x6a, 0x68, 0x1b, 0x6c, 0x5a, 0x1c, 0x11, 0x1c, 0x13, 0x40, 0x21, 0x40, 0x03, 0x0a, 0x1b,
+ 0x02, 0x09, 0x43, 0x19, 0x0e, 0x13, 0x43, 0x19, 0x23, 0xe0, 0x40, 0x1a, 0x23, 0x02, 0x43, 0x1a,
+ 0x06, 0x12, 0x43, 0x11, 0x60, 0x29, 0x6b, 0x72, 0x06, 0x13, 0x0e, 0x11, 0x43, 0x19, 0x1c, 0x13,
+ 0x40, 0x23, 0x02, 0x1b, 0x40, 0x02, 0x43, 0x19, 0x0a, 0x12, 0x23, 0x80, 0x43, 0x11, 0x04, 0x5b,
+ 0x61, 0x29, 0x61, 0x6b, 0x7e, 0x3a, 0x2a, 0x00, 0xd0, 0x17, 0x9b, 0x01, 0x6a, 0x58, 0x06, 0x13,
+ 0x2b, 0x00, 0xdb, 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x10, 0x23, 0x0f, 0x40, 0x13, 0x18, 0xcb,
+ 0x40, 0xd8, 0x1c, 0x03, 0x49, 0x75, 0x07, 0xd8, 0xd5, 0x03, 0x69, 0x8b, 0x22, 0x80, 0x43, 0x13,
+ 0xe0, 0x02, 0x69, 0x8b, 0x22, 0x80, 0x43, 0x93, 0x61, 0x8b, 0x4b, 0x70, 0x49, 0x76, 0x69, 0x9a,
+ 0x6c, 0x9e, 0x40, 0x0a, 0x61, 0x9a, 0xe0, 0x04, 0x1c, 0x30, 0x21, 0x60, 0xf0, 0x02, 0xfb, 0xca,
+ 0x6b, 0xb6, 0x2e, 0x00, 0xd1, 0xf8, 0x4d, 0x69, 0x98, 0x02, 0x1c, 0x29, 0x22, 0x60, 0xf0, 0x02,
+ 0xfd, 0x03, 0x4a, 0x6e, 0x23, 0x01, 0x92, 0x00, 0x60, 0x13, 0x4b, 0x6d, 0x48, 0x6d, 0x68, 0x19,
+ 0xf7, 0xfe, 0xfd, 0x88, 0x4c, 0x5e, 0x21, 0x20, 0x68, 0x23, 0x69, 0x98, 0xf0, 0x02, 0xfb, 0x9a,
+ 0x68, 0x23, 0x6c, 0x69, 0x69, 0x98, 0x23, 0xff, 0x02, 0x1b, 0x1c, 0x0a, 0x40, 0x1a, 0x23, 0xff,
+ 0x04, 0x1b, 0x40, 0x0b, 0x0a, 0x1b, 0x02, 0x12, 0x43, 0x1a, 0x0e, 0x0b, 0x43, 0x1a, 0x23, 0xe0,
+ 0x40, 0x19, 0x23, 0x02, 0x43, 0x19, 0x06, 0x09, 0x43, 0x0a, 0x60, 0x02, 0x68, 0x23, 0x21, 0x20,
+ 0x69, 0x98, 0xf0, 0x02, 0xfb, 0x97, 0xf7, 0xff, 0xfd, 0xeb, 0xf7, 0xfe, 0xfd, 0x2b, 0x9b, 0x00,
+ 0x90, 0x03, 0x60, 0x1e, 0x28, 0x00, 0xd1, 0x03, 0x4b, 0x48, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x0f,
+ 0x4b, 0x47, 0x68, 0x1b, 0x68, 0x9a, 0x4b, 0x54, 0x32, 0x44, 0x68, 0x1b, 0x00, 0x9b, 0x18, 0xd2,
+ 0x68, 0x13, 0x22, 0x05, 0x40, 0x13, 0x2b, 0x05, 0xd0, 0x02, 0x4a, 0x40, 0x23, 0x01, 0x60, 0x13,
+ 0x98, 0x03, 0x42, 0x46, 0x41, 0x46, 0x2e, 0x00, 0xd1, 0x01, 0x30, 0x05, 0xd1, 0x4f, 0xf7, 0xff,
+ 0xfd, 0xe1, 0x4c, 0x3b, 0x21, 0x20, 0x68, 0x23, 0x69, 0x98, 0xf7, 0xfd, 0xff, 0x4d, 0x68, 0x23,
+ 0x21, 0x20, 0x69, 0x98, 0xf0, 0x02, 0xfb, 0x1e, 0x4b, 0x3e, 0x68, 0x1b, 0x6c, 0x59, 0x68, 0x23,
+ 0x1c, 0x0a, 0x69, 0x98, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x1a, 0x23, 0xff, 0x04, 0x1b, 0x40, 0x0b,
+ 0x0a, 0x1b, 0x02, 0x12, 0x43, 0x1a, 0x0e, 0x0b, 0x43, 0x1a, 0x23, 0xe0, 0x40, 0x19, 0x23, 0x02,
+ 0x43, 0x19, 0x06, 0x09, 0x43, 0x0a, 0x60, 0x02, 0x68, 0x23, 0x21, 0x20, 0x69, 0x98, 0xf7, 0xfd,
+ 0xff, 0x4b, 0xf7, 0xff, 0xfd, 0x9d, 0x7e, 0x3a, 0x2a, 0x00, 0xd1, 0x00, 0xe0, 0x9f, 0x9b, 0x01,
+ 0x1c, 0x14, 0x6a, 0x5d, 0x23, 0x0f, 0x40, 0x1c, 0x06, 0x13, 0x2b, 0x00, 0xdb, 0x01, 0x20, 0x00,
+ 0xe0, 0x00, 0x20, 0x10, 0x4b, 0x2d, 0x68, 0x19, 0x06, 0x13, 0x2b, 0x00, 0xdb, 0x01, 0x22, 0x00,
+ 0xe0, 0x00, 0x22, 0x10, 0x09, 0xcb, 0x21, 0x01, 0x40, 0x0b, 0x19, 0x12, 0x40, 0x93, 0x19, 0x02,
+ 0x40, 0x91, 0x1c, 0x2a, 0x43, 0x8a, 0x98, 0x01, 0x43, 0x13, 0x62, 0x43, 0xe0, 0x7f, 0xf7, 0xff,
+ 0xfd, 0x91, 0x4b, 0x16, 0x6c, 0x9c, 0xe0, 0x04, 0x6b, 0x60, 0x21, 0x60, 0xf0, 0x02, 0xfb, 0x02,
+ 0x6b, 0xa4, 0x2c, 0x00, 0xd1, 0xf8, 0x22, 0x20, 0x48, 0x10, 0x99, 0x02, 0xf0, 0x02, 0xfc, 0x44,
+ 0x7e, 0x3a, 0x2a, 0x00, 0xd0, 0x41, 0x9b, 0x01, 0x1c, 0x14, 0x6a, 0x5d, 0x23, 0x0f, 0x40, 0x1c,
+ 0x06, 0x13, 0x2b, 0x00, 0xdb, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x10, 0x4b, 0x07, 0x69, 0x99,
+ 0x06, 0x13, 0x2b, 0x00, 0xdb, 0x24, 0x22, 0x00, 0xe0, 0x23, 0x46, 0xc0, 0x13, 0x70, 0x67, 0x6c,
+ 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x7c, 0x13, 0x70, 0x67, 0x80, 0x13, 0x72, 0xc1, 0x80,
+ 0x13, 0x70, 0x67, 0x8c, 0x13, 0x70, 0x67, 0x70, 0x13, 0x70, 0x67, 0x88, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x00, 0x07, 0xff, 0x13, 0x70, 0x67, 0x84, 0x01, 0x00, 0x00, 0x80, 0x13, 0x70, 0x67, 0x74,
+ 0x13, 0x70, 0x60, 0x38, 0x13, 0x70, 0x48, 0x25, 0x13, 0x70, 0x67, 0x78, 0x13, 0x70, 0x67, 0x90,
+ 0x22, 0x10, 0x09, 0xcb, 0x21, 0x01, 0x40, 0x0b, 0x19, 0x12, 0x40, 0x93, 0x19, 0x02, 0x40, 0x91,
+ 0x1c, 0x2a, 0x43, 0x8a, 0x98, 0x01, 0x43, 0x13, 0x62, 0x43, 0x4c, 0x25, 0x21, 0x20, 0x68, 0x23,
+ 0x69, 0x98, 0xf7, 0xfd, 0xfe, 0xa9, 0x68, 0x23, 0x21, 0x20, 0x69, 0x98, 0xf0, 0x02, 0xfa, 0x7a,
+ 0x4b, 0x20, 0x68, 0x1b, 0x6c, 0x59, 0x68, 0x23, 0x1c, 0x0a, 0x69, 0x98, 0x23, 0xff, 0x02, 0x1b,
+ 0x40, 0x1a, 0x23, 0xff, 0x04, 0x1b, 0x40, 0x0b, 0x0a, 0x1b, 0x02, 0x12, 0x43, 0x1a, 0x0e, 0x0b,
+ 0x43, 0x1a, 0x23, 0xe0, 0x40, 0x19, 0x23, 0x02, 0x43, 0x19, 0x06, 0x09, 0x43, 0x0a, 0x60, 0x02,
+ 0x68, 0x23, 0x21, 0x20, 0x69, 0x98, 0xf7, 0xfd, 0xfe, 0xa7, 0xf7, 0xff, 0xfc, 0xf9, 0x49, 0x12,
+ 0x20, 0x01, 0xf7, 0xff, 0xfd, 0x29, 0x69, 0x39, 0x29, 0x00, 0xd0, 0x08, 0x7e, 0x7b, 0x68, 0xf8,
+ 0x2b, 0x00, 0xd0, 0x02, 0xf0, 0x02, 0xfa, 0x8e, 0xe0, 0x01, 0xf0, 0x02, 0xfa, 0x83, 0x7e, 0x3b,
+ 0x2b, 0x00, 0xd1, 0x03, 0x68, 0x78, 0x21, 0x08, 0xf0, 0x02, 0xfa, 0x84, 0x2e, 0x00, 0xd0, 0x01,
+ 0x69, 0x7f, 0x97, 0x03, 0x98, 0x03, 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
+ 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x84, 0x13, 0x72, 0xc1, 0x80, 0xb5, 0x30, 0xb0, 0x89,
+ 0x46, 0x6d, 0x76, 0x29, 0x09, 0xc9, 0x76, 0x69, 0x21, 0x80, 0x00, 0x89, 0x91, 0x07, 0x24, 0x00,
+ 0x46, 0x69, 0x94, 0x00, 0x92, 0x04, 0x93, 0x02, 0xf7, 0xff, 0xfd, 0xe0, 0xb0, 0x09, 0xbc, 0x30,
+ 0xbc, 0x02, 0x47, 0x08, 0xb5, 0xf0, 0xb0, 0x83, 0x1c, 0x04, 0x91, 0x01, 0x92, 0x00, 0x34, 0xa0,
+ 0x1c, 0x07, 0x21, 0xff, 0x22, 0x0d, 0x68, 0x20, 0xf0, 0x03, 0xf9, 0xf4, 0x1c, 0x3b, 0x33, 0x90,
+ 0x68, 0x18, 0x7b, 0x39, 0x68, 0x23, 0x22, 0x0d, 0xf7, 0xff, 0xff, 0xd8, 0x28, 0x00, 0xdb, 0x4e,
+ 0x28, 0x0d, 0xd0, 0x01, 0x48, 0x28, 0xe0, 0x4a, 0x68, 0x23, 0x24, 0xff, 0x68, 0x19, 0x68, 0x5e,
+ 0x68, 0x9d, 0x7b, 0x1b, 0x0e, 0x0a, 0x46, 0x9c, 0x06, 0x0b, 0x43, 0x1a, 0x02, 0x24, 0x1c, 0x0b,
+ 0x20, 0xff, 0x40, 0x23, 0x04, 0x00, 0x02, 0x1b, 0x40, 0x01, 0x43, 0x1a, 0x0a, 0x09, 0x4b, 0x1f,
+ 0x43, 0x0a, 0x42, 0x9a, 0xd0, 0x01, 0x48, 0x1e, 0xe0, 0x31, 0x9a, 0x00, 0x2a, 0x00, 0xd0, 0x0c,
+ 0x06, 0x2b, 0x0e, 0x2a, 0x43, 0x1a, 0x1c, 0x2b, 0x40, 0x23, 0x02, 0x1b, 0x43, 0x1a, 0x1c, 0x2b,
+ 0x40, 0x03, 0x0a, 0x1b, 0x43, 0x1a, 0x9b, 0x00, 0x60, 0x1a, 0x9a, 0x01, 0x2a, 0x00, 0xd0, 0x01,
+ 0x46, 0x63, 0x70, 0x13, 0x06, 0x33, 0x0e, 0x32, 0x43, 0x1a, 0x23, 0xff, 0x02, 0x1b, 0x40, 0x33,
+ 0x02, 0x1b, 0x43, 0x1a, 0x23, 0xff, 0x04, 0x1b, 0x40, 0x33, 0x1c, 0x38, 0x0a, 0x1b, 0x1c, 0x11,
+ 0x30, 0x98, 0x43, 0x19, 0x68, 0x03, 0x42, 0x99, 0xd0, 0x01, 0x48, 0x0a, 0xe0, 0x07, 0x4a, 0x0a,
+ 0x1c, 0x8b, 0x40, 0x13, 0x4a, 0x09, 0x40, 0x0a, 0x43, 0x13, 0x60, 0x03, 0x20, 0x00, 0xb0, 0x03,
+ 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0xff, 0xff, 0xd8, 0xed, 0x53, 0x42, 0x53, 0x55,
+ 0xff, 0xff, 0xd8, 0xec, 0xff, 0xff, 0xd8, 0xeb, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
+ 0xb5, 0xf0, 0xb0, 0x85, 0x93, 0x02, 0x46, 0x6b, 0x33, 0x2f, 0x78, 0x1b, 0x1c, 0x05, 0x93, 0x01,
+ 0x3b, 0x01, 0x06, 0x1b, 0x0e, 0x1b, 0x91, 0x03, 0x1c, 0x17, 0x2b, 0x0f, 0xd8, 0x5e, 0x1c, 0x06,
+ 0x36, 0xa0, 0x68, 0x30, 0x28, 0x00, 0xd0, 0x59, 0x21, 0x00, 0x22, 0x1f, 0xf0, 0x03, 0xf9, 0x72,
+ 0x68, 0x32, 0x4b, 0x2d, 0x24, 0xff, 0x60, 0x13, 0x1c, 0x2b, 0x33, 0x98, 0x68, 0x1a, 0x68, 0x31,
+ 0x06, 0x13, 0x46, 0x8c, 0x0e, 0x11, 0x43, 0x19, 0x02, 0x24, 0x1c, 0x13, 0x20, 0xff, 0x04, 0x00,
+ 0x40, 0x23, 0x02, 0x1b, 0x40, 0x02, 0x43, 0x19, 0x0a, 0x12, 0x43, 0x11, 0x46, 0x62, 0x60, 0x51,
+ 0x06, 0x3b, 0x0e, 0x3a, 0x43, 0x1a, 0x1c, 0x3b, 0x40, 0x23, 0x02, 0x1b, 0x43, 0x1a, 0x1c, 0x3b,
+ 0x40, 0x03, 0x68, 0x31, 0x0a, 0x1b, 0x43, 0x1a, 0x60, 0x8a, 0x22, 0x0b, 0x46, 0x69, 0x5c, 0x51,
+ 0x68, 0x33, 0x46, 0x6a, 0x73, 0x19, 0x21, 0x0f, 0x68, 0x33, 0x5c, 0x8a, 0x73, 0x5a, 0x1c, 0x2b,
+ 0x33, 0x9c, 0x78, 0x1b, 0x68, 0x31, 0x2b, 0x00, 0xd0, 0x01, 0x23, 0x0c, 0xe0, 0x05, 0x9b, 0x01,
+ 0x2b, 0x06, 0xd8, 0x01, 0x23, 0x06, 0xe0, 0x00, 0x23, 0x10, 0x1c, 0x2c, 0x73, 0x8b, 0x34, 0xa0,
+ 0x68, 0x20, 0x99, 0x0a, 0x9a, 0x01, 0x30, 0x0f, 0xf0, 0x03, 0xf8, 0xe8, 0x1c, 0x2b, 0x33, 0x90,
+ 0x68, 0x18, 0x7b, 0x69, 0x68, 0x23, 0x22, 0x1f, 0xf7, 0xff, 0xff, 0x10, 0x28, 0x1f, 0xd1, 0x01,
+ 0x20, 0x00, 0xe0, 0x05, 0x28, 0x00, 0xdb, 0x03, 0x48, 0x04, 0xe0, 0x01, 0x20, 0x03, 0x42, 0x40,
+ 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x55, 0x53, 0x42, 0x43, 0xff, 0xff, 0xd8, 0xee,
+ 0xb5, 0xf0, 0xb0, 0x8b, 0x90, 0x01, 0x46, 0x68, 0x30, 0x42, 0x88, 0x04, 0x30, 0x04, 0x88, 0x05,
+ 0x48, 0x27, 0x9f, 0x12, 0x68, 0x00, 0x04, 0x24, 0x30, 0xf8, 0x68, 0x00, 0x04, 0x2d, 0x70, 0x42,
+ 0x02, 0x1a, 0x0a, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x13, 0x70, 0xc3, 0x0a, 0x23, 0x0e, 0x24,
+ 0x43, 0x23, 0x0e, 0x12, 0x04, 0x1b, 0x70, 0x82, 0x0c, 0x2e, 0x0c, 0x1a, 0x0e, 0x1b, 0x71, 0x03,
+ 0x0e, 0x2d, 0x02, 0x33, 0x43, 0x2b, 0x04, 0x1b, 0x71, 0x42, 0x0e, 0x1a, 0x0c, 0x1b, 0x71, 0xc3,
+ 0xac, 0x02, 0x23, 0x00, 0x70, 0x01, 0x71, 0x82, 0x76, 0x23, 0x23, 0x40, 0x61, 0xe3, 0x4b, 0x15,
+ 0x09, 0xc9, 0x90, 0x02, 0x76, 0x61, 0x61, 0x26, 0x42, 0x9f, 0xd9, 0x15, 0x1c, 0x30, 0xf0, 0x02,
+ 0xf9, 0x09, 0x1c, 0x32, 0x1c, 0x39, 0x60, 0xa0, 0xf0, 0x03, 0xf8, 0x90, 0x1c, 0x21, 0x98, 0x01,
+ 0xf7, 0xff, 0xfc, 0xac, 0x68, 0xa1, 0x1c, 0x05, 0x1c, 0x32, 0x1c, 0x38, 0xf0, 0x03, 0xf8, 0x86,
+ 0x68, 0xa0, 0xf0, 0x02, 0xf8, 0xeb, 0xe0, 0x05, 0x60, 0xa7, 0x98, 0x01, 0x1c, 0x21, 0xf7, 0xff,
+ 0xfc, 0x9d, 0x1c, 0x05, 0xb0, 0x0b, 0x1c, 0x28, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
+ 0x13, 0x70, 0x60, 0x34, 0x13, 0x88, 0x00, 0x00, 0xb5, 0x00, 0xb0, 0x85, 0x91, 0x00, 0x23, 0x00,
+ 0x21, 0x02, 0x22, 0x01, 0x93, 0x01, 0x93, 0x02, 0xf7, 0xff, 0xff, 0x9a, 0xb0, 0x05, 0xbc, 0x02,
+ 0x47, 0x08, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x85, 0x2a, 0x00, 0xd1, 0x02, 0x20, 0x03, 0x42, 0x40,
+ 0xe0, 0x08, 0x1c, 0x13, 0x22, 0x00, 0x91, 0x00, 0x92, 0x01, 0x92, 0x02, 0x21, 0x01, 0x22, 0x0b,
+ 0xf7, 0xff, 0xff, 0x86, 0xb0, 0x05, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x85,
+ 0x22, 0x00, 0x92, 0x00, 0x92, 0x01, 0x92, 0x02, 0x1c, 0x0b, 0x22, 0x09, 0x21, 0x00, 0xf7, 0xff,
+ 0xff, 0x77, 0xb0, 0x05, 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x70, 0xb0, 0x84, 0x1c, 0x04, 0x20, 0x01,
+ 0x1c, 0x0e, 0xf0, 0x02, 0xf8, 0xaf, 0x1c, 0x05, 0x28, 0x00, 0xd1, 0x02, 0x24, 0x04, 0x42, 0x64,
+ 0xe0, 0x12, 0x23, 0x00, 0x93, 0x00, 0x23, 0x01, 0x93, 0x01, 0x90, 0x02, 0x21, 0x80, 0x1c, 0x20,
+ 0x22, 0x08, 0x23, 0x00, 0xf7, 0xff, 0xff, 0x5c, 0x1c, 0x04, 0x28, 0x00, 0xdb, 0x01, 0x78, 0x2b,
+ 0x70, 0x33, 0x1c, 0x28, 0xf0, 0x02, 0xf8, 0x8a, 0xb0, 0x04, 0x1c, 0x20, 0xbc, 0x70, 0xbc, 0x02,
+ 0x47, 0x08, 0x46, 0xc0, 0xb5, 0xf0, 0x4b, 0x4c, 0x4a, 0x4c, 0x78, 0x19, 0xb0, 0x87, 0x1c, 0x06,
+ 0x68, 0x17, 0x29, 0x00, 0xd0, 0x01, 0x4b, 0x4a, 0xe0, 0x00, 0x4b, 0x4a, 0x60, 0x13, 0x4b, 0x4a,
+ 0x68, 0x1b, 0x68, 0x9a, 0x1c, 0x33, 0x33, 0x90, 0x68, 0x1b, 0x32, 0x44, 0x69, 0xdb, 0x00, 0x9b,
+ 0x18, 0xd2, 0x68, 0x13, 0x22, 0x01, 0x42, 0x13, 0xd1, 0x06, 0x4b, 0x44, 0x24, 0x01, 0x60, 0x1a,
+ 0x4b, 0x3e, 0x42, 0x64, 0x60, 0x1f, 0xe0, 0x72, 0x4a, 0x3c, 0x29, 0x00, 0xd0, 0x01, 0x4b, 0x3c,
+ 0xe0, 0x00, 0x4b, 0x3c, 0x60, 0x13, 0x4b, 0x3e, 0x1c, 0x35, 0x78, 0x1b, 0x35, 0x90, 0x2b, 0x00,
+ 0xd0, 0x12, 0x88, 0xf3, 0x68, 0x28, 0x22, 0xff, 0x93, 0x00, 0x21, 0x21, 0x23, 0x00, 0x93, 0x01,
+ 0x93, 0x02, 0xf7, 0xff, 0xff, 0x15, 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x36, 0xf7, 0xff, 0xfa, 0x12,
+ 0x20, 0x3c, 0xf7, 0xfe, 0xfc, 0x39, 0xe0, 0x07, 0x21, 0x00, 0x68, 0x28, 0xf7, 0xff, 0xff, 0x64,
+ 0x20, 0x05, 0xf7, 0xfe, 0xfc, 0x31, 0x24, 0x00, 0x4b, 0x27, 0x4a, 0x28, 0x78, 0x1b, 0x2b, 0x00,
+ 0xd0, 0x01, 0x4b, 0x27, 0xe0, 0x00, 0x4b, 0x27, 0x1c, 0x35, 0x60, 0x13, 0x35, 0x90, 0x2c, 0x00,
+ 0xda, 0x0a, 0x20, 0x32, 0xf7, 0xfe, 0xfc, 0x20, 0x68, 0x28, 0x21, 0x00, 0xf7, 0xff, 0xff, 0x4c,
+ 0x20, 0x05, 0xf7, 0xfe, 0xfc, 0x19, 0xe0, 0x2d, 0x7b, 0x31, 0x68, 0x28, 0xf7, 0xff, 0xff, 0x44,
+ 0x1c, 0x04, 0x20, 0x05, 0xf7, 0xfe, 0xfc, 0x10, 0x48, 0x1f, 0x1c, 0x21, 0xf7, 0xff, 0xf9, 0xe2,
+ 0x2c, 0x00, 0xdb, 0x1f, 0x7b, 0x71, 0x68, 0x28, 0xf7, 0xff, 0xff, 0x36, 0x1c, 0x04, 0x20, 0x05,
+ 0xf7, 0xfe, 0xfc, 0x02, 0x48, 0x19, 0x1c, 0x21, 0xf7, 0xff, 0xf9, 0xd4, 0x2c, 0x00, 0xdb, 0x11,
+ 0x20, 0x0a, 0xf7, 0xfe, 0xfb, 0xf9, 0x46, 0x69, 0x31, 0x17, 0x68, 0x28, 0xf7, 0xff, 0xff, 0x54,
+ 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x12, 0xf7, 0xff, 0xf9, 0xc5, 0x2c, 0x00, 0xdb, 0x02, 0x4b, 0x07,
+ 0x60, 0x1f, 0xe0, 0x04, 0x4b, 0x05, 0x4a, 0x09, 0x60, 0x1f, 0x23, 0x01, 0x60, 0x13, 0xb0, 0x07,
+ 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x01, 0x0f, 0x13, 0x70, 0x60, 0x38,
+ 0x00, 0x0f, 0x42, 0x40, 0x00, 0x03, 0x0d, 0x40, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x6c,
+ 0x13, 0x70, 0x01, 0x0d, 0x13, 0x70, 0x61, 0x12, 0x13, 0x70, 0x61, 0x33, 0x13, 0x70, 0x61, 0x5a,
+ 0x13, 0x70, 0x61, 0x82, 0xb5, 0x00, 0xb0, 0x81, 0x21, 0x00, 0xf7, 0xff, 0xff, 0x4b, 0xb0, 0x01,
+ 0xbc, 0x02, 0x47, 0x08, 0xb5, 0xf0, 0xb0, 0x8d, 0x1c, 0x1e, 0x46, 0x6b, 0x33, 0x5f, 0x92, 0x07,
+ 0x78, 0x1a, 0x3b, 0x10, 0x78, 0x1b, 0x06, 0x12, 0x93, 0x06, 0x46, 0x6b, 0x33, 0x53, 0x78, 0x1b,
+ 0x16, 0x12, 0x93, 0x05, 0x46, 0x6b, 0x92, 0x04, 0x33, 0x2f, 0x22, 0x00, 0x91, 0x08, 0x70, 0x1a,
+ 0x4b, 0x99, 0x92, 0x0a, 0x60, 0x1a, 0x4a, 0x99, 0x4b, 0x99, 0x24, 0x00, 0x1c, 0x05, 0x94, 0x09,
+ 0x92, 0x03, 0x93, 0x02, 0x1c, 0xa3, 0x2b, 0x01, 0xd8, 0x00, 0xe1, 0x08, 0x2c, 0x00, 0xd0, 0x22,
+ 0x1c, 0x28, 0x21, 0x00, 0xf7, 0xff, 0xff, 0x1e, 0x1c, 0x04, 0x28, 0x00, 0xdb, 0x01, 0x20, 0x05,
+ 0xe0, 0x00, 0x20, 0x3c, 0xf7, 0xfe, 0xfb, 0x90, 0x4b, 0x8e, 0x68, 0x1b, 0x68, 0x9a, 0x4b, 0x8e,
+ 0x32, 0x44, 0x68, 0x1b, 0x00, 0x9b, 0x18, 0xd2, 0x68, 0x12, 0x2c, 0x00, 0xda, 0x09, 0x9a, 0x09,
+ 0x32, 0x01, 0x92, 0x09, 0x2a, 0x02, 0xdd, 0x00, 0xe0, 0xeb, 0x20, 0x0a, 0xf7, 0xfe, 0xfb, 0x7c,
+ 0xe0, 0xdf, 0x23, 0x00, 0x93, 0x09, 0x9b, 0x04, 0x9a, 0x05, 0x3b, 0x01, 0x06, 0x1b, 0x16, 0x1b,
+ 0x93, 0x04, 0x2a, 0x00, 0xd0, 0x31, 0x9b, 0x03, 0x9a, 0x02, 0x68, 0x1f, 0x78, 0x13, 0x2b, 0x00,
+ 0xd0, 0x01, 0x4b, 0x7e, 0xe0, 0x00, 0x4b, 0x7e, 0x9a, 0x03, 0x1c, 0x28, 0x60, 0x13, 0x9b, 0x12,
+ 0x9a, 0x06, 0x93, 0x00, 0x92, 0x01, 0x23, 0x00, 0x99, 0x08, 0x1c, 0x32, 0xf7, 0xff, 0xfd, 0xb8,
+ 0x4b, 0x72, 0x1c, 0x04, 0x60, 0x1f, 0x1c, 0x83, 0x2b, 0x01, 0xd8, 0x00, 0xe0, 0xbf, 0x28, 0x00,
+ 0xda, 0x0d, 0xe0, 0xb8, 0x1c, 0x2b, 0x33, 0x90, 0x68, 0x18, 0x7b, 0x69, 0x9b, 0x07, 0x1c, 0x32,
+ 0xf7, 0xff, 0xfd, 0x1c, 0x1c, 0x83, 0x1c, 0x04, 0x2b, 0x01, 0xd8, 0x43, 0xe0, 0x02, 0x2e, 0x00,
+ 0xd1, 0xf0, 0xe0, 0x49, 0x28, 0x00, 0xda, 0x47, 0xe0, 0xa3, 0x9b, 0x03, 0x9a, 0x02, 0x68, 0x1f,
+ 0x78, 0x13, 0x2b, 0x00, 0xd0, 0x01, 0x4b, 0x65, 0xe0, 0x00, 0x4b, 0x65, 0x9a, 0x03, 0x1c, 0x28,
+ 0x60, 0x13, 0x9b, 0x12, 0x9a, 0x06, 0x93, 0x00, 0x92, 0x01, 0x23, 0x80, 0x99, 0x08, 0x1c, 0x32,
+ 0xf7, 0xff, 0xfd, 0x86, 0x4b, 0x59, 0x1c, 0x04, 0x60, 0x1f, 0x28, 0x00, 0xda, 0x06, 0x48, 0x5d,
+ 0x1c, 0x21, 0xf7, 0xff, 0xf8, 0xf7, 0x48, 0x5c, 0xf7, 0xff, 0xf9, 0x3c, 0x1c, 0xa3, 0x2b, 0x01,
+ 0xd8, 0x00, 0xe0, 0x84, 0x2c, 0x00, 0xda, 0x1a, 0xe0, 0x7d, 0x1c, 0x2b, 0x33, 0x90, 0x68, 0x18,
+ 0x7b, 0x29, 0x1c, 0x32, 0x9b, 0x07, 0xf7, 0xff, 0xfc, 0xe1, 0x1c, 0x04, 0x28, 0x00, 0xda, 0x06,
+ 0x48, 0x52, 0x1c, 0x21, 0xf7, 0xff, 0xf8, 0xde, 0x48, 0x51, 0xf7, 0xff, 0xf9, 0x23, 0x1c, 0xa3,
+ 0x2b, 0x01, 0xd9, 0x07, 0x2c, 0x00, 0xdb, 0x62, 0x42, 0xb4, 0xd0, 0x05, 0xe0, 0x5f, 0x2e, 0x00,
+ 0xd1, 0xe3, 0xe0, 0x01, 0x2c, 0x00, 0xdb, 0x5e, 0x4b, 0x41, 0x4a, 0x40, 0x78, 0x1b, 0x68, 0x17,
+ 0x2b, 0x00, 0xd0, 0x01, 0x4b, 0x41, 0xe0, 0x00, 0x4b, 0x41, 0x46, 0x69, 0x60, 0x13, 0x1c, 0x28,
+ 0x31, 0x2f, 0xaa, 0x0a, 0xf7, 0xff, 0xfc, 0xce, 0x1c, 0x04, 0x28, 0x00, 0xda, 0x28, 0x48, 0x41,
+ 0x1c, 0x21, 0xf7, 0xff, 0xf8, 0xb7, 0x48, 0x40, 0xf7, 0xff, 0xf8, 0xfc, 0x1c, 0x63, 0xd1, 0x02,
+ 0x4b, 0x32, 0x60, 0x1f, 0xe0, 0x45, 0x1c, 0x2c, 0x34, 0x90, 0x68, 0x20, 0x7b, 0x29, 0xf7, 0xff,
+ 0xfe, 0x03, 0x7b, 0x2a, 0x68, 0x24, 0x06, 0x13, 0x6a, 0x60, 0x2b, 0x00, 0xdb, 0x01, 0x21, 0x00,
+ 0xe0, 0x00, 0x21, 0x10, 0x23, 0x0f, 0x40, 0x1a, 0x18, 0x8a, 0x23, 0x01, 0x40, 0x93, 0x43, 0x98,
+ 0x46, 0x69, 0x62, 0x60, 0x31, 0x2f, 0x1c, 0x28, 0xaa, 0x0a, 0xf7, 0xff, 0xfc, 0xa3, 0x1c, 0x04,
+ 0x4b, 0x22, 0x60, 0x1f, 0x1c, 0xa3, 0x2b, 0x01, 0xd9, 0x21, 0x9b, 0x0a, 0x2b, 0x00, 0xd0, 0x07,
+ 0x4b, 0x2a, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x03, 0x46, 0x6b, 0x22, 0x01, 0x33, 0x2f, 0x70, 0x1a,
+ 0x2c, 0x00, 0xdb, 0x10, 0x4b, 0x25, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x06, 0x46, 0x6b, 0x33, 0x2f,
+ 0x78, 0x1b, 0x2b, 0x00, 0xd0, 0x01, 0x4c, 0x22, 0xe0, 0x05, 0x24, 0x00, 0xe0, 0x0e, 0x4c, 0x21,
+ 0xe0, 0x01, 0x2c, 0x00, 0xda, 0x0a, 0x9a, 0x04, 0x2a, 0x00, 0xdd, 0x00, 0xe6, 0xf2, 0x2c, 0x00,
+ 0xda, 0x04, 0x4a, 0x0d, 0x23, 0x01, 0x60, 0x13, 0x2c, 0x00, 0xdb, 0x02, 0x4a, 0x0a, 0x23, 0x00,
+ 0x60, 0x13, 0x9b, 0x15, 0x2b, 0x00, 0xd0, 0x04, 0x46, 0x6b, 0x33, 0x2f, 0x78, 0x1b, 0x9a, 0x15,
+ 0x70, 0x13, 0x9b, 0x16, 0x2b, 0x00, 0xd0, 0x02, 0x9b, 0x0a, 0x9a, 0x16, 0x60, 0x13, 0xb0, 0x0d,
+ 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x70, 0x60, 0x38,
+ 0x13, 0x70, 0x01, 0x0f, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x78, 0x00, 0x0f, 0x42, 0x40,
+ 0x00, 0x03, 0x0d, 0x40, 0x13, 0x70, 0x61, 0xb1, 0x13, 0x70, 0x61, 0xc4, 0x13, 0x70, 0x61, 0xce,
+ 0x13, 0x70, 0x61, 0xe6, 0x13, 0x70, 0x61, 0xfa, 0x13, 0x70, 0x62, 0x09, 0x13, 0x70, 0x67, 0xa4,
+ 0xff, 0xff, 0xd8, 0xea, 0xff, 0xff, 0xd8, 0xe9, 0xb5, 0xf0, 0xb0, 0x8b, 0x1c, 0x0f, 0x21, 0x27,
+ 0x1c, 0x1d, 0x1c, 0x06, 0x23, 0x00, 0x44, 0x69, 0x46, 0x68, 0x30, 0x1d, 0x70, 0x0b, 0x23, 0x2a,
+ 0x70, 0x03, 0x21, 0x08, 0x01, 0x7b, 0x43, 0x0b, 0x70, 0x43, 0x0e, 0x13, 0x70, 0x83, 0x0c, 0x13,
+ 0x70, 0xc3, 0x0a, 0x13, 0x71, 0x03, 0x21, 0x00, 0x0a, 0x2b, 0x71, 0x42, 0x71, 0x81, 0x71, 0xc3,
+ 0x72, 0x05, 0x72, 0x41, 0x7b, 0xb3, 0x42, 0xbb, 0xd9, 0x24, 0x1d, 0x3b, 0x00, 0x9a, 0x59, 0x93,
+ 0x2b, 0x00, 0xd0, 0x1f, 0x4c, 0x12, 0x21, 0x01, 0x60, 0x21, 0x59, 0x93, 0x22, 0x0a, 0x92, 0x01,
+ 0x22, 0x27, 0x44, 0x6a, 0x91, 0x02, 0x92, 0x03, 0x21, 0x00, 0x22, 0x06, 0x90, 0x00, 0x91, 0x04,
+ 0x92, 0x05, 0x43, 0x6b, 0x9a, 0x10, 0x1c, 0x30, 0x1c, 0x39, 0xf7, 0xff, 0xfe, 0x5b, 0x22, 0x00,
+ 0x60, 0x22, 0x28, 0x00, 0xdd, 0x08, 0x21, 0x27, 0x44, 0x69, 0x78, 0x0b, 0x2b, 0x00, 0xd0, 0x03,
+ 0x48, 0x04, 0xe0, 0x01, 0x20, 0x03, 0x42, 0x40, 0xb0, 0x0b, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
+ 0x13, 0x70, 0x67, 0xa4, 0xff, 0xff, 0xd8, 0xea, 0xb5, 0xf0, 0x1c, 0x1c, 0x1c, 0x1f, 0x1c, 0x0b,
+ 0xb0, 0x87, 0x33, 0x04, 0x90, 0x05, 0x00, 0x9b, 0x91, 0x04, 0x92, 0x03, 0x58, 0x19, 0x20, 0x80,
+ 0x1c, 0x0b, 0x43, 0x63, 0x02, 0x40, 0x42, 0x83, 0xd9, 0x02, 0xf0, 0x02, 0xfc, 0x9d, 0x1c, 0x07,
+ 0x9b, 0x04, 0x20, 0x01, 0x33, 0x04, 0x00, 0x9b, 0x42, 0x40, 0x93, 0x02, 0xe0, 0x1c, 0x1c, 0x25,
+ 0x42, 0xbc, 0xd9, 0x00, 0x1c, 0x3d, 0x04, 0x2b, 0x99, 0x0c, 0x0c, 0x1e, 0x91, 0x00, 0x98, 0x05,
+ 0x99, 0x04, 0x9a, 0x03, 0x1c, 0x33, 0xf7, 0xff, 0xff, 0x87, 0x28, 0x00, 0xdb, 0x0e, 0x9a, 0x03,
+ 0x1b, 0xa3, 0x19, 0x52, 0x92, 0x03, 0x99, 0x02, 0x9a, 0x05, 0x04, 0x1b, 0x0c, 0x1c, 0x58, 0x8b,
+ 0x99, 0x0c, 0x43, 0x6b, 0x18, 0xc9, 0x91, 0x0c, 0x2c, 0x00, 0xd1, 0xe0, 0xb0, 0x07, 0xbc, 0xf0,
+ 0xbc, 0x02, 0x47, 0x08, 0xb5, 0xf0, 0xb0, 0x8b, 0x1c, 0x05, 0x1c, 0x18, 0x23, 0x27, 0x27, 0x00,
+ 0x1c, 0x0e, 0x44, 0x6b, 0x46, 0x69, 0x31, 0x1d, 0x70, 0x1f, 0x23, 0x28, 0x70, 0x0b, 0x01, 0x73,
+ 0x70, 0x4b, 0x0e, 0x13, 0x70, 0x8b, 0x0c, 0x13, 0x70, 0xcb, 0x0a, 0x13, 0x71, 0x0b, 0x0a, 0x03,
+ 0x71, 0x4a, 0x71, 0x8f, 0x71, 0xcb, 0x72, 0x08, 0x72, 0x4f, 0x7b, 0xab, 0x42, 0xb3, 0xd9, 0x22,
+ 0x1d, 0x33, 0x00, 0x9a, 0x59, 0x53, 0x2b, 0x00, 0xd0, 0x1d, 0x4c, 0x12, 0x23, 0x01, 0x60, 0x23,
+ 0x59, 0x53, 0x22, 0x0a, 0x92, 0x01, 0x22, 0x27, 0x44, 0x6a, 0x92, 0x03, 0x22, 0x06, 0x43, 0x43,
+ 0x91, 0x00, 0x92, 0x05, 0x1c, 0x28, 0x1c, 0x31, 0x9a, 0x10, 0x97, 0x02, 0x97, 0x04, 0xf7, 0xff,
+ 0xfd, 0xd1, 0x60, 0x27, 0x28, 0x00, 0xdd, 0x08, 0x22, 0x27, 0x44, 0x6a, 0x78, 0x13, 0x2b, 0x00,
+ 0xd0, 0x03, 0x48, 0x05, 0xe0, 0x01, 0x20, 0x03, 0x42, 0x40, 0xb0, 0x0b, 0xbc, 0xf0, 0xbc, 0x02,
+ 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x67, 0xa4, 0xff, 0xff, 0xd8, 0xea, 0xb5, 0xf0, 0x1c, 0x1c,
+ 0x1c, 0x1f, 0x1c, 0x0b, 0xb0, 0x87, 0x33, 0x04, 0x90, 0x05, 0x00, 0x9b, 0x91, 0x04, 0x92, 0x03,
+ 0x58, 0x19, 0x20, 0x80, 0x1c, 0x0b, 0x43, 0x63, 0x02, 0x40, 0x42, 0x83, 0xd9, 0x02, 0xf0, 0x02,
+ 0xfc, 0x13, 0x1c, 0x07, 0x9b, 0x04, 0x20, 0x01, 0x33, 0x04, 0x00, 0x9b, 0x42, 0x40, 0x93, 0x02,
+ 0xe0, 0x1c, 0x1c, 0x25, 0x42, 0xbc, 0xd9, 0x00, 0x1c, 0x3d, 0x04, 0x2b, 0x99, 0x0c, 0x0c, 0x1e,
+ 0x91, 0x00, 0x98, 0x05, 0x99, 0x04, 0x9a, 0x03, 0x1c, 0x33, 0xf7, 0xff, 0xff, 0x8b, 0x28, 0x00,
+ 0xdb, 0x0e, 0x9a, 0x03, 0x1b, 0xa3, 0x19, 0x52, 0x92, 0x03, 0x99, 0x02, 0x9a, 0x05, 0x04, 0x1b,
+ 0x0c, 0x1c, 0x58, 0x8b, 0x99, 0x0c, 0x43, 0x6b, 0x18, 0xc9, 0x91, 0x0c, 0x2c, 0x00, 0xd1, 0xe0,
+ 0xb0, 0x07, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x70, 0x1c, 0x1d, 0x1c, 0x03, 0x33, 0xa0,
+ 0x1c, 0x16, 0x68, 0x1b, 0x22, 0x80, 0x01, 0x12, 0x18, 0x9c, 0xb0, 0x88, 0x2c, 0x00, 0xd1, 0x02,
+ 0x20, 0x04, 0x42, 0x40, 0xe0, 0x27, 0x46, 0x6a, 0x32, 0x1e, 0x01, 0x4b, 0x70, 0x53, 0x23, 0x25,
+ 0x70, 0x13, 0x23, 0x02, 0x93, 0x01, 0x23, 0x00, 0x93, 0x02, 0x93, 0x03, 0x93, 0x04, 0x23, 0x0a,
+ 0x92, 0x00, 0x93, 0x05, 0x1c, 0x22, 0x23, 0x08, 0xf7, 0xff, 0xfd, 0x5c, 0x28, 0x00, 0xdb, 0x12,
+ 0xa8, 0x06, 0x1c, 0x21, 0x22, 0x04, 0xf0, 0x02, 0xfc, 0xb9, 0x2d, 0x00, 0xd0, 0x01, 0x9b, 0x06,
+ 0x60, 0x2b, 0x1d, 0x21, 0xa8, 0x06, 0x22, 0x04, 0xf0, 0x02, 0xfc, 0xb0, 0x2e, 0x00, 0xd0, 0x01,
+ 0x9b, 0x06, 0x60, 0x33, 0x20, 0x00, 0xb0, 0x08, 0xbc, 0x70, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
+ 0xb5, 0xf0, 0xb0, 0x8b, 0x1c, 0x0f, 0x46, 0x69, 0x31, 0x22, 0x23, 0x12, 0x90, 0x07, 0x70, 0x0b,
+ 0x01, 0x7b, 0x22, 0x00, 0x70, 0x4b, 0x23, 0x24, 0x70, 0x8a, 0x70, 0xca, 0x71, 0x4a, 0x71, 0x0b,
+ 0x9b, 0x07, 0x22, 0x80, 0x33, 0xa0, 0x68, 0x1b, 0x01, 0x12, 0x18, 0x9c, 0x2c, 0x00, 0xd1, 0x02,
+ 0x21, 0x04, 0x42, 0x49, 0xe0, 0x2c, 0x25, 0x00, 0x21, 0x00, 0x22, 0x24, 0x1c, 0x20, 0xf0, 0x02,
+ 0xfc, 0xc9, 0x23, 0x22, 0x44, 0x6b, 0x93, 0x00, 0x22, 0x06, 0x23, 0x0a, 0x26, 0x00, 0x92, 0x01,
+ 0x93, 0x05, 0x1c, 0x39, 0x98, 0x07, 0x1c, 0x22, 0x23, 0x24, 0x96, 0x02, 0x96, 0x03, 0x96, 0x04,
+ 0xf7, 0xff, 0xfd, 0x10, 0x1c, 0x01, 0x28, 0x00, 0xdb, 0x08, 0x78, 0x22, 0x23, 0x1f, 0x1c, 0x10,
+ 0x40, 0x18, 0x28, 0x05, 0xd0, 0x06, 0x28, 0x07, 0xd1, 0x08, 0xe0, 0x03, 0x35, 0x01, 0x2d, 0x02,
+ 0xd0, 0x06, 0xe7, 0xd9, 0x4a, 0x05, 0x23, 0x01, 0x60, 0x13, 0xe0, 0x01, 0x4b, 0x03, 0x60, 0x1e,
+ 0xb0, 0x0b, 0x1c, 0x08, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x67, 0x94,
+ 0xb5, 0xf0, 0xb0, 0x8f, 0x1c, 0x03, 0x90, 0x07, 0x91, 0x06, 0x33, 0xa0, 0x68, 0x1b, 0x21, 0x80,
+ 0x46, 0x6f, 0x46, 0x6c, 0x01, 0x09, 0x37, 0x37, 0x25, 0x00, 0x34, 0x27, 0x18, 0x5e, 0x70, 0x3d,
+ 0x1c, 0x20, 0x21, 0x00, 0x22, 0x10, 0xf0, 0x02, 0xfc, 0x85, 0x2e, 0x00, 0xd1, 0x02, 0x25, 0x04,
+ 0x42, 0x6d, 0xe0, 0x5a, 0x23, 0x06, 0x70, 0x25, 0x93, 0x01, 0x23, 0x01, 0x93, 0x02, 0x23, 0x0a,
+ 0x93, 0x05, 0x99, 0x06, 0x22, 0x00, 0x98, 0x07, 0x23, 0x00, 0x95, 0x04, 0x94, 0x00, 0x97, 0x03,
+ 0xf7, 0xff, 0xfc, 0xc8, 0x1c, 0x05, 0x1c, 0x29, 0x48, 0x26, 0xf7, 0xfe, 0xfe, 0x5b, 0x1c, 0x6a,
+ 0xd0, 0x43, 0x78, 0x3b, 0x2b, 0x00, 0xd1, 0x01, 0x2d, 0x00, 0xda, 0x3e, 0x46, 0x6a, 0x32, 0x27,
+ 0x23, 0x03, 0x70, 0x13, 0x99, 0x06, 0x1c, 0x30, 0x01, 0x4b, 0x70, 0x53, 0x23, 0x12, 0x71, 0x13,
+ 0x23, 0x00, 0x71, 0x53, 0x21, 0x00, 0x22, 0x12, 0xf0, 0x02, 0xfc, 0x54, 0x4a, 0x1a, 0x35, 0x02,
+ 0xd1, 0x01, 0x4b, 0x1a, 0xe0, 0x00, 0x4b, 0x1a, 0x60, 0x13, 0x46, 0x6b, 0x33, 0x27, 0x93, 0x00,
+ 0x23, 0x06, 0x93, 0x01, 0x23, 0x00, 0x93, 0x02, 0x93, 0x03, 0x93, 0x04, 0x23, 0x0a, 0x93, 0x05,
+ 0x99, 0x06, 0x98, 0x07, 0x1c, 0x32, 0x23, 0x12, 0xf7, 0xff, 0xfc, 0x94, 0x1c, 0x05, 0x1c, 0x29,
+ 0x48, 0x10, 0xf7, 0xfe, 0xfe, 0x27, 0x2d, 0x00, 0xdb, 0x0f, 0x78, 0xb1, 0x23, 0x0f, 0x46, 0x6c,
+ 0x40, 0x19, 0x34, 0x37, 0x48, 0x0c, 0x70, 0x21, 0xf7, 0xfe, 0xfe, 0x1c, 0x78, 0x23, 0x3b, 0x02,
+ 0x06, 0x1b, 0x0e, 0x1b, 0x2b, 0x02, 0xd8, 0x00, 0x4d, 0x08, 0xb0, 0x0f, 0x1c, 0x28, 0xbc, 0xf0,
+ 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x62, 0x14, 0x13, 0x70, 0x60, 0x38, 0x00, 0x26, 0x25, 0xa0,
+ 0x00, 0x98, 0x96, 0x80, 0x13, 0x70, 0x62, 0x35, 0x13, 0x70, 0x62, 0x54, 0xff, 0xff, 0xd8, 0xef,
+ 0xb5, 0xf0, 0x7b, 0x83, 0x1c, 0x0f, 0xb0, 0x81, 0x1c, 0x06, 0x42, 0xbb, 0xd8, 0x02, 0x24, 0x03,
+ 0x42, 0x64, 0xe0, 0x3a, 0x4d, 0x1f, 0x4b, 0x20, 0x48, 0x20, 0x60, 0x2b, 0x21, 0x00, 0xf7, 0xfe,
+ 0xfd, 0xf1, 0x4b, 0x1f, 0x1c, 0x30, 0x60, 0x2b, 0x1c, 0x39, 0xf7, 0xff, 0xff, 0x61, 0x1c, 0x04,
+ 0x28, 0x00, 0xdb, 0x27, 0x4b, 0x18, 0x1c, 0x39, 0x60, 0x2b, 0x1c, 0x30, 0xf7, 0xff, 0xff, 0x08,
+ 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x17, 0xf7, 0xfe, 0xfd, 0xdd, 0x2c, 0x00, 0xdb, 0x1a, 0x1c, 0x33,
+ 0x33, 0xa0, 0x68, 0x1a, 0x23, 0x80, 0x01, 0x1b, 0x5c, 0xd1, 0x23, 0x1f, 0x40, 0x19, 0x48, 0x12,
+ 0xf7, 0xfe, 0xfd, 0xd0, 0x1c, 0x3b, 0x1d, 0x3a, 0x33, 0x14, 0x00, 0x92, 0x00, 0x9b, 0x1c, 0x39,
+ 0x18, 0xb2, 0x18, 0xf3, 0x1c, 0x30, 0xf7, 0xff, 0xfe, 0xaf, 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x0b,
+ 0xf7, 0xfe, 0xfd, 0xc0, 0x4a, 0x03, 0x4b, 0x04, 0x60, 0x13, 0xb0, 0x01, 0x1c, 0x20, 0xbc, 0xf0,
+ 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x38, 0x00, 0x0f, 0x42, 0x40, 0x13, 0x70, 0x62, 0x76,
+ 0x01, 0x31, 0x2d, 0x00, 0x13, 0x70, 0x62, 0x91, 0x13, 0x70, 0x62, 0xa5, 0x13, 0x70, 0x62, 0xba,
+ 0xb5, 0x10, 0xb0, 0x84, 0x1c, 0x14, 0x46, 0x6a, 0x32, 0x1b, 0x78, 0x12, 0x02, 0x24, 0x43, 0x1c,
+ 0x23, 0x00, 0x93, 0x00, 0x92, 0x01, 0x91, 0x02, 0x22, 0x06, 0x21, 0x80, 0x1c, 0x23, 0xf7, 0xff,
+ 0xfa, 0x97, 0xb0, 0x04, 0xbc, 0x10, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0xb5, 0xf0, 0xb0, 0x8f,
+ 0x90, 0x03, 0x20, 0x16, 0x1c, 0x0f, 0xf0, 0x01, 0xfb, 0xcd, 0x90, 0x05, 0x28, 0x00, 0xd1, 0x00,
+ 0xe1, 0x7e, 0x23, 0x12, 0x93, 0x00, 0x98, 0x03, 0x99, 0x05, 0x22, 0x01, 0x23, 0x00, 0xf7, 0xff,
+ 0xff, 0xd7, 0x1c, 0x04, 0x28, 0x00, 0xda, 0x00, 0xe1, 0x65, 0x99, 0x05, 0x22, 0x12, 0x1c, 0x38,
+ 0xf0, 0x02, 0xfb, 0x44, 0x98, 0x05, 0xf0, 0x01, 0xfb, 0xa9, 0x78, 0xba, 0x78, 0xfb, 0x02, 0x12,
+ 0x43, 0x13, 0x04, 0x1b, 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x13, 0x0e, 0x12,
+ 0x70, 0xba, 0x7a, 0x3a, 0x70, 0xfb, 0x7a, 0x7b, 0x02, 0x12, 0x43, 0x13, 0x04, 0x1b, 0x0a, 0x1a,
+ 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x13, 0x0e, 0x12, 0x72, 0x3a, 0x7a, 0xba, 0x72, 0x7b,
+ 0x7a, 0xfb, 0x02, 0x12, 0x43, 0x13, 0x04, 0x1b, 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12,
+ 0x0c, 0x13, 0x0e, 0x12, 0x72, 0xba, 0x7b, 0x3a, 0x72, 0xfb, 0x7b, 0x7b, 0x02, 0x12, 0x43, 0x13,
+ 0x04, 0x1b, 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x13, 0x73, 0x7b, 0x7c, 0x7b,
+ 0x0e, 0x12, 0x00, 0x58, 0x18, 0xc0, 0x00, 0x80, 0x18, 0xc0, 0x73, 0x3a, 0xf0, 0x01, 0xfb, 0x7a,
+ 0x0e, 0x03, 0x74, 0xbb, 0x0c, 0x03, 0x74, 0xfb, 0x0a, 0x03, 0x75, 0x3b, 0x75, 0x78, 0x28, 0x00,
+ 0xd1, 0x00, 0xe1, 0x28, 0x7c, 0x7b, 0x21, 0x00, 0x00, 0x5a, 0x18, 0xd2, 0x00, 0x92, 0x18, 0xd2,
+ 0xf0, 0x02, 0xfb, 0x38, 0x22, 0x00, 0x92, 0x08, 0x92, 0x0d, 0xe1, 0x01, 0x20, 0x09, 0xf0, 0x01,
+ 0xfb, 0x61, 0x1c, 0x04, 0x28, 0x00, 0xd1, 0x00, 0xe1, 0x12, 0x9a, 0x08, 0x1c, 0x21, 0x06, 0x13,
+ 0x0e, 0x1b, 0x93, 0x04, 0x23, 0x09, 0x93, 0x00, 0x22, 0x02, 0x9b, 0x04, 0x98, 0x03, 0xf7, 0xff,
+ 0xff, 0x67, 0x7c, 0xba, 0x7c, 0xfb, 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x7d, 0x3a, 0x1c, 0x21,
+ 0x02, 0x12, 0x43, 0x1a, 0x7d, 0x7b, 0x43, 0x13, 0x9a, 0x0d, 0x18, 0x9e, 0x1c, 0x30, 0x22, 0x09,
+ 0xf0, 0x02, 0xfa, 0xcc, 0x1c, 0x20, 0xf0, 0x01, 0xfb, 0x31, 0x78, 0xb2, 0x78, 0xf3, 0x02, 0x12,
+ 0x43, 0x13, 0x04, 0x1b, 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x15, 0x0e, 0x12,
+ 0x70, 0xb2, 0x70, 0xf5, 0x1c, 0x28, 0xf0, 0x01, 0xfb, 0x2d, 0x90, 0x05, 0x28, 0x00, 0xd1, 0x00,
+ 0xe0, 0xde, 0x78, 0xf3, 0x98, 0x03, 0x93, 0x00, 0x99, 0x05, 0x22, 0x02, 0x9b, 0x04, 0xf7, 0xff,
+ 0xff, 0x37, 0x1c, 0x04, 0x28, 0x00, 0xda, 0x00, 0xe0, 0xc5, 0x79, 0x33, 0x78, 0x34, 0x00, 0xd8,
+ 0x18, 0xc0, 0x00, 0x40, 0xf0, 0x01, 0xfb, 0x16, 0x0e, 0x03, 0x72, 0x73, 0x0c, 0x03, 0x72, 0xb3,
+ 0x0a, 0x03, 0x72, 0xf3, 0x73, 0x30, 0x28, 0x00, 0xd1, 0x00, 0xe0, 0xc4, 0x9b, 0x05, 0x1b, 0x2d,
+ 0x19, 0x1b, 0x93, 0x06, 0x95, 0x07, 0x79, 0x33, 0x21, 0x00, 0x00, 0xda, 0x18, 0xd2, 0x00, 0x52,
+ 0xf0, 0x02, 0xfa, 0xd0, 0x22, 0x00, 0x92, 0x09, 0xe0, 0x89, 0x7a, 0x72, 0x7a, 0xb3, 0x06, 0x12,
+ 0x04, 0x1b, 0x43, 0x13, 0x7a, 0xf2, 0x99, 0x06, 0x02, 0x12, 0x43, 0x1a, 0x7b, 0x33, 0x43, 0x13,
+ 0x9a, 0x0c, 0x18, 0x9d, 0x1c, 0x28, 0x22, 0x09, 0xf0, 0x02, 0xfa, 0x78, 0x79, 0x2b, 0x78, 0x2c,
+ 0x00, 0xd8, 0x1a, 0xc0, 0xf0, 0x01, 0xfa, 0xe6, 0x0e, 0x03, 0x73, 0xab, 0x0c, 0x03, 0x73, 0xeb,
+ 0x0a, 0x03, 0x74, 0x2b, 0x74, 0x68, 0x28, 0x00, 0xd1, 0x00, 0xe0, 0x94, 0x9b, 0x06, 0x9a, 0x07,
+ 0x19, 0x1b, 0x1b, 0x12, 0x92, 0x07, 0x93, 0x06, 0x79, 0x2b, 0x21, 0x00, 0x00, 0xda, 0x1a, 0xd2,
+ 0xf0, 0x02, 0xfa, 0xa0, 0x9a, 0x07, 0x98, 0x06, 0xe0, 0x08, 0x78, 0x43, 0x3b, 0x04, 0x06, 0x1b,
+ 0x0e, 0x1b, 0x2b, 0x01, 0xd9, 0x04, 0x78, 0x03, 0x1a, 0xd2, 0x18, 0xc0, 0x2a, 0x00, 0xd1, 0xf4,
+ 0x9b, 0x06, 0x1a, 0xc4, 0x73, 0x6c, 0x2c, 0x00, 0xd0, 0x15, 0x1c, 0x20, 0xf0, 0x01, 0xfa, 0xba,
+ 0x0e, 0x03, 0x72, 0x6b, 0x0c, 0x03, 0x72, 0xab, 0x0a, 0x03, 0x72, 0xeb, 0x73, 0x28, 0x28, 0x00,
+ 0xd0, 0x69, 0x1c, 0x22, 0x99, 0x06, 0xf0, 0x02, 0xfa, 0x39, 0x9a, 0x06, 0x9b, 0x07, 0x19, 0x12,
+ 0x1b, 0x1b, 0x92, 0x06, 0x93, 0x07, 0x22, 0x00, 0x92, 0x0a, 0xe0, 0x26, 0x7b, 0xab, 0x7b, 0xea,
+ 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x7c, 0x2b, 0x7c, 0x6c, 0x02, 0x1b, 0x43, 0x13, 0x43, 0x1c,
+ 0x9b, 0x0b, 0x22, 0x07, 0x18, 0xe4, 0x1c, 0x20, 0x99, 0x06, 0xf0, 0x02, 0xfa, 0x1f, 0x78, 0x23,
+ 0x9a, 0x06, 0x18, 0xd2, 0x92, 0x06, 0x79, 0x22, 0x79, 0x63, 0x02, 0x12, 0x43, 0x13, 0x04, 0x1b,
+ 0x0a, 0x1a, 0x0e, 0x1b, 0x43, 0x1a, 0x04, 0x12, 0x0c, 0x13, 0x0e, 0x12, 0x71, 0x22, 0x71, 0x63,
+ 0x9b, 0x0a, 0x9a, 0x0b, 0x33, 0x01, 0x93, 0x0a, 0x32, 0x07, 0x92, 0x0b, 0x79, 0x2b, 0x9a, 0x0a,
+ 0x42, 0x9a, 0xd3, 0xd3, 0x9b, 0x09, 0x9a, 0x0c, 0x33, 0x01, 0x93, 0x09, 0x32, 0x12, 0x92, 0x0c,
+ 0x79, 0x33, 0x9a, 0x09, 0x42, 0x9a, 0xd2, 0x00, 0xe7, 0x6f, 0x98, 0x05, 0xf0, 0x01, 0xfa, 0x5e,
+ 0x9b, 0x08, 0x9a, 0x0d, 0x33, 0x01, 0x93, 0x08, 0x32, 0x0d, 0x23, 0x00, 0x92, 0x0d, 0x93, 0x05,
+ 0x7c, 0x7b, 0x9a, 0x08, 0x42, 0x9a, 0xd2, 0x00, 0xe6, 0xf8, 0x9b, 0x05, 0x2b, 0x00, 0xd1, 0x01,
+ 0x24, 0x00, 0xe0, 0x08, 0x24, 0x00, 0x98, 0x05, 0xf0, 0x01, 0xfa, 0x48, 0x2c, 0x00, 0xd0, 0x02,
+ 0x1c, 0x38, 0xf7, 0xfe, 0xfb, 0x95, 0xb0, 0x0f, 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
+ 0x24, 0x04, 0x42, 0x64, 0xe7, 0xf4, 0x24, 0x04, 0x42, 0x64, 0xe7, 0xec, 0xb5, 0xf0, 0xb0, 0x8f,
+ 0x46, 0x6b, 0x1c, 0x06, 0x4a, 0xc7, 0x20, 0x00, 0x33, 0x37, 0x70, 0x18, 0x23, 0x10, 0x70, 0x13,
+ 0x4b, 0xc5, 0x1c, 0x32, 0x32, 0x98, 0x60, 0x13, 0x46, 0x6d, 0x1c, 0x33, 0x35, 0x21, 0x33, 0x90,
+ 0x60, 0x19, 0x74, 0xa8, 0x74, 0xe8, 0x75, 0x28, 0x75, 0x68, 0x1c, 0x08, 0x1c, 0x29, 0xf7, 0xff,
+ 0xfe, 0x55, 0x1c, 0x04, 0x1c, 0x21, 0x48, 0xbd, 0xf7, 0xfe, 0xfb, 0xe4, 0x48, 0xbc, 0xf7, 0xfe,
+ 0xfc, 0x29, 0x2c, 0x00, 0xda, 0x00, 0xe1, 0xf0, 0x4b, 0xba, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x32,
+ 0x4c, 0xb9, 0x79, 0x2b, 0x79, 0xa2, 0x42, 0x9a, 0xd1, 0x23, 0x79, 0xe2, 0x79, 0x6b, 0x42, 0x9a,
+ 0xd1, 0x1f, 0x7a, 0x21, 0x7a, 0x2a, 0x7a, 0x60, 0x7a, 0x6b, 0x02, 0x09, 0x02, 0x12, 0x43, 0x08,
+ 0x43, 0x13, 0x42, 0x98, 0xd1, 0x15, 0x7a, 0xa1, 0x7a, 0xaa, 0x7a, 0xe0, 0x7a, 0xeb, 0x02, 0x09,
+ 0x02, 0x12, 0x43, 0x08, 0x43, 0x13, 0x42, 0x98, 0xd1, 0x0b, 0x7b, 0x22, 0x7b, 0xab, 0x42, 0x9a,
+ 0xd1, 0x07, 0x7b, 0x62, 0x7b, 0xeb, 0x42, 0x9a, 0xd1, 0x03, 0x7b, 0xa2, 0x7c, 0x2b, 0x42, 0x9a,
+ 0xd0, 0x09, 0x46, 0x68, 0x30, 0x21, 0xf7, 0xfe, 0xfb, 0x33, 0x24, 0x01, 0x48, 0xa3, 0xf7, 0xfe,
+ 0xfb, 0xa9, 0x42, 0x64, 0xe1, 0xc8, 0x46, 0x68, 0x30, 0x21, 0x79, 0x03, 0x49, 0x9e, 0x71, 0x8b,
+ 0x79, 0x43, 0x71, 0xcb, 0x7a, 0x02, 0x7a, 0x43, 0x02, 0x12, 0x43, 0x13, 0x04, 0x1b, 0x0c, 0x1a,
+ 0x0e, 0x1b, 0x72, 0x0b, 0x72, 0x4a, 0x7a, 0x82, 0x7a, 0xc3, 0x02, 0x12, 0x43, 0x13, 0x04, 0x1b,
+ 0x0e, 0x1a, 0x0c, 0x1b, 0x72, 0x8a, 0x72, 0xcb, 0x7b, 0x83, 0x4a, 0x95, 0x73, 0x0b, 0x7b, 0xc3,
+ 0x73, 0x4b, 0x7c, 0x03, 0x73, 0x8b, 0x23, 0x80, 0x42, 0x5b, 0x60, 0x13, 0x4a, 0x91, 0x21, 0x00,
+ 0x91, 0x03, 0x91, 0x07, 0x92, 0x01, 0xe0, 0xfc, 0x23, 0x33, 0x44, 0x6b, 0xa9, 0x0d, 0x78, 0x1a,
+ 0x78, 0x0b, 0x21, 0x35, 0x06, 0x12, 0x44, 0x69, 0x04, 0x1b, 0x43, 0x13, 0x78, 0x0a, 0x21, 0x36,
+ 0x44, 0x69, 0x02, 0x12, 0x43, 0x1a, 0x78, 0x0b, 0x48, 0x87, 0x43, 0x13, 0x9a, 0x07, 0x99, 0x03,
+ 0x18, 0x9b, 0x93, 0x05, 0x7a, 0x1a, 0x00, 0x52, 0xf7, 0xfe, 0xfb, 0x64, 0x49, 0x83, 0x23, 0x00,
+ 0x93, 0x04, 0x93, 0x06, 0x91, 0x02, 0xe0, 0xd0, 0x9b, 0x05, 0x99, 0x05, 0x7a, 0x5a, 0x7a, 0x9b,
+ 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x7a, 0xca, 0x02, 0x12, 0x43, 0x1a, 0x7b, 0x0b, 0x43, 0x13,
+ 0x9a, 0x06, 0x18, 0x9c, 0x79, 0x63, 0x2b, 0x08, 0xd1, 0x7f, 0x79, 0xa3, 0x2b, 0x06, 0xd0, 0x09,
+ 0x2b, 0x01, 0xd0, 0x07, 0x2b, 0x02, 0xd0, 0x05, 0x2b, 0x03, 0xd0, 0x03, 0x2b, 0x04, 0xd0, 0x01,
+ 0x2b, 0x05, 0xd1, 0x72, 0x79, 0xe3, 0x2b, 0x50, 0xd1, 0x6f, 0x79, 0x23, 0x2b, 0x01, 0xd9, 0x6c,
+ 0x1c, 0x32, 0x23, 0x01, 0x32, 0x9c, 0x70, 0x13, 0x48, 0x6d, 0x79, 0xa1, 0x22, 0x01, 0xf7, 0xfe,
+ 0xfb, 0x31, 0x23, 0x00, 0x73, 0x73, 0x73, 0x33, 0x27, 0x00, 0x25, 0x00, 0xe0, 0x2c, 0x7b, 0xa2,
+ 0x7b, 0xe3, 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x7c, 0x22, 0x02, 0x12, 0x43, 0x1a, 0x7c, 0x63,
+ 0x43, 0x13, 0x19, 0x59, 0x78, 0xcb, 0x2b, 0x02, 0xd1, 0x1c, 0x78, 0x8a, 0x06, 0x13, 0x2b, 0x00,
+ 0xda, 0x0b, 0x7b, 0x33, 0x2b, 0x00, 0xd1, 0x08, 0x2a, 0x00, 0xd0, 0x06, 0x73, 0x32, 0x79, 0x0b,
+ 0x79, 0x49, 0x02, 0x1b, 0x43, 0x19, 0x98, 0x02, 0xe0, 0x0a, 0x7b, 0x73, 0x2b, 0x00, 0xd1, 0x09,
+ 0x2a, 0x00, 0xd0, 0x07, 0x73, 0x72, 0x79, 0x0b, 0x79, 0x49, 0x02, 0x1b, 0x98, 0x01, 0x43, 0x19,
+ 0xf7, 0xfe, 0xfb, 0x00, 0x37, 0x01, 0x35, 0x07, 0x79, 0x23, 0x42, 0x9f, 0xd3, 0xcf, 0x7b, 0x31,
+ 0x29, 0x00, 0xd0, 0x64, 0x7b, 0x72, 0x2a, 0x00, 0xd0, 0x61, 0x48, 0x4e, 0xf7, 0xfe, 0xfa, 0xf2,
+ 0x4a, 0x45, 0x7b, 0x33, 0x99, 0x05, 0x74, 0x13, 0x7b, 0x73, 0x46, 0x68, 0x74, 0x53, 0x79, 0x4b,
+ 0x30, 0x21, 0x70, 0x33, 0x78, 0xa3, 0x46, 0x6d, 0x60, 0x73, 0x73, 0xd3, 0x78, 0xe3, 0x35, 0x37,
+ 0x60, 0xb3, 0xf7, 0xfe, 0xfa, 0x65, 0x4b, 0x44, 0x4c, 0x3d, 0x48, 0x44, 0x60, 0x23, 0x78, 0x31,
+ 0x68, 0xb2, 0xf7, 0xfe, 0xfa, 0xd7, 0x1c, 0x33, 0x33, 0x90, 0x68, 0x18, 0x1c, 0x29, 0xf7, 0xff,
+ 0xf8, 0x5b, 0x28, 0x00, 0xdb, 0x00, 0xe0, 0x81, 0xe0, 0xde, 0x7b, 0xa3, 0x7b, 0xe2, 0x06, 0x1b,
+ 0x04, 0x12, 0x43, 0x1a, 0x7c, 0x23, 0x02, 0x1b, 0x43, 0x13, 0x7c, 0x62, 0x1c, 0x10, 0x43, 0x18,
+ 0xd0, 0x01, 0xf0, 0x01, 0xf8, 0xf3, 0x23, 0x00, 0x73, 0xa3, 0x73, 0xe3, 0x74, 0x23, 0x74, 0x63,
+ 0x7a, 0xa2, 0x7a, 0x63, 0x04, 0x12, 0x06, 0x1b, 0x43, 0x1a, 0x7a, 0xe3, 0x02, 0x1b, 0x43, 0x13,
+ 0x7b, 0x22, 0x1c, 0x10, 0x43, 0x18, 0xd0, 0x01, 0xf0, 0x01, 0xf8, 0xe0, 0x23, 0x00, 0x72, 0x63,
+ 0x72, 0xa3, 0x72, 0xe3, 0x73, 0x23, 0x79, 0x63, 0x2b, 0x09, 0xd1, 0x03, 0x4a, 0x20, 0x4b, 0x28,
+ 0x60, 0x13, 0xe0, 0x28, 0x2b, 0x08, 0xd1, 0x0a, 0x79, 0xe3, 0x2b, 0x50, 0xd1, 0x07, 0x79, 0x23,
+ 0x2b, 0x01, 0xd9, 0x04, 0x79, 0xa2, 0x4b, 0x23, 0x49, 0x19, 0x1a, 0x9b, 0x60, 0x0b, 0x9a, 0x04,
+ 0x9b, 0x06, 0x32, 0x01, 0x33, 0x12, 0x92, 0x04, 0x93, 0x06, 0x99, 0x05, 0x9a, 0x04, 0x79, 0x0b,
+ 0x42, 0x9a, 0xd2, 0x00, 0xe7, 0x28, 0x9b, 0x03, 0x99, 0x07, 0x33, 0x01, 0x31, 0x0d, 0x93, 0x03,
+ 0x91, 0x07, 0x22, 0x32, 0x44, 0x6a, 0x78, 0x13, 0x99, 0x03, 0x42, 0x99, 0xd2, 0x00, 0xe6, 0xfb,
+ 0x48, 0x15, 0xf7, 0xfe, 0xfa, 0x77, 0x46, 0x68, 0x30, 0x21, 0xf7, 0xfe, 0xf9, 0xf9, 0x4c, 0x11,
+ 0xe0, 0x83, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x3c, 0x2c, 0x0d, 0xe0, 0x01, 0x13, 0x70, 0x62, 0xd3,
+ 0x13, 0x70, 0x62, 0xfd, 0x13, 0x70, 0x67, 0x98, 0x13, 0x70, 0x67, 0xac, 0x13, 0x70, 0x63, 0x16,
+ 0x13, 0x70, 0x67, 0xa8, 0x13, 0x70, 0x63, 0xa8, 0x13, 0x70, 0x63, 0x3c, 0x13, 0x70, 0x63, 0x9a,
+ 0x13, 0x70, 0x63, 0x63, 0x13, 0x70, 0x63, 0xb7, 0xff, 0xff, 0xfb, 0x4f, 0x13, 0x70, 0x63, 0xfc,
+ 0xff, 0xff, 0xb1, 0xe0, 0xff, 0xff, 0xd8, 0xf0, 0x13, 0x70, 0x63, 0xcb, 0x4b, 0x39, 0x48, 0x3a,
+ 0x60, 0x23, 0xf7, 0xfe, 0xfa, 0x8f, 0x78, 0x29, 0x78, 0x33, 0x42, 0x8b, 0xd0, 0x02, 0x48, 0x37,
+ 0xf7, 0xfe, 0xfa, 0x40, 0x4b, 0x36, 0x4a, 0x37, 0x60, 0x13, 0x46, 0x6b, 0x33, 0x37, 0x78, 0x31,
+ 0x78, 0x1b, 0x42, 0x8b, 0xd1, 0x03, 0x4b, 0x34, 0x78, 0x1b, 0x07, 0x9a, 0xd5, 0x06, 0x1c, 0x33,
+ 0x33, 0x90, 0x68, 0x18, 0xf7, 0xfe, 0xff, 0xaa, 0x28, 0x00, 0xdb, 0x3d, 0x4a, 0x2f, 0x4b, 0x30,
+ 0x60, 0x13, 0x68, 0xb2, 0x2a, 0x00, 0xd0, 0x09, 0x1c, 0x33, 0x33, 0x90, 0x06, 0x12, 0x68, 0x18,
+ 0x79, 0xf1, 0x0e, 0x12, 0xf7, 0xfe, 0xff, 0x86, 0x28, 0x00, 0xdb, 0x2d, 0x4a, 0x25, 0x4b, 0x29,
+ 0x48, 0x29, 0x60, 0x13, 0x4a, 0x25, 0x4b, 0x29, 0x60, 0x13, 0xf7, 0xfe, 0xfa, 0x5b, 0x1c, 0x30,
+ 0xf7, 0xff, 0xf8, 0x70, 0x1c, 0x04, 0x48, 0x26, 0xf7, 0xfe, 0xfa, 0x54, 0x2c, 0x00, 0xdb, 0x1c,
+ 0x1c, 0x34, 0x23, 0x08, 0x34, 0xa0, 0x73, 0xb3, 0x68, 0x23, 0x2b, 0x00, 0xd1, 0x07, 0x20, 0x81,
+ 0x01, 0x40, 0xf0, 0x01, 0xf8, 0x3f, 0x23, 0x1f, 0x30, 0x1f, 0x43, 0x98, 0x60, 0x20, 0x1c, 0x33,
+ 0x33, 0xa0, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x01, 0x24, 0x00, 0xe0, 0x06, 0x4a, 0x13, 0x4b, 0x19,
+ 0x24, 0x04, 0x60, 0x13, 0x42, 0x64, 0xe0, 0x00, 0x4c, 0x17, 0x4a, 0x0e, 0x4b, 0x11, 0x60, 0x13,
+ 0x2c, 0x00, 0xda, 0x05, 0x4b, 0x0d, 0x48, 0x15, 0x68, 0x19, 0xf7, 0xfe, 0xf9, 0xe3, 0xe0, 0x03,
+ 0x48, 0x13, 0xf7, 0xfe, 0xf9, 0xdf, 0x24, 0x00, 0xb0, 0x0f, 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02,
+ 0x47, 0x08, 0x46, 0xc0, 0xff, 0xff, 0xfb, 0x4e, 0x13, 0x70, 0x64, 0x2a, 0x13, 0x70, 0x64, 0x45,
+ 0x00, 0x98, 0x96, 0x80, 0x13, 0x70, 0x60, 0x38, 0x13, 0x70, 0x01, 0x0e, 0x13, 0x70, 0x67, 0xa8,
+ 0xff, 0xff, 0xfb, 0x4d, 0x00, 0x0f, 0x42, 0x40, 0x13, 0x70, 0x64, 0x6f, 0xff, 0xff, 0xfb, 0x4c,
+ 0x13, 0x70, 0x64, 0x87, 0xff, 0xff, 0xfb, 0x4b, 0xff, 0xff, 0xd8, 0xe7, 0x13, 0x70, 0x64, 0x9e,
+ 0x13, 0x70, 0x64, 0xc0, 0xb5, 0xf0, 0x4b, 0x78, 0xb0, 0x8b, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x4f,
+ 0x46, 0x6b, 0x22, 0x00, 0x33, 0x27, 0x70, 0x1a, 0xf0, 0x01, 0xf9, 0x24, 0x4a, 0x73, 0x23, 0x10,
+ 0x70, 0x13, 0x4b, 0x73, 0x4a, 0x73, 0x78, 0x1b, 0x2b, 0x00, 0xd0, 0x01, 0x4b, 0x72, 0xe0, 0x00,
+ 0x4b, 0x72, 0x4e, 0x73, 0x46, 0x6d, 0x60, 0x13, 0x35, 0x11, 0x23, 0x00, 0x1c, 0x37, 0x74, 0xab,
+ 0x74, 0xeb, 0x75, 0x2b, 0x75, 0x6b, 0x37, 0x90, 0x68, 0x38, 0x1c, 0x29, 0xf7, 0xff, 0xfb, 0xfe,
+ 0x4c, 0x6c, 0x79, 0x2b, 0x79, 0xa2, 0x42, 0x9a, 0xd1, 0x23, 0x79, 0xe2, 0x79, 0x6b, 0x42, 0x9a,
+ 0xd1, 0x1f, 0x7a, 0x21, 0x7a, 0x2a, 0x7a, 0x60, 0x7a, 0x6b, 0x02, 0x09, 0x02, 0x12, 0x43, 0x08,
+ 0x43, 0x13, 0x42, 0x98, 0xd1, 0x15, 0x7a, 0xa1, 0x7a, 0xaa, 0x7a, 0xe0, 0x7a, 0xeb, 0x02, 0x09,
+ 0x02, 0x12, 0x43, 0x08, 0x43, 0x13, 0x42, 0x98, 0xd1, 0x0b, 0x7b, 0x22, 0x7b, 0xab, 0x42, 0x9a,
+ 0xd1, 0x07, 0x7b, 0x62, 0x7b, 0xeb, 0x42, 0x9a, 0xd1, 0x03, 0x7b, 0xa2, 0x7c, 0x2b, 0x42, 0x9a,
+ 0xd0, 0x08, 0x46, 0x68, 0x30, 0x11, 0xf7, 0xfe, 0xf8, 0xeb, 0x48, 0x57, 0xf7, 0xfe, 0xf9, 0x62,
+ 0x4c, 0x56, 0xe0, 0x93, 0x46, 0x6c, 0x1c, 0x28, 0x34, 0x27, 0xf7, 0xfe, 0xf8, 0xe1, 0x68, 0x38,
+ 0x1c, 0x21, 0xf7, 0xfe, 0xfe, 0xe1, 0x28, 0x00, 0xda, 0x01, 0x4c, 0x51, 0xe0, 0x86, 0x4b, 0x49,
+ 0x4a, 0x50, 0x60, 0x1a, 0x78, 0x31, 0x78, 0x23, 0x42, 0x8b, 0xd1, 0x03, 0x4b, 0x4e, 0x78, 0x1b,
+ 0x07, 0x9a, 0xd5, 0x08, 0x4b, 0x46, 0x33, 0x90, 0x68, 0x18, 0xf7, 0xfe, 0xfe, 0xbf, 0x28, 0x00,
+ 0xda, 0x01, 0x4c, 0x4a, 0xe0, 0x72, 0x49, 0x42, 0x68, 0x8a, 0x2a, 0x00, 0xd0, 0x0b, 0x1c, 0x0b,
+ 0x33, 0x90, 0x06, 0x12, 0x68, 0x18, 0x79, 0xc9, 0x0e, 0x12, 0xf7, 0xfe, 0xfe, 0x9b, 0x28, 0x00,
+ 0xda, 0x01, 0x4c, 0x43, 0xe0, 0x62, 0x4b, 0x36, 0x4a, 0x36, 0x78, 0x1b, 0x2b, 0x00, 0xd0, 0x01,
+ 0x4b, 0x35, 0xe0, 0x00, 0x4b, 0x35, 0x60, 0x13, 0x48, 0x35, 0x21, 0x00, 0xf7, 0xfe, 0xfe, 0xd2,
+ 0x28, 0x00, 0xda, 0x01, 0x4c, 0x3b, 0xe0, 0x51, 0x4b, 0x32, 0x79, 0x5b, 0x2b, 0x00, 0xd1, 0x03,
+ 0x4b, 0x35, 0x78, 0x1b, 0x07, 0xda, 0xd5, 0x22, 0x4d, 0x2d, 0x23, 0x00, 0x73, 0xab, 0x4c, 0x29,
+ 0x4b, 0x30, 0x26, 0x01, 0x60, 0x23, 0x1c, 0x2b, 0x33, 0x90, 0x68, 0x18, 0x88, 0xeb, 0x21, 0xa1,
+ 0x93, 0x00, 0x1c, 0x2b, 0x33, 0x0e, 0x93, 0x02, 0x22, 0xfe, 0x23, 0x00, 0x96, 0x01, 0xf7, 0xfe,
+ 0xfd, 0xff, 0x4b, 0x21, 0x60, 0x23, 0x28, 0x00, 0xda, 0x06, 0x73, 0xae, 0x1c, 0x28, 0x21, 0x00,
+ 0xf7, 0xfe, 0xfe, 0xa8, 0x4c, 0x28, 0xe0, 0x29, 0x7b, 0xab, 0x33, 0x01, 0x73, 0xab, 0x4b, 0x27,
+ 0x4d, 0x18, 0x4f, 0x1b, 0x4e, 0x1b, 0x60, 0x2b, 0x79, 0x31, 0x1c, 0x38, 0xf7, 0xff, 0xfa, 0x60,
+ 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x22, 0xf7, 0xfe, 0xf8, 0xe5, 0x4b, 0x13, 0x60, 0x2b, 0x2c, 0x00,
+ 0xda, 0x01, 0x4c, 0x20, 0xe0, 0x12, 0x79, 0x31, 0x1c, 0x38, 0xf7, 0xff, 0xfa, 0x01, 0x1c, 0x04,
+ 0x1c, 0x21, 0x48, 0x1d, 0xf7, 0xfe, 0xf8, 0xd6, 0x2c, 0x00, 0xda, 0x01, 0x4c, 0x1b, 0xe0, 0x05,
+ 0x79, 0x33, 0x4a, 0x06, 0x70, 0x13, 0x4a, 0x1a, 0x23, 0x01, 0x70, 0x13, 0xb0, 0x0b, 0x1c, 0x20,
+ 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x67, 0x98, 0x13, 0x70, 0x60, 0x3c,
+ 0x13, 0x70, 0x01, 0x0f, 0x13, 0x70, 0x60, 0x38, 0x00, 0x0f, 0x42, 0x40, 0x00, 0x03, 0x0d, 0x40,
+ 0x13, 0x72, 0xc2, 0x00, 0x13, 0x70, 0x67, 0xac, 0x13, 0x70, 0x63, 0x16, 0xff, 0xff, 0xfc, 0x0f,
+ 0xff, 0xff, 0xfc, 0x18, 0x00, 0x98, 0x96, 0x80, 0x13, 0x70, 0x01, 0x0e, 0xff, 0xff, 0xfc, 0x17,
+ 0xff, 0xff, 0xfc, 0x16, 0xff, 0xff, 0xfc, 0x15, 0xff, 0xff, 0xfc, 0x14, 0x01, 0x31, 0x2d, 0x00,
+ 0x13, 0x70, 0x64, 0xdd, 0xff, 0xff, 0xfc, 0x13, 0x13, 0x70, 0x62, 0x91, 0xff, 0xff, 0xfc, 0x12,
+ 0x13, 0x70, 0x67, 0x9c, 0xb5, 0xf0, 0x4b, 0x8e, 0x22, 0x00, 0x80, 0x1a, 0x4b, 0x8d, 0x25, 0x00,
+ 0x80, 0x1a, 0x4b, 0x8d, 0x4a, 0x8d, 0x70, 0x1d, 0x4b, 0x8d, 0xb0, 0x8b, 0x70, 0x1d, 0x23, 0x78,
+ 0x42, 0x5b, 0x60, 0x13, 0x90, 0x08, 0xf0, 0x00, 0xff, 0xfd, 0x4c, 0x8a, 0x99, 0x08, 0x1c, 0x20,
+ 0xf7, 0xff, 0xfc, 0x7c, 0x28, 0x00, 0xda, 0x00, 0xe0, 0xfc, 0x49, 0x87, 0x20, 0x01, 0x73, 0xa0,
+ 0x78, 0x0b, 0x78, 0x4a, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x78, 0x8b, 0x02, 0x1b, 0x43, 0x13,
+ 0x78, 0xca, 0x43, 0x1a, 0xd0, 0x48, 0x79, 0x4b, 0x2b, 0x00, 0xd1, 0x03, 0x4b, 0x7f, 0x78, 0x1b,
+ 0x42, 0x03, 0xd0, 0x1d, 0x4d, 0x7b, 0x23, 0x00, 0x73, 0xab, 0x4c, 0x7d, 0x4b, 0x7d, 0x26, 0x01,
+ 0x60, 0x23, 0x1c, 0x2b, 0x33, 0x90, 0x68, 0x18, 0x88, 0xeb, 0x21, 0xa1, 0x93, 0x00, 0x1c, 0x2b,
+ 0x33, 0x0e, 0x93, 0x02, 0x22, 0xfe, 0x23, 0x00, 0x96, 0x01, 0xf7, 0xfe, 0xfd, 0x51, 0x4b, 0x76,
+ 0x60, 0x23, 0x28, 0x00, 0xda, 0x01, 0x73, 0xae, 0xe0, 0xbf, 0x7b, 0xab, 0x33, 0x01, 0x73, 0xab,
+ 0x4b, 0x6d, 0x48, 0x72, 0x79, 0x1d, 0x1c, 0x29, 0xf7, 0xfe, 0xf8, 0x44, 0x4e, 0x69, 0x1c, 0x29,
+ 0x1c, 0x30, 0xf7, 0xff, 0xfa, 0x3d, 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x6d, 0xf7, 0xfe, 0xf8, 0x3a,
+ 0x1c, 0xa3, 0x2b, 0x01, 0xd8, 0x01, 0x1c, 0x30, 0xe0, 0x3c, 0x2c, 0x00, 0xda, 0x00, 0xe0, 0xa4,
+ 0x4a, 0x5d, 0x23, 0x01, 0x70, 0x13, 0x4b, 0x5e, 0x4a, 0x61, 0x70, 0x1d, 0x4b, 0x62, 0x60, 0x13,
+ 0x4a, 0x5a, 0x23, 0x00, 0x60, 0x13, 0xe0, 0x94, 0x4a, 0x5c, 0x71, 0x4d, 0x27, 0x01, 0x26, 0x00,
+ 0x25, 0x01, 0x92, 0x05, 0x1c, 0x32, 0x1e, 0x53, 0x41, 0x9a, 0x92, 0x09, 0x9a, 0x05, 0x78, 0x13,
+ 0x22, 0x01, 0x42, 0x13, 0xd0, 0x04, 0x9b, 0x09, 0x2b, 0x00, 0xd1, 0x01, 0x2d, 0x00, 0xd1, 0x27,
+ 0x48, 0x58, 0x1c, 0x31, 0xf7, 0xfe, 0xf8, 0x0e, 0x4a, 0x4e, 0x06, 0x31, 0x0e, 0x09, 0x1c, 0x10,
+ 0x92, 0x07, 0xf7, 0xff, 0xfa, 0x05, 0x1c, 0x04, 0x1c, 0x21, 0x48, 0x51, 0xf7, 0xfe, 0xf8, 0x02,
+ 0x1c, 0xa3, 0x2b, 0x01, 0xd8, 0x10, 0x9b, 0x09, 0x2b, 0x00, 0xd0, 0x0d, 0x4a, 0x48, 0x4b, 0x4a,
+ 0x60, 0x13, 0x98, 0x07, 0xf7, 0xfe, 0xfe, 0x56, 0x4a, 0x40, 0x23, 0x79, 0x42, 0x5b, 0x60, 0x13,
+ 0x4a, 0x3d, 0x23, 0x00, 0x70, 0x13, 0xe0, 0x6d, 0x2c, 0x00, 0xda, 0x40, 0x2d, 0x00, 0xd0, 0x38,
+ 0x4d, 0x45, 0x4c, 0x3f, 0x4b, 0x3f, 0x95, 0x06, 0x4a, 0x3a, 0x60, 0x23, 0x4b, 0x43, 0x27, 0x00,
+ 0x68, 0x18, 0x88, 0xd3, 0x60, 0x2f, 0x73, 0x97, 0x93, 0x00, 0x1c, 0x13, 0x33, 0x0e, 0x25, 0x01,
+ 0x93, 0x02, 0x21, 0xa1, 0x23, 0x00, 0x22, 0xfe, 0x95, 0x01, 0xf7, 0xfe, 0xfc, 0xd1, 0x4b, 0x36,
+ 0x1c, 0x05, 0x60, 0x23, 0x28, 0x00, 0xda, 0x05, 0x4a, 0x2e, 0x23, 0x01, 0x73, 0x93, 0x9a, 0x06,
+ 0x60, 0x17, 0xe0, 0x06, 0x4a, 0x2b, 0x7b, 0x93, 0x33, 0x01, 0x73, 0x93, 0x4b, 0x2a, 0x22, 0x01,
+ 0x71, 0x5a, 0x4b, 0x28, 0x48, 0x32, 0x7b, 0x9f, 0x1c, 0x29, 0x1c, 0x3a, 0xf7, 0xfd, 0xff, 0xba,
+ 0x4b, 0x26, 0x22, 0x01, 0x78, 0x1b, 0x42, 0x13, 0xd0, 0x05, 0x2d, 0x00, 0xda, 0x03, 0x25, 0x01,
+ 0xe0, 0x02, 0x36, 0x01, 0xe0, 0x00, 0x25, 0x00, 0x42, 0xbe, 0xdb, 0x8b, 0xe0, 0x1d, 0x4b, 0x1e,
+ 0x20, 0x00, 0x24, 0x01, 0x70, 0x18, 0x70, 0x58, 0x70, 0x98, 0x70, 0xdc, 0x06, 0x31, 0x0e, 0x09,
+ 0x9d, 0x08, 0x71, 0x19, 0x89, 0x2b, 0x4a, 0x12, 0x80, 0x13, 0x89, 0x6b, 0x4a, 0x11, 0x80, 0x13,
+ 0x4b, 0x11, 0x4a, 0x17, 0x70, 0x1c, 0x4b, 0x12, 0x70, 0x19, 0x4b, 0x17, 0x60, 0x13, 0x4b, 0x0f,
+ 0x60, 0x18, 0xf0, 0x00, 0xfe, 0xfb, 0x20, 0x00, 0xe0, 0x0e, 0x4a, 0x0c, 0x23, 0x7a, 0x42, 0x5b,
+ 0x60, 0x13, 0x48, 0x0c, 0xf7, 0xfe, 0xfd, 0xe6, 0x4a, 0x07, 0x23, 0x00, 0x70, 0x13, 0x48, 0x15,
+ 0xf7, 0xfd, 0xff, 0x80, 0x20, 0x03, 0x42, 0x40, 0xb0, 0x0b, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
+ 0x13, 0x70, 0x67, 0x9e, 0x13, 0x70, 0x67, 0xa0, 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x67, 0xa8,
+ 0x13, 0x70, 0x60, 0x3c, 0x13, 0x72, 0xc2, 0x00, 0x13, 0x70, 0x67, 0xac, 0x13, 0x70, 0x01, 0x0e,
+ 0x13, 0x70, 0x60, 0x38, 0x00, 0x98, 0x96, 0x80, 0x00, 0x0f, 0x42, 0x40, 0x13, 0x70, 0x64, 0xf2,
+ 0x13, 0x70, 0x65, 0x10, 0x13, 0x70, 0x64, 0xf7, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x72, 0xc2, 0x90,
+ 0x13, 0x70, 0x65, 0x2d, 0x13, 0x70, 0x65, 0x56, 0xb5, 0xf0, 0x4b, 0x51, 0xb0, 0x89, 0x68, 0x1f,
+ 0x00, 0x83, 0x18, 0x1b, 0x00, 0xdb, 0x1c, 0x1a, 0x32, 0x58, 0x18, 0xfb, 0x18, 0xbe, 0x22, 0x00,
+ 0x1c, 0x05, 0x67, 0x1a, 0x20, 0x32, 0xf7, 0xfd, 0xf9, 0x6f, 0x24, 0x00, 0x23, 0x16, 0x22, 0x00,
+ 0x93, 0x01, 0x23, 0x80, 0x92, 0x00, 0x1c, 0x30, 0x21, 0x80, 0x22, 0x06, 0x00, 0x5b, 0x96, 0x02,
+ 0xf7, 0xfe, 0xfc, 0x36, 0x28, 0x00, 0xda, 0x3d, 0x20, 0x64, 0x34, 0x01, 0xf7, 0xfd, 0xf9, 0x5c,
+ 0x2c, 0x03, 0xd1, 0xeb, 0x24, 0x00, 0x1c, 0x28, 0xf7, 0xfe, 0xf8, 0xba, 0x20, 0x64, 0xf7, 0xfd,
+ 0xf9, 0x53, 0x23, 0x16, 0x22, 0x00, 0x93, 0x01, 0x23, 0x80, 0x92, 0x00, 0x1c, 0x30, 0x21, 0x80,
+ 0x22, 0x06, 0x00, 0x5b, 0x96, 0x02, 0xf7, 0xfe, 0xfc, 0x1b, 0x28, 0x00, 0xda, 0x22, 0x34, 0x01,
+ 0x2c, 0x03, 0xd1, 0xe8, 0x24, 0x00, 0x1c, 0x28, 0xf7, 0xfe, 0xf8, 0x76, 0x20, 0x64, 0xf7, 0xfd,
+ 0xf9, 0x3b, 0x1c, 0x28, 0xf7, 0xfe, 0xf8, 0x9c, 0x20, 0x64, 0xf7, 0xfd, 0xf9, 0x35, 0x23, 0x16,
+ 0x22, 0x00, 0x93, 0x01, 0x23, 0x80, 0x92, 0x00, 0x1c, 0x30, 0x21, 0x80, 0x22, 0x06, 0x00, 0x5b,
+ 0x96, 0x02, 0xf7, 0xfe, 0xfb, 0xfd, 0x28, 0x00, 0xda, 0x04, 0x34, 0x01, 0x2c, 0x03, 0xd1, 0xe2,
+ 0x48, 0x24, 0xe0, 0x40, 0x1c, 0x6a, 0x04, 0x13, 0x0c, 0x1b, 0x93, 0x06, 0x00, 0xab, 0x19, 0x5b,
+ 0x00, 0xdb, 0x18, 0xff, 0x1c, 0x3b, 0x33, 0x7c, 0x24, 0x00, 0x92, 0x07, 0x93, 0x05, 0x20, 0x32,
+ 0xf7, 0xfd, 0xf9, 0x12, 0x23, 0x00, 0x93, 0x00, 0x93, 0x01, 0x93, 0x02, 0x1c, 0x30, 0x21, 0x00,
+ 0x22, 0x05, 0x9b, 0x06, 0xf7, 0xfe, 0xfb, 0xdc, 0x28, 0x00, 0xda, 0x02, 0x4b, 0x16, 0x1b, 0x18,
+ 0x34, 0x01, 0x9a, 0x05, 0x25, 0x00, 0x60, 0x15, 0x9b, 0x07, 0x67, 0x3b, 0x28, 0x00, 0xda, 0x1a,
+ 0x21, 0x00, 0x1c, 0x30, 0xf7, 0xfe, 0xfc, 0x28, 0x20, 0x32, 0xf7, 0xfd, 0xf8, 0xf5, 0x23, 0x16,
+ 0x93, 0x01, 0x23, 0x80, 0x1c, 0x30, 0x21, 0x80, 0x22, 0x06, 0x00, 0x5b, 0x95, 0x00, 0x96, 0x02,
+ 0xf7, 0xfe, 0xfb, 0xbe, 0x28, 0x00, 0xdb, 0x02, 0x20, 0x01, 0x42, 0x40, 0xe0, 0x01, 0x48, 0x07,
+ 0x67, 0x3d, 0x2c, 0x04, 0xdd, 0xcb, 0xb0, 0x09, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
+ 0x13, 0x70, 0x60, 0x34, 0xff, 0xff, 0xf7, 0x67, 0xff, 0xff, 0xe0, 0xc0, 0xff, 0xff, 0xf7, 0x3e,
+ 0xb5, 0x10, 0x4b, 0x0a, 0x1c, 0x04, 0x68, 0x1b, 0x68, 0x9a, 0x23, 0x01, 0x60, 0x93, 0xf7, 0xfe,
+ 0xf8, 0x2f, 0x28, 0x00, 0xdb, 0x02, 0x1c, 0x20, 0xf7, 0xff, 0xff, 0x46, 0x4b, 0x03, 0x68, 0x1b,
+ 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0xbc, 0x10, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x34,
+ 0xb5, 0xf0, 0x1c, 0x06, 0x48, 0x44, 0xb0, 0x8b, 0x68, 0x02, 0x1c, 0x33, 0x92, 0x06, 0x68, 0x91,
+ 0x33, 0x10, 0x00, 0x9b, 0x18, 0xc9, 0x00, 0xb3, 0x19, 0x9b, 0x00, 0xdb, 0x9c, 0x06, 0x1c, 0x1a,
+ 0x32, 0x58, 0x18, 0xa2, 0x92, 0x08, 0x18, 0xe3, 0x22, 0x00, 0x67, 0x1a, 0x68, 0x03, 0x4a, 0x3b,
+ 0x68, 0x9b, 0x1d, 0x0f, 0x68, 0x5b, 0x68, 0x4b, 0x40, 0x13, 0x2b, 0x01, 0xd0, 0x02, 0x24, 0x01,
+ 0x42, 0x64, 0xe0, 0x64, 0x1c, 0x73, 0x04, 0x1b, 0x22, 0x00, 0x0c, 0x1b, 0x92, 0x09, 0x93, 0x05,
+ 0x4b, 0x33, 0x20, 0x0a, 0x60, 0x3b, 0xf7, 0xfd, 0xf8, 0x8f, 0x4b, 0x32, 0x20, 0x64, 0x60, 0x3b,
+ 0xf7, 0xfd, 0xf8, 0x8a, 0x4b, 0x30, 0x22, 0x80, 0x60, 0x3b, 0x23, 0xfa, 0x00, 0xdb, 0x93, 0x00,
+ 0x00, 0x52, 0x23, 0x00, 0x1c, 0x38, 0x1c, 0x39, 0xf7, 0xfd, 0xff, 0x92, 0x68, 0x3a, 0x4b, 0x2b,
+ 0x1c, 0x04, 0x40, 0x13, 0x2b, 0x05, 0xd1, 0x30, 0x23, 0xc0, 0x01, 0x1b, 0x40, 0x1a, 0x23, 0x80,
+ 0x00, 0xdb, 0x42, 0x9a, 0xd0, 0x29, 0x28, 0x00, 0xd1, 0x29, 0x20, 0x64, 0xf7, 0xfd, 0xf8, 0x6c,
+ 0x4b, 0x23, 0x21, 0x80, 0x68, 0x1a, 0x25, 0x00, 0x92, 0x07, 0x4a, 0x22, 0x60, 0x1a, 0x23, 0x16,
+ 0x93, 0x01, 0x9b, 0x08, 0x22, 0x06, 0x93, 0x02, 0x1c, 0x18, 0x23, 0x80, 0x00, 0x5b, 0x94, 0x00,
+ 0xf7, 0xfe, 0xfb, 0x2e, 0x1c, 0x04, 0x28, 0x00, 0xdb, 0x09, 0x98, 0x08, 0x21, 0x00, 0x22, 0x05,
+ 0x9b, 0x05, 0x95, 0x00, 0x95, 0x01, 0x95, 0x02, 0xf7, 0xfe, 0xfb, 0x22, 0x1c, 0x04, 0x4b, 0x14,
+ 0x9a, 0x07, 0x60, 0x1a, 0x2c, 0x00, 0xdb, 0x02, 0xe0, 0x08, 0x24, 0x01, 0x42, 0x64, 0x9b, 0x09,
+ 0x33, 0x01, 0x93, 0x09, 0x2b, 0x04, 0xd1, 0xab, 0x2c, 0x00, 0xdb, 0x08, 0x00, 0xb3, 0x9a, 0x06,
+ 0x19, 0x9b, 0x00, 0xdb, 0x18, 0xd3, 0x22, 0x00, 0x67, 0xda, 0x1c, 0x72, 0x67, 0x1a, 0xb0, 0x0b,
+ 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x20, 0x01,
+ 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x20, 0x05,
+ 0x13, 0x70, 0x60, 0x38, 0x00, 0x03, 0x0d, 0x40, 0xb5, 0xf0, 0x4c, 0x1d, 0xb0, 0x81, 0x68, 0x23,
+ 0x1c, 0x06, 0x68, 0x9d, 0x23, 0x01, 0x60, 0xab, 0xf7, 0xff, 0xff, 0x5a, 0x1c, 0x07, 0x28, 0x00,
+ 0xda, 0x1b, 0x68, 0x23, 0x22, 0x37, 0x68, 0x99, 0x20, 0x0a, 0x68, 0x4b, 0x40, 0x13, 0x60, 0x4b,
+ 0x68, 0x23, 0x1c, 0x34, 0x68, 0x9b, 0x34, 0x10, 0x68, 0x1b, 0x00, 0xa4, 0xf7, 0xfd, 0xf8, 0x04,
+ 0x4b, 0x10, 0x19, 0x2c, 0x60, 0x63, 0x20, 0x32, 0xf7, 0xfc, 0xff, 0xfe, 0x4b, 0x0e, 0x20, 0x64,
+ 0x60, 0x63, 0xf7, 0xfc, 0xff, 0xf9, 0x4b, 0x0d, 0x60, 0x63, 0x48, 0x09, 0x22, 0x37, 0x68, 0x03,
+ 0xb0, 0x01, 0x68, 0x99, 0x68, 0x4b, 0x40, 0x13, 0x60, 0x4b, 0x68, 0x03, 0x68, 0x9a, 0x23, 0x04,
+ 0x60, 0x93, 0x68, 0x03, 0x1c, 0x38, 0x68, 0x9b, 0x68, 0x1b, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
+ 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x18, 0x03, 0x00, 0x00, 0x19, 0x03, 0x00, 0x00, 0x10, 0x01,
+ 0xb5, 0xf0, 0x4b, 0x51, 0x4c, 0x51, 0x78, 0x1b, 0xb0, 0x83, 0x1c, 0x1a, 0x4b, 0x50, 0x1e, 0x51,
+ 0x41, 0x8a, 0x68, 0x1b, 0x60, 0x22, 0x2b, 0x00, 0xd0, 0x2b, 0x4b, 0x4e, 0x00, 0x92, 0x68, 0x1b,
+ 0x68, 0x99, 0x1c, 0x0b, 0x33, 0x44, 0x18, 0x9b, 0x68, 0x1b, 0x07, 0xda, 0xd4, 0x23, 0xf0, 0x00,
+ 0xfd, 0x11, 0x20, 0x64, 0xf7, 0xfc, 0xff, 0xc0, 0xf0, 0x00, 0xfd, 0x00, 0x20, 0x64, 0xf7, 0xfc,
+ 0xff, 0xbb, 0xf0, 0x00, 0xfd, 0x07, 0x20, 0x64, 0xf7, 0xfc, 0xff, 0xb6, 0xf0, 0x00, 0xfc, 0xf6,
+ 0x20, 0x64, 0xf7, 0xfc, 0xff, 0xb1, 0xf0, 0x00, 0xfc, 0xfd, 0x20, 0x64, 0xf7, 0xfc, 0xff, 0xac,
+ 0xf0, 0x00, 0xfc, 0xec, 0x20, 0x64, 0xf7, 0xfc, 0xff, 0xa7, 0x20, 0xfa, 0x00, 0x40, 0xf7, 0xfc,
+ 0xff, 0xa3, 0x24, 0x01, 0xe0, 0x62, 0x23, 0x00, 0x60, 0x8b, 0x20, 0x00, 0xf7, 0xfc, 0xfd, 0x2e,
+ 0x68, 0x20, 0xf7, 0xff, 0xff, 0x79, 0x1c, 0x06, 0x28, 0x00, 0xda, 0x03, 0x68, 0x20, 0xf7, 0xff,
+ 0xff, 0x73, 0x1c, 0x06, 0x20, 0x3c, 0xf7, 0xfc, 0xff, 0x8f, 0x4b, 0x2e, 0x48, 0x2e, 0x93, 0x01,
+ 0x68, 0x1b, 0x1c, 0x31, 0x68, 0x9a, 0x4b, 0x29, 0x32, 0x44, 0x68, 0x1b, 0x00, 0x9b, 0x18, 0xd2,
+ 0x68, 0x15, 0x1c, 0x2a, 0xf7, 0xfd, 0xfd, 0x56, 0x4c, 0x25, 0x22, 0x01, 0x60, 0x22, 0x2e, 0x00,
+ 0xdb, 0x38, 0x4b, 0x26, 0x1c, 0x2a, 0x40, 0x1a, 0x4b, 0x25, 0x42, 0x9a, 0xd1, 0x32, 0x4d, 0x25,
+ 0x27, 0x00, 0x70, 0x2f, 0x60, 0x27, 0xf7, 0xff, 0xfb, 0x8d, 0x4b, 0x23, 0x4a, 0x23, 0x60, 0x13,
+ 0x4b, 0x23, 0x93, 0x00, 0x28, 0x00, 0xdb, 0x11, 0x48, 0x22, 0xf7, 0xfd, 0xfd, 0x3b, 0xf0, 0x00,
+ 0xfc, 0xa5, 0x22, 0x01, 0x60, 0x27, 0x70, 0x2a, 0x98, 0x00, 0xf7, 0xfc, 0xfc, 0xef, 0x9a, 0x01,
+ 0x24, 0x00, 0x68, 0x13, 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0xe0, 0x14, 0x23, 0x01, 0x60, 0x23,
+ 0x1c, 0x31, 0x48, 0x19, 0xf7, 0xfd, 0xfd, 0x26, 0x70, 0x2f, 0xf0, 0x00, 0xfc, 0x8f, 0x20, 0x64,
+ 0xf7, 0xfc, 0xff, 0x4a, 0x98, 0x00, 0xf7, 0xfc, 0xfc, 0xd9, 0x9a, 0x01, 0x68, 0x13, 0x68, 0x9a,
+ 0x23, 0x04, 0x60, 0x93, 0x24, 0x01, 0x20, 0x64, 0xf7, 0xfc, 0xff, 0x3e, 0xb0, 0x03, 0x1c, 0x20,
+ 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x01, 0x0c, 0x13, 0x70, 0x67, 0x78,
+ 0x13, 0x70, 0x67, 0x6c, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x65, 0x73, 0x00, 0x00, 0x31, 0x05,
+ 0x00, 0x00, 0x10, 0x05, 0x13, 0x70, 0x67, 0x9c, 0x00, 0x0f, 0x42, 0x40, 0x13, 0x70, 0x60, 0x38,
+ 0x13, 0x70, 0x12, 0xd9, 0x13, 0x70, 0x65, 0x9d, 0x13, 0x70, 0x65, 0xae, 0xb5, 0xf0, 0x4b, 0x28,
+ 0xb0, 0x85, 0x68, 0x1b, 0x90, 0x03, 0x92, 0x02, 0x2b, 0x00, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x43,
+ 0x04, 0x0b, 0x4f, 0x24, 0x25, 0x00, 0x0c, 0x1e, 0xf7, 0xff, 0xff, 0x32, 0x28, 0x00, 0xd1, 0x01,
+ 0x25, 0x00, 0xe0, 0x01, 0x2d, 0x00, 0xdb, 0x02, 0x78, 0x3b, 0x2b, 0x01, 0xd0, 0x04, 0x4a, 0x1e,
+ 0x23, 0x01, 0x25, 0x01, 0x60, 0x13, 0x42, 0x6d, 0x4b, 0x1b, 0x68, 0x19, 0x29, 0x00, 0xd1, 0xeb,
+ 0x4a, 0x1a, 0x4b, 0x1b, 0x60, 0x13, 0x1c, 0x6b, 0xd0, 0x17, 0x4c, 0x1a, 0x20, 0x00, 0x68, 0x23,
+ 0x68, 0x9b, 0x60, 0x99, 0xf7, 0xfc, 0xfc, 0x82, 0x4b, 0x17, 0x9a, 0x03, 0x78, 0x19, 0x9b, 0x02,
+ 0x48, 0x16, 0x93, 0x00, 0x1c, 0x33, 0xf7, 0xfe, 0xfc, 0xdf, 0x1c, 0x05, 0x48, 0x14, 0xf7, 0xfc,
+ 0xfc, 0x75, 0x68, 0x23, 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0x4a, 0x0c, 0x4b, 0x11, 0x60, 0x13,
+ 0x2d, 0x00, 0xda, 0x02, 0x4a, 0x08, 0x23, 0x01, 0x60, 0x13, 0x4b, 0x07, 0x68, 0x1b, 0x2b, 0x00,
+ 0xd1, 0xc2, 0x2d, 0x00, 0xdb, 0xc0, 0x20, 0x01, 0xb0, 0x05, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
+ 0x13, 0x70, 0x67, 0x94, 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x70, 0x60, 0x38,
+ 0x00, 0x2d, 0xc6, 0xc0, 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x60, 0x3c, 0x13, 0x72, 0xc2, 0x00,
+ 0x13, 0x70, 0x12, 0xd9, 0x00, 0x0f, 0x42, 0x40, 0xb5, 0xf0, 0x4b, 0x4b, 0xb0, 0x87, 0x68, 0x1b,
+ 0x1c, 0x07, 0x92, 0x05, 0x2b, 0x00, 0xd1, 0x07, 0x4b, 0x48, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x03,
+ 0x4a, 0x47, 0x4b, 0x48, 0x40, 0x02, 0x60, 0x1a, 0x4b, 0x47, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x06,
+ 0x4a, 0x46, 0x68, 0x13, 0x2b, 0x01, 0xdd, 0x02, 0x23, 0x01, 0x60, 0x13, 0xe0, 0x61, 0x4b, 0x3f,
+ 0x4a, 0x3d, 0x93, 0x03, 0x04, 0x0b, 0x0c, 0x1b, 0x25, 0x00, 0x26, 0x00, 0x92, 0x04, 0x93, 0x02,
+ 0x9a, 0x04, 0x68, 0x13, 0x2b, 0x00, 0xd1, 0x04, 0x9a, 0x03, 0x68, 0x13, 0x2b, 0x00, 0xd1, 0x00,
+ 0x26, 0x00, 0xf7, 0xff, 0xfe, 0xad, 0x28, 0x00, 0xd1, 0x00, 0x25, 0x00, 0x4b, 0x36, 0x68, 0x1b,
+ 0x2b, 0x00, 0xd0, 0x03, 0x4b, 0x35, 0x68, 0x1b, 0x2b, 0x03, 0xd0, 0x53, 0x2d, 0x00, 0xdb, 0x03,
+ 0x4b, 0x33, 0x78, 0x1b, 0x2b, 0x01, 0xd0, 0x04, 0x4a, 0x30, 0x23, 0x01, 0x25, 0x01, 0x60, 0x13,
+ 0x42, 0x6d, 0x4b, 0x2e, 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0x41, 0x4b, 0x28, 0x4a, 0x2d, 0x68, 0x1b,
+ 0x2b, 0x00, 0xd0, 0x01, 0x4b, 0x2c, 0xe0, 0x00, 0x4b, 0x2c, 0x60, 0x13, 0x1c, 0x6b, 0xd0, 0x18,
+ 0x4c, 0x2b, 0x20, 0x00, 0x68, 0x23, 0x68, 0x9a, 0x23, 0x00, 0x60, 0x93, 0xf7, 0xfc, 0xfb, 0xee,
+ 0x4b, 0x28, 0x9a, 0x05, 0x78, 0x19, 0x48, 0x28, 0x9b, 0x02, 0x92, 0x00, 0x1c, 0x3a, 0xf7, 0xfe,
+ 0xfc, 0xd5, 0x1c, 0x05, 0x48, 0x25, 0xf7, 0xfc, 0xfb, 0xe1, 0x68, 0x23, 0x68, 0x9a, 0x23, 0x04,
+ 0x60, 0x93, 0x4a, 0x1c, 0x4b, 0x22, 0x60, 0x13, 0x2d, 0x00, 0xda, 0x02, 0x4a, 0x17, 0x23, 0x01,
+ 0x60, 0x13, 0x4b, 0x15, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x05, 0x4b, 0x14, 0x68, 0x1b, 0x2b, 0x00,
+ 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x13, 0x4b, 0x11, 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0x07, 0x4b, 0x10,
+ 0x78, 0x1b, 0x2b, 0x01, 0xd1, 0x03, 0x2d, 0x00, 0xdb, 0x01, 0x20, 0x01, 0xe0, 0x07, 0x36, 0x01,
+ 0x2e, 0x03, 0xdd, 0x95, 0x0f, 0xeb, 0x22, 0x01, 0x40, 0x53, 0x06, 0x1b, 0x0e, 0x18, 0xb0, 0x07,
+ 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x67, 0xc0, 0x13, 0x70, 0x67, 0x94,
+ 0x7f, 0xff, 0xff, 0xff, 0x13, 0x70, 0x67, 0x54, 0x13, 0x70, 0x67, 0x48, 0x13, 0x70, 0x67, 0x6c,
+ 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x60, 0x38, 0x00, 0x98, 0x96, 0x80, 0x00, 0x2d, 0xc6, 0xc0,
+ 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x60, 0x3c, 0x13, 0x72, 0xc2, 0x00, 0x13, 0x70, 0x12, 0xd9,
+ 0x00, 0x0f, 0x42, 0x40, 0xb5, 0xf0, 0x4b, 0x1e, 0xb0, 0x81, 0x68, 0x1b, 0x2b, 0x00, 0xd0, 0x31,
+ 0xf7, 0xff, 0xfe, 0x1e, 0x4b, 0x1b, 0x68, 0x1b, 0x2b, 0x00, 0xd1, 0x2b, 0x4b, 0x1a, 0x78, 0x1b,
+ 0x2b, 0x00, 0xd0, 0x27, 0x4e, 0x19, 0x4f, 0x1a, 0x4c, 0x1a, 0x4d, 0x1b, 0x60, 0x37, 0x79, 0x29,
+ 0x1c, 0x20, 0xf7, 0xfe, 0xfc, 0xe5, 0x28, 0x00, 0xdb, 0x1c, 0x60, 0x37, 0x79, 0x29, 0x1c, 0x22,
+ 0x1c, 0x23, 0x00, 0x88, 0x32, 0x10, 0x33, 0x50, 0x18, 0x12, 0x18, 0x1b, 0x1c, 0x20, 0xf7, 0xfe,
+ 0xfc, 0x9b, 0x28, 0x00, 0xdb, 0x0e, 0x4b, 0x11, 0x68, 0x18, 0x28, 0x00, 0xd0, 0x07, 0x79, 0x2b,
+ 0x22, 0x80, 0x33, 0x04, 0x00, 0x9b, 0x59, 0x1b, 0x01, 0x12, 0x42, 0x93, 0xd1, 0x02, 0x1e, 0x43,
+ 0x41, 0x98, 0xe0, 0x00, 0x20, 0x00, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
+ 0x13, 0x70, 0x67, 0x98, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x60, 0x38,
+ 0x00, 0x0f, 0x42, 0x40, 0x13, 0x72, 0xc2, 0x00, 0x13, 0x70, 0x67, 0xac, 0x13, 0x70, 0x67, 0x94,
+ 0xb5, 0xf0, 0x4b, 0x65, 0xb0, 0x83, 0x68, 0x1c, 0x2c, 0x00, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0xbf,
+ 0x4a, 0x62, 0x20, 0x00, 0x92, 0x00, 0x68, 0x13, 0x68, 0x9b, 0x60, 0x9c, 0xf7, 0xfc, 0xfb, 0x36,
+ 0x4a, 0x5f, 0x23, 0x01, 0x42, 0x5b, 0x60, 0x13, 0x4a, 0x5e, 0x23, 0x01, 0x60, 0x13, 0x4b, 0x5e,
+ 0x48, 0x5e, 0x70, 0x1c, 0xf7, 0xfd, 0xfb, 0x6e, 0x49, 0x5d, 0x4a, 0x5e, 0x78, 0x0b, 0x1e, 0x58,
+ 0x41, 0x83, 0x60, 0x13, 0x1c, 0x1d, 0x00, 0x9f, 0xe0, 0x8e, 0x4b, 0x54, 0x68, 0x1b, 0x93, 0x01,
+ 0x00, 0xab, 0x9a, 0x01, 0x19, 0x5b, 0x00, 0xdb, 0x18, 0xd3, 0x4a, 0x56, 0x67, 0x5d, 0x60, 0x15,
+ 0x6f, 0x1b, 0x4a, 0x50, 0x2b, 0x00, 0xd0, 0x4d, 0x23, 0x01, 0x60, 0x13, 0x1c, 0x28, 0xf7, 0xff,
+ 0xfc, 0xa7, 0x1c, 0x04, 0x20, 0x14, 0xf7, 0xfc, 0xfd, 0x77, 0x4a, 0x48, 0x68, 0x13, 0x68, 0x9b,
+ 0x33, 0x44, 0x19, 0xdb, 0x68, 0x19, 0x2c, 0x00, 0xdb, 0x05, 0x4b, 0x4b, 0x1c, 0x0a, 0x40, 0x1a,
+ 0x4b, 0x4a, 0x42, 0x9a, 0xd0, 0x0c, 0x1c, 0x28, 0xf7, 0xff, 0xfd, 0x46, 0x1c, 0x04, 0x20, 0x14,
+ 0xf7, 0xfc, 0xfd, 0x62, 0x4b, 0x3d, 0x68, 0x1b, 0x68, 0x9b, 0x33, 0x44, 0x19, 0xdb, 0x68, 0x19,
+ 0x4e, 0x3c, 0x23, 0x01, 0x60, 0x33, 0x2c, 0x00, 0xdb, 0x54, 0x4b, 0x3f, 0x1c, 0x0a, 0x40, 0x1a,
+ 0x4b, 0x3e, 0x42, 0x9a, 0xd1, 0x4e, 0x00, 0xa8, 0x19, 0x40, 0x00, 0xc0, 0x9a, 0x01, 0x30, 0x58,
+ 0x18, 0x10, 0xf7, 0xff, 0xfa, 0x87, 0x28, 0x00, 0xd1, 0x44, 0x4b, 0x2f, 0x22, 0x01, 0x60, 0x1a,
+ 0x60, 0x30, 0x48, 0x37, 0xf7, 0xfc, 0xfa, 0xd2, 0x4b, 0x2c, 0x48, 0x36, 0x68, 0x1b, 0x68, 0x9a,
+ 0x23, 0x04, 0x60, 0x93, 0xf7, 0xfd, 0xfb, 0x0e, 0x4b, 0x33, 0x68, 0x1b, 0x1c, 0x18, 0x1e, 0x42,
+ 0x41, 0x90, 0xe0, 0x45, 0x23, 0x01, 0x60, 0x13, 0x4a, 0x24, 0x48, 0x30, 0x68, 0x13, 0x68, 0x9b,
+ 0x33, 0x44, 0x19, 0xdb, 0x68, 0x1c, 0x1c, 0x21, 0xf7, 0xfd, 0xfa, 0xfc, 0x23, 0x01, 0x42, 0x1c,
+ 0xd0, 0x19, 0x1c, 0x28, 0xf7, 0xff, 0xfd, 0x00, 0x1c, 0x04, 0x20, 0x14, 0xf7, 0xfc, 0xfd, 0x1c,
+ 0x4a, 0x1a, 0x68, 0x13, 0x68, 0x9b, 0x33, 0x44, 0x19, 0xdb, 0x68, 0x1a, 0x2c, 0x00, 0xdb, 0x04,
+ 0x4b, 0x1d, 0x40, 0x1a, 0x4b, 0x1d, 0x42, 0x9a, 0xd0, 0x02, 0x1c, 0x28, 0xf7, 0xff, 0xfc, 0x38,
+ 0x4a, 0x13, 0x23, 0x65, 0xe0, 0x04, 0x4a, 0x12, 0x68, 0x13, 0x33, 0x01, 0xd1, 0x02, 0x23, 0x64,
+ 0x42, 0x5b, 0x60, 0x13, 0x35, 0x01, 0x37, 0x04, 0x4a, 0x11, 0x78, 0x13, 0x2b, 0x00, 0xd1, 0x01,
+ 0x23, 0x01, 0xe0, 0x00, 0x23, 0x02, 0x42, 0x9d, 0xda, 0x00, 0xe7, 0x66, 0x48, 0x10, 0xf7, 0xfc,
+ 0xfa, 0x85, 0x9a, 0x00, 0x68, 0x13, 0x68, 0x9a, 0x23, 0x04, 0x60, 0x93, 0x4b, 0x04, 0x68, 0x18,
+ 0xb0, 0x03, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x67, 0x98, 0x13, 0x70, 0x60, 0x34,
+ 0x13, 0x70, 0x67, 0xa8, 0x13, 0x70, 0x67, 0x6c, 0x13, 0x70, 0x67, 0x9c, 0x13, 0x70, 0x65, 0xc6,
+ 0x13, 0x70, 0x01, 0x0c, 0x13, 0x70, 0x67, 0x78, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x10, 0x05,
+ 0x13, 0x70, 0x12, 0xd9, 0x13, 0x70, 0x66, 0x43, 0x13, 0x70, 0x67, 0x94, 0x13, 0x70, 0x66, 0x59,
+ 0xb5, 0xf0, 0x4b, 0x21, 0x49, 0x21, 0x78, 0x1a, 0xb0, 0x81, 0x1e, 0x50, 0x41, 0x82, 0x60, 0x0a,
+ 0x1c, 0x15, 0x00, 0x96, 0x1c, 0x18, 0x21, 0x01, 0x4f, 0x1d, 0xe0, 0x28, 0x00, 0xab, 0x68, 0x3a,
+ 0x19, 0x5b, 0x00, 0xdb, 0x18, 0xd2, 0x67, 0x55, 0x68, 0x3b, 0x1d, 0x32, 0x68, 0x9b, 0x33, 0x44,
+ 0x19, 0x9b, 0x68, 0x1b, 0x42, 0x0b, 0xd0, 0x18, 0x1c, 0x28, 0xf7, 0xff, 0xfc, 0x8d, 0x1c, 0x04,
+ 0x20, 0x14, 0xf7, 0xfc, 0xfc, 0xa9, 0x68, 0x3b, 0x68, 0x9b, 0x33, 0x44, 0x19, 0x9b, 0x68, 0x1a,
+ 0x2c, 0x00, 0xdb, 0x04, 0x4b, 0x0f, 0x40, 0x1a, 0x4b, 0x0f, 0x42, 0x9a, 0xd0, 0x02, 0x1c, 0x28,
+ 0xf7, 0xff, 0xfb, 0xc6, 0x20, 0x65, 0x42, 0x40, 0xe0, 0x0a, 0x35, 0x01, 0x1c, 0x16, 0x78, 0x03,
+ 0x2b, 0x00, 0xd1, 0x01, 0x23, 0x01, 0xe0, 0x00, 0x23, 0x02, 0x42, 0x9d, 0xdb, 0xce, 0x20, 0x00,
+ 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x01, 0x0c, 0x13, 0x70, 0x67, 0x78,
+ 0x13, 0x70, 0x60, 0x34, 0x00, 0x00, 0x39, 0x05, 0x00, 0x00, 0x10, 0x05, 0xb5, 0xf0, 0xb0, 0x81,
+ 0x1c, 0x06, 0x07, 0xc2, 0xd4, 0x01, 0x20, 0x01, 0xe0, 0x38, 0x4b, 0x35, 0x68, 0x1c, 0x2c, 0x00,
+ 0xd0, 0x09, 0x6b, 0x60, 0x21, 0x60, 0xf7, 0xfb, 0xfc, 0xdf, 0x6b, 0x60, 0x21, 0x60, 0xf0, 0x00,
+ 0xf8, 0x71, 0x6b, 0xa4, 0xe7, 0xf3, 0x4c, 0x2f, 0x68, 0x23, 0x2b, 0x00, 0xd0, 0x1a, 0x6c, 0x58,
+ 0x21, 0x20, 0xf7, 0xfb, 0xfc, 0xd1, 0x68, 0x23, 0x21, 0x20, 0x6c, 0x58, 0xf0, 0x00, 0xf8, 0x62,
+ 0x68, 0x22, 0x23, 0x80, 0x04, 0x5b, 0x61, 0x13, 0x4b, 0x27, 0x68, 0x22, 0x68, 0x1b, 0x21, 0x20,
+ 0x6b, 0x5b, 0x61, 0x53, 0x68, 0x23, 0x6c, 0x58, 0xf7, 0xfb, 0xfc, 0x96, 0x68, 0x23, 0x4a, 0x23,
+ 0x69, 0x9b, 0x60, 0x13, 0x4b, 0x1e, 0x68, 0x18, 0xf7, 0xfc, 0xfc, 0xc6, 0x28, 0x00, 0xd0, 0x05,
+ 0x4b, 0x1f, 0x20, 0x05, 0x68, 0x1a, 0x23, 0x00, 0x64, 0x13, 0x42, 0x40, 0x07, 0x73, 0xd5, 0x24,
+ 0x4a, 0x1b, 0x25, 0x80, 0x4f, 0x1b, 0x24, 0x00, 0x46, 0x94, 0x01, 0xad, 0x46, 0x62, 0x68, 0x13,
+ 0x00, 0xa2, 0x68, 0x9b, 0x33, 0x44, 0x18, 0x99, 0x68, 0x3b, 0x68, 0x0a, 0x42, 0x9c, 0xd1, 0x0c,
+ 0x21, 0x01, 0x42, 0x0a, 0xd1, 0x0e, 0x4b, 0x14, 0x22, 0x20, 0x60, 0x19, 0x49, 0x13, 0x20, 0x01,
+ 0x68, 0x0b, 0x42, 0x40, 0x43, 0x93, 0x60, 0x0b, 0xe0, 0x04, 0x4b, 0x11, 0x40, 0x13, 0x2b, 0x03,
+ 0xd1, 0x00, 0x60, 0x0d, 0x34, 0x01, 0x2c, 0x04, 0xd1, 0xe0, 0x28, 0x00, 0xd0, 0x04, 0x23, 0x12,
+ 0x42, 0x1e, 0xd0, 0x01, 0x20, 0x06, 0x42, 0x40, 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
+ 0x13, 0x70, 0x67, 0x88, 0x13, 0x70, 0x67, 0x8c, 0x13, 0x70, 0x67, 0xc4, 0x13, 0x70, 0x67, 0x90,
+ 0x13, 0x70, 0x60, 0x34, 0x13, 0x70, 0x67, 0x78, 0x13, 0x70, 0x67, 0x6c, 0x0d, 0x80, 0x00, 0xc0,
+ 0x00, 0x00, 0x20, 0x03, 0x47, 0x70, 0x46, 0xc0, 0x47, 0x70, 0x46, 0xc0, 0xb5, 0x00, 0x4b, 0x04,
+ 0xb0, 0x81, 0x1c, 0x01, 0x68, 0x18, 0xf7, 0xfb, 0xfc, 0x17, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00,
+ 0x13, 0x70, 0x60, 0x40, 0xb5, 0x00, 0x4b, 0x0d, 0x1c, 0x01, 0xb0, 0x81, 0x68, 0x18, 0x22, 0x20,
+ 0xf7, 0xfb, 0xfc, 0x46, 0x28, 0x00, 0xd1, 0x0d, 0x48, 0x09, 0xf7, 0xfb, 0xfc, 0x15, 0xf0, 0x00,
+ 0xf9, 0x29, 0x20, 0xc8, 0xf7, 0xfc, 0xfb, 0xd8, 0xf0, 0x00, 0xf9, 0x18, 0x20, 0xc8, 0xf7, 0xfc,
+ 0xfb, 0xd3, 0xe7, 0xf4, 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x40,
+ 0x13, 0x70, 0x66, 0x76, 0xb5, 0x00, 0xb0, 0x81, 0xf7, 0xfb, 0xfb, 0xf6, 0xb0, 0x01, 0xbc, 0x01,
+ 0x47, 0x00, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x81, 0xf7, 0xfb, 0xfb, 0xee, 0xb0, 0x01, 0xbc, 0x01,
+ 0x47, 0x00, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x81, 0xf7, 0xfb, 0xfb, 0xe6, 0xb0, 0x01, 0xbc, 0x01,
+ 0x47, 0x00, 0x46, 0xc0, 0xb5, 0x10, 0x1c, 0x04, 0xf7, 0xfb, 0xfb, 0xfe, 0x1c, 0x20, 0xbc, 0x10,
+ 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x10, 0x1c, 0x04, 0xf7, 0xfb, 0xfb, 0xf6, 0x1c, 0x20, 0xbc, 0x10,
+ 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x10, 0x1c, 0x04, 0xf7, 0xfb, 0xfb, 0xee, 0x1c, 0x20, 0xbc, 0x10,
+ 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x00, 0x21, 0xe0, 0xb0, 0x81, 0x48, 0x07, 0x02, 0x09, 0xf7, 0xfb,
+ 0xfb, 0xa3, 0x4b, 0x06, 0x60, 0x18, 0x28, 0x00, 0xdb, 0x01, 0x20, 0x00, 0xe0, 0x01, 0x20, 0x01,
+ 0x42, 0x40, 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0xa0, 0x00, 0x13, 0x70, 0x60, 0x40,
+ 0xb5, 0xf0, 0x4b, 0x27, 0x1c, 0x06, 0x68, 0x18, 0xb0, 0x87, 0x91, 0x05, 0x28, 0x00, 0xd0, 0x01,
+ 0xf7, 0xfc, 0xf8, 0xe0, 0x4f, 0x23, 0x4a, 0x22, 0x68, 0x3d, 0x23, 0x00, 0x60, 0x13, 0x2d, 0x00,
+ 0xd1, 0x17, 0xf7, 0xff, 0xfd, 0xbd, 0x4c, 0x20, 0x1c, 0x20, 0xf7, 0xfc, 0xfd, 0xa3, 0x4b, 0x1f,
+ 0x1c, 0x02, 0x60, 0x18, 0x28, 0x00, 0xd0, 0x2d, 0x68, 0x23, 0x92, 0x00, 0x9a, 0x05, 0x48, 0x1c,
+ 0x92, 0x01, 0x21, 0x00, 0x22, 0x00, 0x95, 0x02, 0xf0, 0x00, 0xfb, 0xfc, 0x60, 0x38, 0x28, 0x00,
+ 0xd0, 0x20, 0x4d, 0x18, 0x68, 0x2c, 0x2c, 0x00, 0xd0, 0x0b, 0x48, 0x17, 0x1c, 0x31, 0x22, 0x06,
+ 0xf0, 0x00, 0xfe, 0xc8, 0x28, 0x00, 0xd0, 0x16, 0x1c, 0x20, 0xf0, 0x00, 0xfa, 0x0b, 0x23, 0x00,
+ 0x60, 0x2b, 0x4b, 0x0c, 0x1c, 0x31, 0x68, 0x18, 0xf0, 0x00, 0xfa, 0x14, 0x4b, 0x0d, 0x60, 0x18,
+ 0x28, 0x00, 0xd0, 0x04, 0x48, 0x0c, 0x1c, 0x31, 0x22, 0x06, 0xf0, 0x00, 0xfe, 0xdf, 0x4b, 0x09,
+ 0x68, 0x1c, 0xe0, 0x00, 0x24, 0x00, 0xb0, 0x07, 0x1c, 0x20, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08,
+ 0x13, 0x70, 0x67, 0xd0, 0x13, 0x70, 0x67, 0xd4, 0x13, 0x72, 0xc3, 0xa0, 0x13, 0x72, 0xc3, 0xa4,
+ 0x13, 0x70, 0x4b, 0x61, 0x13, 0x70, 0x67, 0xd8, 0x13, 0x70, 0x60, 0x44, 0xb5, 0x30, 0x4b, 0x0f,
+ 0xb0, 0x81, 0x68, 0x18, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xfc, 0xf8, 0x84, 0x4c, 0x0c, 0x4b, 0x0b,
+ 0x68, 0x20, 0x25, 0x00, 0x60, 0x1d, 0x28, 0x00, 0xd0, 0x02, 0xf0, 0x00, 0xf9, 0xd3, 0x60, 0x25,
+ 0x4b, 0x08, 0x68, 0x18, 0x28, 0x00, 0xd0, 0x01, 0xf0, 0x00, 0xfa, 0x50, 0x4a, 0x05, 0x23, 0x00,
+ 0xb0, 0x01, 0x60, 0x13, 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0x13, 0x70, 0x67, 0xd0,
+ 0x13, 0x70, 0x67, 0xd8, 0x13, 0x70, 0x67, 0xd4, 0xb5, 0x10, 0x4c, 0x0b, 0x68, 0x20, 0x28, 0x00,
+ 0xd0, 0x03, 0xf0, 0x00, 0xf9, 0xb7, 0x23, 0x00, 0x60, 0x23, 0x4c, 0x08, 0x68, 0x23, 0x2b, 0x00,
+ 0xd1, 0x03, 0x48, 0x07, 0xf7, 0xfc, 0xf8, 0x62, 0x60, 0x20, 0x4a, 0x06, 0x23, 0x01, 0x42, 0x5b,
+ 0x60, 0x13, 0xbc, 0x10, 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x67, 0xd8, 0x13, 0x70, 0x67, 0xd0,
+ 0x00, 0x00, 0x80, 0x20, 0x13, 0x70, 0x60, 0x10, 0xb5, 0xf0, 0x4f, 0x0f, 0x1c, 0x1e, 0x68, 0x3b,
+ 0x1c, 0x15, 0x1c, 0x0c, 0x1c, 0x30, 0x1c, 0x19, 0x43, 0x51, 0xb0, 0x81, 0xf7, 0xfb, 0xfb, 0x24,
+ 0x1c, 0x20, 0x1c, 0x29, 0x1c, 0x32, 0xf7, 0xff, 0xfc, 0x17, 0x28, 0x00, 0xd1, 0x01, 0x20, 0x01,
+ 0xe0, 0x06, 0x68, 0x3b, 0x1c, 0x30, 0x1c, 0x19, 0x43, 0x69, 0xf7, 0xfb, 0xfa, 0xf5, 0x20, 0x00,
+ 0xb0, 0x01, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x72, 0xc3, 0xa0, 0xb5, 0x00, 0xb0, 0x81,
+ 0x20, 0x81, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0xf7, 0xfb, 0xfb, 0x2e, 0xb0, 0x01, 0xbc, 0x01,
+ 0x47, 0x00, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x81, 0x20, 0x80, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00,
+ 0xf7, 0xfb, 0xfb, 0x22, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00, 0x46, 0xc0, 0xb5, 0x30, 0x1c, 0x0d,
+ 0x1c, 0x04, 0x1c, 0x13, 0xb0, 0x81, 0x1c, 0x2a, 0x1c, 0x21, 0x20, 0x10, 0xf7, 0xfb, 0xfb, 0x14,
+ 0xb0, 0x01, 0xbc, 0x30, 0xbc, 0x02, 0x47, 0x08, 0xb5, 0x00, 0x1c, 0x03, 0xb0, 0x81, 0x1c, 0x0a,
+ 0x20, 0x06, 0x1c, 0x19, 0x23, 0x00, 0xf7, 0xfb, 0xfb, 0x07, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00,
+ 0xb5, 0x00, 0x1c, 0x03, 0xb0, 0x81, 0x1c, 0x0a, 0x20, 0x05, 0x1c, 0x19, 0x23, 0x00, 0xf7, 0xfb,
+ 0xfa, 0xfb, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00, 0xb5, 0x30, 0xb0, 0x81, 0x1c, 0x04, 0x1c, 0x0d,
+ 0x1c, 0x13, 0x2a, 0x00, 0xdd, 0x04, 0x20, 0x09, 0x1c, 0x21, 0x1c, 0x2a, 0xf7, 0xfb, 0xfa, 0xec,
+ 0xb0, 0x01, 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0xb5, 0x30, 0xb0, 0x81, 0x1c, 0x04, 0x1c, 0x0d,
+ 0x1c, 0x13, 0x2a, 0x00, 0xdd, 0x04, 0x20, 0x02, 0x1c, 0x21, 0x1c, 0x2a, 0xf7, 0xfb, 0xfa, 0xdc,
+ 0xb0, 0x01, 0xbc, 0x30, 0xbc, 0x01, 0x47, 0x00, 0xb5, 0x00, 0xb0, 0x81, 0x20, 0x12, 0x21, 0x00,
+ 0x22, 0x00, 0x23, 0x00, 0xf7, 0xfb, 0xfa, 0xd0, 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
+ 0xb5, 0x00, 0xb0, 0x81, 0x20, 0x11, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0xf7, 0xfb, 0xfa, 0xc4,
+ 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0xb5, 0x00, 0xb0, 0x81, 0x20, 0x01, 0x21, 0x00,
+ 0x22, 0x00, 0x23, 0x00, 0xf7, 0xfb, 0xfa, 0xb8, 0xb0, 0x01, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0,
+ 0xb5, 0x00, 0x1c, 0x03, 0xb0, 0x81, 0x1c, 0x0a, 0x20, 0x00, 0x1c, 0x19, 0x23, 0x00, 0xf7, 0xfb,
+ 0xfa, 0xab, 0xb0, 0x01, 0xbc, 0x01, 0x47, 0x00, 0xb5, 0xf0, 0xb0, 0x8d, 0x90, 0x04, 0x92, 0x03,
+ 0x93, 0x02, 0x68, 0x05, 0x1c, 0x0a, 0x6a, 0x6e, 0x1e, 0xb3, 0x40, 0xda, 0x04, 0x13, 0x0c, 0x1b,
+ 0x93, 0x06, 0x9b, 0x04, 0x7a, 0x28, 0x68, 0x5a, 0x9b, 0x06, 0x6a, 0x2c, 0x33, 0x80, 0x00, 0x5b,
+ 0x5a, 0xd3, 0x68, 0x6f, 0x93, 0x0a, 0x2b, 0x00, 0xd1, 0x00, 0xe0, 0xc5, 0x1e, 0x63, 0x40, 0xc3,
+ 0x1a, 0x36, 0x93, 0x08, 0x96, 0x07, 0x1e, 0x83, 0x1c, 0x0a, 0x9e, 0x08, 0x40, 0xda, 0x08, 0xbb,
+ 0x40, 0x16, 0x3b, 0x01, 0x1c, 0x0a, 0x40, 0x1a, 0x92, 0x09, 0xd1, 0x02, 0x9b, 0x03, 0x93, 0x0b,
+ 0xe0, 0x89, 0x9b, 0x07, 0x9a, 0x0a, 0x40, 0x9a, 0x92, 0x05, 0x6a, 0xeb, 0x18, 0xf3, 0x18, 0x99,
+ 0x4a, 0x58, 0x92, 0x01, 0x68, 0x13, 0x6c, 0xef, 0x42, 0x8b, 0xd1, 0x05, 0x4a, 0x56, 0x4b, 0x57,
+ 0x68, 0x12, 0x68, 0x19, 0x1c, 0x38, 0xe0, 0x14, 0x6b, 0x2c, 0x6b, 0xa8, 0x22, 0x01, 0x1c, 0x3b,
+ 0xf0, 0x00, 0xf8, 0xa6, 0x1c, 0x04, 0x28, 0x00, 0xd0, 0x00, 0xe0, 0x96, 0x6a, 0xeb, 0x9a, 0x05,
+ 0x18, 0xf3, 0x18, 0x9b, 0x9a, 0x01, 0x60, 0x13, 0x4b, 0x4c, 0x6c, 0xe9, 0x68, 0x18, 0x4b, 0x4a,
+ 0x68, 0x1a, 0xf0, 0x00, 0xfd, 0x7b, 0x9b, 0x09, 0x00, 0x9a, 0x68, 0x6b, 0x1a, 0x9c, 0x9b, 0x02,
+ 0x42, 0x9c, 0xd9, 0x00, 0x1c, 0x1c, 0x6c, 0xe9, 0x98, 0x03, 0x18, 0x89, 0x1c, 0x22, 0xf0, 0x00,
+ 0xfd, 0x6d, 0x9a, 0x02, 0x9b, 0x03, 0x1b, 0x12, 0x92, 0x02, 0x9a, 0x08, 0x19, 0x1c, 0x36, 0x01,
+ 0x94, 0x0b, 0x42, 0x96, 0xd9, 0x47, 0x9b, 0x02, 0x2b, 0x00, 0xd0, 0x44, 0x9b, 0x06, 0x33, 0x01,
+ 0x04, 0x1b, 0x0c, 0x1b, 0x93, 0x06, 0x9b, 0x04, 0x68, 0x5a, 0x9b, 0x06, 0x33, 0x80, 0x00, 0x5b,
+ 0x5a, 0xd3, 0x93, 0x0a, 0x2b, 0x00, 0xd0, 0x5f, 0x26, 0x00, 0xe0, 0x34, 0x7a, 0x2b, 0x9f, 0x02,
+ 0x6a, 0x2a, 0x40, 0xdf, 0x19, 0xbb, 0x42, 0x93, 0xd9, 0x00, 0x1b, 0x97, 0x9a, 0x07, 0x6a, 0xe9,
+ 0x9b, 0x0a, 0x18, 0x71, 0x40, 0x93, 0x18, 0xc9, 0x6b, 0x2c, 0x6b, 0xa8, 0x1c, 0x3a, 0x9b, 0x0b,
+ 0xf0, 0x00, 0xf8, 0x56, 0x1c, 0x04, 0x28, 0x00, 0xd1, 0x47, 0x7a, 0x2b, 0x1c, 0x39, 0x40, 0x99,
+ 0x9b, 0x02, 0x9a, 0x08, 0x1a, 0x5b, 0x19, 0xf6, 0x93, 0x02, 0x42, 0x96, 0xd9, 0x10, 0x2b, 0x00,
+ 0xd0, 0x0e, 0x9b, 0x06, 0x33, 0x01, 0x04, 0x1b, 0x0c, 0x1b, 0x93, 0x06, 0x9b, 0x04, 0x68, 0x5a,
+ 0x9b, 0x06, 0x33, 0x80, 0x00, 0x5b, 0x5a, 0xd3, 0x93, 0x0a, 0x2b, 0x00, 0xd0, 0x2c, 0x26, 0x00,
+ 0x9a, 0x0b, 0x18, 0x52, 0x92, 0x0b, 0x68, 0x6b, 0x9a, 0x02, 0x42, 0x9a, 0xd2, 0xc6, 0x2a, 0x00,
+ 0xd1, 0x01, 0x24, 0x00, 0xe0, 0x21, 0x9b, 0x07, 0x9f, 0x0a, 0x6a, 0xe9, 0x40, 0x9f, 0x18, 0x71,
+ 0x6b, 0x2c, 0x6b, 0xa8, 0x19, 0xc9, 0x6c, 0xeb, 0x22, 0x01, 0xf0, 0x00, 0xf8, 0x21, 0x1c, 0x04,
+ 0x28, 0x00, 0xd1, 0x12, 0x6a, 0xeb, 0x4a, 0x0b, 0x18, 0xf3, 0x19, 0xdb, 0x60, 0x13, 0x4b, 0x0b,
+ 0x6c, 0xe9, 0x68, 0x18, 0x4b, 0x08, 0x68, 0x1a, 0xf0, 0x00, 0xfc, 0xf8, 0x6c, 0xe9, 0x98, 0x0b,
+ 0x9a, 0x02, 0xf0, 0x00, 0xfc, 0xf3, 0xe0, 0x00, 0x24, 0x01, 0xb0, 0x0d, 0x1c, 0x20, 0xbc, 0xf0,
+ 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x4c, 0x13, 0x70, 0x67, 0xe0, 0x13, 0x70, 0x67, 0xdc,
+ 0x47, 0x20, 0x46, 0xc0, 0xb5, 0x10, 0x68, 0x02, 0x1c, 0x04, 0x6d, 0x13, 0x3b, 0x01, 0x65, 0x13,
+ 0x68, 0x40, 0xf7, 0xfb, 0xfe, 0x9f, 0x1c, 0x20, 0xf7, 0xfb, 0xfe, 0x9c, 0xbc, 0x10, 0xbc, 0x01,
+ 0x47, 0x00, 0x46, 0xc0, 0xb5, 0xf0, 0x1c, 0x03, 0x33, 0x48, 0x88, 0x1a, 0x7a, 0x03, 0xb0, 0x83,
+ 0x41, 0x1a, 0x92, 0x01, 0x23, 0x01, 0x4a, 0x30, 0x42, 0x5b, 0x27, 0x00, 0x1c, 0x05, 0x1c, 0x0e,
+ 0x60, 0x13, 0x97, 0x00, 0xe0, 0x4f, 0x68, 0x2b, 0x19, 0xdb, 0x7b, 0x1b, 0x2b, 0x00, 0xd0, 0x45,
+ 0x6a, 0xe9, 0x9a, 0x00, 0x31, 0x01, 0x18, 0x89, 0x6b, 0xa8, 0x22, 0x01, 0x6c, 0xeb, 0x6b, 0x2c,
+ 0xf0, 0x00, 0xf8, 0x52, 0x6c, 0xe9, 0x1c, 0x30, 0x22, 0x06, 0xf0, 0x00, 0xfc, 0x83, 0x28, 0x00,
+ 0xd1, 0x34, 0x20, 0x0c, 0xf7, 0xfb, 0xfe, 0x7a, 0x1c, 0x06, 0x28, 0x00, 0xd1, 0x09, 0x48, 0x1f,
+ 0xf7, 0xfb, 0xf9, 0x3a, 0x48, 0x1e, 0xf7, 0xfb, 0xf9, 0x37, 0x48, 0x1e, 0xf7, 0xfb, 0xf9, 0x34,
+ 0xe0, 0x2d, 0x1c, 0x2b, 0x33, 0x48, 0x60, 0x05, 0x60, 0x87, 0x88, 0x18, 0xf7, 0xfb, 0xfe, 0x66,
+ 0x1c, 0x03, 0x60, 0x70, 0x28, 0x00, 0xd1, 0x0c, 0x48, 0x14, 0xf7, 0xfb, 0xf9, 0x25, 0x48, 0x14,
+ 0xf7, 0xfb, 0xf9, 0x22, 0x48, 0x13, 0xf7, 0xfb, 0xf9, 0x1f, 0x1c, 0x30, 0xf7, 0xfb, 0xfe, 0x4a,
+ 0xe0, 0x14, 0x6a, 0xe9, 0x9a, 0x00, 0x31, 0x01, 0x18, 0x89, 0x6b, 0xa8, 0x6b, 0x2c, 0x9a, 0x01,
+ 0xf0, 0x00, 0xf8, 0x1a, 0x6d, 0x2b, 0x33, 0x01, 0x65, 0x2b, 0xe0, 0x08, 0x9b, 0x00, 0x9a, 0x01,
+ 0x37, 0x01, 0x18, 0x9b, 0x93, 0x00, 0x8f, 0xab, 0x42, 0x9f, 0xd3, 0xac, 0x26, 0x00, 0xb0, 0x03,
+ 0x1c, 0x30, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x13, 0x70, 0x60, 0x4c, 0x13, 0x70, 0x66, 0x95,
+ 0x13, 0x70, 0x66, 0xa1, 0x13, 0x70, 0x66, 0x41, 0x47, 0x20, 0x46, 0xc0, 0xb5, 0x10, 0x6d, 0x03,
+ 0x1c, 0x04, 0x2b, 0x00, 0xd0, 0x09, 0x48, 0x0d, 0xf7, 0xfb, 0xf8, 0xee, 0x48, 0x0c, 0xf7, 0xfb,
+ 0xf8, 0xeb, 0x48, 0x0c, 0xf7, 0xfb, 0xf8, 0xe8, 0xe0, 0x0d, 0x68, 0x00, 0xf7, 0xfb, 0xfe, 0x12,
+ 0x6c, 0xe0, 0xf7, 0xfb, 0xfe, 0x0f, 0x6c, 0x60, 0x28, 0x00, 0xd0, 0x01, 0xf7, 0xfb, 0xfe, 0x0a,
+ 0x1c, 0x20, 0xf7, 0xfb, 0xfe, 0x07, 0xbc, 0x10, 0xbc, 0x01, 0x47, 0x00, 0x13, 0x70, 0x66, 0x95,
+ 0x13, 0x70, 0x66, 0xb3, 0x13, 0x70, 0x66, 0x41, 0xb5, 0xf0, 0xb0, 0x85, 0x90, 0x03, 0x20, 0x54,
+ 0x91, 0x02, 0x92, 0x01, 0x1c, 0x1f, 0xf7, 0xfb, 0xfe, 0x01, 0x1c, 0x05, 0x2f, 0x00, 0xd1, 0x02,
+ 0x20, 0x80, 0x00, 0x80, 0xe0, 0x00, 0x1c, 0x38, 0xf7, 0xfb, 0xfd, 0xf8, 0x23, 0x80, 0x02, 0x1b,
+ 0x61, 0x2b, 0x1c, 0x06, 0x23, 0x00, 0x33, 0x01, 0x06, 0x1b, 0x0e, 0x1b, 0x2b, 0x10, 0xd1, 0xfa,
+ 0x23, 0x0f, 0x75, 0x2b, 0x4b, 0x81, 0x60, 0x2e, 0x61, 0xeb, 0x9a, 0x0b, 0x4b, 0x80, 0x62, 0xea,
+ 0x60, 0x1f, 0x9b, 0x0a, 0x20, 0x00, 0x0b, 0xd9, 0x17, 0xfa, 0x1c, 0x3b, 0xf0, 0x00, 0xfb, 0xae,
+ 0x61, 0xa9, 0x9c, 0x0c, 0x2c, 0x00, 0xd0, 0x32, 0x1c, 0x30, 0x21, 0x00, 0x1c, 0x3a, 0xf0, 0x00,
+ 0xfc, 0x49, 0x23, 0x57, 0x70, 0x33, 0x23, 0x42, 0x70, 0x73, 0x23, 0x46, 0x70, 0xb3, 0x23, 0x53,
+ 0x70, 0xf3, 0x1c, 0x3c, 0x23, 0x00, 0xe0, 0x03, 0x33, 0x01, 0x06, 0x1b, 0x0e, 0x1b, 0x08, 0x64,
+ 0x2c, 0x00, 0xd1, 0xf9, 0x3b, 0x01, 0x72, 0x33, 0x9a, 0x0a, 0x21, 0x80, 0x0e, 0x13, 0x71, 0x33,
+ 0x0c, 0x13, 0x71, 0x73, 0x0a, 0x13, 0x71, 0xf2, 0x71, 0xb3, 0x69, 0xac, 0x22, 0x06, 0x20, 0x06,
+ 0x02, 0x49, 0x1c, 0x0b, 0x40, 0x83, 0x42, 0x9c, 0xd3, 0x05, 0x1c, 0x53, 0x06, 0x1b, 0x0e, 0x1a,
+ 0x30, 0x01, 0x2a, 0x0b, 0xd1, 0xf5, 0x7d, 0x2b, 0x18, 0xd3, 0x72, 0x73, 0xe0, 0x06, 0x6a, 0xe9,
+ 0x98, 0x01, 0x22, 0x01, 0x1c, 0x33, 0x9c, 0x03, 0xf0, 0x00, 0xf8, 0xca, 0x78, 0x33, 0x78, 0x72,
+ 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x78, 0xb3, 0x02, 0x1b, 0x43, 0x13, 0x78, 0xf2, 0x43, 0x1a,
+ 0x4b, 0x58, 0x42, 0x9a, 0xd0, 0x04, 0x48, 0x58, 0xf7, 0xfb, 0xf8, 0x56, 0x48, 0x57, 0xe0, 0x2f,
+ 0x4b, 0x57, 0x68, 0x1b, 0x42, 0x59, 0x41, 0x59, 0x29, 0x00, 0xd0, 0x36, 0x2f, 0x00, 0xd0, 0x11,
+ 0x7a, 0x30, 0x1c, 0x3a, 0x33, 0x01, 0x06, 0x1b, 0x08, 0x52, 0x0e, 0x1b, 0x2a, 0x00, 0xd1, 0xf9,
+ 0x3b, 0x01, 0x06, 0x1b, 0x0e, 0x1b, 0x42, 0x98, 0xd0, 0x04, 0x48, 0x4b, 0xf7, 0xfb, 0xf8, 0x3c,
+ 0x48, 0x4c, 0xe0, 0x15, 0x29, 0x00, 0xd0, 0x20, 0x9a, 0x0a, 0x2a, 0x00, 0xd0, 0x1d, 0x79, 0x32,
+ 0x79, 0x73, 0x06, 0x12, 0x04, 0x1b, 0x43, 0x13, 0x79, 0xb2, 0x9c, 0x0a, 0x02, 0x12, 0x43, 0x1a,
+ 0x79, 0xf3, 0x43, 0x13, 0x42, 0xa3, 0xd0, 0x10, 0x48, 0x3f, 0xf7, 0xfb, 0xf8, 0x25, 0x48, 0x42,
+ 0xf7, 0xfb, 0xf8, 0x22, 0x48, 0x41, 0xf7, 0xfb, 0xf8, 0x1f, 0x1c, 0x28, 0xf7, 0xfb, 0xfd, 0x4a,
+ 0x1c, 0x30, 0xf7, 0xfb, 0xfd, 0x47, 0x25, 0x00, 0xe0, 0x63, 0x7a, 0x33, 0x24, 0x01, 0x1c, 0x27,
+ 0x40, 0x9f, 0x60, 0x6f, 0x7a, 0x33, 0x69, 0x29, 0x72, 0x2b, 0x79, 0x33, 0x79, 0x72, 0x06, 0x1b,
+ 0x04, 0x12, 0x43, 0x1a, 0x79, 0xb3, 0x79, 0xf0, 0x02, 0x1b, 0x43, 0x13, 0x43, 0x18, 0x60, 0xe8,
+ 0xf0, 0x00, 0xfa, 0x72, 0x1c, 0x39, 0x43, 0x41, 0x61, 0xa9, 0x7a, 0x72, 0x7d, 0x2b, 0x62, 0x6a,
+ 0x40, 0x94, 0x1a, 0xd2, 0x69, 0xeb, 0x40, 0xd1, 0x40, 0xd3, 0x04, 0x1b, 0x0c, 0x1b, 0x04, 0x3a,
+ 0x85, 0x6b, 0x0c, 0x12, 0x33, 0x80, 0x85, 0x29, 0x00, 0x5b, 0x1e, 0x51, 0x18, 0xc9, 0x42, 0x52,
+ 0x1c, 0x2b, 0x40, 0x11, 0x33, 0x48, 0x80, 0x19, 0x62, 0x2c, 0x9a, 0x03, 0x63, 0x2a, 0x9b, 0x02,
+ 0x63, 0x6b, 0x9a, 0x01, 0x8d, 0x2b, 0x63, 0xaa, 0x08, 0xda, 0x7a, 0x2b, 0x1a, 0xa4, 0x40, 0xdc,
+ 0x64, 0x2c, 0x9b, 0x0c, 0x2b, 0x00, 0xd1, 0x01, 0x64, 0x6b, 0xe0, 0x0b, 0x1e, 0x78, 0x18, 0x80,
+ 0x42, 0x7b, 0x40, 0x18, 0xf7, 0xfb, 0xfd, 0x0a, 0x8d, 0x2a, 0x64, 0x68, 0x08, 0xd2, 0x21, 0xff,
+ 0xf0, 0x00, 0xfb, 0x78, 0x1c, 0x2b, 0x33, 0x48, 0x88, 0x19, 0x6c, 0x28, 0x7a, 0x2b, 0x38, 0x01,
+ 0x41, 0x19, 0xf0, 0x00, 0xfa, 0x31, 0x68, 0x6b, 0x04, 0x00, 0x0c, 0x00, 0x3b, 0x0c, 0x87, 0xa8,
+ 0x42, 0x98, 0xd9, 0x00, 0x87, 0xab, 0x68, 0x68, 0xf7, 0xfb, 0xfc, 0xf0, 0x23, 0x00, 0x64, 0xe8,
+ 0x65, 0x2b, 0xb0, 0x05, 0x1c, 0x28, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x00, 0x04, 0x60, 0x90,
+ 0x13, 0x70, 0x67, 0xe0, 0x57, 0x42, 0x46, 0x53, 0x13, 0x70, 0x66, 0x95, 0x13, 0x70, 0x66, 0xdf,
+ 0x13, 0x70, 0x67, 0xe4, 0x13, 0x70, 0x66, 0xe9, 0x13, 0x70, 0x67, 0x06, 0x13, 0x70, 0x66, 0x41,
+ 0x47, 0x20, 0x46, 0xc0, 0xb5, 0xf0, 0xb0, 0xa5, 0x90, 0x0c, 0x1c, 0x18, 0x92, 0x0a, 0x93, 0x09,
+ 0x91, 0x0b, 0xf7, 0xfb, 0xfc, 0xcb, 0x4b, 0x8c, 0x22, 0x01, 0x4c, 0x8c, 0x42, 0x52, 0x60, 0x1a,
+ 0x68, 0x23, 0x1c, 0x05, 0x2b, 0x00, 0xd1, 0x03, 0x98, 0x09, 0xf7, 0xfb, 0xfc, 0xbf, 0x60, 0x20,
+ 0x4b, 0x87, 0x99, 0x09, 0x98, 0x0a, 0x60, 0x19, 0x22, 0x01, 0x21, 0x00, 0x1c, 0x2b, 0x9c, 0x0c,
+ 0xf0, 0x00, 0xf9, 0x18, 0x28, 0x00, 0xd0, 0x00, 0xe0, 0xf4, 0x23, 0xff, 0x00, 0x5b, 0x5c, 0xeb,
+ 0x2b, 0x55, 0xd1, 0x1b, 0x4b, 0x7f, 0x5c, 0xeb, 0x2b, 0xaa, 0xd1, 0x17, 0x1c, 0xe8, 0x49, 0x7e,
+ 0x22, 0x04, 0xf0, 0x00, 0xfb, 0x9d, 0x28, 0x00, 0xd0, 0x10, 0x4c, 0x7c, 0x1c, 0x28, 0x30, 0x36,
+ 0x1c, 0x21, 0x22, 0x03, 0xf0, 0x00, 0xfb, 0x94, 0x28, 0x00, 0xd0, 0x07, 0x1c, 0x28, 0x30, 0x52,
+ 0x1c, 0x21, 0x22, 0x03, 0xf0, 0x00, 0xfb, 0x8c, 0x28, 0x00, 0xd1, 0x05, 0xa8, 0x14, 0x21, 0x00,
+ 0x22, 0x40, 0xf0, 0x00, 0xfa, 0xff, 0xe0, 0x06, 0x22, 0xdf, 0x00, 0x52, 0x18, 0xa9, 0xa8, 0x14,
+ 0x22, 0x40, 0xf0, 0x00, 0xfa, 0xb3, 0x23, 0x01, 0x21, 0xe4, 0x42, 0x5b, 0x24, 0x00, 0x00, 0x49,
+ 0xae, 0x14, 0x93, 0x11, 0x94, 0x12, 0x91, 0x07, 0x78, 0x2b, 0x78, 0x6a, 0x06, 0x1b, 0x04, 0x12,
+ 0x43, 0x1a, 0x78, 0xab, 0x7a, 0x37, 0x02, 0x1b, 0x43, 0x13, 0x78, 0xea, 0x7a, 0x70, 0x43, 0x1a,
+ 0x4b, 0x63, 0x7a, 0xb1, 0x7a, 0xf4, 0x42, 0x9a, 0xd0, 0x03, 0x79, 0x33, 0x2b, 0x00, 0xd1, 0x00,
+ 0xe0, 0xa3, 0x04, 0x0a, 0x02, 0x03, 0x43, 0x13, 0x43, 0x3b, 0x1c, 0x1f, 0x79, 0x33, 0x06, 0x22,
+ 0x43, 0x17, 0x2b, 0x0f, 0xd1, 0x69, 0x22, 0xe3, 0x21, 0x00, 0x00, 0x52, 0x91, 0x13, 0x92, 0x08,
+ 0x19, 0xc9, 0x91, 0x05, 0x98, 0x0a, 0x22, 0x01, 0x1c, 0x2b, 0x9c, 0x0c, 0xf0, 0x00, 0xf8, 0xb2,
+ 0x28, 0x00, 0xd0, 0x00, 0xe0, 0x8e, 0x49, 0x53, 0x9c, 0x07, 0x5c, 0x6a, 0x5d, 0x2b, 0x99, 0x08,
+ 0x04, 0x1b, 0x02, 0x12, 0x43, 0x1a, 0x4c, 0x50, 0x5c, 0x6b, 0x99, 0x05, 0x43, 0x1a, 0x5d, 0x2b,
+ 0x98, 0x0a, 0x06, 0x1b, 0x43, 0x1a, 0x18, 0x8a, 0x23, 0xeb, 0x92, 0x05, 0x00, 0x5b, 0x5c, 0xeb,
+ 0x1c, 0x11, 0x93, 0x0d, 0x4b, 0x49, 0x22, 0x01, 0x5c, 0xeb, 0x9c, 0x0c, 0x93, 0x0e, 0x23, 0xec,
+ 0x00, 0x5b, 0x5c, 0xeb, 0x93, 0x0f, 0x4b, 0x46, 0x5c, 0xeb, 0x93, 0x10, 0x1c, 0x2b, 0xf0, 0x00,
+ 0xf8, 0x89, 0x28, 0x00, 0xd1, 0x66, 0x78, 0x2b, 0x78, 0x6a, 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a,
+ 0x78, 0xab, 0x02, 0x1b, 0x43, 0x13, 0x78, 0xea, 0x43, 0x1a, 0x4b, 0x39, 0x42, 0x9a, 0xd1, 0x12,
+ 0x99, 0x12, 0x9a, 0x2b, 0x42, 0x91, 0xd1, 0x05, 0x9b, 0x05, 0x9c, 0x2c, 0x90, 0x00, 0x93, 0x01,
+ 0x94, 0x02, 0xe0, 0x38, 0x99, 0x05, 0x9a, 0x11, 0x42, 0x91, 0xd0, 0x04, 0x9b, 0x12, 0x9c, 0x05,
+ 0x33, 0x01, 0x93, 0x12, 0x94, 0x11, 0x99, 0x0e, 0x9c, 0x0f, 0x02, 0x0b, 0x04, 0x22, 0x99, 0x0d,
+ 0x43, 0x13, 0x9c, 0x10, 0x43, 0x0b, 0x06, 0x22, 0x1c, 0x19, 0x43, 0x11, 0xd0, 0x35, 0x9a, 0x13,
+ 0x32, 0x01, 0x92, 0x13, 0x2a, 0x08, 0xd1, 0x9b, 0xe0, 0x2f, 0x98, 0x0a, 0x1c, 0x39, 0x22, 0x01,
+ 0x1c, 0x2b, 0x9c, 0x0c, 0xf0, 0x00, 0xf8, 0x4e, 0x28, 0x00, 0xd1, 0x2b, 0x78, 0x2b, 0x78, 0x6a,
+ 0x06, 0x1b, 0x04, 0x12, 0x43, 0x1a, 0x78, 0xab, 0x02, 0x1b, 0x43, 0x13, 0x78, 0xea, 0x43, 0x1a,
+ 0x4b, 0x1b, 0x42, 0x9a, 0xd1, 0x19, 0x99, 0x12, 0x9a, 0x2b, 0x42, 0x91, 0xd1, 0x0e, 0x9b, 0x2c,
+ 0x90, 0x00, 0x97, 0x01, 0x93, 0x02, 0x98, 0x0c, 0x99, 0x0b, 0x9a, 0x0a, 0x9b, 0x09, 0xf7, 0xff,
+ 0xfd, 0xc3, 0x1c, 0x04, 0x1c, 0x28, 0xf7, 0xfb, 0xfb, 0xbd, 0xe0, 0x0f, 0x9c, 0x11, 0x42, 0xa7,
+ 0xd0, 0x03, 0x99, 0x12, 0x97, 0x11, 0x31, 0x01, 0x91, 0x12, 0xab, 0x20, 0x42, 0x9e, 0xd0, 0x01,
+ 0x36, 0x10, 0xe7, 0x41, 0x1c, 0x28, 0xf7, 0xfb, 0xfb, 0xad, 0x24, 0x00, 0xb0, 0x25, 0x1c, 0x20,
+ 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x46, 0xc0, 0x13, 0x70, 0x60, 0x4c, 0x13, 0x70, 0x67, 0xdc,
+ 0x13, 0x70, 0x67, 0xe0, 0x00, 0x00, 0x01, 0xff, 0x13, 0x70, 0x67, 0x22, 0x13, 0x70, 0x67, 0x27,
+ 0x57, 0x42, 0x46, 0x53, 0x00, 0x00, 0x01, 0xc7, 0x00, 0x00, 0x01, 0xc9, 0x00, 0x00, 0x01, 0xd7,
+ 0x00, 0x00, 0x01, 0xd9, 0x47, 0x20, 0x46, 0xc0, 0xef, 0x00, 0x00, 0xcc, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0xe6, 0x00, 0x00, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x00, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x00, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0x90, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x00, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x00, 0xd0, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x00, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x01, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x01, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0x90, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x01, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x01, 0xd0, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x01, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x02, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x02, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0x90, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x02, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x02, 0xd0, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x02, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x03, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x03, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0x90, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x03, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x03, 0xd0, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x03, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x04, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x04, 0x70, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0x90, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x04, 0xb0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x04, 0xd0, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x04, 0xf0, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x05, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x05, 0x30, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x05, 0x50, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x06, 0x90, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x07, 0xf0, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe6, 0x00, 0x08, 0x10, 0xe1, 0x2f, 0xff, 0x1e, 0xe6, 0x00, 0x0a, 0x10, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe2, 0x90, 0x10, 0x00, 0xe3, 0xb0, 0x00, 0x04, 0xef, 0x00, 0x00, 0xab, 0xe1, 0x2f, 0xff, 0x1e,
+ 0xe1, 0xa0, 0x00, 0x00, 0xe1, 0xa0, 0x00, 0x00, 0x29, 0x00, 0xd0, 0x34, 0x23, 0x01, 0x22, 0x00,
+ 0xb4, 0x10, 0x42, 0x88, 0xd3, 0x2c, 0x24, 0x01, 0x07, 0x24, 0x42, 0xa1, 0xd2, 0x04, 0x42, 0x81,
+ 0xd2, 0x02, 0x01, 0x09, 0x01, 0x1b, 0xe7, 0xf8, 0x00, 0xe4, 0x42, 0xa1, 0xd2, 0x04, 0x42, 0x81,
+ 0xd2, 0x02, 0x00, 0x49, 0x00, 0x5b, 0xe7, 0xf8, 0x42, 0x88, 0xd3, 0x01, 0x1a, 0x40, 0x43, 0x1a,
+ 0x08, 0x4c, 0x42, 0xa0, 0xd3, 0x02, 0x1b, 0x00, 0x08, 0x5c, 0x43, 0x22, 0x08, 0x8c, 0x42, 0xa0,
+ 0xd3, 0x02, 0x1b, 0x00, 0x08, 0x9c, 0x43, 0x22, 0x08, 0xcc, 0x42, 0xa0, 0xd3, 0x02, 0x1b, 0x00,
+ 0x08, 0xdc, 0x43, 0x22, 0x28, 0x00, 0xd0, 0x03, 0x09, 0x1b, 0xd0, 0x01, 0x09, 0x09, 0xe7, 0xe3,
+ 0x1c, 0x10, 0xbc, 0x10, 0x47, 0x70, 0xb5, 0x02, 0xf0, 0x00, 0xf8, 0x5e, 0x20, 0x00, 0xbc, 0x06,
+ 0x47, 0x10, 0x46, 0xc0, 0xb5, 0x03, 0xf7, 0xff, 0xff, 0xbf, 0xbc, 0x0e, 0x43, 0x42, 0x1a, 0x89,
+ 0x47, 0x18, 0x46, 0xc0, 0x29, 0x00, 0xd0, 0x41, 0xb4, 0x10, 0x1c, 0x04, 0x40, 0x4c, 0x46, 0xa4,
+ 0x23, 0x01, 0x22, 0x00, 0x29, 0x00, 0xd5, 0x00, 0x42, 0x49, 0x28, 0x00, 0xd5, 0x00, 0x42, 0x40,
+ 0x42, 0x88, 0xd3, 0x2c, 0x24, 0x01, 0x07, 0x24, 0x42, 0xa1, 0xd2, 0x04, 0x42, 0x81, 0xd2, 0x02,
+ 0x01, 0x09, 0x01, 0x1b, 0xe7, 0xf8, 0x00, 0xe4, 0x42, 0xa1, 0xd2, 0x04, 0x42, 0x81, 0xd2, 0x02,
+ 0x00, 0x49, 0x00, 0x5b, 0xe7, 0xf8, 0x42, 0x88, 0xd3, 0x01, 0x1a, 0x40, 0x43, 0x1a, 0x08, 0x4c,
+ 0x42, 0xa0, 0xd3, 0x02, 0x1b, 0x00, 0x08, 0x5c, 0x43, 0x22, 0x08, 0x8c, 0x42, 0xa0, 0xd3, 0x02,
+ 0x1b, 0x00, 0x08, 0x9c, 0x43, 0x22, 0x08, 0xcc, 0x42, 0xa0, 0xd3, 0x02, 0x1b, 0x00, 0x08, 0xdc,
+ 0x43, 0x22, 0x28, 0x00, 0xd0, 0x03, 0x09, 0x1b, 0xd0, 0x01, 0x09, 0x09, 0xe7, 0xe3, 0x1c, 0x10,
+ 0x46, 0x64, 0x2c, 0x00, 0xd5, 0x00, 0x42, 0x40, 0xbc, 0x10, 0x47, 0x70, 0xb5, 0x02, 0xf0, 0x00,
+ 0xf8, 0x0b, 0x20, 0x00, 0xbc, 0x06, 0x47, 0x10, 0xb5, 0x03, 0xf7, 0xff, 0xff, 0xb3, 0xbc, 0x0e,
+ 0x43, 0x42, 0x1a, 0x89, 0x47, 0x18, 0x46, 0xc0, 0x47, 0x70, 0x46, 0xc0, 0xb5, 0xf0, 0x46, 0x57,
+ 0x46, 0x46, 0xb4, 0xc0, 0x1c, 0x1e, 0x4b, 0x16, 0x46, 0x90, 0x1c, 0x0a, 0x40, 0x1a, 0x40, 0x33,
+ 0x46, 0x82, 0x1c, 0x10, 0x43, 0x58, 0x0c, 0x0c, 0x1c, 0x0f, 0x0c, 0x31, 0x46, 0x84, 0x43, 0x4a,
+ 0x1c, 0x20, 0x43, 0x58, 0x1c, 0x25, 0x43, 0x4d, 0x46, 0x61, 0x18, 0x82, 0x0c, 0x0b, 0x18, 0xd2,
+ 0x42, 0x90, 0xd9, 0x02, 0x23, 0x80, 0x02, 0x5b, 0x18, 0xed, 0x4b, 0x09, 0x46, 0x61, 0x04, 0x14,
+ 0x0c, 0x10, 0x40, 0x0b, 0x18, 0x2a, 0x18, 0xe1, 0x46, 0x40, 0x43, 0x78, 0x46, 0x53, 0x43, 0x73,
+ 0x18, 0xc0, 0x18, 0x80, 0xbc, 0x0c, 0x46, 0x90, 0x46, 0x9a, 0xbc, 0xf0, 0xbc, 0x04, 0x47, 0x10,
+ 0x00, 0x00, 0xff, 0xff, 0xb5, 0x70, 0x1c, 0x0e, 0x1c, 0x15, 0x1c, 0x04, 0x2a, 0x03, 0xd9, 0x20,
+ 0x1c, 0x33, 0x43, 0x03, 0x07, 0x9a, 0xd0, 0x12, 0x78, 0x23, 0x78, 0x08, 0x42, 0x83, 0xd1, 0x1b,
+ 0x1e, 0x6a, 0xe0, 0x06, 0x34, 0x01, 0x31, 0x01, 0x78, 0x23, 0x78, 0x08, 0x3a, 0x01, 0x42, 0x83,
+ 0xd1, 0x12, 0x2a, 0x00, 0xd1, 0xf6, 0x20, 0x00, 0xbc, 0x70, 0xbc, 0x02, 0x47, 0x08, 0x68, 0x02,
+ 0x68, 0x0b, 0x42, 0x9a, 0xd1, 0x04, 0x3d, 0x04, 0x30, 0x04, 0x31, 0x04, 0x2d, 0x03, 0xd8, 0xf6,
+ 0x1c, 0x04, 0x2d, 0x00, 0xd1, 0xe0, 0xe7, 0xee, 0x1a, 0x18, 0xe7, 0xed, 0xb5, 0xf0, 0x1c, 0x07,
+ 0x1c, 0x0e, 0x1c, 0x04, 0x1c, 0x15, 0x1c, 0x08, 0x1c, 0x11, 0x2a, 0x0f, 0xd9, 0x03, 0x1c, 0x33,
+ 0x43, 0x3b, 0x07, 0x9a, 0xd0, 0x0b, 0x29, 0x00, 0xd0, 0x05, 0x22, 0x00, 0x5c, 0x83, 0x54, 0xa3,
+ 0x32, 0x01, 0x42, 0x8a, 0xd1, 0xfa, 0x1c, 0x38, 0xbc, 0xf0, 0xbc, 0x02, 0x47, 0x08, 0x1c, 0x3a,
+ 0x1c, 0x31, 0x1c, 0x28, 0x68, 0x0b, 0x60, 0x13, 0x68, 0x4b, 0x60, 0x53, 0x68, 0x8b, 0x60, 0x93,
+ 0x68, 0xcb, 0x38, 0x10, 0x60, 0xd3, 0x31, 0x10, 0x32, 0x10, 0x28, 0x0f, 0xd8, 0xf2, 0x1c, 0x2b,
+ 0x3b, 0x10, 0x09, 0x1a, 0x01, 0x11, 0x32, 0x01, 0x01, 0x12, 0x1a, 0x59, 0x18, 0xb0, 0x18, 0xbc,
+ 0x29, 0x03, 0xd9, 0xd8, 0x22, 0x00, 0x58, 0x83, 0x50, 0xa3, 0x32, 0x04, 0x1a, 0x8b, 0x2b, 0x03,
+ 0xd8, 0xf9, 0x1f, 0x0b, 0x08, 0x9a, 0x00, 0x91, 0x32, 0x01, 0x00, 0x92, 0x1a, 0x59, 0x18, 0x80,
+ 0x18, 0xa4, 0xe7, 0xc8, 0xb5, 0xf0, 0x1c, 0x07, 0x46, 0x8c, 0x1c, 0x10, 0x1c, 0x39, 0x07, 0xba,
+ 0xd0, 0x0e, 0x28, 0x00, 0xd0, 0x49, 0x46, 0x62, 0x06, 0x13, 0x38, 0x01, 0x0e, 0x1b, 0x22, 0x03,
+ 0xe0, 0x02, 0x28, 0x00, 0xd0, 0x41, 0x38, 0x01, 0x70, 0x0b, 0x31, 0x01, 0x42, 0x11, 0xd1, 0xf8,
+ 0x1c, 0x05, 0x1c, 0x0a, 0x28, 0x03, 0xd9, 0x2e, 0x23, 0xff, 0x46, 0x62, 0x40, 0x1a, 0x02, 0x13,
+ 0x43, 0x13, 0x04, 0x1a, 0x1c, 0x14, 0x1c, 0x0e, 0x43, 0x1c, 0x28, 0x0f, 0xd9, 0x12, 0x1c, 0x02,
+ 0x1c, 0x0b, 0x3a, 0x10, 0x60, 0x1c, 0x60, 0x5c, 0x60, 0x9c, 0x60, 0xdc, 0x33, 0x10, 0x2a, 0x0f,
+ 0xd8, 0xf7, 0x1c, 0x03, 0x3b, 0x10, 0x1c, 0x1d, 0x09, 0x1b, 0x33, 0x01, 0x22, 0x0f, 0x01, 0x1b,
+ 0x40, 0x15, 0x18, 0xce, 0x2d, 0x03, 0xd9, 0x0d, 0x22, 0x00, 0x50, 0xb4, 0x32, 0x04, 0x1a, 0xab,
+ 0x2b, 0x03, 0xd8, 0xfa, 0x1f, 0x2b, 0x1c, 0x1d, 0x08, 0x9b, 0x33, 0x01, 0x22, 0x03, 0x00, 0x9b,
+ 0x40, 0x15, 0x18, 0xf6, 0x1c, 0x32, 0x2d, 0x00, 0xd0, 0x07, 0x46, 0x61, 0x06, 0x0b, 0x0e, 0x19,
+ 0x23, 0x00, 0x54, 0xd1, 0x33, 0x01, 0x42, 0x9d, 0xd1, 0xfb, 0x1c, 0x38, 0xbc, 0xf0, 0xbc, 0x02,
+ 0x47, 0x08, 0x46, 0xc0, 0xb5, 0x30, 0x1c, 0x0b, 0x43, 0x03, 0x07, 0x9a, 0xd1, 0x1c, 0x68, 0x02,
+ 0x68, 0x0b, 0x42, 0x9a, 0xd1, 0x18, 0x4c, 0x10, 0x19, 0x13, 0x43, 0x93, 0x4a, 0x0f, 0x42, 0x13,
+ 0xd1, 0x0b, 0x1c, 0x14, 0x30, 0x04, 0x31, 0x04, 0x68, 0x02, 0x68, 0x0b, 0x42, 0x9a, 0xd1, 0x0b,
+ 0x4d, 0x09, 0x19, 0x53, 0x43, 0x93, 0x42, 0x23, 0xd0, 0xf4, 0x20, 0x00, 0xe0, 0x09, 0x78, 0x0a,
+ 0x42, 0x9a, 0xd1, 0x05, 0x30, 0x01, 0x31, 0x01, 0x78, 0x03, 0x2b, 0x00, 0xd1, 0xf7, 0x78, 0x0a,
+ 0x1a, 0x98, 0xbc, 0x30, 0xbc, 0x02, 0x47, 0x08, 0xfe, 0xfe, 0xfe, 0xff, 0x80, 0x80, 0x80, 0x80,
+ 0xb5, 0x70, 0x1c, 0x04, 0x2a, 0x00, 0xd0, 0x41, 0x1c, 0x0b, 0x43, 0x03, 0x07, 0x98, 0xd1, 0x2c,
+ 0x1c, 0x20, 0x1c, 0x0d, 0x2a, 0x03, 0xd9, 0x26, 0x68, 0x24, 0x68, 0x0b, 0x42, 0x9c, 0xd1, 0x22,
+ 0x3a, 0x04, 0x2a, 0x00, 0xd0, 0x32, 0x49, 0x1b, 0x18, 0x63, 0x49, 0x1b, 0x43, 0xa3, 0x42, 0x0b,
+ 0xd1, 0x2c, 0x1c, 0x0c, 0xe0, 0x0b, 0x68, 0x01, 0x68, 0x2b, 0x42, 0x99, 0xd1, 0x13, 0x3a, 0x04,
+ 0x2a, 0x00, 0xd0, 0x23, 0x4e, 0x13, 0x19, 0x8b, 0x43, 0x8b, 0x42, 0x23, 0xd1, 0x1e, 0x30, 0x04,
+ 0x35, 0x04, 0x2a, 0x03, 0xd8, 0xef, 0x1c, 0x04, 0x1c, 0x29, 0x2a, 0x00, 0xd1, 0x05, 0x78, 0x03,
+ 0x78, 0x28, 0x1a, 0x18, 0xe0, 0x13, 0x1c, 0x04, 0x1c, 0x29, 0x78, 0x23, 0x78, 0x08, 0x3a, 0x01,
+ 0x42, 0x98, 0xd0, 0x09, 0xe7, 0xf5, 0x28, 0x00, 0xd0, 0x08, 0x34, 0x01, 0x31, 0x01, 0x78, 0x23,
+ 0x78, 0x08, 0x42, 0x98, 0xd1, 0xed, 0x3a, 0x01, 0x2a, 0x00, 0xd1, 0xf4, 0x20, 0x00, 0xbc, 0x70,
+ 0xbc, 0x02, 0x47, 0x08, 0xfe, 0xfe, 0xfe, 0xff, 0x80, 0x80, 0x80, 0x80, 0x49, 0x4f, 0x53, 0x20,
+ 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x1f, 0xf0, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x13, 0x72, 0xc2, 0xa4, 0x00, 0x0f, 0x42, 0x40, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x64, 0x65, 0x76,
+ 0x2f, 0x75, 0x73, 0x62, 0x31, 0x32, 0x33, 0x00, 0x2f, 0x64, 0x65, 0x76, 0x2f, 0x75, 0x73, 0x62,
+ 0x31, 0x32, 0x33, 0x2f, 0x4f, 0x46, 0x46, 0x00, 0x57, 0x42, 0x46, 0x53, 0x20, 0x6e, 0x6f, 0x74,
+ 0x20, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x21, 0x0a,
+ 0x00, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20,
+ 0x20, 0x28, 0x25, 0x73, 0x29, 0x0a, 0x00, 0x20, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x00, 0x20, 0x50,
+ 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x00, 0x20, 0x52, 0x65, 0x63, 0x6c, 0x00, 0x20, 0x48,
+ 0x61, 0x6c, 0x74, 0x00, 0x20, 0x49, 0x41, 0x41, 0x00, 0x20, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x00,
+ 0x20, 0x46, 0x4c, 0x52, 0x00, 0x20, 0x50, 0x43, 0x44, 0x00, 0x20, 0x45, 0x52, 0x52, 0x00, 0x20,
+ 0x49, 0x4e, 0x54, 0x00, 0x20, 0x20, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3a, 0x20,
+ 0x25, 0x78, 0x20, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x25,
+ 0x73, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x0a, 0x00, 0x20, 0x20, 0x20, 0x20, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x75, 0x73,
+ 0x62, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x3a, 0x20,
+ 0x42, 0x55, 0x4c, 0x4b, 0x20, 0x52, 0x45, 0x53, 0x45, 0x54, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x75,
+ 0x73, 0x62, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x3a,
+ 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x68, 0x61, 0x6c, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x72, 0x65,
+ 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x75, 0x73, 0x62, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
+ 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x3a, 0x20, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x68, 0x61, 0x6c,
+ 0x74, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x75, 0x73,
+ 0x62, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x3a, 0x20,
+ 0x55, 0x53, 0x42, 0x5f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x5f, 0x5f, 0x73,
+ 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x62, 0x77, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00,
+ 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x63, 0x62, 0x77, 0x00, 0x5f, 0x5f, 0x55, 0x53, 0x42, 0x5f,
+ 0x42, 0x6c, 0x6b, 0x4d, 0x73, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x20, 0x25, 0x69,
+ 0x0a, 0x00, 0x5f, 0x5f, 0x55, 0x53, 0x42, 0x5f, 0x42, 0x6c, 0x6b, 0x4d, 0x73, 0x67, 0x54, 0x69,
+ 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x00, 0x5f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x73, 0x77,
+ 0x20, 0x25, 0x69, 0x0a, 0x00, 0x5f, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x73, 0x77, 0x00,
+ 0x20, 0x20, 0x20, 0x20, 0x53, 0x43, 0x53, 0x49, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x55, 0x4e,
+ 0x49, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a,
+ 0x00, 0x20, 0x20, 0x20, 0x20, 0x53, 0x43, 0x53, 0x49, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53,
+ 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00,
+ 0x20, 0x20, 0x20, 0x20, 0x53, 0x43, 0x53, 0x49, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54,
+ 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x45, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, 0x78,
+ 0x0a, 0x00, 0x20, 0x20, 0x20, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70,
+ 0x20, 0x63, 0x6d, 0x64, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x20, 0x20, 0x20,
+ 0x20, 0x49, 0x6e, 0x71, 0x75, 0x69, 0x72, 0x79, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a,
+ 0x00, 0x20, 0x20, 0x20, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x54, 0x79, 0x70, 0x65,
+ 0x3a, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x20, 0x20, 0x20, 0x20, 0x52, 0x65, 0x61, 0x64, 0x43, 0x61,
+ 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x55,
+ 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29,
+ 0x3a, 0x20, 0x55, 0x53, 0x42, 0x5f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
+ 0x74, 0x6f, 0x72, 0x73, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x55,
+ 0x53, 0x42, 0x5f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72,
+ 0x73, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65,
+ 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e,
+ 0x67, 0x65, 0x64, 0x21, 0x21, 0x21, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61,
+ 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x75, 0x63, 0x64, 0x20, 0x25,
+ 0x69, 0x20, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x25, 0x69, 0x20, 0x6d, 0x41, 0x0a, 0x00, 0x55,
+ 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29,
+ 0x3a, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x73, 0x75, 0x62, 0x63,
+ 0x6c, 0x61, 0x73, 0x73, 0x20, 0x25, 0x69, 0x20, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x74,
+ 0x20, 0x25, 0x69, 0x20, 0x0a, 0x00, 0x49, 0x6e, 0x20, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x3a, 0x20,
+ 0x25, 0x69, 0x0a, 0x00, 0x4f, 0x75, 0x74, 0x20, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x3a, 0x20, 0x25,
+ 0x69, 0x0a, 0x00, 0x65, 0x70, 0x5f, 0x69, 0x6e, 0x20, 0x25, 0x78, 0x20, 0x65, 0x70, 0x5f, 0x6f,
+ 0x75, 0x74, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x63, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
+ 0x20, 0x66, 0x69, 0x6e, 0x64, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66,
+ 0x61, 0x63, 0x65, 0x21, 0x21, 0x21, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61,
+ 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x3a,
+ 0x20, 0x25, 0x78, 0x20, 0x61, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65,
+ 0x3a, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x55, 0x53, 0x42, 0x5f,
+ 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e,
+ 0x28, 0x29, 0x3a, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e,
+ 0x66, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x42, 0x65, 0x66, 0x6f, 0x72,
+ 0x65, 0x20, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x52, 0x65, 0x73,
+ 0x65, 0x74, 0x00, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72,
+ 0x61, 0x67, 0x65, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f,
+ 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x74, 0x72, 0x79,
+ 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53,
+ 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4f, 0x70, 0x65, 0x6e, 0x28, 0x29, 0x3a, 0x20, 0x72,
+ 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x0a, 0x00, 0x20, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x20,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x46, 0x61,
+ 0x73, 0x74, 0x20, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4d, 0x6f,
+ 0x75, 0x6e, 0x74, 0x4c, 0x55, 0x4e, 0x20, 0x25, 0x69, 0x23, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53,
+ 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4d, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x55, 0x4e, 0x3a,
+ 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x54, 0x4f, 0x52,
+ 0x41, 0x47, 0x45, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x55, 0x4e, 0x20,
+ 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x20, 0x6d, 0x61, 0x78, 0x6c, 0x75, 0x6e, 0x20, 0x25, 0x69,
+ 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x4d, 0x6f, 0x75,
+ 0x6e, 0x74, 0x4c, 0x55, 0x4e, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x21, 0x21, 0x21, 0x0a, 0x00, 0x55,
+ 0x6e, 0x70, 0x6c, 0x75, 0x67, 0x3a, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72,
+ 0x74, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69, 0x20, 0x70, 0x6f, 0x72, 0x74, 0x20, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, 0x78, 0x0a, 0x00, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65,
+ 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x4f, 0x4b, 0x0a, 0x00, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x72,
+ 0x65, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x4b, 0x4f, 0x20, 0x72, 0x65, 0x74, 0x20, 0x25, 0x69,
+ 0x0a, 0x00, 0x0a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x0a, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67,
+ 0x65, 0x5f, 0x49, 0x6e, 0x69, 0x74, 0x28, 0x29, 0x0a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a,
+ 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x0a, 0x0a, 0x00, 0x55,
+ 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x49, 0x6e, 0x69, 0x74, 0x28, 0x29,
+ 0x20, 0x4f, 0x6b, 0x0a, 0x00, 0x55, 0x53, 0x42, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f,
+ 0x49, 0x6e, 0x69, 0x74, 0x28, 0x29, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x25, 0x78,
+ 0x0a, 0x00, 0x55, 0x53, 0x42, 0x20, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x3a, 0x20, 0x6e, 0x6f, 0x74,
+ 0x20, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x21, 0x0a,
+ 0x00, 0x77, 0x62, 0x66, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x00, 0x61, 0x6c, 0x6c,
+ 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x00, 0x74,
+ 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x20, 0x77,
+ 0x62, 0x66, 0x73, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x64, 0x69, 0x73, 0x63, 0x73, 0x20,
+ 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x00, 0x62, 0x61, 0x64, 0x20, 0x6d,
+ 0x61, 0x67, 0x69, 0x63, 0x00, 0x68, 0x64, 0x20, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x73,
+ 0x69, 0x7a, 0x65, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63,
+ 0x68, 0x00, 0x68, 0x64, 0x20, 0x6e, 0x75, 0x6d, 0x20, 0x73, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20,
+ 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x00, 0x4e, 0x54,
+ 0x46, 0x53, 0x00, 0x46, 0x41, 0x54, 0x00
+};
diff --git a/source/network/http.c b/source/network/http.c
index b624ef7d..85dea150 100644
--- a/source/network/http.c
+++ b/source/network/http.c
@@ -1,261 +1,261 @@
-#include "http.h"
-#include "../svnrev.h"
-
-extern char incommingIP[50];
-
-/**
- * Emptyblock is a statically defined variable for functions to return if they are unable
- * to complete a request
- */
-const struct block emptyblock = { 0, NULL };
-
-//The maximum amount of bytes to send per net_write() call
-//#define NET_BUFFER_SIZE 1024
-#define NET_BUFFER_SIZE 3600
-
-// Write our message to the server
-static s32 send_message(s32 server, char *msg)
-{
- s32 bytes_transferred = 0;
- s32 remaining = strlen(msg);
- while (remaining)
- {
- if ((bytes_transferred = net_write(server, msg, remaining > NET_BUFFER_SIZE ? NET_BUFFER_SIZE : remaining)) > 0)
- {
- remaining -= bytes_transferred;
- usleep(20 * 1000);
- }
- else if (bytes_transferred < 0)
- {
- return bytes_transferred;
- }
- else
- {
- return -ENODATA;
- }
- }
- return 0;
-}
-
-/**
- * Connect to a remote server via TCP on a specified port
- *
- * @param u32 ip address of the server to connect to
- * @param u32 the port to connect to on the server
- * @return s32 The connection to the server (negative number if connection could not be established)
- */
-static s32 server_connect(u32 ipaddress, u32 socket_port)
-{
- //Initialize socket
- s32 connection = net_socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
- if (connection < 0) return connection;
-
- struct sockaddr_in connect_addr;
- memset(&connect_addr, 0, sizeof(connect_addr));
- connect_addr.sin_family = AF_INET;
- connect_addr.sin_port = socket_port;
- connect_addr.sin_addr.s_addr = ipaddress;
-
- sprintf(incommingIP, "%s", inet_ntoa(connect_addr.sin_addr));
-
- //Attemt to open the socket
- if (net_connect(connection, (struct sockaddr*) &connect_addr, sizeof(connect_addr)) == -1)
- {
- net_close(connection);
- return -1;
- }
- return connection;
-}
-
-//The amount of memory in bytes reserved initially to store the HTTP response in
-//Be careful in increasing this number, reading from a socket on the Wii
-//will fail if you request more than 20k or so
-#define HTTP_BUFFER_SIZE 1024 * 5
-
-//The amount of memory the buffer should expanded with if the buffer is full
-#define HTTP_BUFFER_GROWTH 1024 * 5
-
-/**
- * This function reads all the data from a connection into a buffer which it returns.
- * It will return an empty buffer if something doesn't go as planned
- *
- * @param s32 connection The connection identifier to suck the response out of
- * @return block A 'block' struct (see http.h) in which the buffer is located
- */
-struct block read_message(s32 connection)
-{
- //Create a block of memory to put in the response
- struct block buffer;
- buffer.data = malloc(HTTP_BUFFER_SIZE);
- buffer.size = HTTP_BUFFER_SIZE;
-
- if (buffer.data == NULL)
- {
- return emptyblock;
- }
-
- //The offset variable always points to the first byte of memory that is free in the buffer
- u32 offset = 0;
-
- while (1)
- {
- //Fill the buffer with a new batch of bytes from the connection,
- //starting from where we left of in the buffer till the end of the buffer
- s32 bytes_read = net_read(connection, buffer.data + offset, buffer.size - offset);
-
- //Anything below 0 is an error in the connection
- if (bytes_read < 0)
- {
- //printf("Connection error from net_read() Errorcode: %i\n", bytes_read);
- return emptyblock;
- }
-
- //No more bytes were read into the buffer,
- //we assume this means the HTTP response is done
- if (bytes_read == 0)
- {
- break;
- }
-
- offset += bytes_read;
-
- //Check if we have enough buffer left over,
- //if not expand it with an additional HTTP_BUFFER_GROWTH worth of bytes
- if (offset >= buffer.size)
- {
- buffer.size += HTTP_BUFFER_GROWTH;
- buffer.data = realloc(buffer.data, buffer.size);
-
- if (buffer.data == NULL)
- {
- return emptyblock;
- }
- }
- }
-
- //At the end of above loop offset should be precisely the amount of bytes that were read from the connection
- buffer.size = offset;
-
- //Shrink the size of the buffer so the data fits exactly in it
- buffer.data = realloc(buffer.data, buffer.size);
-
- return buffer;
-}
-
-/**
- * Downloads the contents of a URL to memory
- * This method is not threadsafe (because networking is not threadsafe on the Wii)
- */
-struct block downloadfile(const char *url)
-{
- //Check if the url starts with "http://", if not it is not considered a valid url
- if (strncmp(url, "http://", strlen("http://")) != 0)
- {
- //printf("URL '%s' doesn't start with 'http://'\n", url);
- return emptyblock;
- }
-
- //Locate the path part of the url by searching for '/' past "http://"
- char *path = strchr(url + strlen("http://"), '/');
-
- //At the very least the url has to end with '/', ending with just a domain is invalid
- if (path == NULL)
- {
- //printf("URL '%s' has no PATH part\n", url);
- return emptyblock;
- }
-
- //Extract the domain part out of the url
- int domainlength = path - url - strlen("http://");
-
- if (domainlength == 0)
- {
- //printf("No domain part in URL '%s'\n", url);
- return emptyblock;
- }
-
- char domain[domainlength + 1];
- strlcpy(domain, url + strlen("http://"), domainlength + 1);
-
- //Parsing of the URL is done, start making an actual connection
- u32 ipaddress = getipbynamecached(domain);
-
- if (ipaddress == 0)
- {
- //printf("\ndomain %s could not be resolved", domain);
- return emptyblock;
- }
-
- s32 connection = server_connect(ipaddress, 80);
-
- if (connection < 0)
- {
- //printf("Error establishing connection");
- return emptyblock;
- }
-
- //Form a nice request header to send to the webserver
- char* headerformat = "GET %s HTTP/1.0\r\nHost: %s\r\nReferer: %s\r\nUser-Agent: USBLoaderGX r%s\r\n\r\n";
- ;
- char header[strlen(headerformat) + strlen(path) + strlen(domain) + strlen(domain)];
- sprintf(header, headerformat, path, domain, domain, GetRev());
-
- //Do the request and get the response
- send_message(connection, header);
- struct block response = read_message(connection);
- net_close(connection);
-
- //Search for the 4-character sequence \r\n\r\n in the response which signals the start of the http payload (file)
- unsigned char *filestart = NULL;
- u32 filesize = 0;
- int i;
- for (i = 3; i < response.size; i++)
- {
- if (response.data[i] == '\n' && response.data[i - 1] == '\r' && response.data[i - 2] == '\n' && response.data[i
- - 3] == '\r')
- {
- filestart = response.data + i + 1;
- filesize = response.size - i - 1;
- break;
- }
- }
-
- if (filestart == NULL)
- {
- //printf("HTTP Response was without a file\n");
- free(response.data);
- return emptyblock;
- }
-
- //Copy the file part of the response into a new memoryblock to return
- struct block file;
- file.data = malloc(filesize);
- file.size = filesize;
-
- if (file.data == NULL)
- {
- //printf("No more memory to copy file from HTTP response\n");
- free(response.data);
- return emptyblock;
- }
-
- memcpy(file.data, filestart, filesize);
-
- //Dispose of the original response
- free(response.data);
-
- return file;
-}
-
-s32 GetConnection(char * domain)
-{
-
- u32 ipaddress = getipbynamecached(domain);
- if (ipaddress == 0)
- {
- return -1;
- }
- s32 connection = server_connect(ipaddress, 80);
- return connection;
-
-}
+#include "http.h"
+#include "../svnrev.h"
+
+extern char incommingIP[50];
+
+/**
+ * Emptyblock is a statically defined variable for functions to return if they are unable
+ * to complete a request
+ */
+const struct block emptyblock = { 0, NULL };
+
+//The maximum amount of bytes to send per net_write() call
+//#define NET_BUFFER_SIZE 1024
+#define NET_BUFFER_SIZE 3600
+
+// Write our message to the server
+static s32 send_message(s32 server, char *msg)
+{
+ s32 bytes_transferred = 0;
+ s32 remaining = strlen(msg);
+ while (remaining)
+ {
+ if ((bytes_transferred = net_write(server, msg, remaining > NET_BUFFER_SIZE ? NET_BUFFER_SIZE : remaining)) > 0)
+ {
+ remaining -= bytes_transferred;
+ usleep(20 * 1000);
+ }
+ else if (bytes_transferred < 0)
+ {
+ return bytes_transferred;
+ }
+ else
+ {
+ return -ENODATA;
+ }
+ }
+ return 0;
+}
+
+/**
+ * Connect to a remote server via TCP on a specified port
+ *
+ * @param u32 ip address of the server to connect to
+ * @param u32 the port to connect to on the server
+ * @return s32 The connection to the server (negative number if connection could not be established)
+ */
+static s32 server_connect(u32 ipaddress, u32 socket_port)
+{
+ //Initialize socket
+ s32 connection = net_socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
+ if (connection < 0) return connection;
+
+ struct sockaddr_in connect_addr;
+ memset(&connect_addr, 0, sizeof(connect_addr));
+ connect_addr.sin_family = AF_INET;
+ connect_addr.sin_port = socket_port;
+ connect_addr.sin_addr.s_addr = ipaddress;
+
+ sprintf(incommingIP, "%s", inet_ntoa(connect_addr.sin_addr));
+
+ //Attemt to open the socket
+ if (net_connect(connection, (struct sockaddr*) &connect_addr, sizeof(connect_addr)) == -1)
+ {
+ net_close(connection);
+ return -1;
+ }
+ return connection;
+}
+
+//The amount of memory in bytes reserved initially to store the HTTP response in
+//Be careful in increasing this number, reading from a socket on the Wii
+//will fail if you request more than 20k or so
+#define HTTP_BUFFER_SIZE 1024 * 5
+
+//The amount of memory the buffer should expanded with if the buffer is full
+#define HTTP_BUFFER_GROWTH 1024 * 5
+
+/**
+ * This function reads all the data from a connection into a buffer which it returns.
+ * It will return an empty buffer if something doesn't go as planned
+ *
+ * @param s32 connection The connection identifier to suck the response out of
+ * @return block A 'block' struct (see http.h) in which the buffer is located
+ */
+struct block read_message(s32 connection)
+{
+ //Create a block of memory to put in the response
+ struct block buffer;
+ buffer.data = malloc(HTTP_BUFFER_SIZE);
+ buffer.size = HTTP_BUFFER_SIZE;
+
+ if (buffer.data == NULL)
+ {
+ return emptyblock;
+ }
+
+ //The offset variable always points to the first byte of memory that is free in the buffer
+ u32 offset = 0;
+
+ while (1)
+ {
+ //Fill the buffer with a new batch of bytes from the connection,
+ //starting from where we left of in the buffer till the end of the buffer
+ s32 bytes_read = net_read(connection, buffer.data + offset, buffer.size - offset);
+
+ //Anything below 0 is an error in the connection
+ if (bytes_read < 0)
+ {
+ //printf("Connection error from net_read() Errorcode: %i\n", bytes_read);
+ return emptyblock;
+ }
+
+ //No more bytes were read into the buffer,
+ //we assume this means the HTTP response is done
+ if (bytes_read == 0)
+ {
+ break;
+ }
+
+ offset += bytes_read;
+
+ //Check if we have enough buffer left over,
+ //if not expand it with an additional HTTP_BUFFER_GROWTH worth of bytes
+ if (offset >= buffer.size)
+ {
+ buffer.size += HTTP_BUFFER_GROWTH;
+ buffer.data = realloc(buffer.data, buffer.size);
+
+ if (buffer.data == NULL)
+ {
+ return emptyblock;
+ }
+ }
+ }
+
+ //At the end of above loop offset should be precisely the amount of bytes that were read from the connection
+ buffer.size = offset;
+
+ //Shrink the size of the buffer so the data fits exactly in it
+ buffer.data = realloc(buffer.data, buffer.size);
+
+ return buffer;
+}
+
+/**
+ * Downloads the contents of a URL to memory
+ * This method is not threadsafe (because networking is not threadsafe on the Wii)
+ */
+struct block downloadfile(const char *url)
+{
+ //Check if the url starts with "http://", if not it is not considered a valid url
+ if (strncmp(url, "http://", strlen("http://")) != 0)
+ {
+ //printf("URL '%s' doesn't start with 'http://'\n", url);
+ return emptyblock;
+ }
+
+ //Locate the path part of the url by searching for '/' past "http://"
+ char *path = strchr(url + strlen("http://"), '/');
+
+ //At the very least the url has to end with '/', ending with just a domain is invalid
+ if (path == NULL)
+ {
+ //printf("URL '%s' has no PATH part\n", url);
+ return emptyblock;
+ }
+
+ //Extract the domain part out of the url
+ int domainlength = path - url - strlen("http://");
+
+ if (domainlength == 0)
+ {
+ //printf("No domain part in URL '%s'\n", url);
+ return emptyblock;
+ }
+
+ char domain[domainlength + 1];
+ strlcpy(domain, url + strlen("http://"), domainlength + 1);
+
+ //Parsing of the URL is done, start making an actual connection
+ u32 ipaddress = getipbynamecached(domain);
+
+ if (ipaddress == 0)
+ {
+ //printf("\ndomain %s could not be resolved", domain);
+ return emptyblock;
+ }
+
+ s32 connection = server_connect(ipaddress, 80);
+
+ if (connection < 0)
+ {
+ //printf("Error establishing connection");
+ return emptyblock;
+ }
+
+ //Form a nice request header to send to the webserver
+ char* headerformat = "GET %s HTTP/1.0\r\nHost: %s\r\nReferer: %s\r\nUser-Agent: USBLoaderGX r%s\r\n\r\n";
+ ;
+ char header[strlen(headerformat) + strlen(path) + strlen(domain) + strlen(domain)];
+ sprintf(header, headerformat, path, domain, domain, GetRev());
+
+ //Do the request and get the response
+ send_message(connection, header);
+ struct block response = read_message(connection);
+ net_close(connection);
+
+ //Search for the 4-character sequence \r\n\r\n in the response which signals the start of the http payload (file)
+ unsigned char *filestart = NULL;
+ u32 filesize = 0;
+ int i;
+ for (i = 3; i < response.size; i++)
+ {
+ if (response.data[i] == '\n' && response.data[i - 1] == '\r' && response.data[i - 2] == '\n' && response.data[i
+ - 3] == '\r')
+ {
+ filestart = response.data + i + 1;
+ filesize = response.size - i - 1;
+ break;
+ }
+ }
+
+ if (filestart == NULL)
+ {
+ //printf("HTTP Response was without a file\n");
+ free(response.data);
+ return emptyblock;
+ }
+
+ //Copy the file part of the response into a new memoryblock to return
+ struct block file;
+ file.data = malloc(filesize);
+ file.size = filesize;
+
+ if (file.data == NULL)
+ {
+ //printf("No more memory to copy file from HTTP response\n");
+ free(response.data);
+ return emptyblock;
+ }
+
+ memcpy(file.data, filestart, filesize);
+
+ //Dispose of the original response
+ free(response.data);
+
+ return file;
+}
+
+s32 GetConnection(char * domain)
+{
+
+ u32 ipaddress = getipbynamecached(domain);
+ if (ipaddress == 0)
+ {
+ return -1;
+ }
+ s32 connection = server_connect(ipaddress, 80);
+ return connection;
+
+}
diff --git a/source/prompts/PromptWindows.cpp b/source/prompts/PromptWindows.cpp
index 7c6e6b38..109f6cd9 100644
--- a/source/prompts/PromptWindows.cpp
+++ b/source/prompts/PromptWindows.cpp
@@ -52,7 +52,7 @@ int cntMissFiles = 0;
static char missingFiles[500][12];
/*** Extern variables ***/
-s32 gameSelected = 0, gameStart = 0;
+s32 gameStart = 0;
extern float gamesize;
extern u8 shutdown;
extern u8 reset;
@@ -445,7 +445,6 @@ void WindowCredits()
int WindowScreensaver()
{
gprintf("WindowScreenSaver()\n");
- int i = 0;
bool exit = false;
/* initialize random seed: */
@@ -473,18 +472,15 @@ int WindowScreensaver()
while (!exit)
{
- i++;
if (IsWpadConnected())
{
exit = true;
+ break;
}
- /* Set position only every 400000th loop */
- if ((i % 8000000) == 0)
- {
/* Set random position */
- GXlogoImg.SetPosition((rand() % 345), (rand() % 305));
- }
+ GXlogoImg.SetPosition((rand() % 345), (rand() % 305));
+ sleep(4);
}
HaltGui();
@@ -1127,7 +1123,7 @@ void SetFavoriteImages(const u8 * gameid, GuiImage *b1, GuiImage *b2, GuiImage *
* Displays a prompt window to user, with information, an error message, or
* presenting a user with a choice
***************************************************************************/
-int GameWindowPrompt()
+int GameWindowPrompt(int gameSelected)
{
int choice = -1, angle = 0;
f32 size = 0.0;
@@ -1531,8 +1527,32 @@ int GameWindowPrompt()
else if (nameBtn.GetState() == STATE_CLICKED) //rename
{
+ nameBtn.ResetState();
+ if(mountMethod == 3)
+ {
+ WindowPrompt(tr("ERROR:"), tr("You can't rename this game"), tr("OK"));
+ continue;
+ }
+
choice = 3;
promptWindow.SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_OUT, 50);
+ while(promptWindow.GetEffect() > 0) usleep(100);
+
+ wiilight(0);
+ //re-evaluate header now in case they changed games while on the game prompt
+ struct discHdr *header = gameList[gameSelected];
+
+ //enter new game title
+ char entered[60];
+ snprintf(entered, sizeof(entered), "%s", GameTitles.GetTitle(header));
+ int result = OnScreenKeyboard(entered, 60, 0);
+ if (result == 1)
+ {
+ WBFS_RenameGame(header->id, entered);
+ wString oldFilter(gameList.GetCurrentFilter());
+ gameList.ReadGameList();
+ gameList.FilterList(oldFilter.c_str());
+ }
}
else if (btnFavorite1.GetState() == STATE_CLICKED) //switch favorite
{
diff --git a/source/prompts/PromptWindows.h b/source/prompts/PromptWindows.h
index 9067132e..74c9090e 100644
--- a/source/prompts/PromptWindows.h
+++ b/source/prompts/PromptWindows.h
@@ -18,7 +18,7 @@ void WindowCredits();
int OnScreenKeyboard(char * var, u32 maxlen, int min);
int OnScreenNumpad(char * var, u32 maxlen);
int WindowExitPrompt();
-int GameWindowPrompt();
+int GameWindowPrompt(int gameSelected);
int DiscWait(const char *title, const char *msg, const char *btn1Label, const char *btn2Label, int IsDeviceWait);
int FormatingPartition(const char *title, partitionEntry *entry);
bool SearchMissingImages(int choice2);
diff --git a/source/settings/menus/FlyingButtonsMenu.cpp b/source/settings/menus/FlyingButtonsMenu.cpp
index 136e719d..46b8c53e 100644
--- a/source/settings/menus/FlyingButtonsMenu.cpp
+++ b/source/settings/menus/FlyingButtonsMenu.cpp
@@ -101,7 +101,7 @@ FlyingButtonsMenu::~FlyingButtonsMenu()
ResumeGui();
SetEffect(EFFECT_FADE, -FADE_SPEED);
- while(this->GetEffect() > 0) usleep(100);
+ while(parentElement && this->GetEffect() > 0) usleep(100);
HaltGui();
if(parentElement)
@@ -321,9 +321,8 @@ void FlyingButtonsMenu::AddMainButtons()
void FlyingButtonsMenu::ShowButtonsEffects(int effect, int effect_speed)
{
int FirstItem = currentPage*DISPLAY_BUTTONS;
-
- if(FirstItem >= (int) MainButton.size())
- return;
+ if(FirstItem < 0)
+ FirstItem = 0;
HaltGui();
@@ -335,11 +334,14 @@ void FlyingButtonsMenu::ShowButtonsEffects(int effect, int effect_speed)
ResumeGui();
+ if(FirstItem < 0 || FirstItem >= (int) MainButton.size())
+ return;
+
//! Don't lock on fade in for initiation purpose
if(effect & EFFECT_FADE && effect_speed > 0)
return;
- while (MainButton[FirstItem]->GetEffect() > 0)
+ while (parentElement && MainButton[FirstItem]->GetEffect() > 0)
usleep(100);
}
diff --git a/source/settings/menus/GUISettingsMenu.cpp b/source/settings/menus/GUISettingsMenu.cpp
index e5798f4f..fabc063d 100644
--- a/source/settings/menus/GUISettingsMenu.cpp
+++ b/source/settings/menus/GUISettingsMenu.cpp
@@ -225,7 +225,11 @@ int GuiSettingsMenu::GetMenuInternal()
returnhere = MenuLanguageSelect();
if (returnhere == 2)
+ {
+ //! Language changed. Reload game titles with new lang code.
+ GameTitles.LoadTitlesFromWiiTDB(Settings.titlestxt_path);
return MENU_SETTINGS;
+ }
HaltGui();
if(parentElement)
diff --git a/source/settings/menus/UninstallSM.cpp b/source/settings/menus/UninstallSM.cpp
index c3326712..73b7c809 100644
--- a/source/settings/menus/UninstallSM.cpp
+++ b/source/settings/menus/UninstallSM.cpp
@@ -31,6 +31,8 @@
#include "prompts/PromptWindows.h"
#include "language/gettext.h"
#include "usbloader/wbfs.h"
+#include "usbloader/GameList.h"
+#include "wstring.hpp"
extern int mountMethod;
@@ -97,6 +99,14 @@ int UninstallSM::GetMenuInternal()
int ret = 0;
if(!mountMethod)
ret = WBFS_RemoveGame(DiscHeader->id);
+
+ if(ret >= 0)
+ {
+ wString oldFilter(gameList.GetCurrentFilter());
+ gameList.ReadGameList();
+ gameList.FilterList(oldFilter.c_str());
+ }
+
if (ret < 0)
WindowPrompt(tr( "Can't delete:" ), Title.c_str(), tr( "OK" ));
else
diff --git a/source/settings/newtitles.h b/source/settings/newtitles.h
index 3cc0915a..af30b2c7 100644
--- a/source/settings/newtitles.h
+++ b/source/settings/newtitles.h
@@ -1,36 +1,36 @@
-#ifndef _NEWTITLES_H
-#define _NEWTITLES_H
-
-#include
-
-class NewTitles
-{
- public:
- static NewTitles *Instance();
- static void DestroyInstance();
-
- void Save();
- void CheckGame(u8 *titleid);
- bool IsNew(u8 *titleid);
- void Remove(u8 *titleid);
- private:
- NewTitles();
- ~NewTitles();
-
- static NewTitles *instance;
-
- class Title
- {
- public:
- u8 titleId[6];
- time_t timestamp;
- void *next;
- };
-
- Title *firstTitle;
- Title *lastTitle;
- bool isDirty;
- bool isNewFile;
-};
-
-#endif //_NEWTITLES_H
+#ifndef _NEWTITLES_H
+#define _NEWTITLES_H
+
+#include
+
+class NewTitles
+{
+ public:
+ static NewTitles *Instance();
+ static void DestroyInstance();
+
+ void Save();
+ void CheckGame(u8 *titleid);
+ bool IsNew(u8 *titleid);
+ void Remove(u8 *titleid);
+ private:
+ NewTitles();
+ ~NewTitles();
+
+ static NewTitles *instance;
+
+ class Title
+ {
+ public:
+ u8 titleId[6];
+ time_t timestamp;
+ void *next;
+ };
+
+ Title *firstTitle;
+ Title *lastTitle;
+ bool isDirty;
+ bool isNewFile;
+};
+
+#endif //_NEWTITLES_H
diff --git a/source/sys.cpp b/source/sys.cpp
index 1a604d8a..6567a8c3 100644
--- a/source/sys.cpp
+++ b/source/sys.cpp
@@ -142,7 +142,7 @@ void Sys_Shutdown(void)
_Sys_Shutdown(ShutdownToDefault);
}
-void Sys_ShutdownToIdel(void)
+void Sys_ShutdownToIdle(void)
{
_Sys_Shutdown(ShutdownToIdle);
}
diff --git a/source/sys.h b/source/sys.h
index 3c6beca1..572c22ae 100644
--- a/source/sys.h
+++ b/source/sys.h
@@ -9,7 +9,7 @@ void ExitApp(void); //! Like AppCleanUp() and additional device unmount
void Sys_Init(void);
void Sys_Reboot(void);
void Sys_Shutdown(void);
-void Sys_ShutdownToIdel(void);
+void Sys_ShutdownToIdle(void);
void Sys_ShutdownToStandby(void);
void Sys_LoadMenu(void);
void Sys_BackToLoader(void);
diff --git a/source/themes/Theme_Downloader.h b/source/themes/Theme_Downloader.h
index 95603755..99d867d7 100644
--- a/source/themes/Theme_Downloader.h
+++ b/source/themes/Theme_Downloader.h
@@ -1,15 +1,15 @@
-/****************************************************************************
- * Theme_Downloader
- * USB Loader GX 2009
- *
- * Theme downloader for USB Loader GX
- *
- * Theme_Downloader.h
- ***************************************************************************/
-
-#ifndef _THEME_DOWNLOADER_H_
-#define _THEME_DOWNLOADER_H_
-
-int Theme_Downloader();
-
-#endif
+/****************************************************************************
+ * Theme_Downloader
+ * USB Loader GX 2009
+ *
+ * Theme downloader for USB Loader GX
+ *
+ * Theme_Downloader.h
+ ***************************************************************************/
+
+#ifndef _THEME_DOWNLOADER_H_
+#define _THEME_DOWNLOADER_H_
+
+int Theme_Downloader();
+
+#endif
diff --git a/source/usbloader/frag.c b/source/usbloader/frag.c
index 2dbeacd3..a92b3f31 100644
--- a/source/usbloader/frag.c
+++ b/source/usbloader/frag.c
@@ -257,6 +257,7 @@ out:
SAFE_FREE(fs);
SAFE_FREE(fa);
SAFE_FREE(fw);
+
return ret_val;
}
diff --git a/source/usbloader/splits.c b/source/usbloader/splits.c
index 89ba2874..d75a80bf 100644
--- a/source/usbloader/splits.c
+++ b/source/usbloader/splits.c
@@ -1,348 +1,348 @@
-// by oggzee
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "splits.h"
-
-#define off64_t off_t
-#define FMT_llu "%llu"
-#define FMT_lld "%lld"
-
-#define split_error(x) do { printf("\nsplit error: %s\n\n",x); } while(0)
-
-// 1 cluster less than 4gb
-u64 OPT_split_size = (u64) 4LL * 1024 * 1024 * 1024 - 32 * 1024;
-// 1 cluster less than 2gb
-//u64 OPT_split_size = (u64)2LL * 1024 * 1024 * 1024 - 32 * 1024;
-
-//split_info_t split;
-
-void split_get_fname(split_info_t *s, int idx, char *fname)
-{
- strcpy(fname, s->fname);
- if (idx == 0 && s->create_mode)
- {
- strcat(fname, ".tmp");
- }
- else if (idx > 0)
- {
- char *c = fname + strlen(fname) - 1;
- *c = '0' + idx;
- }
-}
-
-int split_open_file(split_info_t *s, int idx)
-{
- int fd = s->fd[idx];
- if (fd >= 0) return fd;
- char fname[1024];
- split_get_fname(s, idx, fname);
- //char *mode = s->create_mode ? "wb+" : "rb+";
- int mode = s->create_mode ? (O_CREAT | O_RDWR) : O_RDWR;
- //printf("SPLIT OPEN %s %s %d\n", fname, mode, idx); //Wpad_WaitButtons();
- //f = fopen(fname, mode);
- fd = open(fname, mode);
- if (fd < 0) return -1;
- if (idx > 0 && s->create_mode)
- {
- printf("%s Split: %d %s \n", s->create_mode ? "Create" : "Read", idx, fname);
- }
- s->fd[idx] = fd;
- return fd;
-}
-
-// faster as it uses larger chunks than ftruncate internally
-int write_zero(int fd, off_t size)
-{
- int buf[0x4000]; //64kb
- int chunk;
- int ret;
- memset(buf, 0, sizeof(buf));
- while (size)
- {
- chunk = size;
- if (chunk > sizeof(buf)) chunk = sizeof(buf);
- ret = write(fd, buf, chunk);
- //printf("WZ %d %d / %lld \n", ret, chunk, size);
- size -= chunk;
- if (ret < 0) return ret;
- }
- return 0;
-}
-
-int split_fill(split_info_t *s, int idx, u64 size)
-{
- int fd = split_open_file(s, idx);
- off64_t fsize = lseek(fd, 0, SEEK_END);
- if (fsize < size)
- {
- //printf("TRUNC %d "FMT_lld"\n", idx, size); Wpad_WaitButtons();
- //ftruncate(fd, size);
- write_zero(fd, size - fsize);
- return 1;
- }
- return 0;
-}
-
-int split_get_file(split_info_t *s, u32 lba, u32 *sec_count, int fill)
-{
- int fd;
- if (lba >= s->total_sec)
- {
- fprintf(stderr, "SPLIT: invalid sector %u / %u\n", lba, (u32) s->total_sec);
- return -1;
- }
- int idx;
- idx = lba / s->split_sec;
- if (idx >= s->max_split)
- {
- fprintf(stderr, "SPLIT: invalid split %d / %d\n", idx, s->max_split - 1);
- return -1;
- }
- fd = s->fd[idx];
- if (fd < 0)
- {
- // opening new, make sure all previous are full
- int i;
- for (i = 0; i < idx; i++)
- {
- if (split_fill(s, i, s->split_size))
- {
- printf("FILL %d\n", i);
- }
- }
- fd = split_open_file(s, idx);
- }
- if (fd < 0)
- {
- fprintf(stderr, "SPLIT %d: no file\n", idx);
- return -1;
- }
- u32 sec = lba % s->split_sec; // inside file
- off64_t off = (off64_t ) sec * 512;
- // num sectors till end of file
- u32 to_end = s->split_sec - sec;
- if (*sec_count > to_end) *sec_count = to_end;
- if (s->create_mode)
- {
- if (fill)
- {
- // extend, so that read will be succesfull
- split_fill(s, idx, off + 512 * (*sec_count));
- }
- else
- {
- // fill up so that write continues from end of file
- // shouldn't be necessary, but libfat looks buggy
- // and this is faster
- split_fill(s, idx, off);
- }
- }
- lseek(fd, off, SEEK_SET);
- return fd;
-}
-
-int split_read_sector(void *_fp, u32 lba, u32 count, void*buf)
-{
- split_info_t *s = _fp;
- int fd;
- u64 off = lba;
- off *= 512ULL;
- int i;
- u32 chunk;
- size_t ret;
- //fprintf(stderr,"READ %d %d\n", lba, count);
- for (i = 0; i < (int) count; i += chunk)
- {
- chunk = count - i;
- fd = split_get_file(s, lba + i, &chunk, 1);
- if (fd < 0)
- {
- fprintf(stderr, "\n\n"FMT_lld" %d %p\n", off, count, _fp);
- split_error( "error seeking in disc partition" );
- return 1;
- }
- void *ptr = ((u8 *) buf) + (i * 512);
- ret = read(fd, ptr, chunk * 512);
- if (ret != chunk * 512)
- {
- fprintf(stderr, "error reading %u %u [%u] %u = %u\n", lba, count, i, chunk, ret);
- split_error( "error reading disc" );
- return 1;
- }
- }
- return 0;
-}
-
-int split_write_sector(void *_fp, u32 lba, u32 count, void*buf)
-{
- split_info_t *s = _fp;
- int fd;
- u64 off = lba;
- off *= 512ULL;
- int i;
- u32 chunk;
- size_t ret;
- //printf("WRITE %d %d %p \n", lba, count, buf);
- for (i = 0; i < (int) count; i += chunk)
- {
- chunk = count - i;
- fd = split_get_file(s, lba + i, &chunk, 0);
- //if (chunk != count)
- // fprintf(stderr, "WRITE CHUNK %d %d/%d\n", lba+i, chunk, count);
- if (fd < 0 || !chunk)
- {
- fprintf(stderr, "\n\n"FMT_lld" %d %p\n", off, count, _fp);
- split_error( "error seeking in disc partition" );
- return 1;
- }
- //if (fwrite(buf+i*512, 512ULL, chunk, f) != chunk) {
- //printf("write %d %p %d \n", fd, buf+i*512, chunk * 512);
- void *ptr = ((u8 *) buf) + (i * 512);
- ret = write(fd, ptr, chunk * 512);
- //printf("write ret = %d \n", ret);
- if (ret != chunk * 512)
- {
- split_error( "error writing disc" );
- return 1;
- }
- }
- return 0;
-}
-
-void split_init(split_info_t *s, char *fname)
-{
- int i;
- char *p;
- //fprintf(stderr, "SPLIT_INIT %s\n", fname);
- memset(s, 0, sizeof(*s));
- for (i = 0; i < MAX_SPLIT; i++)
- {
- s->fd[i] = -1;
- }
- strcpy(s->fname, fname);
- s->max_split = 1;
- p = strrchr(fname, '.');
- if (p && (strcasecmp(p, ".wbfs") == 0))
- {
- s->max_split = MAX_SPLIT;
- }
-}
-
-void split_set_size(split_info_t *s, u64 split_size, u64 total_size)
-{
- s->total_size = total_size;
- s->split_size = split_size;
- s->total_sec = total_size / 512;
- s->split_sec = split_size / 512;
-}
-
-void split_close(split_info_t *s)
-{
- int i;
- char fname[1024];
- char tmpname[1024];
- for (i = 0; i < s->max_split; i++)
- {
- if (s->fd[i] >= 0)
- {
- close(s->fd[i]);
- }
- }
- if (s->create_mode)
- {
- split_get_fname(s, -1, fname);
- split_get_fname(s, 0, tmpname);
- rename(tmpname, fname);
- }
- memset(s, 0, sizeof(*s));
-}
-
-int split_create(split_info_t *s, char *fname, u64 split_size, u64 total_size, bool overwrite)
-{
- int i;
- int fd;
- char sname[1024];
- int error = 0;
- split_init(s, fname);
- s->create_mode = 1;
- // check if any file already exists
- for (i = -1; i < s->max_split; i++)
- {
- split_get_fname(s, i, sname);
- if (overwrite)
- {
- remove(sname);
- }
- else
- {
- fd = open(sname, O_RDONLY);
- if (fd >= 0)
- {
- fprintf(stderr, "Error: file already exists: %s\n", sname);
- close(fd);
- error = 1;
- }
- }
- }
- if (error)
- {
- split_init(s, "");
- return -1;
- }
- split_set_size(s, split_size, total_size);
- return 0;
-}
-
-int split_open(split_info_t *s, char *fname)
-{
- int i;
- u64 size = 0;
- u64 total_size = 0;
- u64 split_size = 0;
- int fd;
- split_init(s, fname);
- for (i = 0; i < s->max_split; i++)
- {
- fd = split_open_file(s, i);
- if (fd < 0)
- {
- if (i == 0) goto err;
- break;
- }
- // check previous size - all splits except last must be same size
- if (i > 0 && size != split_size)
- {
- fprintf(stderr, "split %d: invalid size "FMT_lld"", i, size);
- goto err;
- }
- // get size
- //fseeko(f, 0, SEEK_END);
- //size = ftello(f);
- size = lseek(fd, 0, SEEK_END);
- // check sector alignment
- if (size % 512)
- {
- fprintf(stderr, "split %d: size ("FMT_lld") not sector (512) aligned!", i, size);
- }
- // first sets split size
- if (i == 0)
- {
- split_size = size;
- }
- total_size += size;
- }
- split_set_size(s, split_size, total_size);
- return 0;
- err: split_close(s);
- return -1;
-}
-
+// by oggzee
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "splits.h"
+
+#define off64_t off_t
+#define FMT_llu "%llu"
+#define FMT_lld "%lld"
+
+#define split_error(x) do { printf("\nsplit error: %s\n\n",x); } while(0)
+
+// 1 cluster less than 4gb
+u64 OPT_split_size = (u64) 4LL * 1024 * 1024 * 1024 - 32 * 1024;
+// 1 cluster less than 2gb
+//u64 OPT_split_size = (u64)2LL * 1024 * 1024 * 1024 - 32 * 1024;
+
+//split_info_t split;
+
+void split_get_fname(split_info_t *s, int idx, char *fname)
+{
+ strcpy(fname, s->fname);
+ if (idx == 0 && s->create_mode)
+ {
+ strcat(fname, ".tmp");
+ }
+ else if (idx > 0)
+ {
+ char *c = fname + strlen(fname) - 1;
+ *c = '0' + idx;
+ }
+}
+
+int split_open_file(split_info_t *s, int idx)
+{
+ int fd = s->fd[idx];
+ if (fd >= 0) return fd;
+ char fname[1024];
+ split_get_fname(s, idx, fname);
+ //char *mode = s->create_mode ? "wb+" : "rb+";
+ int mode = s->create_mode ? (O_CREAT | O_RDWR) : O_RDWR;
+ //printf("SPLIT OPEN %s %s %d\n", fname, mode, idx); //Wpad_WaitButtons();
+ //f = fopen(fname, mode);
+ fd = open(fname, mode);
+ if (fd < 0) return -1;
+ if (idx > 0 && s->create_mode)
+ {
+ printf("%s Split: %d %s \n", s->create_mode ? "Create" : "Read", idx, fname);
+ }
+ s->fd[idx] = fd;
+ return fd;
+}
+
+// faster as it uses larger chunks than ftruncate internally
+int write_zero(int fd, off_t size)
+{
+ int buf[0x4000]; //64kb
+ int chunk;
+ int ret;
+ memset(buf, 0, sizeof(buf));
+ while (size)
+ {
+ chunk = size;
+ if (chunk > sizeof(buf)) chunk = sizeof(buf);
+ ret = write(fd, buf, chunk);
+ //printf("WZ %d %d / %lld \n", ret, chunk, size);
+ size -= chunk;
+ if (ret < 0) return ret;
+ }
+ return 0;
+}
+
+int split_fill(split_info_t *s, int idx, u64 size)
+{
+ int fd = split_open_file(s, idx);
+ off64_t fsize = lseek(fd, 0, SEEK_END);
+ if (fsize < size)
+ {
+ //printf("TRUNC %d "FMT_lld"\n", idx, size); Wpad_WaitButtons();
+ //ftruncate(fd, size);
+ write_zero(fd, size - fsize);
+ return 1;
+ }
+ return 0;
+}
+
+int split_get_file(split_info_t *s, u32 lba, u32 *sec_count, int fill)
+{
+ int fd;
+ if (lba >= s->total_sec)
+ {
+ fprintf(stderr, "SPLIT: invalid sector %u / %u\n", lba, (u32) s->total_sec);
+ return -1;
+ }
+ int idx;
+ idx = lba / s->split_sec;
+ if (idx >= s->max_split)
+ {
+ fprintf(stderr, "SPLIT: invalid split %d / %d\n", idx, s->max_split - 1);
+ return -1;
+ }
+ fd = s->fd[idx];
+ if (fd < 0)
+ {
+ // opening new, make sure all previous are full
+ int i;
+ for (i = 0; i < idx; i++)
+ {
+ if (split_fill(s, i, s->split_size))
+ {
+ printf("FILL %d\n", i);
+ }
+ }
+ fd = split_open_file(s, idx);
+ }
+ if (fd < 0)
+ {
+ fprintf(stderr, "SPLIT %d: no file\n", idx);
+ return -1;
+ }
+ u32 sec = lba % s->split_sec; // inside file
+ off64_t off = (off64_t ) sec * 512;
+ // num sectors till end of file
+ u32 to_end = s->split_sec - sec;
+ if (*sec_count > to_end) *sec_count = to_end;
+ if (s->create_mode)
+ {
+ if (fill)
+ {
+ // extend, so that read will be succesfull
+ split_fill(s, idx, off + 512 * (*sec_count));
+ }
+ else
+ {
+ // fill up so that write continues from end of file
+ // shouldn't be necessary, but libfat looks buggy
+ // and this is faster
+ split_fill(s, idx, off);
+ }
+ }
+ lseek(fd, off, SEEK_SET);
+ return fd;
+}
+
+int split_read_sector(void *_fp, u32 lba, u32 count, void*buf)
+{
+ split_info_t *s = _fp;
+ int fd;
+ u64 off = lba;
+ off *= 512ULL;
+ int i;
+ u32 chunk;
+ size_t ret;
+ //fprintf(stderr,"READ %d %d\n", lba, count);
+ for (i = 0; i < (int) count; i += chunk)
+ {
+ chunk = count - i;
+ fd = split_get_file(s, lba + i, &chunk, 1);
+ if (fd < 0)
+ {
+ fprintf(stderr, "\n\n"FMT_lld" %d %p\n", off, count, _fp);
+ split_error( "error seeking in disc partition" );
+ return 1;
+ }
+ void *ptr = ((u8 *) buf) + (i * 512);
+ ret = read(fd, ptr, chunk * 512);
+ if (ret != chunk * 512)
+ {
+ fprintf(stderr, "error reading %u %u [%u] %u = %u\n", lba, count, i, chunk, ret);
+ split_error( "error reading disc" );
+ return 1;
+ }
+ }
+ return 0;
+}
+
+int split_write_sector(void *_fp, u32 lba, u32 count, void*buf)
+{
+ split_info_t *s = _fp;
+ int fd;
+ u64 off = lba;
+ off *= 512ULL;
+ int i;
+ u32 chunk;
+ size_t ret;
+ //printf("WRITE %d %d %p \n", lba, count, buf);
+ for (i = 0; i < (int) count; i += chunk)
+ {
+ chunk = count - i;
+ fd = split_get_file(s, lba + i, &chunk, 0);
+ //if (chunk != count)
+ // fprintf(stderr, "WRITE CHUNK %d %d/%d\n", lba+i, chunk, count);
+ if (fd < 0 || !chunk)
+ {
+ fprintf(stderr, "\n\n"FMT_lld" %d %p\n", off, count, _fp);
+ split_error( "error seeking in disc partition" );
+ return 1;
+ }
+ //if (fwrite(buf+i*512, 512ULL, chunk, f) != chunk) {
+ //printf("write %d %p %d \n", fd, buf+i*512, chunk * 512);
+ void *ptr = ((u8 *) buf) + (i * 512);
+ ret = write(fd, ptr, chunk * 512);
+ //printf("write ret = %d \n", ret);
+ if (ret != chunk * 512)
+ {
+ split_error( "error writing disc" );
+ return 1;
+ }
+ }
+ return 0;
+}
+
+void split_init(split_info_t *s, char *fname)
+{
+ int i;
+ char *p;
+ //fprintf(stderr, "SPLIT_INIT %s\n", fname);
+ memset(s, 0, sizeof(*s));
+ for (i = 0; i < MAX_SPLIT; i++)
+ {
+ s->fd[i] = -1;
+ }
+ strcpy(s->fname, fname);
+ s->max_split = 1;
+ p = strrchr(fname, '.');
+ if (p && (strcasecmp(p, ".wbfs") == 0))
+ {
+ s->max_split = MAX_SPLIT;
+ }
+}
+
+void split_set_size(split_info_t *s, u64 split_size, u64 total_size)
+{
+ s->total_size = total_size;
+ s->split_size = split_size;
+ s->total_sec = total_size / 512;
+ s->split_sec = split_size / 512;
+}
+
+void split_close(split_info_t *s)
+{
+ int i;
+ char fname[1024];
+ char tmpname[1024];
+ for (i = 0; i < s->max_split; i++)
+ {
+ if (s->fd[i] >= 0)
+ {
+ close(s->fd[i]);
+ }
+ }
+ if (s->create_mode)
+ {
+ split_get_fname(s, -1, fname);
+ split_get_fname(s, 0, tmpname);
+ rename(tmpname, fname);
+ }
+ memset(s, 0, sizeof(*s));
+}
+
+int split_create(split_info_t *s, char *fname, u64 split_size, u64 total_size, bool overwrite)
+{
+ int i;
+ int fd;
+ char sname[1024];
+ int error = 0;
+ split_init(s, fname);
+ s->create_mode = 1;
+ // check if any file already exists
+ for (i = -1; i < s->max_split; i++)
+ {
+ split_get_fname(s, i, sname);
+ if (overwrite)
+ {
+ remove(sname);
+ }
+ else
+ {
+ fd = open(sname, O_RDONLY);
+ if (fd >= 0)
+ {
+ fprintf(stderr, "Error: file already exists: %s\n", sname);
+ close(fd);
+ error = 1;
+ }
+ }
+ }
+ if (error)
+ {
+ split_init(s, "");
+ return -1;
+ }
+ split_set_size(s, split_size, total_size);
+ return 0;
+}
+
+int split_open(split_info_t *s, char *fname)
+{
+ int i;
+ u64 size = 0;
+ u64 total_size = 0;
+ u64 split_size = 0;
+ int fd;
+ split_init(s, fname);
+ for (i = 0; i < s->max_split; i++)
+ {
+ fd = split_open_file(s, i);
+ if (fd < 0)
+ {
+ if (i == 0) goto err;
+ break;
+ }
+ // check previous size - all splits except last must be same size
+ if (i > 0 && size != split_size)
+ {
+ fprintf(stderr, "split %d: invalid size "FMT_lld"", i, size);
+ goto err;
+ }
+ // get size
+ //fseeko(f, 0, SEEK_END);
+ //size = ftello(f);
+ size = lseek(fd, 0, SEEK_END);
+ // check sector alignment
+ if (size % 512)
+ {
+ fprintf(stderr, "split %d: size ("FMT_lld") not sector (512) aligned!", i, size);
+ }
+ // first sets split size
+ if (i == 0)
+ {
+ split_size = size;
+ }
+ total_size += size;
+ }
+ split_set_size(s, split_size, total_size);
+ return 0;
+ err: split_close(s);
+ return -1;
+}
+
diff --git a/source/usbloader/splits.h b/source/usbloader/splits.h
index a5b02378..7969cf4e 100644
--- a/source/usbloader/splits.h
+++ b/source/usbloader/splits.h
@@ -1,46 +1,46 @@
-#ifndef _SPLITS_H
-#define _SPLITS_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#define MAX_SPLIT 10
-
- typedef struct split_info
- {
- char fname[1024];
- //FILE *f[MAX_SPLIT];
- int fd[MAX_SPLIT];
- //u64 fsize[MAX_SPLIT];
- u32 split_sec;
- u32 total_sec;
- u64 split_size;
- u64 total_size;
- int create_mode;
- int max_split;
- } split_info_t;
-
- // 1 sector less than 4gb
- extern u64 OPT_split_size;
-
- void split_get_fname(split_info_t *s, int idx, char *fname);
- //FILE *split_open_file(split_info_t *s, int idx);
- //FILE *split_get_file(split_info_t *s, u32 lba, u32 *sec_count, int fill);
- int split_open_file(split_info_t *s, int idx);
- int split_get_file(split_info_t *s, u32 lba, u32 *sec_count, int fill);
- int split_fill(split_info_t *s, int idx, u64 size);
- int split_read_sector(void *_fp, u32 lba, u32 count, void*buf);
- int split_write_sector(void *_fp, u32 lba, u32 count, void*buf);
- void split_init(split_info_t *s, char *fname);
- void split_set_size(split_info_t *s, u64 split_size, u64 total_size);
- void split_close(split_info_t *s);
- int split_open(split_info_t *s, char *fname);
- int split_create(split_info_t *s, char *fname, u64 split_size, u64 total_size, bool overwrite);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif //_SPLITS_H
+#ifndef _SPLITS_H
+#define _SPLITS_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#define MAX_SPLIT 10
+
+ typedef struct split_info
+ {
+ char fname[1024];
+ //FILE *f[MAX_SPLIT];
+ int fd[MAX_SPLIT];
+ //u64 fsize[MAX_SPLIT];
+ u32 split_sec;
+ u32 total_sec;
+ u64 split_size;
+ u64 total_size;
+ int create_mode;
+ int max_split;
+ } split_info_t;
+
+ // 1 sector less than 4gb
+ extern u64 OPT_split_size;
+
+ void split_get_fname(split_info_t *s, int idx, char *fname);
+ //FILE *split_open_file(split_info_t *s, int idx);
+ //FILE *split_get_file(split_info_t *s, u32 lba, u32 *sec_count, int fill);
+ int split_open_file(split_info_t *s, int idx);
+ int split_get_file(split_info_t *s, u32 lba, u32 *sec_count, int fill);
+ int split_fill(split_info_t *s, int idx, u64 size);
+ int split_read_sector(void *_fp, u32 lba, u32 count, void*buf);
+ int split_write_sector(void *_fp, u32 lba, u32 count, void*buf);
+ void split_init(split_info_t *s, char *fname);
+ void split_set_size(split_info_t *s, u64 split_size, u64 total_size);
+ void split_close(split_info_t *s);
+ int split_open(split_info_t *s, char *fname);
+ int split_create(split_info_t *s, char *fname, u64 split_size, u64 total_size, bool overwrite);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_SPLITS_H
diff --git a/source/usbloader/wbfs/wbfs_base.cpp b/source/usbloader/wbfs/wbfs_base.cpp
index 1cfdc582..af78fa90 100644
--- a/source/usbloader/wbfs/wbfs_base.cpp
+++ b/source/usbloader/wbfs/wbfs_base.cpp
@@ -1,144 +1,144 @@
-#include
-#include
-#include
-#include
-#include
-
-#include "usbloader/sdhc.h"
-#include "usbloader/usbstorage2.h"
-#include "fatmounter.h"
-#include "wbfs_rw.h"
-
-#include "wbfs_base.h"
-
-s32 Wbfs::done = -1;
-s32 Wbfs::total = -1;
-u32 Wbfs::nb_sectors;
-
-Wbfs::Wbfs(u32 device, u32 lba, u32 size) :
- hdd(NULL)
-{
- this->device = device;
- this->lba = lba;
- this->size = size;
-}
-
-void Wbfs::GetProgressValue(s32 * d, s32 * m)
-{
- *d = done;
- *m = total;
-}
-
-s32 Wbfs::Init(u32 device)
-{
- s32 ret;
-
- switch (device)
- {
- case WBFS_DEVICE_USB:
- /* Initialize USB storage */
- ret = USBStorage2_Init();
- if (ret >= 0)
- {
- /* Setup callbacks */
- readCallback = __ReadUSB;
- writeCallback = __WriteUSB;
- /* Device info */
- /* Get USB capacity */
- nb_sectors = USBStorage2_GetCapacity(§or_size);
- if (!nb_sectors) return -1;
- }
- else return ret;
- break;
- case WBFS_DEVICE_SDHC:
- /* Initialize SDHC */
- ret = SDHC_Init();
-
- if (ret)
- {
- /* Setup callbacks */
- readCallback = __ReadSDHC;
- writeCallback = __WriteSDHC;
-
- /* Device info */
- nb_sectors = 0;
- sector_size = SDHC_SECTOR_SIZE;
- }
- else return -1;
- break;
- }
-
- return 0;
-}
-
-void Wbfs::Close()
-{
- if (hdd)
- {
- wbfs_close(hdd);
- hdd = NULL;
- }
-
- WBFSDevice_deInit();
-}
-
-// Default behavior: can't format
-s32 Wbfs::Format()
-{
- return -1;
-}
-
-s32 Wbfs::CheckGame(u8 *discid)
-{
- wbfs_disc_t *disc = NULL;
-
- /* Try to open game disc */
- disc = OpenDisc(discid);
- if (disc)
- {
- /* Close disc */
- CloseDisc(disc);
-
- return 1;
- }
-
- return 0;
-}
-
-s32 Wbfs::GameSize(u8 *discid, f32 *size)
-{
- wbfs_disc_t *disc = NULL;
-
- u32 sectors;
-
- /* Open disc */
- disc = OpenDisc(discid);
- if (!disc) return -2;
-
- /* Get game size in sectors */
- sectors = wbfs_sector_used(disc->p, disc->header);
-
- /* Copy value */
- *size = (disc->p->wbfs_sec_sz / GB_SIZE) * sectors;
-
- /* Close disc */
- CloseDisc(disc);
-
- return 0;
-}
-
-wbfs_t *Wbfs::GetHddInfo()
-{
- return hdd;
-}
-
-bool Wbfs::Mounted()
-{
- return hdd == NULL;
-}
-
-
-bool Wbfs::ShowFreeSpace(void)
-{
- return true;
-}
+#include
+#include
+#include
+#include
+#include
+
+#include "usbloader/sdhc.h"
+#include "usbloader/usbstorage2.h"
+#include "fatmounter.h"
+#include "wbfs_rw.h"
+
+#include "wbfs_base.h"
+
+s32 Wbfs::done = -1;
+s32 Wbfs::total = -1;
+u32 Wbfs::nb_sectors;
+
+Wbfs::Wbfs(u32 device, u32 lba, u32 size) :
+ hdd(NULL)
+{
+ this->device = device;
+ this->lba = lba;
+ this->size = size;
+}
+
+void Wbfs::GetProgressValue(s32 * d, s32 * m)
+{
+ *d = done;
+ *m = total;
+}
+
+s32 Wbfs::Init(u32 device)
+{
+ s32 ret;
+
+ switch (device)
+ {
+ case WBFS_DEVICE_USB:
+ /* Initialize USB storage */
+ ret = USBStorage2_Init();
+ if (ret >= 0)
+ {
+ /* Setup callbacks */
+ readCallback = __ReadUSB;
+ writeCallback = __WriteUSB;
+ /* Device info */
+ /* Get USB capacity */
+ nb_sectors = USBStorage2_GetCapacity(§or_size);
+ if (!nb_sectors) return -1;
+ }
+ else return ret;
+ break;
+ case WBFS_DEVICE_SDHC:
+ /* Initialize SDHC */
+ ret = SDHC_Init();
+
+ if (ret)
+ {
+ /* Setup callbacks */
+ readCallback = __ReadSDHC;
+ writeCallback = __WriteSDHC;
+
+ /* Device info */
+ nb_sectors = 0;
+ sector_size = SDHC_SECTOR_SIZE;
+ }
+ else return -1;
+ break;
+ }
+
+ return 0;
+}
+
+void Wbfs::Close()
+{
+ if (hdd)
+ {
+ wbfs_close(hdd);
+ hdd = NULL;
+ }
+
+ WBFSDevice_deInit();
+}
+
+// Default behavior: can't format
+s32 Wbfs::Format()
+{
+ return -1;
+}
+
+s32 Wbfs::CheckGame(u8 *discid)
+{
+ wbfs_disc_t *disc = NULL;
+
+ /* Try to open game disc */
+ disc = OpenDisc(discid);
+ if (disc)
+ {
+ /* Close disc */
+ CloseDisc(disc);
+
+ return 1;
+ }
+
+ return 0;
+}
+
+s32 Wbfs::GameSize(u8 *discid, f32 *size)
+{
+ wbfs_disc_t *disc = NULL;
+
+ u32 sectors;
+
+ /* Open disc */
+ disc = OpenDisc(discid);
+ if (!disc) return -2;
+
+ /* Get game size in sectors */
+ sectors = wbfs_sector_used(disc->p, disc->header);
+
+ /* Copy value */
+ *size = (disc->p->wbfs_sec_sz / GB_SIZE) * sectors;
+
+ /* Close disc */
+ CloseDisc(disc);
+
+ return 0;
+}
+
+wbfs_t *Wbfs::GetHddInfo()
+{
+ return hdd;
+}
+
+bool Wbfs::Mounted()
+{
+ return hdd == NULL;
+}
+
+
+bool Wbfs::ShowFreeSpace(void)
+{
+ return true;
+}
diff --git a/source/usbloader/wbfs/wbfs_rw.c b/source/usbloader/wbfs/wbfs_rw.c
index d2aa6f77..28610c60 100644
--- a/source/usbloader/wbfs/wbfs_rw.c
+++ b/source/usbloader/wbfs/wbfs_rw.c
@@ -1,168 +1,168 @@
-#include
-#include
-#include
-
-#include "usbloader/sdhc.h"
-#include "usbloader/usbstorage2.h"
-#include "usbloader/wdvd.h"
-#include "wbfs_rw.h"
-
-/* Constants */
-#define MAX_NB_SECTORS 32
-
-u32 sector_size = 512;
-rw_sector_callback_t readCallback = NULL;
-rw_sector_callback_t writeCallback = NULL;
-
-void SetSectorSize(u32 size)
-{
- sector_size = size;
-}
-
-s32 __ReadDVD(void *fp, u32 lba, u32 len, void *iobuf)
-{
- void *buffer = NULL;
-
- u64 offset;
- u32 mod, size;
- s32 ret;
-
- /* Calculate offset */
- offset = ((u64) lba) << 2;
-
- /* Calcualte sizes */
- mod = len % 32;
- size = len - mod;
-
- /* Read aligned data */
- if (size)
- {
- ret = WDVD_UnencryptedRead(iobuf, size, offset);
- if (ret < 0) goto out;
- }
-
- /* Read non-aligned data */
- if (mod)
- {
- /* Allocate memory */
- buffer = memalign(32, 0x20);
- if (!buffer) return -1;
-
- /* Read data */
- ret = WDVD_UnencryptedRead(buffer, 0x20, offset + size);
- if (ret < 0) goto out;
-
- /* Copy data */
- void *ptr = ((u8 *) iobuf) + size;
- memcpy(ptr, buffer, mod);
- }
-
- /* Success */
- ret = 0;
-
- out:
- /* Free memory */
- if (buffer) free(buffer);
-
- return ret;
-}
-
-s32 __ReadUSB(void *fp, u32 lba, u32 count, void *iobuf)
-{
- u32 cnt = 0;
- s32 ret;
-
- /* Do reads */
- while (cnt < count)
- {
- void *ptr = ((u8 *) iobuf) + (cnt * sector_size);
- u32 sectors = (count - cnt);
-
- /* Read sectors is too big */
- if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS;
-
- /* USB read */
- ret = USBStorage2_ReadSectors(lba + cnt, sectors, ptr);
- if (ret < 0) return ret;
-
- /* Increment counter */
- cnt += sectors;
- }
-
- return 0;
-}
-
-s32 __WriteUSB(void *fp, u32 lba, u32 count, void *iobuf)
-{
- u32 cnt = 0;
- s32 ret;
-
- /* Do writes */
- while (cnt < count)
- {
- void *ptr = ((u8 *) iobuf) + (cnt * sector_size);
- u32 sectors = (count - cnt);
-
- /* Write sectors is too big */
- if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS;
-
- /* USB write */
- ret = USBStorage2_WriteSectors(lba + cnt, sectors, ptr);
- if (ret < 0) return ret;
-
- /* Increment counter */
- cnt += sectors;
- }
-
- return 0;
-}
-
-s32 __ReadSDHC(void *fp, u32 lba, u32 count, void *iobuf)
-{
- u32 cnt = 0;
- s32 ret;
-
- /* Do reads */
- while (cnt < count)
- {
- void *ptr = ((u8 *) iobuf) + (cnt * sector_size);
- u32 sectors = (count - cnt);
-
- /* Read sectors is too big */
- if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS;
-
- /* SDHC read */
- ret = SDHC_ReadSectors(lba + cnt, sectors, ptr);
- if (!ret) return -1;
-
- /* Increment counter */
- cnt += sectors;
- }
-
- return 0;
-}
-
-s32 __WriteSDHC(void *fp, u32 lba, u32 count, void *iobuf)
-{
- u32 cnt = 0;
- s32 ret;
-
- /* Do writes */
- while (cnt < count)
- {
- void *ptr = ((u8 *) iobuf) + (cnt * sector_size);
- u32 sectors = (count - cnt);
-
- /* Write sectors is too big */
- if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS;
-
- /* SDHC write */
- ret = SDHC_WriteSectors(lba + cnt, sectors, ptr);
- if (!ret) return -1;
-
- /* Increment counter */
- cnt += sectors;
- }
-
- return 0;
-}
+#include
+#include
+#include
+
+#include "usbloader/sdhc.h"
+#include "usbloader/usbstorage2.h"
+#include "usbloader/wdvd.h"
+#include "wbfs_rw.h"
+
+/* Constants */
+#define MAX_NB_SECTORS 32
+
+u32 sector_size = 512;
+rw_sector_callback_t readCallback = NULL;
+rw_sector_callback_t writeCallback = NULL;
+
+void SetSectorSize(u32 size)
+{
+ sector_size = size;
+}
+
+s32 __ReadDVD(void *fp, u32 lba, u32 len, void *iobuf)
+{
+ void *buffer = NULL;
+
+ u64 offset;
+ u32 mod, size;
+ s32 ret;
+
+ /* Calculate offset */
+ offset = ((u64) lba) << 2;
+
+ /* Calcualte sizes */
+ mod = len % 32;
+ size = len - mod;
+
+ /* Read aligned data */
+ if (size)
+ {
+ ret = WDVD_UnencryptedRead(iobuf, size, offset);
+ if (ret < 0) goto out;
+ }
+
+ /* Read non-aligned data */
+ if (mod)
+ {
+ /* Allocate memory */
+ buffer = memalign(32, 0x20);
+ if (!buffer) return -1;
+
+ /* Read data */
+ ret = WDVD_UnencryptedRead(buffer, 0x20, offset + size);
+ if (ret < 0) goto out;
+
+ /* Copy data */
+ void *ptr = ((u8 *) iobuf) + size;
+ memcpy(ptr, buffer, mod);
+ }
+
+ /* Success */
+ ret = 0;
+
+ out:
+ /* Free memory */
+ if (buffer) free(buffer);
+
+ return ret;
+}
+
+s32 __ReadUSB(void *fp, u32 lba, u32 count, void *iobuf)
+{
+ u32 cnt = 0;
+ s32 ret;
+
+ /* Do reads */
+ while (cnt < count)
+ {
+ void *ptr = ((u8 *) iobuf) + (cnt * sector_size);
+ u32 sectors = (count - cnt);
+
+ /* Read sectors is too big */
+ if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS;
+
+ /* USB read */
+ ret = USBStorage2_ReadSectors(lba + cnt, sectors, ptr);
+ if (ret < 0) return ret;
+
+ /* Increment counter */
+ cnt += sectors;
+ }
+
+ return 0;
+}
+
+s32 __WriteUSB(void *fp, u32 lba, u32 count, void *iobuf)
+{
+ u32 cnt = 0;
+ s32 ret;
+
+ /* Do writes */
+ while (cnt < count)
+ {
+ void *ptr = ((u8 *) iobuf) + (cnt * sector_size);
+ u32 sectors = (count - cnt);
+
+ /* Write sectors is too big */
+ if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS;
+
+ /* USB write */
+ ret = USBStorage2_WriteSectors(lba + cnt, sectors, ptr);
+ if (ret < 0) return ret;
+
+ /* Increment counter */
+ cnt += sectors;
+ }
+
+ return 0;
+}
+
+s32 __ReadSDHC(void *fp, u32 lba, u32 count, void *iobuf)
+{
+ u32 cnt = 0;
+ s32 ret;
+
+ /* Do reads */
+ while (cnt < count)
+ {
+ void *ptr = ((u8 *) iobuf) + (cnt * sector_size);
+ u32 sectors = (count - cnt);
+
+ /* Read sectors is too big */
+ if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS;
+
+ /* SDHC read */
+ ret = SDHC_ReadSectors(lba + cnt, sectors, ptr);
+ if (!ret) return -1;
+
+ /* Increment counter */
+ cnt += sectors;
+ }
+
+ return 0;
+}
+
+s32 __WriteSDHC(void *fp, u32 lba, u32 count, void *iobuf)
+{
+ u32 cnt = 0;
+ s32 ret;
+
+ /* Do writes */
+ while (cnt < count)
+ {
+ void *ptr = ((u8 *) iobuf) + (cnt * sector_size);
+ u32 sectors = (count - cnt);
+
+ /* Write sectors is too big */
+ if (sectors > MAX_NB_SECTORS) sectors = MAX_NB_SECTORS;
+
+ /* SDHC write */
+ ret = SDHC_WriteSectors(lba + cnt, sectors, ptr);
+ if (!ret) return -1;
+
+ /* Increment counter */
+ cnt += sectors;
+ }
+
+ return 0;
+}
diff --git a/source/usbloader/wbfs/wbfs_rw.h b/source/usbloader/wbfs/wbfs_rw.h
index 77d2d6a1..528765b0 100644
--- a/source/usbloader/wbfs/wbfs_rw.h
+++ b/source/usbloader/wbfs/wbfs_rw.h
@@ -1,25 +1,25 @@
-#ifndef _WBFS_RW_H
-#define _WBFS_RW_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#include "libs/libwbfs/libwbfs.h"
-
- extern u32 sector_size;
- extern rw_sector_callback_t readCallback;
- extern rw_sector_callback_t writeCallback;
-
- s32 __ReadDVD(void *fp, u32 lba, u32 len, void *iobuf);
- s32 __ReadUSB(void *fp, u32 lba, u32 count, void *iobuf);
- s32 __WriteUSB(void *fp, u32 lba, u32 count, void *iobuf);
- s32 __ReadSDHC(void *fp, u32 lba, u32 count, void *iobuf);
- s32 __WriteSDHC(void *fp, u32 lba, u32 count, void *iobuf);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif //_WBFS_RW_H
+#ifndef _WBFS_RW_H
+#define _WBFS_RW_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include "libs/libwbfs/libwbfs.h"
+
+ extern u32 sector_size;
+ extern rw_sector_callback_t readCallback;
+ extern rw_sector_callback_t writeCallback;
+
+ s32 __ReadDVD(void *fp, u32 lba, u32 len, void *iobuf);
+ s32 __ReadUSB(void *fp, u32 lba, u32 count, void *iobuf);
+ s32 __WriteUSB(void *fp, u32 lba, u32 count, void *iobuf);
+ s32 __ReadSDHC(void *fp, u32 lba, u32 count, void *iobuf);
+ s32 __WriteSDHC(void *fp, u32 lba, u32 count, void *iobuf);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //_WBFS_RW_H
diff --git a/source/usbloader/wbfs/wbfs_wbfs.h b/source/usbloader/wbfs/wbfs_wbfs.h
index 062341f4..7cbee6eb 100644
--- a/source/usbloader/wbfs/wbfs_wbfs.h
+++ b/source/usbloader/wbfs/wbfs_wbfs.h
@@ -1,34 +1,34 @@
-#ifndef _WBFS_WBFS_H
-#define _WBFS_WBFS_H
-
-#include "wbfs_base.h"
-#include "libs/libwbfs/libwbfs.h"
-
-class Wbfs_Wbfs: public Wbfs
-{
- public:
- Wbfs_Wbfs(u32 device, u32 lba, u32 size) :
- Wbfs(device, lba, size)
- {
- }
-
- s32 Open();
- wbfs_disc_t* OpenDisc(u8 *);
- void CloseDisc(wbfs_disc_t *);
-
- s32 Format();
- s32 GetCount(u32 *);
- s32 GetHeaders(struct discHdr *, u32, u32);
-
- s32 AddGame();
- s32 RemoveGame(u8 *);
-
- s32 DiskSpace(f32 *, f32 *);
-
- s32 RenameGame(u8 *, const void *);
- s32 ReIDGame(u8 *, const void *);
-
- f32 EstimateGameSize();
-};
-
-#endif //_WBFS_WBFS_H
+#ifndef _WBFS_WBFS_H
+#define _WBFS_WBFS_H
+
+#include "wbfs_base.h"
+#include "libs/libwbfs/libwbfs.h"
+
+class Wbfs_Wbfs: public Wbfs
+{
+ public:
+ Wbfs_Wbfs(u32 device, u32 lba, u32 size) :
+ Wbfs(device, lba, size)
+ {
+ }
+
+ s32 Open();
+ wbfs_disc_t* OpenDisc(u8 *);
+ void CloseDisc(wbfs_disc_t *);
+
+ s32 Format();
+ s32 GetCount(u32 *);
+ s32 GetHeaders(struct discHdr *, u32, u32);
+
+ s32 AddGame();
+ s32 RemoveGame(u8 *);
+
+ s32 DiskSpace(f32 *, f32 *);
+
+ s32 RenameGame(u8 *, const void *);
+ s32 ReIDGame(u8 *, const void *);
+
+ f32 EstimateGameSize();
+};
+
+#endif //_WBFS_WBFS_H
diff --git a/source/utils/rockout.cpp b/source/utils/rockout.cpp
new file mode 100644
index 00000000..1f69025c
--- /dev/null
+++ b/source/utils/rockout.cpp
@@ -0,0 +1,35 @@
+#include "libwiigui/gui.h"
+#include "themes/CTheme.h"
+#include "usbloader/GameList.h"
+#include "settings/GameTitles.h"
+#include "menu/menus.h"
+
+extern GuiImageData * pointer[4];
+
+void rockout(int gameSelected, int f)
+{
+ HaltGui();
+
+ if (gameSelected >= 0 && gameSelected < gameList.size() && (strcasestr(GameTitles.GetTitle(gameList[gameSelected]), "guitar")
+ || strcasestr(GameTitles.GetTitle(gameList[gameSelected]), "band") || strcasestr(GameTitles.GetTitle(gameList[gameSelected]),
+ "rock")))
+ {
+ for (int i = 0; i < 4; i++)
+ delete pointer[i];
+ pointer[0] = Resources::GetImageData("rplayer1_point.png");
+ pointer[1] = Resources::GetImageData("rplayer2_point.png");
+ pointer[2] = Resources::GetImageData("rplayer3_point.png");
+ pointer[3] = Resources::GetImageData("rplayer4_point.png");
+ }
+ else
+ {
+
+ for (int i = 0; i < 4; i++)
+ delete pointer[i];
+ pointer[0] = Resources::GetImageData("player1_point.png");
+ pointer[1] = Resources::GetImageData("player2_point.png");
+ pointer[2] = Resources::GetImageData("player3_point.png");
+ pointer[3] = Resources::GetImageData("player4_point.png");
+ }
+ ResumeGui();
+}
diff --git a/source/utils/rockout.h b/source/utils/rockout.h
new file mode 100644
index 00000000..3d4904da
--- /dev/null
+++ b/source/utils/rockout.h
@@ -0,0 +1,6 @@
+#ifndef ROCKOUT_H_
+#define ROCKOUT_H_
+
+void rockout(int gameSelected, int f = 0);
+
+#endif
diff --git a/source/utils/tools.h b/source/utils/tools.h
new file mode 100644
index 00000000..91c7cb37
--- /dev/null
+++ b/source/utils/tools.h
@@ -0,0 +1,6 @@
+#ifndef TOOLS_H_
+#define TOOLS_H_
+
+#define cut_bounds(x, min, max) ( ((x) < (min)) ? (min) : ((x) > (max)) ? (max) : (x) )
+
+#endif
diff --git a/source/wad/utils.h b/source/wad/utils.h
index a7d4737a..29584b23 100644
--- a/source/wad/utils.h
+++ b/source/wad/utils.h
@@ -1,23 +1,23 @@
-#ifndef _UTILS_H_
-#define _UTILS_H_
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
- /* Constants */
-#define KB_SIZE 1024.0
-#define MB_SIZE 1048576.0
-#define GB_SIZE 1073741824.0
-
- /* Macros */
-#define round_up(x,n) (-(-(x) & -(n)))
-
- /* Prototypes */
- u32 swap32(u32);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+#ifndef _UTILS_H_
+#define _UTILS_H_
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+ /* Constants */
+#define KB_SIZE 1024.0
+#define MB_SIZE 1048576.0
+#define GB_SIZE 1073741824.0
+
+ /* Macros */
+#define round_up(x,n) (-(-(x) & -(n)))
+
+ /* Prototypes */
+ u32 swap32(u32);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif